2025-03-04 11:29:29 +00:00

2403 lines
5.8 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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/).
*/
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["pages/_app"],{
/***/ "./node_modules/buffer-equal-constant-time/index.js":
/*!**********************************************************!*\
!*** ./node_modules/buffer-equal-constant-time/index.js ***!
\**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/*jshint node:true */\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\").Buffer); // browserify\nvar SlowBuffer = (__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\").SlowBuffer);\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYnVmZmVyLWVxdWFsLWNvbnN0YW50LXRpbWUvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTtBQUNiLGFBQWEsK0ZBQXdCLEVBQUU7QUFDdkMsaUJBQWlCLG1HQUE0Qjs7QUFFN0M7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLGNBQWM7QUFDaEM7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9idWZmZXItZXF1YWwtY29uc3RhbnQtdGltZS9pbmRleC5qcz84MmI1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qanNoaW50IG5vZGU6dHJ1ZSAqL1xuJ3VzZSBzdHJpY3QnO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjsgLy8gYnJvd3NlcmlmeVxudmFyIFNsb3dCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5TbG93QnVmZmVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlckVxO1xuXG5mdW5jdGlvbiBidWZmZXJFcShhLCBiKSB7XG5cbiAgLy8gc2hvcnRjdXR0aW5nIG9uIHR5cGUgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzc1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYnVmZmVyIHNpemVzIHNob3VsZCBiZSB3ZWxsLWtub3duIGluZm9ybWF0aW9uLCBzbyBkZXNwaXRlIHRoaXNcbiAgLy8gc2hvcnRjdXR0aW5nLCBpdCBkb2Vzbid0IGxlYWsgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSAqY29udGVudHMqIG9mIHRoZVxuICAvLyBidWZmZXJzLlxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAvKmpzaGludCBiaXR3aXNlOmZhbHNlICovXG4gICAgYyB8PSBhW2ldIF4gYltpXTsgLy8gWE9SXG4gIH1cbiAgcmV0dXJuIGMgPT09IDA7XG59XG5cbmJ1ZmZlckVxLmluc3RhbGwgPSBmdW5jdGlvbigpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5lcXVhbCA9IFNsb3dCdWZmZXIucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gZXF1YWwodGhhdCkge1xuICAgIHJldHVybiBidWZmZXJFcSh0aGlzLCB0aGF0KTtcbiAgfTtcbn07XG5cbnZhciBvcmlnQnVmRXF1YWwgPSBCdWZmZXIucHJvdG90eXBlLmVxdWFsO1xudmFyIG9yaWdTbG93QnVmRXF1YWwgPSBTbG93QnVmZmVyLnByb3RvdHlwZS5lcXVhbDtcbmJ1ZmZlckVxLnJlc3RvcmUgPSBmdW5jdGlvbigpIHtcbiAgQnVmZmVyLnByb3RvdHlwZS5lcXVhbCA9IG9yaWdCdWZFcXVhbDtcbiAgU2xvd0J1ZmZlci5wcm90b3R5cGUuZXF1YWwgPSBvcmlnU2xvd0J1ZkVxdWFsO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/buffer-equal-constant-time/index.js\n"));
/***/ }),
/***/ "./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js":
/*!*********************************************************************!*\
!*** ./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js ***!
\*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\n\nvar getParamBytesForAlg = __webpack_require__(/*! ./param-bytes-for-alg */ \"./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js\");\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWNkc2Etc2lnLWZvcm1hdHRlci9zcmMvZWNkc2Etc2lnLWZvcm1hdHRlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixhQUFhLHNGQUE2Qjs7QUFFMUMsMEJBQTBCLG1CQUFPLENBQUMsNEZBQXVCOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsc0JBQXNCLHVCQUF1QjtBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9lY2RzYS1zaWctZm9ybWF0dGVyL3NyYy9lY2RzYS1zaWctZm9ybWF0dGVyLmpzP2YzOGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG5cbnZhciBnZXRQYXJhbUJ5dGVzRm9yQWxnID0gcmVxdWlyZSgnLi9wYXJhbS1ieXRlcy1mb3ItYWxnJyk7XG5cbnZhciBNQVhfT0NURVQgPSAweDgwLFxuXHRDTEFTU19VTklWRVJTQUwgPSAwLFxuXHRQUklNSVRJVkVfQklUID0gMHgyMCxcblx0VEFHX1NFUSA9IDB4MTAsXG5cdFRBR19JTlQgPSAweDAyLFxuXHRFTkNPREVEX1RBR19TRVEgPSAoVEFHX1NFUSB8IFBSSU1JVElWRV9CSVQpIHwgKENMQVNTX1VOSVZFUlNBTCA8PCA2KSxcblx0RU5DT0RFRF9UQUdfSU5UID0gVEFHX0lOVCB8IChDTEFTU19VTklWRVJTQUwgPDwgNik7XG5cbmZ1bmN0aW9uIGJhc2U2NFVybChiYXNlNjQpIHtcblx0cmV0dXJuIGJhc2U2NFxuXHRcdC5yZXBsYWNlKC89L2csICcnKVxuXHRcdC5yZXBsYWNlKC9cXCsvZywgJy0nKVxuXHRcdC5yZXBsYWNlKC9cXC8vZywgJ18nKTtcbn1cblxuZnVuY3Rpb24gc2lnbmF0dXJlQXNCdWZmZXIoc2lnbmF0dXJlKSB7XG5cdGlmIChCdWZmZXIuaXNCdWZmZXIoc2lnbmF0dXJlKSkge1xuXHRcdHJldHVybiBzaWduYXR1cmU7XG5cdH0gZWxzZSBpZiAoJ3N0cmluZycgPT09IHR5cGVvZiBzaWduYXR1cmUpIHtcblx0XHRyZXR1cm4gQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnYmFzZTY0Jyk7XG5cdH1cblxuXHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFQ0RTQSBzaWduYXR1cmUgbXVzdCBiZSBhIEJhc2U2NCBzdHJpbmcgb3IgYSBCdWZmZXInKTtcbn1cblxuZnVuY3Rpb24gZGVyVG9Kb3NlKHNpZ25hdHVyZSwgYWxnKSB7XG5cdHNpZ25hdHVyZSA9IHNpZ25hdHVyZUFzQnVmZmVyKHNpZ25hdHVyZSk7XG5cdHZhciBwYXJhbUJ5dGVzID0gZ2V0UGFyYW1CeXRlc0ZvckFsZyhhbGcpO1xuXG5cdC8vIHRoZSBERVIgZW5jb2RlZCBwYXJhbSBzaG91bGQgYXQgbW9zdCBiZSB0aGUgcGFyYW0gc2l6ZSwgcGx1cyBhIHBhZGRpbmdcblx0Ly8gemVybywgc2luY2UgZHVlIHRvIGJlaW5nIGEgc2lnbmVkIGludGVnZXJcblx0dmFyIG1heEVuY29kZWRQYXJhbUxlbmd0aCA9IHBhcmFtQnl0ZXMgKyAxO1xuXG5cdHZhciBpbnB1dExlbmd0aCA9IHNpZ25hdHVyZS5sZW5ndGg7XG5cblx0dmFyIG9mZnNldCA9IDA7XG5cdGlmIChzaWduYXR1cmVbb2Zmc2V0KytdICE9PSBFTkNPREVEX1RBR19TRVEpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGV4cGVjdGVkIFwic2VxXCInKTtcblx0fVxuXG5cdHZhciBzZXFMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0KytdO1xuXHRpZiAoc2VxTGVuZ3RoID09PSAoTUFYX09DVEVUIHwgMSkpIHtcblx0XHRzZXFMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0KytdO1xuXHR9XG5cblx0aWYgKGlucHV0TGVuZ3RoIC0gb2Zmc2V0IDwgc2VxTGVuZ3RoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdcInNlcVwiIHNwZWNpZmllZCBsZW5ndGggb2YgXCInICsgc2VxTGVuZ3RoICsgJ1wiLCBvbmx5IFwiJyArIChpbnB1dExlbmd0aCAtIG9mZnNldCkgKyAnXCIgcmVtYWluaW5nJyk7XG5cdH1cblxuXHRpZiAoc2lnbmF0dXJlW29mZnNldCsrXSAhPT0gRU5DT0RFRF9UQUdfSU5UKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBleHBlY3RlZCBcImludFwiIGZvciBcInJcIicpO1xuXHR9XG5cblx0dmFyIHJMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0KytdO1xuXG5cdGlmIChpbnB1dExlbmd0aCAtIG9mZnNldCAtIDIgPCByTGVuZ3RoKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdcInJcIiBzcGVjaWZpZWQgbGVuZ3RoIG9mIFwiJyArIHJMZW5ndGggKyAnXCIsIG9ubHkgXCInICsgKGlucHV0TGVuZ3RoIC0gb2Zmc2V0IC0gMikgKyAnXCIgYXZhaWxhYmxlJyk7XG5cdH1cblxuXHRpZiAobWF4RW5jb2RlZFBhcmFtTGVuZ3RoIDwgckxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignXCJyXCIgc3BlY2lmaWVkIGxlbmd0aCBvZiBcIicgKyByTGVuZ3RoICsgJ1wiLCBtYXggb2YgXCInICsgbWF4RW5jb2RlZFBhcmFtTGVuZ3RoICsgJ1wiIGlzIGFjY2VwdGFibGUnKTtcblx0fVxuXG5cdHZhciByT2Zmc2V0ID0gb2Zmc2V0O1xuXHRvZmZzZXQgKz0gckxlbmd0aDtcblxuXHRpZiAoc2lnbmF0dXJlW29mZnNldCsrXSAhPT0gRU5DT0RFRF9UQUdfSU5UKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBleHBlY3RlZCBcImludFwiIGZvciBcInNcIicpO1xuXHR9XG5cblx0dmFyIHNMZW5ndGggPSBzaWduYXR1cmVbb2Zmc2V0KytdO1xuXG5cdGlmIChpbnB1dExlbmd0aCAtIG9mZnNldCAhPT0gc0xlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignXCJzXCIgc3BlY2lmaWVkIGxlbmd0aCBvZiBcIicgKyBzTGVuZ3RoICsgJ1wiLCBleHBlY3RlZCBcIicgKyAoaW5wdXRMZW5ndGggLSBvZmZzZXQpICsgJ1wiJyk7XG5cdH1cblxuXHRpZiAobWF4RW5jb2RlZFBhcmFtTGVuZ3RoIDwgc0xlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignXCJzXCIgc3BlY2lmaWVkIGxlbmd0aCBvZiBcIicgKyBzTGVuZ3RoICsgJ1wiLCBtYXggb2YgXCInICsgbWF4RW5jb2RlZFBhcmFtTGVuZ3RoICsgJ1wiIGlzIGFjY2VwdGFibGUnKTtcblx0fVxuXG5cdHZhciBzT2Zmc2V0ID0gb2Zmc2V0O1xuXHRvZmZzZXQgKz0gc0xlbmd0aDtcblxuXHRpZiAob2Zmc2V0ICE9PSBpbnB1dExlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdG8gY29uc3VtZSBlbnRpcmUgYnVmZmVyLCBidXQgXCInICsgKGlucHV0TGVuZ3RoIC0gb2Zmc2V0KSArICdcIiBieXRlcyByZW1haW4nKTtcblx0fVxuXG5cdHZhciByUGFkZGluZyA9IHBhcmFtQnl0ZXMgLSByTGVuZ3RoLFxuXHRcdHNQYWRkaW5nID0gcGFyYW1CeXRlcyAtIHNMZW5ndGg7XG5cblx0dmFyIGRzdCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShyUGFkZGluZyArIHJMZW5ndGggKyBzUGFkZGluZyArIHNMZW5ndGgpO1xuXG5cdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgclBhZGRpbmc7ICsrb2Zmc2V0KSB7XG5cdFx0ZHN0W29mZnNldF0gPSAwO1xuXHR9XG5cdHNpZ25hdHVyZS5jb3B5KGRzdCwgb2Zmc2V0LCByT2Zmc2V0ICsgTWF0aC5tYXgoLXJQYWRkaW5nLCAwKSwgck9mZnNldCArIHJMZW5ndGgpO1xuXG5cdG9mZnNldCA9IHBhcmFtQnl0ZXM7XG5cblx0Zm9yICh2YXIgbyA9IG9mZnNldDsgb2Zmc2V0IDwgbyArIHNQYWRkaW5nOyArK29mZnNldCkge1xuXHRcdGRzdFtvZmZzZXRdID0gMDtcblx0fVxuXHRzaWduYXR1cmUuY29weShkc3QsIG9mZnNldCwgc09mZnNldCArIE1hdGgubWF4KC1zUGFkZGluZywgMCksIHNPZmZzZXQgKyBzTGVuZ3RoKTtcblxuXHRkc3QgPSBkc3QudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXHRkc3QgPSBiYXNlNjRVcmwoZHN0KTtcblxuXHRyZXR1cm4gZHN0O1xufVxuXG5mdW5jdGlvbiBjb3VudFBhZGRpbmcoYnVmLCBzdGFydCwgc3RvcCkge1xuXHR2YXIgcGFkZGluZyA9IDA7XG5cdHdoaWxlIChzdGFydCArIHBhZGRpbmcgPCBzdG9wICYmIGJ1ZltzdGFydCArIHBhZGRpbmddID09PSAwKSB7XG5cdFx0KytwYWRkaW5nO1xuXHR9XG5cblx0dmFyIG5lZWRzU2lnbiA9IGJ1ZltzdGFydCArIHBhZGRpbmddID49IE1BWF9PQ1RFVDtcblx0aWYgKG5lZWRzU2lnbikge1xuXHRcdC0tcGFkZGluZztcblx0fVxuXG5cdHJldHVybiBwYWRkaW5nO1xufVxuXG5mdW5jdGlvbiBqb3NlVG9EZXIoc2lnbmF0dXJlLCBhbGcpIHtcblx0c2lnbmF0dXJlID0gc2lnbmF0dXJlQXNCdWZmZXIoc2lnbmF0dXJlKTtcblx0dmFyIHBhcmFtQnl0ZXMgPSBnZXRQYXJhbUJ5dGVzRm9yQWxnKGFsZyk7XG5cblx0dmFyIHNpZ25hdHVyZUJ5dGVzID0gc2lnbmF0dXJlLmxlbmd0aDtcblx0aWYgKHNpZ25hdHVyZUJ5dGVzICE9PSBwYXJhbUJ5dGVzICogMikge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiJyArIGFsZyArICdcIiBzaWduYXR1cmVzIG11c3QgYmUgXCInICsgcGFyYW1CeXRlcyAqIDIgKyAnXCIgYnl0ZXMsIHNhdyBcIicgKyBzaWduYXR1cmVCeXRlcyArICdcIicpO1xuXHR9XG5cblx0dmFyIHJQYWRkaW5nID0gY291bnRQYWRkaW5nKHNpZ25hdHVyZSwgMCwgcGFyYW1CeXRlcyk7XG5cdHZhciBzUGFkZGluZyA9IGNvdW50UGFkZGluZyhzaWduYXR1cmUsIHBhcmFtQnl0ZXMsIHNpZ25hdHVyZS5sZW5ndGgpO1xuXHR2YXIgckxlbmd0aCA9IHBhcmFtQnl0ZXMgLSByUGFkZGluZztcblx0dmFyIHNMZW5ndGggPSBwYXJhbUJ5dGVzIC0gc1BhZGRpbmc7XG5cblx0dmFyIHJzQnl0ZXMgPSAxICsgMSArIHJMZW5ndGggKyAxICsgMSArIHNMZW5ndGg7XG5cblx0dmFyIHNob3J0TGVuZ3RoID0gcnNCeXRlcyA8IE1BWF9PQ1RFVDtcblxuXHR2YXIgZHN0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKChzaG9ydExlbmd0aCA/IDIgOiAzKSArIHJzQnl0ZXMpO1xuXG5cdHZhciBvZmZzZXQgPSAwO1xuXHRkc3Rbb2Zmc2V0KytdID0gRU5DT0RFRF9UQUdfU0VRO1xuXHRpZiAoc2hvcnRMZW5ndGgpIHtcblx0XHQvLyBCaXQgOCBoYXMgdmFsdWUgXCIwXCJcblx0XHQvLyBiaXRzIDctMSBnaXZlIHRoZSBsZW5ndGguXG5cdFx0ZHN0W29mZnNldCsrXSA9IHJzQnl0ZXM7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gQml0IDggb2YgZmlyc3Qgb2N0ZXQgaGFzIHZhbHVlIFwiMVwiXG5cdFx0Ly8gYml0cyA3LTEgZ2l2ZSB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgbGVuZ3RoIG9jdGV0cy5cblx0XHRkc3Rbb2Zmc2V0KytdID0gTUFYX09DVEVUXHR8IDE7XG5cdFx0Ly8gbGVuZ3RoLCBiYXNlIDI1NlxuXHRcdGRzdFtvZmZzZXQrK10gPSByc0J5dGVzICYgMHhmZjtcblx0fVxuXHRkc3Rbb2Zmc2V0KytdID0gRU5DT0RFRF9UQUdfSU5UO1xuXHRkc3Rbb2Zmc2V0KytdID0gckxlbmd0aDtcblx0aWYgKHJQYWRkaW5nIDwgMCkge1xuXHRcdGRzdFtvZmZzZXQrK10gPSAwO1xuXHRcdG9mZnNldCArPSBzaWduYXR1cmUuY29weShkc3QsIG9mZnNldCwgMCwgcGFyYW1CeXRlcyk7XG5cdH0gZWxzZSB7XG5cdFx0b2Zmc2V0ICs9IHNpZ25hdHVyZS5jb3B5KGRzdCwgb2Zmc2V0LCByUGFkZGluZywgcGFyYW1CeXRlcyk7XG5cdH1cblx0ZHN0W29mZnNldCsrXSA9IEVOQ09ERURfVEFHX0lOVDtcblx0ZHN0W29mZnNldCsrXSA9IHNMZW5ndGg7XG5cdGlmIChzUGFkZGluZyA8IDApIHtcblx0XHRkc3Rbb2Zmc2V0KytdID0gMDtcblx0XHRzaWduYXR1cmUuY29weShkc3QsIG9mZnNldCwgcGFyYW1CeXRlcyk7XG5cdH0gZWxzZSB7XG5cdFx0c2lnbmF0dXJlLmNvcHkoZHN0LCBvZmZzZXQsIHBhcmFtQnl0ZXMgKyBzUGFkZGluZyk7XG5cdH1cblxuXHRyZXR1cm4gZHN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblx0ZGVyVG9Kb3NlOiBkZXJUb0pvc2UsXG5cdGpvc2VUb0Rlcjogam9zZVRvRGVyXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js\n"));
/***/ }),
/***/ "./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js":
/*!*********************************************************************!*\
!*** ./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js ***!
\*********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZWNkc2Etc2lnLWZvcm1hdHRlci9zcmMvcGFyYW0tYnl0ZXMtZm9yLWFsZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZWNkc2Etc2lnLWZvcm1hdHRlci9zcmMvcGFyYW0tYnl0ZXMtZm9yLWFsZy5qcz83NDIxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gZ2V0UGFyYW1TaXplKGtleVNpemUpIHtcblx0dmFyIHJlc3VsdCA9ICgoa2V5U2l6ZSAvIDgpIHwgMCkgKyAoa2V5U2l6ZSAlIDggPT09IDAgPyAwIDogMSk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBwYXJhbUJ5dGVzRm9yQWxnID0ge1xuXHRFUzI1NjogZ2V0UGFyYW1TaXplKDI1NiksXG5cdEVTMzg0OiBnZXRQYXJhbVNpemUoMzg0KSxcblx0RVM1MTI6IGdldFBhcmFtU2l6ZSg1MjEpXG59O1xuXG5mdW5jdGlvbiBnZXRQYXJhbUJ5dGVzRm9yQWxnKGFsZykge1xuXHR2YXIgcGFyYW1CeXRlcyA9IHBhcmFtQnl0ZXNGb3JBbGdbYWxnXTtcblx0aWYgKHBhcmFtQnl0ZXMpIHtcblx0XHRyZXR1cm4gcGFyYW1CeXRlcztcblx0fVxuXG5cdHRocm93IG5ldyBFcnJvcignVW5rbm93biBhbGdvcml0aG0gXCInICsgYWxnICsgJ1wiJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UGFyYW1CeXRlc0ZvckFsZztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js\n"));
/***/ }),
/***/ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":
/*!**********************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
\**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nvar reactIs = __webpack_require__(/*! react-is */ \"./node_modules/hoist-non-react-statics/node_modules/react-is/index.js\");\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsY0FBYyxtQkFBTyxDQUFDLHVGQUFVOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzPzkxZGIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\n"));
/***/ }),
/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***!
\************************************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOzs7O0FBSWIsSUFBSSxJQUFxQztBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJFQUEyRTtBQUMzRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCO0FBQ2pCLHNCQUFzQjtBQUN0Qix1QkFBdUI7QUFDdkIsdUJBQXVCO0FBQ3ZCLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLFlBQVk7QUFDWixZQUFZO0FBQ1osY0FBYztBQUNkLGdCQUFnQjtBQUNoQixrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLG1CQUFtQjtBQUNuQix3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QixpQkFBaUI7QUFDakIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQixjQUFjO0FBQ2QsY0FBYztBQUNkLGdCQUFnQjtBQUNoQixrQkFBa0I7QUFDbEIsb0JBQW9CO0FBQ3BCLGtCQUFrQjtBQUNsQiwwQkFBMEI7QUFDMUIsY0FBYztBQUNkLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcz9jODdmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cblxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xcbi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cbnZhciBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIDogMHhlYWM3O1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJykgOiAweGVhY2E7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50JykgOiAweGVhY2I7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJykgOiAweGVhY2M7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJykgOiAweGVhZDI7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJykgOiAweGVhY2Q7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpIDogMHhlYWNlOyAvLyBUT0RPOiBXZSBkb24ndCB1c2UgQXN5bmNNb2RlIG9yIENvbmN1cnJlbnRNb2RlIGFueW1vcmUuIFRoZXkgd2VyZSB0ZW1wb3Jhcnlcbi8vICh1bnN0YWJsZSkgQVBJcyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkLiBDYW4gd2UgcmVtb3ZlIHRoZSBzeW1ib2xzP1xuXG52YXIgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuYXN5bmNfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QuY29uY3VycmVudF9tb2RlJykgOiAweGVhY2Y7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJykgOiAweGVhZDA7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJykgOiAweGVhZDE7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpIDogMHhlYWQ4O1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKSA6IDB4ZWFkMztcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5JykgOiAweGVhZDQ7XG52YXIgUkVBQ1RfQkxPQ0tfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmJsb2NrJykgOiAweGVhZDk7XG52YXIgUkVBQ1RfRlVOREFNRU5UQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmZ1bmRhbWVudGFsJykgOiAweGVhZDU7XG52YXIgUkVBQ1RfUkVTUE9OREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5yZXNwb25kZXInKSA6IDB4ZWFkNjtcbnZhciBSRUFDVF9TQ09QRV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3Quc2NvcGUnKSA6IDB4ZWFkNztcblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCAvLyBOb3RlOiBpdHMgdHlwZW9mIG1pZ2h0IGJlIG90aGVyIHRoYW4gJ3N5bWJvbCcgb3IgJ251bWJlcicgaWYgaXQncyBhIHBvbHlmaWxsLlxuICB0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9QUk9WSURFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUkVTUE9OREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfU0NPUEVfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9CTE9DS19UWVBFKTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YXIgJCR0eXBlb2ZUeXBlID0gdHlwZSAmJiB0eXBlLiQkdHlwZW9mO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCQkdHlwZW9mVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59IC8vIEFzeW5jTW9kZSBpcyBkZXByZWNhdGVkIGFsb25nIHdpdGggaXNBc3luY01vZGVcblxudmFyIEFzeW5jTW9kZSA9IFJFQUNUX0FTWU5DX01PREVfVFlQRTtcbnZhciBDb25jdXJyZW50TW9kZSA9IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xudmFyIENvbnRleHRDb25zdW1lciA9IFJFQUNUX0NPTlRFWFRfVFlQRTtcbnZhciBDb250ZXh0UHJvdmlkZXIgPSBSRUFDVF9QUk9WSURFUl9UWVBFO1xudmFyIEVsZW1lbnQgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG52YXIgRm9yd2FyZFJlZiA9IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU7XG52YXIgRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xudmFyIExhenkgPSBSRUFDVF9MQVpZX1RZUEU7XG52YXIgTWVtbyA9IFJFQUNUX01FTU9fVFlQRTtcbnZhciBQb3J0YWwgPSBSRUFDVF9QT1JUQUxfVFlQRTtcbnZhciBQcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG52YXIgU3RyaWN0TW9kZSA9IFJFQUNUX1NUUklDVF9NT0RFX1RZUEU7XG52YXIgU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7IC8vIEFzeW5jTW9kZSBzaG91bGQgYmUgZGVwcmVjYXRlZFxuXG5mdW5jdGlvbiBpc0FzeW5jTW9kZShvYmplY3QpIHtcbiAge1xuICAgIGlmICghaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNBc3luY01vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gdHJ1ZTsgLy8gVXNpbmcgY29uc29sZVsnd2FybiddIHRvIGV2YWRlIEJhYmVsIGFuZCBFU0xpbnRcblxuICAgICAgY29uc29sZVsnd2FybiddKCdUaGUgUmVhY3RJcy5pc0FzeW5jTW9kZSgpIGFsaWFzIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCAxNysuIFVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlICcgKyAnUmVhY3RJcy5pc0NvbmN1cnJlbnRNb2RlKCkgaW5zdGVhZC4gSXQgaGFzIHRoZSBleGFjdCBzYW1lIEFQSS4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHx8IHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG59XG5mdW5jdGlvbiBpc0NvbmN1cnJlbnRNb2RlKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTkNVUlJFTlRfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0Q29uc3VtZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb250ZXh0UHJvdmlkZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRm9yd2FyZFJlZihvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xufVxuZnVuY3Rpb24gaXNGcmFnbWVudChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xufVxuZnVuY3Rpb24gaXNMYXp5KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0xBWllfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTWVtbyhvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9NRU1PX1RZUEU7XG59XG5mdW5jdGlvbiBpc1BvcnRhbChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9QT1JUQUxfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzUHJvZmlsZXIob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3RyaWN0TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNTdXNwZW5zZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xufVxuXG5leHBvcnRzLkFzeW5jTW9kZSA9IEFzeW5jTW9kZTtcbmV4cG9ydHMuQ29uY3VycmVudE1vZGUgPSBDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuQ29udGV4dENvbnN1bWVyID0gQ29udGV4dENvbnN1bWVyO1xuZXhwb3J0cy5Db250ZXh0UHJvdmlkZXIgPSBDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLkVsZW1lbnQgPSBFbGVtZW50O1xuZXhwb3J0cy5Gb3J3YXJkUmVmID0gRm9yd2FyZFJlZjtcbmV4cG9ydHMuRnJhZ21lbnQgPSBGcmFnbWVudDtcbmV4cG9ydHMuTGF6eSA9IExhenk7XG5leHBvcnRzLk1lbW8gPSBNZW1vO1xuZXhwb3J0cy5Qb3J0YWwgPSBQb3J0YWw7XG5leHBvcnRzLlByb2ZpbGVyID0gUHJvZmlsZXI7XG5leHBvcnRzLlN0cmljdE1vZGUgPSBTdHJpY3RNb2RlO1xuZXhwb3J0cy5TdXNwZW5zZSA9IFN1c3BlbnNlO1xuZXhwb3J0cy5pc0FzeW5jTW9kZSA9IGlzQXN5bmNNb2RlO1xuZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlID0gaXNDb25jdXJyZW50TW9kZTtcbmV4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXIgPSBpc0NvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXIgPSBpc0NvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuZXhwb3J0cy5pc0ZvcndhcmRSZWYgPSBpc0ZvcndhcmRSZWY7XG5leHBvcnRzLmlzRnJhZ21lbnQgPSBpc0ZyYWdtZW50O1xuZXhwb3J0cy5pc0xhenkgPSBpc0xhenk7XG5leHBvcnRzLmlzTWVtbyA9IGlzTWVtbztcbmV4cG9ydHMuaXNQb3J0YWwgPSBpc1BvcnRhbDtcbmV4cG9ydHMuaXNQcm9maWxlciA9IGlzUHJvZmlsZXI7XG5leHBvcnRzLmlzU3RyaWN0TW9kZSA9IGlzU3RyaWN0TW9kZTtcbmV4cG9ydHMuaXNTdXNwZW5zZSA9IGlzU3VzcGVuc2U7XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZTtcbmV4cG9ydHMudHlwZU9mID0gdHlwZU9mO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js\n"));
/***/ }),
/***/ "./node_modules/hoist-non-react-statics/node_modules/react-is/index.js":
/*!*****************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***!
\*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSxxS0FBeUQ7QUFDM0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcz9jNmNmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/hoist-non-react-statics/node_modules/react-is/index.js\n"));
/***/ }),
/***/ "./node_modules/intro.js/intro.module.js":
/*!***********************************************!*\
!*** ./node_modules/intro.js/intro.module.js ***!
\***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ rt; }\n/* harmony export */ });\n/*!\n * Intro.js v7.2.0\n * https://introjs.com\n *\n * Copyright (C) 2012-2023 Afshin Mehrabani (@afshinmeh).\n * https://introjs.com\n *\n * Date: Mon, 14 Aug 2023 19:47:14 GMT\n */\nfunction t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(t,e,n,o){return new(n||(n=Promise))((function(i,r){function s(t){try{l(o.next(t))}catch(t){r(t)}}function a(t){try{l(o.throw(t))}catch(t){r(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,a)}l((o=o.apply(t,e||[])).next())}))}function n(t,e){var n,o,i,r,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},\"function\"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(a){return function(l){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;r&&(r=0,a[0]&&(s=0)),s;)try{if(n=1,o&&(i=2&a[0]?o.return:a[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,a[1])).done)return i;switch(o=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,o=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=e.call(t,s)}catch(t){a=[6,t],o=0}finally{n=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}function o(t,e,n){var o,r=((o={})[t]=e,o.path=\"/\",o.expires=void 0,o);if(n){var s=new Date;s.setTime(s.getTime()+24*n*60*60*1e3),r.expires=s.toUTCString()}var a=[];for(var l in r)a.push(\"\".concat(l,\"=\").concat(r[l]));return document.cookie=a.join(\"; \"),i(t)}function i(t){return(e={},document.cookie.split(\";\").forEach((function(t){var n=t.split(\"=\"),o=n[0],i=n[1];e[o.trim()]=i})),e)[t];var e}\"function\"==typeof SuppressedError&&SuppressedError;function r(t,e){e?o(t._options.dontShowAgainCookie,\"true\",t._options.dontShowAgainCookieDays):o(t._options.dontShowAgainCookie,\"\",-1)}var s,a=(s={},function(t,e){return void 0===e&&(e=\"introjs-stamp\"),s[e]=s[e]||0,void 0===t[e]&&(t[e]=s[e]++),t[e]}),l=new(function(){function t(){this.events_key=\"introjs_event\"}return t.prototype._id=function(t,e,n){return t+a(e)+(n?\"_\".concat(a(n)):\"\")},t.prototype.on=function(t,e,n,o,i){var r=this._id(e,n,o),s=function(e){return n(o||t,e||window.event)};\"addEventListener\"in t?t.addEventListener(e,s,i):\"attachEvent\"in t&&t.attachEvent(\"on\".concat(e),s),t[this.events_key]=t[this.events_key]||{},t[this.events_key][r]=s},t.prototype.off=function(t,e,n,o,i){var r=this._id(e,n,o),s=t[this.events_key]&&t[this.events_key][r];s&&(\"removeEventListener\"in t?t.removeEventListener(e,s,i):\"detachEvent\"in t&&t.detachEvent(\"on\".concat(e),s),t[this.events_key][r]=null)},t}()),c=function(t){return\"function\"==typeof t};function u(t,e){if(t instanceof SVGElement){var n=t.getAttribute(\"class\")||\"\";n.match(e)||t.setAttribute(\"class\",\"\".concat(n,\" \").concat(e))}else if(void 0!==t.classList)for(var o=0,i=e.split(\" \");o<i.length;o++){var r=i[o];t.classList.add(r)}else t.className.match(e)||(t.className+=\" \".concat(e))}function p(t,e){var n=\"\";return\"currentStyle\"in t?n=t.currentStyle[e]:document.defaultView&&document.defaultView.getComputedStyle&&(n=document.defaultView.getComputedStyle(t,null).getPropertyValue(e)),n&&n.toLowerCase?n.toLowerCase():n}function h(t,e){if(t){var n=function(t){var e=window.getComputedStyle(t),n=\"absolute\"===e.position,o=/(auto|scroll)/;if(\"fixed\"===e.position)return document.body;for(var i=t;i=i.parentElement;)if(e=window.getComputedStyle(i),(!n||\"static\"!==e.position)&&o.test(e.overflow+e.overflowY+e.overflowX))return i;return document.body}(e);n!==document.body&&(n.scrollTop=e.offsetTop-n.offsetTop)}}function d(){if(void 0!==window.innerWidth)return{width:window.innerWidth,height:window.innerHeight};var t=document.documentElement;return{width:t.clientWidth,height:t.clientHeight}}function f(t,e,n,o,i){var r;if(\"off\"!==e&&(t&&(r=\"tooltip\"===e?i.getBoundingClientRect():o.getBoundingClientRect(),!function(t){var e=t.getBoundingClientRect();return e.top>=0&&e.left>=0&&e.bottom+80<=window.innerHeight&&e.right<=window.innerWidth}(o)))){var s=d().height;r.bottom-(r.bottom-r.top)<0||o.clientHeight>s?window.scrollBy(0,r.top-(s/2-r.height/2)-n):window.scrollBy(0,r.top-(s/2-r.height/2)+n)}}function b(t){t.setAttribute(\"role\",\"button\"),t.tabIndex=0}function m(t){var e=t.parentElement;return!(!e||\"HTML\"===e.nodeName)&&(\"fixed\"===p(t,\"position\")||m(e))}function g(t,e){var n=document.body,o=document.documentElement,i=window.pageYOffset||o.scrollTop||n.scrollTop,r=window.pageXOffset||o.scrollLeft||n.scrollLeft;e=e||n;var s=t.getBoundingClientRect(),a=e.getBoundingClientRect(),l=p(e,\"position\"),c={width:s.width,height:s.height};return\"body\"!==e.tagName.toLowerCase()&&\"relative\"===l||\"sticky\"===l?Object.assign(c,{top:s.top-a.top,left:s.left-a.left}):m(t)?Object.assign(c,{top:s.top,left:s.left}):Object.assign(c,{top:s.top+i,left:s.left+r})}function v(t,e){if(t instanceof SVGElement){var n=t.getAttribute(\"class\")||\"\";t.setAttribute(\"class\",n.replace(e,\"\").replace(/^\\s+|\\s+$/g,\"\"))}else t.className=t.className.replace(e,\"\").replace(/^\\s+|\\s+$/g,\"\")}function y(t,e){var n=\"\";if(t.style.cssText&&(n+=t.style.cssText),\"string\"==typeof e)n+=e;else for(var o in e)n+=\"\".concat(o,\":\").concat(e[o],\";\");t.style.cssText=n}function w(t,e,n){if(n&&e){var o=g(e.element,t._targetElement),i=t._options.helperElementPadding;e.element instanceof Element&&m(e.element)?u(n,\"introjs-fixedTooltip\"):v(n,\"introjs-fixedTooltip\"),\"floating\"===e.position&&(i=0),y(n,{width:\"\".concat(o.width+i,\"px\"),height:\"\".concat(o.height+i,\"px\"),top:\"\".concat(o.top-i/2,\"px\"),left:\"\".concat(o.left-i/2,\"px\")})}}function _(t,e,n,o,i){return t.left+e+n.width>o.width?(i.style.left=\"\".concat(o.width-n.width-t.left,\"px\"),!1):(i.style.left=\"\".concat(e,\"px\"),!0)}function C(t,e,n,o){return t.left+t.width-e-n.width<0?(o.style.left=\"\".concat(-t.left,\"px\"),!1):(o.style.right=\"\".concat(e,\"px\"),!0)}function S(t,e){t.includes(e)&&t.splice(t.indexOf(e),1)}function k(t,e,n,o){var i=t.slice(),r=d(),s=g(n).height+10,a=g(n).width+20,l=e.getBoundingClientRect(),c=\"floating\";if(l.bottom+s>r.height&&S(i,\"bottom\"),l.top-s<0&&S(i,\"top\"),l.right+a>r.width&&S(i,\"right\"),l.left-a<0&&S(i,\"left\"),o&&(o=o.split(\"-\")[0]),i.length&&(c=i[0],i.includes(o)&&(c=o)),\"top\"===c||\"bottom\"===c){var u=void 0,p=[];\"top\"===c?(u=\"top-middle-aligned\",p=[\"top-left-aligned\",\"top-middle-aligned\",\"top-right-aligned\"]):(u=\"bottom-middle-aligned\",p=[\"bottom-left-aligned\",\"bottom-middle-aligned\",\"bottom-right-aligned\"]),c=function(t,e,n,o){var i=e/2,r=Math.min(n,window.screen.width);return r-t<e&&(S(o,\"top-left-aligned\"),S(o,\"bottom-left-aligned\")),(t<i||r-t<i)&&(S(o,\"top-middle-aligned\"),S(o,\"bottom-middle-aligned\")),t<e&&(S(o,\"top-right-aligned\"),S(o,\"bottom-right-aligned\")),o.length?o[0]:null}(l.left,a,r.width,p)||u}return c}function j(t,e,n,o,i){if(void 0===i&&(i=!1),e){var r,s,a,l,c=\"\";n.style.top=\"\",n.style.right=\"\",n.style.bottom=\"\",n.style.left=\"\",n.style.marginLeft=\"\",n.style.marginTop=\"\",o.style.display=\"inherit\",c=\"string\"==typeof e.tooltipClass?e.tooltipClass:t._options.tooltipClass,n.className=[\"introjs-tooltip\",c].filter(Boolean).join(\" \"),n.setAttribute(\"role\",\"dialog\"),\"floating\"!==(l=e.position)&&t._options.autoPosition&&(l=k(t._options.positionPrecedence,e.element,n,l)),s=g(e.element),r=g(n),a=d(),u(n,\"introjs-\".concat(l));var p=s.width/2-r.width/2;switch(l){case\"top-right-aligned\":o.className=\"introjs-arrow bottom-right\";var h=0;C(s,h,r,n),n.style.bottom=\"\".concat(s.height+20,\"px\");break;case\"top-middle-aligned\":o.className=\"introjs-arrow bottom-middle\",i&&(p+=5),C(s,p,r,n)&&(n.style.right=\"\",_(s,p,r,a,n)),n.style.bottom=\"\".concat(s.height+20,\"px\");break;case\"top-left-aligned\":case\"top\":o.className=\"introjs-arrow bottom\",_(s,i?0:15,r,a,n),n.style.bottom=\"\".concat(s.height+20,\"px\");break;case\"right\":n.style.left=\"\".concat(s.width+20,\"px\"),s.top+r.height>a.height?(o.className=\"introjs-arrow left-bottom\",n.style.top=\"-\".concat(r.height-s.height-20,\"px\")):o.className=\"introjs-arrow left\";break;case\"left\":i||!0!==t._options.showStepNumbers||(n.style.top=\"15px\"),s.top+r.height>a.height?(n.style.top=\"-\".concat(r.height-s.height-20,\"px\"),o.className=\"introjs-arrow right-bottom\"):o.className=\"introjs-arrow right\",n.style.right=\"\".concat(s.width+20,\"px\");break;case\"floating\":o.style.display=\"none\",n.style.left=\"50%\",n.style.top=\"50%\",n.style.marginLeft=\"-\".concat(r.width/2,\"px\"),n.style.marginTop=\"-\".concat(r.height/2,\"px\");break;case\"bottom-right-aligned\":o.className=\"introjs-arrow top-right\",C(s,h=0,r,n),n.style.top=\"\".concat(s.height+20,\"px\");break;case\"bottom-middle-aligned\":o.className=\"introjs-arrow top-middle\",i&&(p+=5),C(s,p,r,n)&&(n.style.right=\"\",_(s,p,r,a,n)),n.style.top=\"\".concat(s.height+20,\"px\");break;default:o.className=\"introjs-arrow top\",_(s,0,r,a,n),n.style.top=\"\".concat(s.height+20,\"px\")}}}function A(){for(var t=0,e=Array.from(document.querySelectorAll(\".introjs-showElement\"));t<e.length;t++){v(e[t],/introjs-[a-zA-Z]+/g)}}function x(t,e){var n=document.createElement(t);e=e||{};var o=/^(?:role|data-|aria-)/;for(var i in e){var r=e[i];\"style\"===i&&\"function\"!=typeof r?y(n,r):\"string\"==typeof r&&i.match(o)?n.setAttribute(i,r):n[i]=r}return n}function N(t,e,n){if(void 0===n&&(n=!1),n){var o=e.style.opacity||\"1\";y(e,{opacity:\"0\"}),window.setTimeout((function(){y(e,{opacity:o})}),10)}t.appendChild(e)}function E(t,e){return(t+1)/e*100}function T(t,e){var n=x(\"div\",{className:\"introjs-bullets\"});!1===t._options.showBullets&&(n.style.display=\"none\");var o=x(\"ul\");o.setAttribute(\"role\",\"tablist\");for(var i=function(){var e=this.getAttribute(\"data-step-number\");null!=e&&t.goToStep(parseInt(e,10))},r=0;r<t._introItems.length;r++){var s=t._introItems[r].step,a=x(\"li\"),l=x(\"a\");a.setAttribute(\"role\",\"presentation\"),l.setAttribute(\"role\",\"tab\"),l.onclick=i,r===e.step-1&&(l.className=\"active\"),b(l),l.innerHTML=\"&nbsp;\",l.setAttribute(\"data-step-number\",s.toString()),a.appendChild(l),o.appendChild(a)}return n.appendChild(o),n}function I(t,e,n){var o=t.querySelector(\".introjs-progress .introjs-progressbar\");if(o){var i=E(e,n);o.style.cssText=\"width:\".concat(i,\"%;\"),o.setAttribute(\"aria-valuenow\",i.toString())}}function L(t,o){return e(this,void 0,void 0,(function(){var i,r,s,a,l,d,m,g,v,_,C,S,k,L,P,q,R,O,M,D,F,V,z,G,W=this;return n(this,(function(Q){switch(Q.label){case 0:return c(t._introChangeCallback)?[4,t._introChangeCallback.call(t,o.element)]:[3,2];case 1:Q.sent(),Q.label=2;case 2:return i=document.querySelector(\".introjs-helperLayer\"),r=document.querySelector(\".introjs-tooltipReferenceLayer\"),s=\"introjs-helperLayer\",\"string\"==typeof o.highlightClass&&(s+=\" \".concat(o.highlightClass)),\"string\"==typeof t._options.highlightClass&&(s+=\" \".concat(t._options.highlightClass)),null!==i&&null!==r?(m=r.querySelector(\".introjs-helperNumberLayer\"),g=r.querySelector(\".introjs-tooltiptext\"),v=r.querySelector(\".introjs-tooltip-title\"),_=r.querySelector(\".introjs-arrow\"),C=r.querySelector(\".introjs-tooltip\"),d=r.querySelector(\".introjs-skipbutton\"),l=r.querySelector(\".introjs-prevbutton\"),a=r.querySelector(\".introjs-nextbutton\"),i.className=s,C.style.opacity=\"0\",C.style.display=\"none\",h(t._options.scrollToElement,o.element),w(t,o,i),w(t,o,r),A(),t._lastShowElementTimer&&window.clearTimeout(t._lastShowElementTimer),t._lastShowElementTimer=window.setTimeout((function(){null!==m&&(m.innerHTML=\"\".concat(o.step,\" \").concat(t._options.stepNumbersOfLabel,\" \").concat(t._introItems.length)),g.innerHTML=o.intro||\"\",v.innerHTML=o.title||\"\",C.style.display=\"block\",j(t,o,C,_),function(t,e,n){if(t){var o=e.querySelector(\".introjs-bullets li > a.active\"),i=e.querySelector('.introjs-bullets li > a[data-step-number=\"'.concat(n.step,'\"]'));o&&i&&(o.className=\"\",i.className=\"active\")}}(t._options.showBullets,r,o),I(r,t._currentStep,t._introItems.length),C.style.opacity=\"1\",(null!=a&&/introjs-donebutton/gi.test(a.className)||null!=a)&&a.focus(),f(t._options.scrollToElement,o.scrollTo,t._options.scrollPadding,o.element,g)}),350)):(S=x(\"div\",{className:s}),k=x(\"div\",{className:\"introjs-tooltipReferenceLayer\"}),L=x(\"div\",{className:\"introjs-arrow\"}),P=x(\"div\",{className:\"introjs-tooltip\"}),q=x(\"div\",{className:\"introjs-tooltiptext\"}),R=x(\"div\",{className:\"introjs-tooltip-header\"}),O=x(\"h1\",{className:\"introjs-tooltip-title\"}),M=x(\"div\"),y(S,{\"box-shadow\":\"0 0 1px 2px rgba(33, 33, 33, 0.8), rgba(33, 33, 33, \".concat(t._options.overlayOpacity.toString(),\") 0 0 0 5000px\")}),h(t._options.scrollToElement,o.element),w(t,o,S),w(t,o,k),N(t._targetElement,S,!0),N(t._targetElement,k),q.innerHTML=o.intro,O.innerHTML=o.title,M.className=\"introjs-tooltipbuttons\",!1===t._options.showButtons&&(M.style.display=\"none\"),R.appendChild(O),P.appendChild(R),P.appendChild(q),t._options.dontShowAgain&&(D=x(\"div\",{className:\"introjs-dontShowAgain\"}),(F=x(\"input\",{type:\"checkbox\",id:\"introjs-dontShowAgain\",name:\"introjs-dontShowAgain\"})).onchange=function(e){t.setDontShowAgain(e.target.checked)},(V=x(\"label\",{htmlFor:\"introjs-dontShowAgain\"})).innerText=t._options.dontShowAgainLabel,D.appendChild(F),D.appendChild(V),P.appendChild(D)),P.appendChild(T(t,o)),P.appendChild(function(t){var e=x(\"div\");e.className=\"introjs-progress\",!1===t._options.showProgress&&(e.style.display=\"none\");var n=x(\"div\",{className:\"introjs-progressbar\"});t._options.progressBarAdditionalClass&&(n.className+=\" \"+t._options.progressBarAdditionalClass);var o=E(t._currentStep,t._introItems.length);return n.setAttribute(\"role\",\"progress\"),n.setAttribute(\"aria-valuemin\",\"0\"),n.setAttribute(\"aria-valuemax\",\"100\"),n.setAttribute(\"aria-valuenow\",o.toString()),n.style.cssText=\"width:\".concat(o,\"%;\"),e.appendChild(n),e}(t)),z=x(\"div\"),!0===t._options.showStepNumbers&&(z.className=\"introjs-helperNumberLayer\",z.innerHTML=\"\".concat(o.step,\" \").concat(t._options.stepNumbersOfLabel,\" \").concat(t._introItems.length),P.appendChild(z)),P.appendChild(L),k.appendChild(P),(a=x(\"a\")).onclick=function(){return e(W,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return t._introItems.length-1===t._currentStep?[3,2]:[4,B(t)];case 1:return e.sent(),[3,6];case 2:return/introjs-donebutton/gi.test(a.className)?c(t._introCompleteCallback)?[4,t._introCompleteCallback.call(t,t._currentStep,\"done\")]:[3,4]:[3,6];case 3:e.sent(),e.label=4;case 4:return[4,et(t,t._targetElement)];case 5:e.sent(),e.label=6;case 6:return[2]}}))}))},b(a),a.innerHTML=t._options.nextLabel,(l=x(\"a\")).onclick=function(){return e(W,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return t._currentStep>0?[4,H(t)]:[3,2];case 1:e.sent(),e.label=2;case 2:return[2]}}))}))},b(l),l.innerHTML=t._options.prevLabel,b(d=x(\"a\",{className:\"introjs-skipbutton\"})),d.innerHTML=t._options.skipLabel,d.onclick=function(){return e(W,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return t._introItems.length-1===t._currentStep&&c(t._introCompleteCallback)?[4,t._introCompleteCallback.call(t,t._currentStep,\"skip\")]:[3,2];case 1:e.sent(),e.label=2;case 2:return c(t._introSkipCallback)?[4,t._introSkipCallback.call(t,t._currentStep)]:[3,4];case 3:e.sent(),e.label=4;case 4:return[4,et(t,t._targetElement)];case 5:return e.sent(),[2]}}))}))},R.appendChild(d),t._introItems.length>1&&M.appendChild(l),M.appendChild(a),P.appendChild(M),j(t,o,P,L),f(t._options.scrollToElement,o.scrollTo,t._options.scrollPadding,o.element,P)),(G=t._targetElement.querySelector(\".introjs-disableInteraction\"))&&G.parentNode&&G.parentNode.removeChild(G),o.disableInteraction&&function(t,e){var n=document.querySelector(\".introjs-disableInteraction\");null===n&&(n=x(\"div\",{className:\"introjs-disableInteraction\"}),t._targetElement.appendChild(n)),w(t,e,n)}(t,o),0===t._currentStep&&t._introItems.length>1?(null!=a&&(a.className=\"\".concat(t._options.buttonClass,\" introjs-nextbutton\"),a.innerHTML=t._options.nextLabel),!0===t._options.hidePrev?(null!=l&&(l.className=\"\".concat(t._options.buttonClass,\" introjs-prevbutton introjs-hidden\")),null!=a&&u(a,\"introjs-fullbutton\")):null!=l&&(l.className=\"\".concat(t._options.buttonClass,\" introjs-prevbutton introjs-disabled\"))):t._introItems.length-1===t._currentStep||1===t._introItems.length?(null!=l&&(l.className=\"\".concat(t._options.buttonClass,\" introjs-prevbutton\")),!0===t._options.hideNext?(null!=a&&(a.className=\"\".concat(t._options.buttonClass,\" introjs-nextbutton introjs-hidden\")),null!=l&&u(l,\"introjs-fullbutton\")):null!=a&&(!0===t._options.nextToDone?(a.innerHTML=t._options.doneLabel,u(a,\"\".concat(t._options.buttonClass,\" introjs-nextbutton introjs-donebutton\"))):a.className=\"\".concat(t._options.buttonClass,\" introjs-nextbutton introjs-disabled\"))):(null!=l&&(l.className=\"\".concat(t._options.buttonClass,\" introjs-prevbutton\")),null!=a&&(a.className=\"\".concat(t._options.buttonClass,\" introjs-nextbutton\"),a.innerHTML=t._options.nextLabel)),null!=l&&l.setAttribute(\"role\",\"button\"),null!=a&&a.setAttribute(\"role\",\"button\"),null!=d&&d.setAttribute(\"role\",\"button\"),null!=a&&a.focus(),function(t){u(t,\"introjs-showElement\");var e=p(t,\"position\");\"absolute\"!==e&&\"relative\"!==e&&\"sticky\"!==e&&\"fixed\"!==e&&u(t,\"introjs-relativePosition\")}(o.element),c(t._introAfterChangeCallback)?[4,t._introAfterChangeCallback.call(t,o.element)]:[3,4];case 3:Q.sent(),Q.label=4;case 4:return[2]}}))}))}function P(t,o){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return t._currentStep=o-2,void 0===t._introItems?[3,2]:[4,B(t)];case 1:e.sent(),e.label=2;case 2:return[2]}}))}))}function q(t,o){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return t._currentStepNumber=o,void 0===t._introItems?[3,2]:[4,B(t)];case 1:e.sent(),e.label=2;case 2:return[2]}}))}))}function B(t){return e(this,void 0,void 0,(function(){var e,o,i;return n(this,(function(n){switch(n.label){case 0:if(t._direction=\"forward\",void 0!==t._currentStepNumber)for(e=0;e<t._introItems.length;e++)t._introItems[e].step===t._currentStepNumber&&(t._currentStep=e-1,t._currentStepNumber=void 0);return-1===t._currentStep?t._currentStep=0:++t._currentStep,o=t._introItems[t._currentStep],i=!0,c(t._introBeforeChangeCallback)?[4,t._introBeforeChangeCallback.call(t,o&&o.element,t._currentStep,t._direction)]:[3,2];case 1:i=n.sent(),n.label=2;case 2:return!1===i?(--t._currentStep,[2,!1]):t._introItems.length<=t._currentStep?c(t._introCompleteCallback)?[4,t._introCompleteCallback.call(t,t._currentStep,\"end\")]:[3,4]:[3,6];case 3:n.sent(),n.label=4;case 4:return[4,et(t,t._targetElement)];case 5:return n.sent(),[2,!1];case 6:return[4,L(t,o)];case 7:return n.sent(),[2,!0]}}))}))}function H(t){return e(this,void 0,void 0,(function(){var e,o;return n(this,(function(n){switch(n.label){case 0:return t._direction=\"backward\",t._currentStep<=0?[2,!1]:(--t._currentStep,e=t._introItems[t._currentStep],o=!0,c(t._introBeforeChangeCallback)?[4,t._introBeforeChangeCallback.call(t,e&&e.element,t._currentStep,t._direction)]:[3,2]);case 1:o=n.sent(),n.label=2;case 2:return!1===o?(++t._currentStep,[2,!1]):[4,L(t,e)];case 3:return n.sent(),[2,!0]}}))}))}function R(t,o){return e(this,void 0,void 0,(function(){var e,i;return n(this,(function(n){switch(n.label){case 0:return null===(e=void 0===o.code?o.which:o.code)&&(e=null===o.charCode?o.keyCode:o.charCode),\"Escape\"!==e&&27!==e||!0!==t._options.exitOnEsc?[3,2]:[4,et(t,t._targetElement)];case 1:return n.sent(),[3,16];case 2:return\"ArrowLeft\"!==e&&37!==e?[3,4]:[4,H(t)];case 3:return n.sent(),[3,16];case 4:return\"ArrowRight\"!==e&&39!==e?[3,6]:[4,B(t)];case 5:return n.sent(),[3,16];case 6:return\"Enter\"!==e&&\"NumpadEnter\"!==e&&13!==e?[3,16]:(i=o.target||o.srcElement)&&i.className.match(\"introjs-prevbutton\")?[4,H(t)]:[3,8];case 7:return n.sent(),[3,15];case 8:return i&&i.className.match(\"introjs-skipbutton\")?t._introItems.length-1===t._currentStep&&c(t._introCompleteCallback)?[4,t._introCompleteCallback.call(t,t._currentStep,\"skip\")]:[3,10]:[3,12];case 9:n.sent(),n.label=10;case 10:return[4,et(t,t._targetElement)];case 11:return n.sent(),[3,15];case 12:return i&&i.getAttribute(\"data-step-number\")?(i.click(),[3,15]):[3,13];case 13:return[4,B(t)];case 14:n.sent(),n.label=15;case 15:o.preventDefault?o.preventDefault():o.returnValue=!1,n.label=16;case 16:return[2]}}))}))}function O(e){if(null===e||\"object\"!==t(e)||\"nodeType\"in e)return e;var n={};for(var o in e)\"jQuery\"in window&&e[o]instanceof window.jQuery?n[o]=e[o]:n[o]=O(e[o]);return n}function M(t){var e=document.querySelector(\".introjs-hints\");return e?Array.from(e.querySelectorAll(t)):[]}function D(t,o){return e(this,void 0,void 0,(function(){var e;return n(this,(function(n){switch(n.label){case 0:return e=M('.introjs-hint[data-step=\"'.concat(o,'\"]'))[0],Y(),e&&u(e,\"introjs-hidehint\"),c(t._hintCloseCallback)?[4,t._hintCloseCallback.call(t,o)]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}}))}))}function F(t){return e(this,void 0,void 0,(function(){var e,o,i,r,s;return n(this,(function(n){switch(n.label){case 0:e=M(\".introjs-hint\"),o=0,i=e,n.label=1;case 1:return o<i.length?(r=i[o],(s=r.getAttribute(\"data-step\"))?[4,D(t,parseInt(s,10))]:[3,3]):[3,4];case 2:n.sent(),n.label=3;case 3:return o++,[3,1];case 4:return[2]}}))}))}function V(t){return e(this,void 0,void 0,(function(){var e,o,i,r,s;return n(this,(function(n){switch(n.label){case 0:if(!(e=M(\".introjs-hint\"))||!e.length)return[3,1];for(o=0,i=e;o<i.length;o++)r=i[o],(s=r.getAttribute(\"data-step\"))&&z(parseInt(s,10));return[3,3];case 1:return[4,$(t,t._targetElement)];case 2:n.sent(),n.label=3;case 3:return[2]}}))}))}function z(t){var e=M('.introjs-hint[data-step=\"'.concat(t,'\"]'))[0];e&&v(e,/introjs-hidehint/g)}function G(t){var e=M('.introjs-hint[data-step=\"'.concat(t,'\"]'))[0];e&&e.parentNode&&e.parentNode.removeChild(e)}function W(t){return e(this,void 0,void 0,(function(){var e,o,i,r,s,a,p;return n(this,(function(n){switch(n.label){case 0:for(null===(e=document.querySelector(\".introjs-hints\"))&&(e=x(\"div\",{className:\"introjs-hints\"})),o=function(e){return function(n){var o=n||window.event;o&&o.stopPropagation&&o.stopPropagation(),o&&null!==o.cancelBubble&&(o.cancelBubble=!0),X(t,e)}},i=0;i<t._hintItems.length;i++){if(r=t._hintItems[i],document.querySelector('.introjs-hint[data-step=\"'.concat(i,'\"]')))return[2];b(s=x(\"a\",{className:\"introjs-hint\"})),s.onclick=o(i),r.hintAnimation||u(s,\"introjs-hint-no-anim\"),m(r.element)&&u(s,\"introjs-fixedhint\"),a=x(\"div\",{className:\"introjs-hint-dot\"}),p=x(\"div\",{className:\"introjs-hint-pulse\"}),s.appendChild(a),s.appendChild(p),s.setAttribute(\"data-step\",i.toString()),r.hintTargetElement=r.element,r.element=s,Q(r.hintPosition,s,r.hintTargetElement),e.appendChild(s)}return document.body.appendChild(e),c(t._hintsAddedCallback)?[4,t._hintsAddedCallback.call(t)]:[3,2];case 1:n.sent(),n.label=2;case 2:return t._options.hintAutoRefreshInterval>=0&&(t._hintsAutoRefreshFunction=(h=function(){return U(t)},d=t._options.hintAutoRefreshInterval,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];window.clearTimeout(f),f=window.setTimeout((function(){h(t)}),d)}),l.on(window,\"scroll\",t._hintsAutoRefreshFunction,t,!0)),[2]}var h,d,f}))}))}function Q(t,e,n){if(void 0!==n){var o=g(n),i=20,r=20;switch(t){default:case\"top-left\":e.style.left=\"\".concat(o.left,\"px\"),e.style.top=\"\".concat(o.top,\"px\");break;case\"top-right\":e.style.left=\"\".concat(o.left+o.width-i,\"px\"),e.style.top=\"\".concat(o.top,\"px\");break;case\"bottom-left\":e.style.left=\"\".concat(o.left,\"px\"),e.style.top=\"\".concat(o.top+o.height-r,\"px\");break;case\"bottom-right\":e.style.left=\"\".concat(o.left+o.width-i,\"px\"),e.style.top=\"\".concat(o.top+o.height-r,\"px\");break;case\"middle-left\":e.style.left=\"\".concat(o.left,\"px\"),e.style.top=\"\".concat(o.top+(o.height-r)/2,\"px\");break;case\"middle-right\":e.style.left=\"\".concat(o.left+o.width-i,\"px\"),e.style.top=\"\".concat(o.top+(o.height-r)/2,\"px\");break;case\"middle-middle\":e.style.left=\"\".concat(o.left+(o.width-i)/2,\"px\"),e.style.top=\"\".concat(o.top+(o.height-r)/2,\"px\");break;case\"bottom-middle\":e.style.left=\"\".concat(o.left+(o.width-i)/2,\"px\"),e.style.top=\"\".concat(o.top+o.height-r,\"px\");break;case\"top-middle\":e.style.left=\"\".concat(o.left+(o.width-i)/2,\"px\"),e.style.top=\"\".concat(o.top,\"px\")}}}function X(t,o){return e(this,void 0,void 0,(function(){var e,i,r,s,a,l,u,p,h,d,f;return n(this,(function(n){switch(n.label){case 0:return e=document.querySelector('.introjs-hint[data-step=\"'.concat(o,'\"]')),i=t._hintItems[o],c(t._hintClickCallback)?[4,t._hintClickCallback.call(t,e,i,o)]:[3,2];case 1:n.sent(),n.label=2;case 2:return void 0!==(r=Y())&&parseInt(r,10)===o||(s=x(\"div\",{className:\"introjs-tooltip\"}),a=x(\"div\"),l=x(\"div\"),u=x(\"div\"),s.onclick=function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0},a.className=\"introjs-tooltiptext\",(p=x(\"p\")).innerHTML=i.hint||\"\",a.appendChild(p),t._options.hintShowButton&&((h=x(\"a\")).className=t._options.buttonClass,h.setAttribute(\"role\",\"button\"),h.innerHTML=t._options.hintButtonLabel,h.onclick=function(){return D(t,o)},a.appendChild(h)),l.className=\"introjs-arrow\",s.appendChild(l),s.appendChild(a),d=e.getAttribute(\"data-step\")||\"\",t._currentStep=parseInt(d,10),f=t._hintItems[t._currentStep],u.className=\"introjs-tooltipReferenceLayer introjs-hintReference\",u.setAttribute(\"data-step\",d),w(t,f,u),u.appendChild(s),document.body.appendChild(u),j(t,f,s,l,!0)),[2]}}))}))}function Y(){var t=document.querySelector(\".introjs-hintReference\");if(t&&t.parentNode){var e=t.getAttribute(\"data-step\");if(!e)return;return t.parentNode.removeChild(t),e}}function $(t,o){return e(this,void 0,void 0,(function(){var e,i,r,s,a,c,u,p,h,d;return n(this,(function(n){switch(n.label){case 0:if(t._hintItems=[],t._options.hints&&t._options.hints.length>0)for(e=0,i=t._options.hints;e<i.length;e++)r=i[e],\"string\"==typeof(s=O(r)).element&&(s.element=document.querySelector(s.element)),s.hintPosition=s.hintPosition||t._options.hintPosition,s.hintAnimation=s.hintAnimation||t._options.hintAnimation,null!==s.element&&t._hintItems.push(s);else{if(!(a=Array.from(o.querySelectorAll(\"*[data-hint]\")))||!a.length)return[2,!1];for(c=0,u=a;c<u.length;c++)p=u[c],h=p.getAttribute(\"data-hint-animation\"),d=t._options.hintAnimation,h&&(d=\"true\"===h),t._hintItems.push({element:p,hint:p.getAttribute(\"data-hint\")||\"\",hintPosition:p.getAttribute(\"data-hint-position\")||t._options.hintPosition,hintAnimation:d,tooltipClass:p.getAttribute(\"data-tooltip-class\")||void 0,position:p.getAttribute(\"data-position\")||t._options.tooltipPosition})}return[4,W(t)];case 1:return n.sent(),l.on(document,\"click\",Y,t,!1),l.on(window,\"resize\",U,t,!0),[2,!0]}}))}))}function U(t){for(var e=0,n=t._hintItems;e<n.length;e++){var o=n[e],i=o.hintTargetElement;Q(o.hintPosition,o.element,i)}}function Z(t,e){var n=Array.from(e.querySelectorAll(\"*[data-intro]\")),o=[];if(t._options.steps&&t._options.steps.length)for(var i=0,r=t._options.steps;i<r.length;i++){var s=O(h=r[i]);if(s.step=o.length+1,s.title=s.title||\"\",\"string\"==typeof s.element&&(s.element=document.querySelector(s.element)||void 0),void 0===s.element||null===s.element){var a=document.querySelector(\".introjsFloatingElement\");null===a&&(a=x(\"div\",{className:\"introjsFloatingElement\"}),document.body.appendChild(a)),s.element=a,s.position=\"floating\"}s.position=s.position||t._options.tooltipPosition,s.scrollTo=s.scrollTo||t._options.scrollTo,void 0===s.disableInteraction&&(s.disableInteraction=t._options.disableInteraction),null!==s.element&&o.push(s)}else{var l=void 0;if(n.length<1)return[];for(var c=0,u=n;c<u.length;c++){var p=u[c];if((!t._options.group||p.getAttribute(\"data-intro-group\")===t._options.group)&&\"none\"!==p.style.display){var h=parseInt(p.getAttribute(\"data-step\")||\"\",10);l=t._options.disableInteraction,p.hasAttribute(\"data-disable-interaction\")&&(l=!!p.getAttribute(\"data-disable-interaction\")),h>0&&(o[h-1]={step:h,element:p,title:p.getAttribute(\"data-title\")||\"\",intro:p.getAttribute(\"data-intro\")||\"\",tooltipClass:p.getAttribute(\"data-tooltip-class\")||void 0,highlightClass:p.getAttribute(\"data-highlight-class\")||void 0,position:p.getAttribute(\"data-position\")||t._options.tooltipPosition,scrollTo:p.getAttribute(\"data-scroll-to\")||t._options.scrollTo,disableInteraction:l})}}for(var d=0,f=0,b=n;f<b.length;f++){p=b[f];if((!t._options.group||p.getAttribute(\"data-intro-group\")===t._options.group)&&null===p.getAttribute(\"data-step\")){for(;void 0!==o[d];)d++;l=p.hasAttribute(\"data-disable-interaction\")?!!p.getAttribute(\"data-disable-interaction\"):t._options.disableInteraction,o[d]={element:p,title:p.getAttribute(\"data-title\")||\"\",intro:p.getAttribute(\"data-intro\")||\"\",step:d+1,tooltipClass:p.getAttribute(\"data-tooltip-class\")||void 0,highlightClass:p.getAttribute(\"data-highlight-class\")||void 0,position:p.getAttribute(\"data-position\")||t._options.tooltipPosition,scrollTo:p.getAttribute(\"data-scroll-to\")||t._options.scrollTo,disableInteraction:l}}}}for(var m=[],g=0;g<o.length;g++)o[g]&&m.push(o[g]);return(o=m).sort((function(t,e){return t.step-e.step})),o}function J(t,e){var n=t._currentStep;if(null!=n&&-1!=n){var o=t._introItems[n],i=document.querySelector(\".introjs-tooltipReferenceLayer\"),r=document.querySelector(\".introjs-helperLayer\"),s=document.querySelector(\".introjs-disableInteraction\");w(t,o,r),w(t,o,i),w(t,o,s),e&&(t._introItems=Z(t,t._targetElement),function(t,e){if(t._options.showBullets){var n=document.querySelector(\".introjs-bullets\");n&&n.parentNode&&n.parentNode.replaceChild(T(t,e),n)}}(t,o),I(i,n,t._introItems.length));var a=document.querySelector(\".introjs-arrow\"),l=document.querySelector(\".introjs-tooltip\");return l&&a&&j(t,t._introItems[n],l,a),U(t),t}}function K(t){J(t)}function tt(t,e){if(void 0===e&&(e=!1),t&&t.parentElement){var n=t.parentElement;e?(y(t,{opacity:\"0\"}),window.setTimeout((function(){try{n.removeChild(t)}catch(t){}}),500)):n.removeChild(t)}}function et(t,o,i){return void 0===i&&(i=!1),e(this,void 0,void 0,(function(){var e,r,s,a;return n(this,(function(n){switch(n.label){case 0:return e=!0,void 0===t._introBeforeExitCallback?[3,2]:[4,t._introBeforeExitCallback.call(t,o)];case 1:e=n.sent(),n.label=2;case 2:if(!i&&!1===e)return[2];if((r=Array.from(o.querySelectorAll(\".introjs-overlay\")))&&r.length)for(s=0,a=r;s<a.length;s++)tt(a[s]);return tt(o.querySelector(\".introjs-helperLayer\"),!0),tt(o.querySelector(\".introjs-tooltipReferenceLayer\")),tt(o.querySelector(\".introjs-disableInteraction\")),tt(document.querySelector(\".introjsFloatingElement\")),A(),l.off(window,\"keydown\",R,t,!0),l.off(window,\"resize\",K,t,!0),c(t._introExitCallback)?[4,t._introExitCallback.call(t)]:[3,4];case 3:n.sent(),n.label=4;case 4:return t._currentStep=-1,[2]}}))}))}function nt(t,o){return e(this,void 0,void 0,(function(){var i;return n(this,(function(r){switch(r.label){case 0:return t.isActive()?c(t._introStartCallback)?[4,t._introStartCallback.call(t,o)]:[3,2]:[2,!1];case 1:r.sent(),r.label=2;case 2:return 0===(i=Z(t,o)).length?[2,!1]:(t._introItems=i,function(t,o){var i=this,r=x(\"div\",{className:\"introjs-overlay\"});y(r,{top:0,bottom:0,left:0,right:0,position:\"fixed\"}),o.appendChild(r),!0===t._options.exitOnOverlayClick&&(y(r,{cursor:\"pointer\"}),r.onclick=function(){return e(i,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,et(t,o)];case 1:return e.sent(),[2]}}))}))})}(t,o),[4,B(t)]);case 3:r.sent(),o.addEventListener,t._options.keyboardNavigation&&l.on(window,\"keydown\",R,t,!0),l.on(window,\"resize\",K,t,!0),r.label=4;case 4:return[2,!1]}}))}))}function ot(t,e,n){return t[e]=n,t}var it=function(){function t(t){this._currentStep=-1,this._introItems=[],this._hintItems=[],this._targetElement=t,this._options={steps:[],hints:[],isActive:!0,nextLabel:\"Next\",prevLabel:\"Back\",skipLabel:\"×\",doneLabel:\"Done\",hidePrev:!1,hideNext:!1,nextToDone:!0,tooltipPosition:\"bottom\",tooltipClass:\"\",group:\"\",highlightClass:\"\",exitOnEsc:!0,exitOnOverlayClick:!0,showStepNumbers:!1,stepNumbersOfLabel:\"of\",keyboardNavigation:!0,showButtons:!0,showBullets:!0,showProgress:!1,scrollToElement:!0,scrollTo:\"element\",scrollPadding:30,overlayOpacity:.5,autoPosition:!0,positionPrecedence:[\"bottom\",\"top\",\"right\",\"left\"],disableInteraction:!1,dontShowAgain:!1,dontShowAgainLabel:\"Don't show this again\",dontShowAgainCookie:\"introjs-dontShowAgain\",dontShowAgainCookieDays:365,helperElementPadding:10,hintPosition:\"top-middle\",hintButtonLabel:\"Got it\",hintShowButton:!0,hintAutoRefreshInterval:10,hintAnimation:!0,buttonClass:\"introjs-button\",progressBarAdditionalClass:!1}}return t.prototype.isActive=function(){return(!this._options.dontShowAgain||\"\"===(t=i(this._options.dontShowAgainCookie))||\"true\"!==t)&&this._options.isActive;var t},t.prototype.clone=function(){return new t(this._targetElement)},t.prototype.setOption=function(t,e){return this._options=ot(this._options,t,e),this},t.prototype.setOptions=function(t){return this._options=function(t,e){for(var n=0,o=Object.entries(e);n<o.length;n++){var i=o[n];t=ot(t,i[0],i[1])}return t}(this._options,t),this},t.prototype.start=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,nt(this,this._targetElement)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.goToStep=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,P(this,t)];case 1:return e.sent(),[2,this]}}))}))},t.prototype.addStep=function(t){return this._options.steps||(this._options.steps=[]),this._options.steps.push(t),this},t.prototype.addSteps=function(t){if(!t.length)return this;for(var e=0;e<t.length;e++)this.addStep(t[e]);return this},t.prototype.goToStepNumber=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,q(this,t)];case 1:return e.sent(),[2,this]}}))}))},t.prototype.nextStep=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,B(this)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.previousStep=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,H(this)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.currentStep=function(){return this._currentStep},t.prototype.exit=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,et(this,this._targetElement,t)];case 1:return e.sent(),[2,this]}}))}))},t.prototype.refresh=function(t){return J(this,t),this},t.prototype.setDontShowAgain=function(t){return r(this,t),this},t.prototype.onbeforechange=function(t){if(!c(t))throw new Error(\"Provided callback for onbeforechange was not a function\");return this._introBeforeChangeCallback=t,this},t.prototype.onchange=function(t){if(!c(t))throw new Error(\"Provided callback for onchange was not a function.\");return this._introChangeCallback=t,this},t.prototype.onafterchange=function(t){if(!c(t))throw new Error(\"Provided callback for onafterchange was not a function\");return this._introAfterChangeCallback=t,this},t.prototype.oncomplete=function(t){if(!c(t))throw new Error(\"Provided callback for oncomplete was not a function.\");return this._introCompleteCallback=t,this},t.prototype.onhintsadded=function(t){if(!c(t))throw new Error(\"Provided callback for onhintsadded was not a function.\");return this._hintsAddedCallback=t,this},t.prototype.onhintclick=function(t){if(!c(t))throw new Error(\"Provided callback for onhintclick was not a function.\");return this._hintClickCallback=t,this},t.prototype.onhintclose=function(t){if(!c(t))throw new Error(\"Provided callback for onhintclose was not a function.\");return this._hintCloseCallback=t,this},t.prototype.onstart=function(t){if(!c(t))throw new Error(\"Provided callback for onstart was not a function.\");return this._introStartCallback=t,this},t.prototype.onexit=function(t){if(!c(t))throw new Error(\"Provided callback for onexit was not a function.\");return this._introExitCallback=t,this},t.prototype.onskip=function(t){if(!c(t))throw new Error(\"Provided callback for onskip was not a function.\");return this._introSkipCallback=t,this},t.prototype.onbeforeexit=function(t){if(!c(t))throw new Error(\"Provided callback for onbeforeexit was not a function.\");return this._introBeforeExitCallback=t,this},t.prototype.addHints=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,$(this,this._targetElement)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.hideHint=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,D(this,t)];case 1:return e.sent(),[2,this]}}))}))},t.prototype.hideHints=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,F(this)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.showHint=function(t){return z(t),this},t.prototype.showHints=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,V(this)];case 1:return t.sent(),[2,this]}}))}))},t.prototype.removeHints=function(){return function(t){for(var e=0,n=M(\".introjs-hint\");e<n.length;e++){var o=n[e].getAttribute(\"data-step\");o&&G(parseInt(o,10))}l.off(document,\"click\",Y,t,!1),l.off(window,\"resize\",U,t,!0),t._hintsAutoRefreshFunction&&l.off(window,\"scroll\",t._hintsAutoRefreshFunction,t,!0)}(this),this},t.prototype.removeHint=function(t){return G(t),this},t.prototype.showHintDialog=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,X(this,t)];case 1:return e.sent(),[2,this]}}))}))},t}(),rt=function e(n){var o;if(\"object\"===t(n))o=new it(n);else if(\"string\"==typeof n){var i=document.querySelector(n);if(!i)throw new Error(\"There is no element with given selector.\");o=new it(i)}else o=new it(document.body);return e.instances[a(o,\"introjs-instance\")]=o,o};rt.version=\"7.2.0\",rt.instances={};\n//# sourceMappingURL=intro.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LDRDQUE0QyxpQ0FBaUMsd0NBQXdDLDJCQUEyQixnQkFBZ0IsNkNBQTZDLGlDQUFpQyxHQUFHLEdBQUcsa0NBQWtDLHdDQUF3QywyQkFBMkIsZ0JBQWdCLDJCQUEyQixpQ0FBaUMsR0FBRyxHQUFHLGtDQUFrQyx3Q0FBd0MsMkJBQTJCLGdCQUFnQix5QkFBeUIsaUNBQWlDLEdBQUcsR0FBRyxrQ0FBa0MsaUJBQWlCLGtDQUFrQyx3Q0FBd0MsMkJBQTJCLGdCQUFnQix5QkFBeUIsaUNBQWlDLEdBQUcsR0FBRyxvQ0FBb0MsbUJBQW1CLGlDQUFpQyxXQUFXLEtBQUsscUNBQXFDLHFCQUFxQixrSkFBa0osWUFBWSxvQ0FBb0MsaUJBQWlCLHdDQUF3Qyx3Q0FBd0MsMkJBQTJCLGdCQUFnQiwyQkFBMkIsaUNBQWlDLEdBQUcsR0FBRyxHQUFHLG9CQUFvQixNQUFNLCtCQUErQiw0QkFBNEIsZ0NBQWdDLGtFQUFrRSxZQUFZLDZCQUE2QixpREFBaUQsbUNBQXlEO0FBQ24wcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzL2ludHJvLm1vZHVsZS5qcz83NGIzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogSW50cm8uanMgdjcuMi4wXG4gKiBodHRwczovL2ludHJvanMuY29tXG4gKlxuICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjMgQWZzaGluIE1laHJhYmFuaSAoQGFmc2hpbm1laCkuXG4gKiBodHRwczovL2ludHJvanMuY29tXG4gKlxuICogRGF0ZTogTW9uLCAxNCBBdWcgMjAyMyAxOTo0NzoxNCBHTVRcbiAqL1xuZnVuY3Rpb24gdChlKXtyZXR1cm4gdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiB0fSx0KGUpfWZ1bmN0aW9uIGUodCxlLG4sbyl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGkscil7ZnVuY3Rpb24gcyh0KXt0cnl7bChvLm5leHQodCkpfWNhdGNoKHQpe3IodCl9fWZ1bmN0aW9uIGEodCl7dHJ5e2woby50aHJvdyh0KSl9Y2F0Y2godCl7cih0KX19ZnVuY3Rpb24gbCh0KXt2YXIgZTt0LmRvbmU/aSh0LnZhbHVlKTooZT10LnZhbHVlLGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4oKGZ1bmN0aW9uKHQpe3QoZSl9KSkpLnRoZW4ocyxhKX1sKChvPW8uYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbih0LGUpe3ZhciBuLG8saSxyLHM9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmaVswXSl0aHJvdyBpWzFdO3JldHVybiBpWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHI9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihyW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHI7ZnVuY3Rpb24gYShhKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIGZ1bmN0aW9uKGEpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtyJiYocj0wLGFbMF0mJihzPTApKSxzOyl0cnl7aWYobj0xLG8mJihpPTImYVswXT9vLnJldHVybjphWzBdP28udGhyb3d8fCgoaT1vLnJldHVybikmJmkuY2FsbChvKSwwKTpvLm5leHQpJiYhKGk9aS5jYWxsKG8sYVsxXSkpLmRvbmUpcmV0dXJuIGk7c3dpdGNoKG89MCxpJiYoYT1bMiZhWzBdLGkudmFsdWVdKSxhWzBdKXtjYXNlIDA6Y2FzZSAxOmk9YTticmVhaztjYXNlIDQ6cmV0dXJuIHMubGFiZWwrKyx7dmFsdWU6YVsxXSxkb25lOiExfTtjYXNlIDU6cy5sYWJlbCsrLG89YVsxXSxhPVswXTtjb250aW51ZTtjYXNlIDc6YT1zLm9wcy5wb3AoKSxzLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKGk9cy50cnlzLChpPWkubGVuZ3RoPjAmJmlbaS5sZW5ndGgtMV0pfHw2IT09YVswXSYmMiE9PWFbMF0pKXtzPTA7Y29udGludWV9aWYoMz09PWFbMF0mJighaXx8YVsxXT5pWzBdJiZhWzFdPGlbM10pKXtzLmxhYmVsPWFbMV07YnJlYWt9aWYoNj09PWFbMF0mJnMubGFiZWw8aVsxXSl7cy5sYWJlbD1pWzFdLGk9YTticmVha31pZihpJiZzLmxhYmVsPGlbMl0pe3MubGFiZWw9aVsyXSxzLm9wcy5wdXNoKGEpO2JyZWFrfWlbMl0mJnMub3BzLnBvcCgpLHMudHJ5cy5wb3AoKTtjb250aW51ZX1hPWUuY2FsbCh0LHMpfWNhdGNoKHQpe2E9WzYsdF0sbz0wfWZpbmFsbHl7bj1pPTB9aWYoNSZhWzBdKXRocm93IGFbMV07cmV0dXJue3ZhbHVlOmFbMF0/YVsxXTp2b2lkIDAsZG9uZTohMH19KFthLGxdKX19fWZ1bmN0aW9uIG8odCxlLG4pe3ZhciBvLHI9KChvPXt9KVt0XT1lLG8ucGF0aD1cIi9cIixvLmV4cGlyZXM9dm9pZCAwLG8pO2lmKG4pe3ZhciBzPW5ldyBEYXRlO3Muc2V0VGltZShzLmdldFRpbWUoKSsyNCpuKjYwKjYwKjFlMyksci5leHBpcmVzPXMudG9VVENTdHJpbmcoKX12YXIgYT1bXTtmb3IodmFyIGwgaW4gcilhLnB1c2goXCJcIi5jb25jYXQobCxcIj1cIikuY29uY2F0KHJbbF0pKTtyZXR1cm4gZG9jdW1lbnQuY29va2llPWEuam9pbihcIjsgXCIpLGkodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4oZT17fSxkb2N1bWVudC5jb29raWUuc3BsaXQoXCI7XCIpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQuc3BsaXQoXCI9XCIpLG89blswXSxpPW5bMV07ZVtvLnRyaW0oKV09aX0pKSxlKVt0XTt2YXIgZX1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTdXBwcmVzc2VkRXJyb3ImJlN1cHByZXNzZWRFcnJvcjtmdW5jdGlvbiByKHQsZSl7ZT9vKHQuX29wdGlvbnMuZG9udFNob3dBZ2FpbkNvb2tpZSxcInRydWVcIix0Ll9vcHRpb25zLmRvbnRTaG93QWdhaW5Db29raWVEYXlzKTpvKHQuX29wdGlvbnMuZG9udFNob3dBZ2FpbkNvb2tpZSxcIlwiLC0xKX12YXIgcyxhPShzPXt9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPVwiaW50cm9qcy1zdGFtcFwiKSxzW2VdPXNbZV18fDAsdm9pZCAwPT09dFtlXSYmKHRbZV09c1tlXSsrKSx0W2VdfSksbD1uZXcoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5ldmVudHNfa2V5PVwiaW50cm9qc19ldmVudFwifXJldHVybiB0LnByb3RvdHlwZS5faWQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0K2EoZSkrKG4/XCJfXCIuY29uY2F0KGEobikpOlwiXCIpfSx0LnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUsbixvLGkpe3ZhciByPXRoaXMuX2lkKGUsbixvKSxzPWZ1bmN0aW9uKGUpe3JldHVybiBuKG98fHQsZXx8d2luZG93LmV2ZW50KX07XCJhZGRFdmVudExpc3RlbmVyXCJpbiB0P3QuYWRkRXZlbnRMaXN0ZW5lcihlLHMsaSk6XCJhdHRhY2hFdmVudFwiaW4gdCYmdC5hdHRhY2hFdmVudChcIm9uXCIuY29uY2F0KGUpLHMpLHRbdGhpcy5ldmVudHNfa2V5XT10W3RoaXMuZXZlbnRzX2tleV18fHt9LHRbdGhpcy5ldmVudHNfa2V5XVtyXT1zfSx0LnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24odCxlLG4sbyxpKXt2YXIgcj10aGlzLl9pZChlLG4sbykscz10W3RoaXMuZXZlbnRzX2tleV0mJnRbdGhpcy5ldmVudHNfa2V5XVtyXTtzJiYoXCJyZW1vdmVFdmVudExpc3RlbmVyXCJpbiB0P3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHMsaSk6XCJkZXRhY2hFdmVudFwiaW4gdCYmdC5kZXRhY2hFdmVudChcIm9uXCIuY29uY2F0KGUpLHMpLHRbdGhpcy5ldmVudHNfa2V5XVtyXT1udWxsKX0sdH0oKSksYz1mdW5jdGlvbih0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0fTtmdW5jdGlvbiB1KHQsZSl7aWYodCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCI7bi5tYXRjaChlKXx8dC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLFwiXCIuY29uY2F0KG4sXCIgXCIpLmNvbmNhdChlKSl9ZWxzZSBpZih2b2lkIDAhPT10LmNsYXNzTGlzdClmb3IodmFyIG89MCxpPWUuc3BsaXQoXCIgXCIpO288aS5sZW5ndGg7bysrKXt2YXIgcj1pW29dO3QuY2xhc3NMaXN0LmFkZChyKX1lbHNlIHQuY2xhc3NOYW1lLm1hdGNoKGUpfHwodC5jbGFzc05hbWUrPVwiIFwiLmNvbmNhdChlKSl9ZnVuY3Rpb24gcCh0LGUpe3ZhciBuPVwiXCI7cmV0dXJuXCJjdXJyZW50U3R5bGVcImluIHQ/bj10LmN1cnJlbnRTdHlsZVtlXTpkb2N1bWVudC5kZWZhdWx0VmlldyYmZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKG49ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSkpLG4mJm4udG9Mb3dlckNhc2U/bi50b0xvd2VyQ2FzZSgpOm59ZnVuY3Rpb24gaCh0LGUpe2lmKHQpe3ZhciBuPWZ1bmN0aW9uKHQpe3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLG49XCJhYnNvbHV0ZVwiPT09ZS5wb3NpdGlvbixvPS8oYXV0b3xzY3JvbGwpLztpZihcImZpeGVkXCI9PT1lLnBvc2l0aW9uKXJldHVybiBkb2N1bWVudC5ib2R5O2Zvcih2YXIgaT10O2k9aS5wYXJlbnRFbGVtZW50OylpZihlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGkpLCghbnx8XCJzdGF0aWNcIiE9PWUucG9zaXRpb24pJiZvLnRlc3QoZS5vdmVyZmxvdytlLm92ZXJmbG93WStlLm92ZXJmbG93WCkpcmV0dXJuIGk7cmV0dXJuIGRvY3VtZW50LmJvZHl9KGUpO24hPT1kb2N1bWVudC5ib2R5JiYobi5zY3JvbGxUb3A9ZS5vZmZzZXRUb3Atbi5vZmZzZXRUb3ApfX1mdW5jdGlvbiBkKCl7aWYodm9pZCAwIT09d2luZG93LmlubmVyV2lkdGgpcmV0dXJue3dpZHRoOndpbmRvdy5pbm5lcldpZHRoLGhlaWdodDp3aW5kb3cuaW5uZXJIZWlnaHR9O3ZhciB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyZXR1cm57d2lkdGg6dC5jbGllbnRXaWR0aCxoZWlnaHQ6dC5jbGllbnRIZWlnaHR9fWZ1bmN0aW9uIGYodCxlLG4sbyxpKXt2YXIgcjtpZihcIm9mZlwiIT09ZSYmKHQmJihyPVwidG9vbHRpcFwiPT09ZT9pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIWZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGUudG9wPj0wJiZlLmxlZnQ+PTAmJmUuYm90dG9tKzgwPD13aW5kb3cuaW5uZXJIZWlnaHQmJmUucmlnaHQ8PXdpbmRvdy5pbm5lcldpZHRofShvKSkpKXt2YXIgcz1kKCkuaGVpZ2h0O3IuYm90dG9tLShyLmJvdHRvbS1yLnRvcCk8MHx8by5jbGllbnRIZWlnaHQ+cz93aW5kb3cuc2Nyb2xsQnkoMCxyLnRvcC0ocy8yLXIuaGVpZ2h0LzIpLW4pOndpbmRvdy5zY3JvbGxCeSgwLHIudG9wLShzLzItci5oZWlnaHQvMikrbil9fWZ1bmN0aW9uIGIodCl7dC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJidXR0b25cIiksdC50YWJJbmRleD0wfWZ1bmN0aW9uIG0odCl7dmFyIGU9dC5wYXJlbnRFbGVtZW50O3JldHVybiEoIWV8fFwiSFRNTFwiPT09ZS5ub2RlTmFtZSkmJihcImZpeGVkXCI9PT1wKHQsXCJwb3NpdGlvblwiKXx8bShlKSl9ZnVuY3Rpb24gZyh0LGUpe3ZhciBuPWRvY3VtZW50LmJvZHksbz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaT13aW5kb3cucGFnZVlPZmZzZXR8fG8uc2Nyb2xsVG9wfHxuLnNjcm9sbFRvcCxyPXdpbmRvdy5wYWdlWE9mZnNldHx8by5zY3JvbGxMZWZ0fHxuLnNjcm9sbExlZnQ7ZT1lfHxuO3ZhciBzPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9cChlLFwicG9zaXRpb25cIiksYz17d2lkdGg6cy53aWR0aCxoZWlnaHQ6cy5oZWlnaHR9O3JldHVyblwiYm9keVwiIT09ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJlwicmVsYXRpdmVcIj09PWx8fFwic3RpY2t5XCI9PT1sP09iamVjdC5hc3NpZ24oYyx7dG9wOnMudG9wLWEudG9wLGxlZnQ6cy5sZWZ0LWEubGVmdH0pOm0odCk/T2JqZWN0LmFzc2lnbihjLHt0b3A6cy50b3AsbGVmdDpzLmxlZnR9KTpPYmplY3QuYXNzaWduKGMse3RvcDpzLnRvcCtpLGxlZnQ6cy5sZWZ0K3J9KX1mdW5jdGlvbiB2KHQsZSl7aWYodCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIil8fFwiXCI7dC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLG4ucmVwbGFjZShlLFwiXCIpLnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIikpfWVsc2UgdC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZShlLFwiXCIpLnJlcGxhY2UoL15cXHMrfFxccyskL2csXCJcIil9ZnVuY3Rpb24geSh0LGUpe3ZhciBuPVwiXCI7aWYodC5zdHlsZS5jc3NUZXh0JiYobis9dC5zdHlsZS5jc3NUZXh0KSxcInN0cmluZ1wiPT10eXBlb2YgZSluKz1lO2Vsc2UgZm9yKHZhciBvIGluIGUpbis9XCJcIi5jb25jYXQobyxcIjpcIikuY29uY2F0KGVbb10sXCI7XCIpO3Quc3R5bGUuY3NzVGV4dD1ufWZ1bmN0aW9uIHcodCxlLG4pe2lmKG4mJmUpe3ZhciBvPWcoZS5lbGVtZW50LHQuX3RhcmdldEVsZW1lbnQpLGk9dC5fb3B0aW9ucy5oZWxwZXJFbGVtZW50UGFkZGluZztlLmVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50JiZtKGUuZWxlbWVudCk/dShuLFwiaW50cm9qcy1maXhlZFRvb2x0aXBcIik6dihuLFwiaW50cm9qcy1maXhlZFRvb2x0aXBcIiksXCJmbG9hdGluZ1wiPT09ZS5wb3NpdGlvbiYmKGk9MCkseShuLHt3aWR0aDpcIlwiLmNvbmNhdChvLndpZHRoK2ksXCJweFwiKSxoZWlnaHQ6XCJcIi5jb25jYXQoby5oZWlnaHQraSxcInB4XCIpLHRvcDpcIlwiLmNvbmNhdChvLnRvcC1pLzIsXCJweFwiKSxsZWZ0OlwiXCIuY29uY2F0KG8ubGVmdC1pLzIsXCJweFwiKX0pfX1mdW5jdGlvbiBfKHQsZSxuLG8saSl7cmV0dXJuIHQubGVmdCtlK24ud2lkdGg+by53aWR0aD8oaS5zdHlsZS5sZWZ0PVwiXCIuY29uY2F0KG8ud2lkdGgtbi53aWR0aC10LmxlZnQsXCJweFwiKSwhMSk6KGkuc3R5bGUubGVmdD1cIlwiLmNvbmNhdChlLFwicHhcIiksITApfWZ1bmN0aW9uIEModCxlLG4sbyl7cmV0dXJuIHQubGVmdCt0LndpZHRoLWUtbi53aWR0aDwwPyhvLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoLXQubGVmdCxcInB4XCIpLCExKTooby5zdHlsZS5yaWdodD1cIlwiLmNvbmNhdChlLFwicHhcIiksITApfWZ1bmN0aW9uIFModCxlKXt0LmluY2x1ZGVzKGUpJiZ0LnNwbGljZSh0LmluZGV4T2YoZSksMSl9ZnVuY3Rpb24gayh0LGUsbixvKXt2YXIgaT10LnNsaWNlKCkscj1kKCkscz1nKG4pLmhlaWdodCsxMCxhPWcobikud2lkdGgrMjAsbD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9XCJmbG9hdGluZ1wiO2lmKGwuYm90dG9tK3M+ci5oZWlnaHQmJlMoaSxcImJvdHRvbVwiKSxsLnRvcC1zPDAmJlMoaSxcInRvcFwiKSxsLnJpZ2h0K2E+ci53aWR0aCYmUyhpLFwicmlnaHRcIiksbC5sZWZ0LWE8MCYmUyhpLFwibGVmdFwiKSxvJiYobz1vLnNwbGl0KFwiLVwiKVswXSksaS5sZW5ndGgmJihjPWlbMF0saS5pbmNsdWRlcyhvKSYmKGM9bykpLFwidG9wXCI9PT1jfHxcImJvdHRvbVwiPT09Yyl7dmFyIHU9dm9pZCAwLHA9W107XCJ0b3BcIj09PWM/KHU9XCJ0b3AtbWlkZGxlLWFsaWduZWRcIixwPVtcInRvcC1sZWZ0LWFsaWduZWRcIixcInRvcC1taWRkbGUtYWxpZ25lZFwiLFwidG9wLXJpZ2h0LWFsaWduZWRcIl0pOih1PVwiYm90dG9tLW1pZGRsZS1hbGlnbmVkXCIscD1bXCJib3R0b20tbGVmdC1hbGlnbmVkXCIsXCJib3R0b20tbWlkZGxlLWFsaWduZWRcIixcImJvdHRvbS1yaWdodC1hbGlnbmVkXCJdKSxjPWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPWUvMixyPU1hdGgubWluKG4sd2luZG93LnNjcmVlbi53aWR0aCk7cmV0dXJuIHItdDxlJiYoUyhvLFwidG9wLWxlZnQtYWxpZ25lZFwiKSxTKG8sXCJib3R0b20tbGVmdC1hbGlnbmVkXCIpKSwodDxpfHxyLXQ8aSkmJihTKG8sXCJ0b3AtbWlkZGxlLWFsaWduZWRcIiksUyhvLFwiYm90dG9tLW1pZGRsZS1hbGlnbmVkXCIpKSx0PGUmJihTKG8sXCJ0b3AtcmlnaHQtYWxpZ25lZFwiKSxTKG8sXCJib3R0b20tcmlnaHQtYWxpZ25lZFwiKSksby5sZW5ndGg/b1swXTpudWxsfShsLmxlZnQsYSxyLndpZHRoLHApfHx1fXJldHVybiBjfWZ1bmN0aW9uIGoodCxlLG4sbyxpKXtpZih2b2lkIDA9PT1pJiYoaT0hMSksZSl7dmFyIHIscyxhLGwsYz1cIlwiO24uc3R5bGUudG9wPVwiXCIsbi5zdHlsZS5yaWdodD1cIlwiLG4uc3R5bGUuYm90dG9tPVwiXCIsbi5zdHlsZS5sZWZ0PVwiXCIsbi5zdHlsZS5tYXJnaW5MZWZ0PVwiXCIsbi5zdHlsZS5tYXJnaW5Ub3A9XCJcIixvLnN0eWxlLmRpc3BsYXk9XCJpbmhlcml0XCIsYz1cInN0cmluZ1wiPT10eXBlb2YgZS50b29sdGlwQ2xhc3M/ZS50b29sdGlwQ2xhc3M6dC5fb3B0aW9ucy50b29sdGlwQ2xhc3Msbi5jbGFzc05hbWU9W1wiaW50cm9qcy10b29sdGlwXCIsY10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpLG4uc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiZGlhbG9nXCIpLFwiZmxvYXRpbmdcIiE9PShsPWUucG9zaXRpb24pJiZ0Ll9vcHRpb25zLmF1dG9Qb3NpdGlvbiYmKGw9ayh0Ll9vcHRpb25zLnBvc2l0aW9uUHJlY2VkZW5jZSxlLmVsZW1lbnQsbixsKSkscz1nKGUuZWxlbWVudCkscj1nKG4pLGE9ZCgpLHUobixcImludHJvanMtXCIuY29uY2F0KGwpKTt2YXIgcD1zLndpZHRoLzItci53aWR0aC8yO3N3aXRjaChsKXtjYXNlXCJ0b3AtcmlnaHQtYWxpZ25lZFwiOm8uY2xhc3NOYW1lPVwiaW50cm9qcy1hcnJvdyBib3R0b20tcmlnaHRcIjt2YXIgaD0wO0MocyxoLHIsbiksbi5zdHlsZS5ib3R0b209XCJcIi5jb25jYXQocy5oZWlnaHQrMjAsXCJweFwiKTticmVhaztjYXNlXCJ0b3AtbWlkZGxlLWFsaWduZWRcIjpvLmNsYXNzTmFtZT1cImludHJvanMtYXJyb3cgYm90dG9tLW1pZGRsZVwiLGkmJihwKz01KSxDKHMscCxyLG4pJiYobi5zdHlsZS5yaWdodD1cIlwiLF8ocyxwLHIsYSxuKSksbi5zdHlsZS5ib3R0b209XCJcIi5jb25jYXQocy5oZWlnaHQrMjAsXCJweFwiKTticmVhaztjYXNlXCJ0b3AtbGVmdC1hbGlnbmVkXCI6Y2FzZVwidG9wXCI6by5jbGFzc05hbWU9XCJpbnRyb2pzLWFycm93IGJvdHRvbVwiLF8ocyxpPzA6MTUscixhLG4pLG4uc3R5bGUuYm90dG9tPVwiXCIuY29uY2F0KHMuaGVpZ2h0KzIwLFwicHhcIik7YnJlYWs7Y2FzZVwicmlnaHRcIjpuLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQocy53aWR0aCsyMCxcInB4XCIpLHMudG9wK3IuaGVpZ2h0PmEuaGVpZ2h0PyhvLmNsYXNzTmFtZT1cImludHJvanMtYXJyb3cgbGVmdC1ib3R0b21cIixuLnN0eWxlLnRvcD1cIi1cIi5jb25jYXQoci5oZWlnaHQtcy5oZWlnaHQtMjAsXCJweFwiKSk6by5jbGFzc05hbWU9XCJpbnRyb2pzLWFycm93IGxlZnRcIjticmVhaztjYXNlXCJsZWZ0XCI6aXx8ITAhPT10Ll9vcHRpb25zLnNob3dTdGVwTnVtYmVyc3x8KG4uc3R5bGUudG9wPVwiMTVweFwiKSxzLnRvcCtyLmhlaWdodD5hLmhlaWdodD8obi5zdHlsZS50b3A9XCItXCIuY29uY2F0KHIuaGVpZ2h0LXMuaGVpZ2h0LTIwLFwicHhcIiksby5jbGFzc05hbWU9XCJpbnRyb2pzLWFycm93IHJpZ2h0LWJvdHRvbVwiKTpvLmNsYXNzTmFtZT1cImludHJvanMtYXJyb3cgcmlnaHRcIixuLnN0eWxlLnJpZ2h0PVwiXCIuY29uY2F0KHMud2lkdGgrMjAsXCJweFwiKTticmVhaztjYXNlXCJmbG9hdGluZ1wiOm8uc3R5bGUuZGlzcGxheT1cIm5vbmVcIixuLnN0eWxlLmxlZnQ9XCI1MCVcIixuLnN0eWxlLnRvcD1cIjUwJVwiLG4uc3R5bGUubWFyZ2luTGVmdD1cIi1cIi5jb25jYXQoci53aWR0aC8yLFwicHhcIiksbi5zdHlsZS5tYXJnaW5Ub3A9XCItXCIuY29uY2F0KHIuaGVpZ2h0LzIsXCJweFwiKTticmVhaztjYXNlXCJib3R0b20tcmlnaHQtYWxpZ25lZFwiOm8uY2xhc3NOYW1lPVwiaW50cm9qcy1hcnJvdyB0b3AtcmlnaHRcIixDKHMsaD0wLHIsbiksbi5zdHlsZS50b3A9XCJcIi5jb25jYXQocy5oZWlnaHQrMjAsXCJweFwiKTticmVhaztjYXNlXCJib3R0b20tbWlkZGxlLWFsaWduZWRcIjpvLmNsYXNzTmFtZT1cImludHJvanMtYXJyb3cgdG9wLW1pZGRsZVwiLGkmJihwKz01KSxDKHMscCxyLG4pJiYobi5zdHlsZS5yaWdodD1cIlwiLF8ocyxwLHIsYSxuKSksbi5zdHlsZS50b3A9XCJcIi5jb25jYXQocy5oZWlnaHQrMjAsXCJweFwiKTticmVhaztkZWZhdWx0Om8uY2xhc3NOYW1lPVwiaW50cm9qcy1hcnJvdyB0b3BcIixfKHMsMCxyLGEsbiksbi5zdHlsZS50b3A9XCJcIi5jb25jYXQocy5oZWlnaHQrMjAsXCJweFwiKX19fWZ1bmN0aW9uIEEoKXtmb3IodmFyIHQ9MCxlPUFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5pbnRyb2pzLXNob3dFbGVtZW50XCIpKTt0PGUubGVuZ3RoO3QrKyl7dihlW3RdLC9pbnRyb2pzLVthLXpBLVpdKy9nKX19ZnVuY3Rpb24geCh0LGUpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7ZT1lfHx7fTt2YXIgbz0vXig/OnJvbGV8ZGF0YS18YXJpYS0pLztmb3IodmFyIGkgaW4gZSl7dmFyIHI9ZVtpXTtcInN0eWxlXCI9PT1pJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByP3kobixyKTpcInN0cmluZ1wiPT10eXBlb2YgciYmaS5tYXRjaChvKT9uLnNldEF0dHJpYnV0ZShpLHIpOm5baV09cn1yZXR1cm4gbn1mdW5jdGlvbiBOKHQsZSxuKXtpZih2b2lkIDA9PT1uJiYobj0hMSksbil7dmFyIG89ZS5zdHlsZS5vcGFjaXR5fHxcIjFcIjt5KGUse29wYWNpdHk6XCIwXCJ9KSx3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt5KGUse29wYWNpdHk6b30pfSksMTApfXQuYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24gRSh0LGUpe3JldHVybih0KzEpL2UqMTAwfWZ1bmN0aW9uIFQodCxlKXt2YXIgbj14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtYnVsbGV0c1wifSk7ITE9PT10Ll9vcHRpb25zLnNob3dCdWxsZXRzJiYobi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgbz14KFwidWxcIik7by5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJ0YWJsaXN0XCIpO2Zvcih2YXIgaT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwLW51bWJlclwiKTtudWxsIT1lJiZ0LmdvVG9TdGVwKHBhcnNlSW50KGUsMTApKX0scj0wO3I8dC5faW50cm9JdGVtcy5sZW5ndGg7cisrKXt2YXIgcz10Ll9pbnRyb0l0ZW1zW3JdLnN0ZXAsYT14KFwibGlcIiksbD14KFwiYVwiKTthLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInByZXNlbnRhdGlvblwiKSxsLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInRhYlwiKSxsLm9uY2xpY2s9aSxyPT09ZS5zdGVwLTEmJihsLmNsYXNzTmFtZT1cImFjdGl2ZVwiKSxiKGwpLGwuaW5uZXJIVE1MPVwiJm5ic3A7XCIsbC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXN0ZXAtbnVtYmVyXCIscy50b1N0cmluZygpKSxhLmFwcGVuZENoaWxkKGwpLG8uYXBwZW5kQ2hpbGQoYSl9cmV0dXJuIG4uYXBwZW5kQ2hpbGQobyksbn1mdW5jdGlvbiBJKHQsZSxuKXt2YXIgbz10LnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1wcm9ncmVzcyAuaW50cm9qcy1wcm9ncmVzc2JhclwiKTtpZihvKXt2YXIgaT1FKGUsbik7by5zdHlsZS5jc3NUZXh0PVwid2lkdGg6XCIuY29uY2F0KGksXCIlO1wiKSxvLnNldEF0dHJpYnV0ZShcImFyaWEtdmFsdWVub3dcIixpLnRvU3RyaW5nKCkpfX1mdW5jdGlvbiBMKHQsbyl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBpLHIscyxhLGwsZCxtLGcsdixfLEMsUyxrLEwsUCxxLFIsTyxNLEQsRixWLHosRyxXPXRoaXM7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24oUSl7c3dpdGNoKFEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gYyh0Ll9pbnRyb0NoYW5nZUNhbGxiYWNrKT9bNCx0Ll9pbnRyb0NoYW5nZUNhbGxiYWNrLmNhbGwodCxvLmVsZW1lbnQpXTpbMywyXTtjYXNlIDE6US5zZW50KCksUS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtaGVscGVyTGF5ZXJcIikscj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtdG9vbHRpcFJlZmVyZW5jZUxheWVyXCIpLHM9XCJpbnRyb2pzLWhlbHBlckxheWVyXCIsXCJzdHJpbmdcIj09dHlwZW9mIG8uaGlnaGxpZ2h0Q2xhc3MmJihzKz1cIiBcIi5jb25jYXQoby5oaWdobGlnaHRDbGFzcykpLFwic3RyaW5nXCI9PXR5cGVvZiB0Ll9vcHRpb25zLmhpZ2hsaWdodENsYXNzJiYocys9XCIgXCIuY29uY2F0KHQuX29wdGlvbnMuaGlnaGxpZ2h0Q2xhc3MpKSxudWxsIT09aSYmbnVsbCE9PXI/KG09ci5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtaGVscGVyTnVtYmVyTGF5ZXJcIiksZz1yLnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy10b29sdGlwdGV4dFwiKSx2PXIucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLXRvb2x0aXAtdGl0bGVcIiksXz1yLnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1hcnJvd1wiKSxDPXIucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLXRvb2x0aXBcIiksZD1yLnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1za2lwYnV0dG9uXCIpLGw9ci5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtcHJldmJ1dHRvblwiKSxhPXIucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLW5leHRidXR0b25cIiksaS5jbGFzc05hbWU9cyxDLnN0eWxlLm9wYWNpdHk9XCIwXCIsQy5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGgodC5fb3B0aW9ucy5zY3JvbGxUb0VsZW1lbnQsby5lbGVtZW50KSx3KHQsbyxpKSx3KHQsbyxyKSxBKCksdC5fbGFzdFNob3dFbGVtZW50VGltZXImJndpbmRvdy5jbGVhclRpbWVvdXQodC5fbGFzdFNob3dFbGVtZW50VGltZXIpLHQuX2xhc3RTaG93RWxlbWVudFRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe251bGwhPT1tJiYobS5pbm5lckhUTUw9XCJcIi5jb25jYXQoby5zdGVwLFwiIFwiKS5jb25jYXQodC5fb3B0aW9ucy5zdGVwTnVtYmVyc09mTGFiZWwsXCIgXCIpLmNvbmNhdCh0Ll9pbnRyb0l0ZW1zLmxlbmd0aCkpLGcuaW5uZXJIVE1MPW8uaW50cm98fFwiXCIsdi5pbm5lckhUTUw9by50aXRsZXx8XCJcIixDLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiLGoodCxvLEMsXyksZnVuY3Rpb24odCxlLG4pe2lmKHQpe3ZhciBvPWUucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLWJ1bGxldHMgbGkgPiBhLmFjdGl2ZVwiKSxpPWUucXVlcnlTZWxlY3RvcignLmludHJvanMtYnVsbGV0cyBsaSA+IGFbZGF0YS1zdGVwLW51bWJlcj1cIicuY29uY2F0KG4uc3RlcCwnXCJdJykpO28mJmkmJihvLmNsYXNzTmFtZT1cIlwiLGkuY2xhc3NOYW1lPVwiYWN0aXZlXCIpfX0odC5fb3B0aW9ucy5zaG93QnVsbGV0cyxyLG8pLEkocix0Ll9jdXJyZW50U3RlcCx0Ll9pbnRyb0l0ZW1zLmxlbmd0aCksQy5zdHlsZS5vcGFjaXR5PVwiMVwiLChudWxsIT1hJiYvaW50cm9qcy1kb25lYnV0dG9uL2dpLnRlc3QoYS5jbGFzc05hbWUpfHxudWxsIT1hKSYmYS5mb2N1cygpLGYodC5fb3B0aW9ucy5zY3JvbGxUb0VsZW1lbnQsby5zY3JvbGxUbyx0Ll9vcHRpb25zLnNjcm9sbFBhZGRpbmcsby5lbGVtZW50LGcpfSksMzUwKSk6KFM9eChcImRpdlwiLHtjbGFzc05hbWU6c30pLGs9eChcImRpdlwiLHtjbGFzc05hbWU6XCJpbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllclwifSksTD14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtYXJyb3dcIn0pLFA9eChcImRpdlwiLHtjbGFzc05hbWU6XCJpbnRyb2pzLXRvb2x0aXBcIn0pLHE9eChcImRpdlwiLHtjbGFzc05hbWU6XCJpbnRyb2pzLXRvb2x0aXB0ZXh0XCJ9KSxSPXgoXCJkaXZcIix7Y2xhc3NOYW1lOlwiaW50cm9qcy10b29sdGlwLWhlYWRlclwifSksTz14KFwiaDFcIix7Y2xhc3NOYW1lOlwiaW50cm9qcy10b29sdGlwLXRpdGxlXCJ9KSxNPXgoXCJkaXZcIikseShTLHtcImJveC1zaGFkb3dcIjpcIjAgMCAxcHggMnB4IHJnYmEoMzMsIDMzLCAzMywgMC44KSwgcmdiYSgzMywgMzMsIDMzLCBcIi5jb25jYXQodC5fb3B0aW9ucy5vdmVybGF5T3BhY2l0eS50b1N0cmluZygpLFwiKSAwIDAgMCA1MDAwcHhcIil9KSxoKHQuX29wdGlvbnMuc2Nyb2xsVG9FbGVtZW50LG8uZWxlbWVudCksdyh0LG8sUyksdyh0LG8sayksTih0Ll90YXJnZXRFbGVtZW50LFMsITApLE4odC5fdGFyZ2V0RWxlbWVudCxrKSxxLmlubmVySFRNTD1vLmludHJvLE8uaW5uZXJIVE1MPW8udGl0bGUsTS5jbGFzc05hbWU9XCJpbnRyb2pzLXRvb2x0aXBidXR0b25zXCIsITE9PT10Ll9vcHRpb25zLnNob3dCdXR0b25zJiYoTS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKSxSLmFwcGVuZENoaWxkKE8pLFAuYXBwZW5kQ2hpbGQoUiksUC5hcHBlbmRDaGlsZChxKSx0Ll9vcHRpb25zLmRvbnRTaG93QWdhaW4mJihEPXgoXCJkaXZcIix7Y2xhc3NOYW1lOlwiaW50cm9qcy1kb250U2hvd0FnYWluXCJ9KSwoRj14KFwiaW5wdXRcIix7dHlwZTpcImNoZWNrYm94XCIsaWQ6XCJpbnRyb2pzLWRvbnRTaG93QWdhaW5cIixuYW1lOlwiaW50cm9qcy1kb250U2hvd0FnYWluXCJ9KSkub25jaGFuZ2U9ZnVuY3Rpb24oZSl7dC5zZXREb250U2hvd0FnYWluKGUudGFyZ2V0LmNoZWNrZWQpfSwoVj14KFwibGFiZWxcIix7aHRtbEZvcjpcImludHJvanMtZG9udFNob3dBZ2FpblwifSkpLmlubmVyVGV4dD10Ll9vcHRpb25zLmRvbnRTaG93QWdhaW5MYWJlbCxELmFwcGVuZENoaWxkKEYpLEQuYXBwZW5kQ2hpbGQoViksUC5hcHBlbmRDaGlsZChEKSksUC5hcHBlbmRDaGlsZChUKHQsbykpLFAuYXBwZW5kQ2hpbGQoZnVuY3Rpb24odCl7dmFyIGU9eChcImRpdlwiKTtlLmNsYXNzTmFtZT1cImludHJvanMtcHJvZ3Jlc3NcIiwhMT09PXQuX29wdGlvbnMuc2hvd1Byb2dyZXNzJiYoZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiKTt2YXIgbj14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtcHJvZ3Jlc3NiYXJcIn0pO3QuX29wdGlvbnMucHJvZ3Jlc3NCYXJBZGRpdGlvbmFsQ2xhc3MmJihuLmNsYXNzTmFtZSs9XCIgXCIrdC5fb3B0aW9ucy5wcm9ncmVzc0JhckFkZGl0aW9uYWxDbGFzcyk7dmFyIG89RSh0Ll9jdXJyZW50U3RlcCx0Ll9pbnRyb0l0ZW1zLmxlbmd0aCk7cmV0dXJuIG4uc2V0QXR0cmlidXRlKFwicm9sZVwiLFwicHJvZ3Jlc3NcIiksbi5zZXRBdHRyaWJ1dGUoXCJhcmlhLXZhbHVlbWluXCIsXCIwXCIpLG4uc2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZW1heFwiLFwiMTAwXCIpLG4uc2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZW5vd1wiLG8udG9TdHJpbmcoKSksbi5zdHlsZS5jc3NUZXh0PVwid2lkdGg6XCIuY29uY2F0KG8sXCIlO1wiKSxlLmFwcGVuZENoaWxkKG4pLGV9KHQpKSx6PXgoXCJkaXZcIiksITA9PT10Ll9vcHRpb25zLnNob3dTdGVwTnVtYmVycyYmKHouY2xhc3NOYW1lPVwiaW50cm9qcy1oZWxwZXJOdW1iZXJMYXllclwiLHouaW5uZXJIVE1MPVwiXCIuY29uY2F0KG8uc3RlcCxcIiBcIikuY29uY2F0KHQuX29wdGlvbnMuc3RlcE51bWJlcnNPZkxhYmVsLFwiIFwiKS5jb25jYXQodC5faW50cm9JdGVtcy5sZW5ndGgpLFAuYXBwZW5kQ2hpbGQoeikpLFAuYXBwZW5kQ2hpbGQoTCksay5hcHBlbmRDaGlsZChQKSwoYT14KFwiYVwiKSkub25jbGljaz1mdW5jdGlvbigpe3JldHVybiBlKFcsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0Ll9pbnRyb0l0ZW1zLmxlbmd0aC0xPT09dC5fY3VycmVudFN0ZXA/WzMsMl06WzQsQih0KV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMyw2XTtjYXNlIDI6cmV0dXJuL2ludHJvanMtZG9uZWJ1dHRvbi9naS50ZXN0KGEuY2xhc3NOYW1lKT9jKHQuX2ludHJvQ29tcGxldGVDYWxsYmFjayk/WzQsdC5faW50cm9Db21wbGV0ZUNhbGxiYWNrLmNhbGwodCx0Ll9jdXJyZW50U3RlcCxcImRvbmVcIildOlszLDRdOlszLDZdO2Nhc2UgMzplLnNlbnQoKSxlLmxhYmVsPTQ7Y2FzZSA0OnJldHVybls0LGV0KHQsdC5fdGFyZ2V0RWxlbWVudCldO2Nhc2UgNTplLnNlbnQoKSxlLmxhYmVsPTY7Y2FzZSA2OnJldHVyblsyXX19KSl9KSl9LGIoYSksYS5pbm5lckhUTUw9dC5fb3B0aW9ucy5uZXh0TGFiZWwsKGw9eChcImFcIikpLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZShXLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdC5fY3VycmVudFN0ZXA+MD9bNCxIKHQpXTpbMywyXTtjYXNlIDE6ZS5zZW50KCksZS5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMl19fSkpfSkpfSxiKGwpLGwuaW5uZXJIVE1MPXQuX29wdGlvbnMucHJldkxhYmVsLGIoZD14KFwiYVwiLHtjbGFzc05hbWU6XCJpbnRyb2pzLXNraXBidXR0b25cIn0pKSxkLmlubmVySFRNTD10Ll9vcHRpb25zLnNraXBMYWJlbCxkLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gZShXLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdC5faW50cm9JdGVtcy5sZW5ndGgtMT09PXQuX2N1cnJlbnRTdGVwJiZjKHQuX2ludHJvQ29tcGxldGVDYWxsYmFjayk/WzQsdC5faW50cm9Db21wbGV0ZUNhbGxiYWNrLmNhbGwodCx0Ll9jdXJyZW50U3RlcCxcInNraXBcIildOlszLDJdO2Nhc2UgMTplLnNlbnQoKSxlLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBjKHQuX2ludHJvU2tpcENhbGxiYWNrKT9bNCx0Ll9pbnRyb1NraXBDYWxsYmFjay5jYWxsKHQsdC5fY3VycmVudFN0ZXApXTpbMyw0XTtjYXNlIDM6ZS5zZW50KCksZS5sYWJlbD00O2Nhc2UgNDpyZXR1cm5bNCxldCh0LHQuX3RhcmdldEVsZW1lbnQpXTtjYXNlIDU6cmV0dXJuIGUuc2VudCgpLFsyXX19KSl9KSl9LFIuYXBwZW5kQ2hpbGQoZCksdC5faW50cm9JdGVtcy5sZW5ndGg+MSYmTS5hcHBlbmRDaGlsZChsKSxNLmFwcGVuZENoaWxkKGEpLFAuYXBwZW5kQ2hpbGQoTSksaih0LG8sUCxMKSxmKHQuX29wdGlvbnMuc2Nyb2xsVG9FbGVtZW50LG8uc2Nyb2xsVG8sdC5fb3B0aW9ucy5zY3JvbGxQYWRkaW5nLG8uZWxlbWVudCxQKSksKEc9dC5fdGFyZ2V0RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtZGlzYWJsZUludGVyYWN0aW9uXCIpKSYmRy5wYXJlbnROb2RlJiZHLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoRyksby5kaXNhYmxlSW50ZXJhY3Rpb24mJmZ1bmN0aW9uKHQsZSl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLWRpc2FibGVJbnRlcmFjdGlvblwiKTtudWxsPT09biYmKG49eChcImRpdlwiLHtjbGFzc05hbWU6XCJpbnRyb2pzLWRpc2FibGVJbnRlcmFjdGlvblwifSksdC5fdGFyZ2V0RWxlbWVudC5hcHBlbmRDaGlsZChuKSksdyh0LGUsbil9KHQsbyksMD09PXQuX2N1cnJlbnRTdGVwJiZ0Ll9pbnRyb0l0ZW1zLmxlbmd0aD4xPyhudWxsIT1hJiYoYS5jbGFzc05hbWU9XCJcIi5jb25jYXQodC5fb3B0aW9ucy5idXR0b25DbGFzcyxcIiBpbnRyb2pzLW5leHRidXR0b25cIiksYS5pbm5lckhUTUw9dC5fb3B0aW9ucy5uZXh0TGFiZWwpLCEwPT09dC5fb3B0aW9ucy5oaWRlUHJldj8obnVsbCE9bCYmKGwuY2xhc3NOYW1lPVwiXCIuY29uY2F0KHQuX29wdGlvbnMuYnV0dG9uQ2xhc3MsXCIgaW50cm9qcy1wcmV2YnV0dG9uIGludHJvanMtaGlkZGVuXCIpKSxudWxsIT1hJiZ1KGEsXCJpbnRyb2pzLWZ1bGxidXR0b25cIikpOm51bGwhPWwmJihsLmNsYXNzTmFtZT1cIlwiLmNvbmNhdCh0Ll9vcHRpb25zLmJ1dHRvbkNsYXNzLFwiIGludHJvanMtcHJldmJ1dHRvbiBpbnRyb2pzLWRpc2FibGVkXCIpKSk6dC5faW50cm9JdGVtcy5sZW5ndGgtMT09PXQuX2N1cnJlbnRTdGVwfHwxPT09dC5faW50cm9JdGVtcy5sZW5ndGg/KG51bGwhPWwmJihsLmNsYXNzTmFtZT1cIlwiLmNvbmNhdCh0Ll9vcHRpb25zLmJ1dHRvbkNsYXNzLFwiIGludHJvanMtcHJldmJ1dHRvblwiKSksITA9PT10Ll9vcHRpb25zLmhpZGVOZXh0PyhudWxsIT1hJiYoYS5jbGFzc05hbWU9XCJcIi5jb25jYXQodC5fb3B0aW9ucy5idXR0b25DbGFzcyxcIiBpbnRyb2pzLW5leHRidXR0b24gaW50cm9qcy1oaWRkZW5cIikpLG51bGwhPWwmJnUobCxcImludHJvanMtZnVsbGJ1dHRvblwiKSk6bnVsbCE9YSYmKCEwPT09dC5fb3B0aW9ucy5uZXh0VG9Eb25lPyhhLmlubmVySFRNTD10Ll9vcHRpb25zLmRvbmVMYWJlbCx1KGEsXCJcIi5jb25jYXQodC5fb3B0aW9ucy5idXR0b25DbGFzcyxcIiBpbnRyb2pzLW5leHRidXR0b24gaW50cm9qcy1kb25lYnV0dG9uXCIpKSk6YS5jbGFzc05hbWU9XCJcIi5jb25jYXQodC5fb3B0aW9ucy5idXR0b25DbGFzcyxcIiBpbnRyb2pzLW5leHRidXR0b24gaW50cm9qcy1kaXNhYmxlZFwiKSkpOihudWxsIT1sJiYobC5jbGFzc05hbWU9XCJcIi5jb25jYXQodC5fb3B0aW9ucy5idXR0b25DbGFzcyxcIiBpbnRyb2pzLXByZXZidXR0b25cIikpLG51bGwhPWEmJihhLmNsYXNzTmFtZT1cIlwiLmNvbmNhdCh0Ll9vcHRpb25zLmJ1dHRvbkNsYXNzLFwiIGludHJvanMtbmV4dGJ1dHRvblwiKSxhLmlubmVySFRNTD10Ll9vcHRpb25zLm5leHRMYWJlbCkpLG51bGwhPWwmJmwuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiYnV0dG9uXCIpLG51bGwhPWEmJmEuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiYnV0dG9uXCIpLG51bGwhPWQmJmQuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiYnV0dG9uXCIpLG51bGwhPWEmJmEuZm9jdXMoKSxmdW5jdGlvbih0KXt1KHQsXCJpbnRyb2pzLXNob3dFbGVtZW50XCIpO3ZhciBlPXAodCxcInBvc2l0aW9uXCIpO1wiYWJzb2x1dGVcIiE9PWUmJlwicmVsYXRpdmVcIiE9PWUmJlwic3RpY2t5XCIhPT1lJiZcImZpeGVkXCIhPT1lJiZ1KHQsXCJpbnRyb2pzLXJlbGF0aXZlUG9zaXRpb25cIil9KG8uZWxlbWVudCksYyh0Ll9pbnRyb0FmdGVyQ2hhbmdlQ2FsbGJhY2spP1s0LHQuX2ludHJvQWZ0ZXJDaGFuZ2VDYWxsYmFjay5jYWxsKHQsby5lbGVtZW50KV06WzMsNF07Y2FzZSAzOlEuc2VudCgpLFEubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pKX0pKX1mdW5jdGlvbiBQKHQsbyl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHQuX2N1cnJlbnRTdGVwPW8tMix2b2lkIDA9PT10Ll9pbnRyb0l0ZW1zP1szLDJdOls0LEIodCldO2Nhc2UgMTplLnNlbnQoKSxlLmxhYmVsPTI7Y2FzZSAyOnJldHVyblsyXX19KSl9KSl9ZnVuY3Rpb24gcSh0LG8pe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybiB0Ll9jdXJyZW50U3RlcE51bWJlcj1vLHZvaWQgMD09PXQuX2ludHJvSXRlbXM/WzMsMl06WzQsQih0KV07Y2FzZSAxOmUuc2VudCgpLGUubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzJdfX0pKX0pKX1mdW5jdGlvbiBCKHQpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgZSxvLGk7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDppZih0Ll9kaXJlY3Rpb249XCJmb3J3YXJkXCIsdm9pZCAwIT09dC5fY3VycmVudFN0ZXBOdW1iZXIpZm9yKGU9MDtlPHQuX2ludHJvSXRlbXMubGVuZ3RoO2UrKyl0Ll9pbnRyb0l0ZW1zW2VdLnN0ZXA9PT10Ll9jdXJyZW50U3RlcE51bWJlciYmKHQuX2N1cnJlbnRTdGVwPWUtMSx0Ll9jdXJyZW50U3RlcE51bWJlcj12b2lkIDApO3JldHVybi0xPT09dC5fY3VycmVudFN0ZXA/dC5fY3VycmVudFN0ZXA9MDorK3QuX2N1cnJlbnRTdGVwLG89dC5faW50cm9JdGVtc1t0Ll9jdXJyZW50U3RlcF0saT0hMCxjKHQuX2ludHJvQmVmb3JlQ2hhbmdlQ2FsbGJhY2spP1s0LHQuX2ludHJvQmVmb3JlQ2hhbmdlQ2FsbGJhY2suY2FsbCh0LG8mJm8uZWxlbWVudCx0Ll9jdXJyZW50U3RlcCx0Ll9kaXJlY3Rpb24pXTpbMywyXTtjYXNlIDE6aT1uLnNlbnQoKSxuLmxhYmVsPTI7Y2FzZSAyOnJldHVybiExPT09aT8oLS10Ll9jdXJyZW50U3RlcCxbMiwhMV0pOnQuX2ludHJvSXRlbXMubGVuZ3RoPD10Ll9jdXJyZW50U3RlcD9jKHQuX2ludHJvQ29tcGxldGVDYWxsYmFjayk/WzQsdC5faW50cm9Db21wbGV0ZUNhbGxiYWNrLmNhbGwodCx0Ll9jdXJyZW50U3RlcCxcImVuZFwiKV06WzMsNF06WzMsNl07Y2FzZSAzOm4uc2VudCgpLG4ubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzQsZXQodCx0Ll90YXJnZXRFbGVtZW50KV07Y2FzZSA1OnJldHVybiBuLnNlbnQoKSxbMiwhMV07Y2FzZSA2OnJldHVybls0LEwodCxvKV07Y2FzZSA3OnJldHVybiBuLnNlbnQoKSxbMiwhMF19fSkpfSkpfWZ1bmN0aW9uIEgodCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlLG87cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdC5fZGlyZWN0aW9uPVwiYmFja3dhcmRcIix0Ll9jdXJyZW50U3RlcDw9MD9bMiwhMV06KC0tdC5fY3VycmVudFN0ZXAsZT10Ll9pbnRyb0l0ZW1zW3QuX2N1cnJlbnRTdGVwXSxvPSEwLGModC5faW50cm9CZWZvcmVDaGFuZ2VDYWxsYmFjayk/WzQsdC5faW50cm9CZWZvcmVDaGFuZ2VDYWxsYmFjay5jYWxsKHQsZSYmZS5lbGVtZW50LHQuX2N1cnJlbnRTdGVwLHQuX2RpcmVjdGlvbildOlszLDJdKTtjYXNlIDE6bz1uLnNlbnQoKSxuLmxhYmVsPTI7Y2FzZSAyOnJldHVybiExPT09bz8oKyt0Ll9jdXJyZW50U3RlcCxbMiwhMV0pOls0LEwodCxlKV07Y2FzZSAzOnJldHVybiBuLnNlbnQoKSxbMiwhMF19fSkpfSkpfWZ1bmN0aW9uIFIodCxvKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGUsaTtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybiBudWxsPT09KGU9dm9pZCAwPT09by5jb2RlP28ud2hpY2g6by5jb2RlKSYmKGU9bnVsbD09PW8uY2hhckNvZGU/by5rZXlDb2RlOm8uY2hhckNvZGUpLFwiRXNjYXBlXCIhPT1lJiYyNyE9PWV8fCEwIT09dC5fb3B0aW9ucy5leGl0T25Fc2M/WzMsMl06WzQsZXQodCx0Ll90YXJnZXRFbGVtZW50KV07Y2FzZSAxOnJldHVybiBuLnNlbnQoKSxbMywxNl07Y2FzZSAyOnJldHVyblwiQXJyb3dMZWZ0XCIhPT1lJiYzNyE9PWU/WzMsNF06WzQsSCh0KV07Y2FzZSAzOnJldHVybiBuLnNlbnQoKSxbMywxNl07Y2FzZSA0OnJldHVyblwiQXJyb3dSaWdodFwiIT09ZSYmMzkhPT1lP1szLDZdOls0LEIodCldO2Nhc2UgNTpyZXR1cm4gbi5zZW50KCksWzMsMTZdO2Nhc2UgNjpyZXR1cm5cIkVudGVyXCIhPT1lJiZcIk51bXBhZEVudGVyXCIhPT1lJiYxMyE9PWU/WzMsMTZdOihpPW8udGFyZ2V0fHxvLnNyY0VsZW1lbnQpJiZpLmNsYXNzTmFtZS5tYXRjaChcImludHJvanMtcHJldmJ1dHRvblwiKT9bNCxIKHQpXTpbMyw4XTtjYXNlIDc6cmV0dXJuIG4uc2VudCgpLFszLDE1XTtjYXNlIDg6cmV0dXJuIGkmJmkuY2xhc3NOYW1lLm1hdGNoKFwiaW50cm9qcy1za2lwYnV0dG9uXCIpP3QuX2ludHJvSXRlbXMubGVuZ3RoLTE9PT10Ll9jdXJyZW50U3RlcCYmYyh0Ll9pbnRyb0NvbXBsZXRlQ2FsbGJhY2spP1s0LHQuX2ludHJvQ29tcGxldGVDYWxsYmFjay5jYWxsKHQsdC5fY3VycmVudFN0ZXAsXCJza2lwXCIpXTpbMywxMF06WzMsMTJdO2Nhc2UgOTpuLnNlbnQoKSxuLmxhYmVsPTEwO2Nhc2UgMTA6cmV0dXJuWzQsZXQodCx0Ll90YXJnZXRFbGVtZW50KV07Y2FzZSAxMTpyZXR1cm4gbi5zZW50KCksWzMsMTVdO2Nhc2UgMTI6cmV0dXJuIGkmJmkuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwLW51bWJlclwiKT8oaS5jbGljaygpLFszLDE1XSk6WzMsMTNdO2Nhc2UgMTM6cmV0dXJuWzQsQih0KV07Y2FzZSAxNDpuLnNlbnQoKSxuLmxhYmVsPTE1O2Nhc2UgMTU6by5wcmV2ZW50RGVmYXVsdD9vLnByZXZlbnREZWZhdWx0KCk6by5yZXR1cm5WYWx1ZT0hMSxuLmxhYmVsPTE2O2Nhc2UgMTY6cmV0dXJuWzJdfX0pKX0pKX1mdW5jdGlvbiBPKGUpe2lmKG51bGw9PT1lfHxcIm9iamVjdFwiIT09dChlKXx8XCJub2RlVHlwZVwiaW4gZSlyZXR1cm4gZTt2YXIgbj17fTtmb3IodmFyIG8gaW4gZSlcImpRdWVyeVwiaW4gd2luZG93JiZlW29daW5zdGFuY2VvZiB3aW5kb3cualF1ZXJ5P25bb109ZVtvXTpuW29dPU8oZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gTSh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtaGludHNcIik7cmV0dXJuIGU/QXJyYXkuZnJvbShlLnF1ZXJ5U2VsZWN0b3JBbGwodCkpOltdfWZ1bmN0aW9uIEQodCxvKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZT1NKCcuaW50cm9qcy1oaW50W2RhdGEtc3RlcD1cIicuY29uY2F0KG8sJ1wiXScpKVswXSxZKCksZSYmdShlLFwiaW50cm9qcy1oaWRlaGludFwiKSxjKHQuX2hpbnRDbG9zZUNhbGxiYWNrKT9bNCx0Ll9oaW50Q2xvc2VDYWxsYmFjay5jYWxsKHQsbyldOlszLDJdO2Nhc2UgMTpuLnNlbnQoKSxuLmxhYmVsPTI7Y2FzZSAyOnJldHVyblsyXX19KSl9KSl9ZnVuY3Rpb24gRih0KXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGUsbyxpLHIscztyZXR1cm4gbih0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOmU9TShcIi5pbnRyb2pzLWhpbnRcIiksbz0wLGk9ZSxuLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBvPGkubGVuZ3RoPyhyPWlbb10sKHM9ci5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0ZXBcIikpP1s0LEQodCxwYXJzZUludChzLDEwKSldOlszLDNdKTpbMyw0XTtjYXNlIDI6bi5zZW50KCksbi5sYWJlbD0zO2Nhc2UgMzpyZXR1cm4gbysrLFszLDFdO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfWZ1bmN0aW9uIFYodCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlLG8saSxyLHM7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDppZighKGU9TShcIi5pbnRyb2pzLWhpbnRcIikpfHwhZS5sZW5ndGgpcmV0dXJuWzMsMV07Zm9yKG89MCxpPWU7bzxpLmxlbmd0aDtvKyspcj1pW29dLChzPXIuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwXCIpKSYmeihwYXJzZUludChzLDEwKSk7cmV0dXJuWzMsM107Y2FzZSAxOnJldHVybls0LCQodCx0Ll90YXJnZXRFbGVtZW50KV07Y2FzZSAyOm4uc2VudCgpLG4ubGFiZWw9MztjYXNlIDM6cmV0dXJuWzJdfX0pKX0pKX1mdW5jdGlvbiB6KHQpe3ZhciBlPU0oJy5pbnRyb2pzLWhpbnRbZGF0YS1zdGVwPVwiJy5jb25jYXQodCwnXCJdJykpWzBdO2UmJnYoZSwvaW50cm9qcy1oaWRlaGludC9nKX1mdW5jdGlvbiBHKHQpe3ZhciBlPU0oJy5pbnRyb2pzLWhpbnRbZGF0YS1zdGVwPVwiJy5jb25jYXQodCwnXCJdJykpWzBdO2UmJmUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfWZ1bmN0aW9uIFcodCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlLG8saSxyLHMsYSxwO3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKG4pe3N3aXRjaChuLmxhYmVsKXtjYXNlIDA6Zm9yKG51bGw9PT0oZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtaGludHNcIikpJiYoZT14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtaGludHNcIn0pKSxvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbz1ufHx3aW5kb3cuZXZlbnQ7byYmby5zdG9wUHJvcGFnYXRpb24mJm8uc3RvcFByb3BhZ2F0aW9uKCksbyYmbnVsbCE9PW8uY2FuY2VsQnViYmxlJiYoby5jYW5jZWxCdWJibGU9ITApLFgodCxlKX19LGk9MDtpPHQuX2hpbnRJdGVtcy5sZW5ndGg7aSsrKXtpZihyPXQuX2hpbnRJdGVtc1tpXSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW50cm9qcy1oaW50W2RhdGEtc3RlcD1cIicuY29uY2F0KGksJ1wiXScpKSlyZXR1cm5bMl07YihzPXgoXCJhXCIse2NsYXNzTmFtZTpcImludHJvanMtaGludFwifSkpLHMub25jbGljaz1vKGkpLHIuaGludEFuaW1hdGlvbnx8dShzLFwiaW50cm9qcy1oaW50LW5vLWFuaW1cIiksbShyLmVsZW1lbnQpJiZ1KHMsXCJpbnRyb2pzLWZpeGVkaGludFwiKSxhPXgoXCJkaXZcIix7Y2xhc3NOYW1lOlwiaW50cm9qcy1oaW50LWRvdFwifSkscD14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtaGludC1wdWxzZVwifSkscy5hcHBlbmRDaGlsZChhKSxzLmFwcGVuZENoaWxkKHApLHMuc2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwXCIsaS50b1N0cmluZygpKSxyLmhpbnRUYXJnZXRFbGVtZW50PXIuZWxlbWVudCxyLmVsZW1lbnQ9cyxRKHIuaGludFBvc2l0aW9uLHMsci5oaW50VGFyZ2V0RWxlbWVudCksZS5hcHBlbmRDaGlsZChzKX1yZXR1cm4gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSxjKHQuX2hpbnRzQWRkZWRDYWxsYmFjayk/WzQsdC5faGludHNBZGRlZENhbGxiYWNrLmNhbGwodCldOlszLDJdO2Nhc2UgMTpuLnNlbnQoKSxuLmxhYmVsPTI7Y2FzZSAyOnJldHVybiB0Ll9vcHRpb25zLmhpbnRBdXRvUmVmcmVzaEludGVydmFsPj0wJiYodC5faGludHNBdXRvUmVmcmVzaEZ1bmN0aW9uPShoPWZ1bmN0aW9uKCl7cmV0dXJuIFUodCl9LGQ9dC5fb3B0aW9ucy5oaW50QXV0b1JlZnJlc2hJbnRlcnZhbCxmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt3aW5kb3cuY2xlYXJUaW1lb3V0KGYpLGY9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aCh0KX0pLGQpfSksbC5vbih3aW5kb3csXCJzY3JvbGxcIix0Ll9oaW50c0F1dG9SZWZyZXNoRnVuY3Rpb24sdCwhMCkpLFsyXX12YXIgaCxkLGZ9KSl9KSl9ZnVuY3Rpb24gUSh0LGUsbil7aWYodm9pZCAwIT09bil7dmFyIG89ZyhuKSxpPTIwLHI9MjA7c3dpdGNoKHQpe2RlZmF1bHQ6Y2FzZVwidG9wLWxlZnRcIjplLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoby5sZWZ0LFwicHhcIiksZS5zdHlsZS50b3A9XCJcIi5jb25jYXQoby50b3AsXCJweFwiKTticmVhaztjYXNlXCJ0b3AtcmlnaHRcIjplLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoby5sZWZ0K28ud2lkdGgtaSxcInB4XCIpLGUuc3R5bGUudG9wPVwiXCIuY29uY2F0KG8udG9wLFwicHhcIik7YnJlYWs7Y2FzZVwiYm90dG9tLWxlZnRcIjplLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoby5sZWZ0LFwicHhcIiksZS5zdHlsZS50b3A9XCJcIi5jb25jYXQoby50b3Arby5oZWlnaHQtcixcInB4XCIpO2JyZWFrO2Nhc2VcImJvdHRvbS1yaWdodFwiOmUuc3R5bGUubGVmdD1cIlwiLmNvbmNhdChvLmxlZnQrby53aWR0aC1pLFwicHhcIiksZS5zdHlsZS50b3A9XCJcIi5jb25jYXQoby50b3Arby5oZWlnaHQtcixcInB4XCIpO2JyZWFrO2Nhc2VcIm1pZGRsZS1sZWZ0XCI6ZS5zdHlsZS5sZWZ0PVwiXCIuY29uY2F0KG8ubGVmdCxcInB4XCIpLGUuc3R5bGUudG9wPVwiXCIuY29uY2F0KG8udG9wKyhvLmhlaWdodC1yKS8yLFwicHhcIik7YnJlYWs7Y2FzZVwibWlkZGxlLXJpZ2h0XCI6ZS5zdHlsZS5sZWZ0PVwiXCIuY29uY2F0KG8ubGVmdCtvLndpZHRoLWksXCJweFwiKSxlLnN0eWxlLnRvcD1cIlwiLmNvbmNhdChvLnRvcCsoby5oZWlnaHQtcikvMixcInB4XCIpO2JyZWFrO2Nhc2VcIm1pZGRsZS1taWRkbGVcIjplLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoby5sZWZ0KyhvLndpZHRoLWkpLzIsXCJweFwiKSxlLnN0eWxlLnRvcD1cIlwiLmNvbmNhdChvLnRvcCsoby5oZWlnaHQtcikvMixcInB4XCIpO2JyZWFrO2Nhc2VcImJvdHRvbS1taWRkbGVcIjplLnN0eWxlLmxlZnQ9XCJcIi5jb25jYXQoby5sZWZ0KyhvLndpZHRoLWkpLzIsXCJweFwiKSxlLnN0eWxlLnRvcD1cIlwiLmNvbmNhdChvLnRvcCtvLmhlaWdodC1yLFwicHhcIik7YnJlYWs7Y2FzZVwidG9wLW1pZGRsZVwiOmUuc3R5bGUubGVmdD1cIlwiLmNvbmNhdChvLmxlZnQrKG8ud2lkdGgtaSkvMixcInB4XCIpLGUuc3R5bGUudG9wPVwiXCIuY29uY2F0KG8udG9wLFwicHhcIil9fX1mdW5jdGlvbiBYKHQsbyl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBlLGkscixzLGEsbCx1LHAsaCxkLGY7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW50cm9qcy1oaW50W2RhdGEtc3RlcD1cIicuY29uY2F0KG8sJ1wiXScpKSxpPXQuX2hpbnRJdGVtc1tvXSxjKHQuX2hpbnRDbGlja0NhbGxiYWNrKT9bNCx0Ll9oaW50Q2xpY2tDYWxsYmFjay5jYWxsKHQsZSxpLG8pXTpbMywyXTtjYXNlIDE6bi5zZW50KCksbi5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gdm9pZCAwIT09KHI9WSgpKSYmcGFyc2VJbnQociwxMCk9PT1vfHwocz14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtdG9vbHRpcFwifSksYT14KFwiZGl2XCIpLGw9eChcImRpdlwiKSx1PXgoXCJkaXZcIikscy5vbmNsaWNrPWZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uP3Quc3RvcFByb3BhZ2F0aW9uKCk6dC5jYW5jZWxCdWJibGU9ITB9LGEuY2xhc3NOYW1lPVwiaW50cm9qcy10b29sdGlwdGV4dFwiLChwPXgoXCJwXCIpKS5pbm5lckhUTUw9aS5oaW50fHxcIlwiLGEuYXBwZW5kQ2hpbGQocCksdC5fb3B0aW9ucy5oaW50U2hvd0J1dHRvbiYmKChoPXgoXCJhXCIpKS5jbGFzc05hbWU9dC5fb3B0aW9ucy5idXR0b25DbGFzcyxoLnNldEF0dHJpYnV0ZShcInJvbGVcIixcImJ1dHRvblwiKSxoLmlubmVySFRNTD10Ll9vcHRpb25zLmhpbnRCdXR0b25MYWJlbCxoLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gRCh0LG8pfSxhLmFwcGVuZENoaWxkKGgpKSxsLmNsYXNzTmFtZT1cImludHJvanMtYXJyb3dcIixzLmFwcGVuZENoaWxkKGwpLHMuYXBwZW5kQ2hpbGQoYSksZD1lLmdldEF0dHJpYnV0ZShcImRhdGEtc3RlcFwiKXx8XCJcIix0Ll9jdXJyZW50U3RlcD1wYXJzZUludChkLDEwKSxmPXQuX2hpbnRJdGVtc1t0Ll9jdXJyZW50U3RlcF0sdS5jbGFzc05hbWU9XCJpbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllciBpbnRyb2pzLWhpbnRSZWZlcmVuY2VcIix1LnNldEF0dHJpYnV0ZShcImRhdGEtc3RlcFwiLGQpLHcodCxmLHUpLHUuYXBwZW5kQ2hpbGQocyksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh1KSxqKHQsZixzLGwsITApKSxbMl19fSkpfSkpfWZ1bmN0aW9uIFkoKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtaGludFJlZmVyZW5jZVwiKTtpZih0JiZ0LnBhcmVudE5vZGUpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwXCIpO2lmKCFlKXJldHVybjtyZXR1cm4gdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLGV9fWZ1bmN0aW9uICQodCxvKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGUsaSxyLHMsYSxjLHUscCxoLGQ7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDppZih0Ll9oaW50SXRlbXM9W10sdC5fb3B0aW9ucy5oaW50cyYmdC5fb3B0aW9ucy5oaW50cy5sZW5ndGg+MClmb3IoZT0wLGk9dC5fb3B0aW9ucy5oaW50cztlPGkubGVuZ3RoO2UrKylyPWlbZV0sXCJzdHJpbmdcIj09dHlwZW9mKHM9TyhyKSkuZWxlbWVudCYmKHMuZWxlbWVudD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMuZWxlbWVudCkpLHMuaGludFBvc2l0aW9uPXMuaGludFBvc2l0aW9ufHx0Ll9vcHRpb25zLmhpbnRQb3NpdGlvbixzLmhpbnRBbmltYXRpb249cy5oaW50QW5pbWF0aW9ufHx0Ll9vcHRpb25zLmhpbnRBbmltYXRpb24sbnVsbCE9PXMuZWxlbWVudCYmdC5faGludEl0ZW1zLnB1c2gocyk7ZWxzZXtpZighKGE9QXJyYXkuZnJvbShvLnF1ZXJ5U2VsZWN0b3JBbGwoXCIqW2RhdGEtaGludF1cIikpKXx8IWEubGVuZ3RoKXJldHVyblsyLCExXTtmb3IoYz0wLHU9YTtjPHUubGVuZ3RoO2MrKylwPXVbY10saD1wLmdldEF0dHJpYnV0ZShcImRhdGEtaGludC1hbmltYXRpb25cIiksZD10Ll9vcHRpb25zLmhpbnRBbmltYXRpb24saCYmKGQ9XCJ0cnVlXCI9PT1oKSx0Ll9oaW50SXRlbXMucHVzaCh7ZWxlbWVudDpwLGhpbnQ6cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhpbnRcIil8fFwiXCIsaGludFBvc2l0aW9uOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS1oaW50LXBvc2l0aW9uXCIpfHx0Ll9vcHRpb25zLmhpbnRQb3NpdGlvbixoaW50QW5pbWF0aW9uOmQsdG9vbHRpcENsYXNzOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS10b29sdGlwLWNsYXNzXCIpfHx2b2lkIDAscG9zaXRpb246cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBvc2l0aW9uXCIpfHx0Ll9vcHRpb25zLnRvb2x0aXBQb3NpdGlvbn0pfXJldHVybls0LFcodCldO2Nhc2UgMTpyZXR1cm4gbi5zZW50KCksbC5vbihkb2N1bWVudCxcImNsaWNrXCIsWSx0LCExKSxsLm9uKHdpbmRvdyxcInJlc2l6ZVwiLFUsdCwhMCksWzIsITBdfX0pKX0pKX1mdW5jdGlvbiBVKHQpe2Zvcih2YXIgZT0wLG49dC5faGludEl0ZW1zO2U8bi5sZW5ndGg7ZSsrKXt2YXIgbz1uW2VdLGk9by5oaW50VGFyZ2V0RWxlbWVudDtRKG8uaGludFBvc2l0aW9uLG8uZWxlbWVudCxpKX19ZnVuY3Rpb24gWih0LGUpe3ZhciBuPUFycmF5LmZyb20oZS5xdWVyeVNlbGVjdG9yQWxsKFwiKltkYXRhLWludHJvXVwiKSksbz1bXTtpZih0Ll9vcHRpb25zLnN0ZXBzJiZ0Ll9vcHRpb25zLnN0ZXBzLmxlbmd0aClmb3IodmFyIGk9MCxyPXQuX29wdGlvbnMuc3RlcHM7aTxyLmxlbmd0aDtpKyspe3ZhciBzPU8oaD1yW2ldKTtpZihzLnN0ZXA9by5sZW5ndGgrMSxzLnRpdGxlPXMudGl0bGV8fFwiXCIsXCJzdHJpbmdcIj09dHlwZW9mIHMuZWxlbWVudCYmKHMuZWxlbWVudD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHMuZWxlbWVudCl8fHZvaWQgMCksdm9pZCAwPT09cy5lbGVtZW50fHxudWxsPT09cy5lbGVtZW50KXt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanNGbG9hdGluZ0VsZW1lbnRcIik7bnVsbD09PWEmJihhPXgoXCJkaXZcIix7Y2xhc3NOYW1lOlwiaW50cm9qc0Zsb2F0aW5nRWxlbWVudFwifSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSkscy5lbGVtZW50PWEscy5wb3NpdGlvbj1cImZsb2F0aW5nXCJ9cy5wb3NpdGlvbj1zLnBvc2l0aW9ufHx0Ll9vcHRpb25zLnRvb2x0aXBQb3NpdGlvbixzLnNjcm9sbFRvPXMuc2Nyb2xsVG98fHQuX29wdGlvbnMuc2Nyb2xsVG8sdm9pZCAwPT09cy5kaXNhYmxlSW50ZXJhY3Rpb24mJihzLmRpc2FibGVJbnRlcmFjdGlvbj10Ll9vcHRpb25zLmRpc2FibGVJbnRlcmFjdGlvbiksbnVsbCE9PXMuZWxlbWVudCYmby5wdXNoKHMpfWVsc2V7dmFyIGw9dm9pZCAwO2lmKG4ubGVuZ3RoPDEpcmV0dXJuW107Zm9yKHZhciBjPTAsdT1uO2M8dS5sZW5ndGg7YysrKXt2YXIgcD11W2NdO2lmKCghdC5fb3B0aW9ucy5ncm91cHx8cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWludHJvLWdyb3VwXCIpPT09dC5fb3B0aW9ucy5ncm91cCkmJlwibm9uZVwiIT09cC5zdHlsZS5kaXNwbGF5KXt2YXIgaD1wYXJzZUludChwLmdldEF0dHJpYnV0ZShcImRhdGEtc3RlcFwiKXx8XCJcIiwxMCk7bD10Ll9vcHRpb25zLmRpc2FibGVJbnRlcmFjdGlvbixwLmhhc0F0dHJpYnV0ZShcImRhdGEtZGlzYWJsZS1pbnRlcmFjdGlvblwiKSYmKGw9ISFwLmdldEF0dHJpYnV0ZShcImRhdGEtZGlzYWJsZS1pbnRlcmFjdGlvblwiKSksaD4wJiYob1toLTFdPXtzdGVwOmgsZWxlbWVudDpwLHRpdGxlOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS10aXRsZVwiKXx8XCJcIixpbnRybzpwLmdldEF0dHJpYnV0ZShcImRhdGEtaW50cm9cIil8fFwiXCIsdG9vbHRpcENsYXNzOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS10b29sdGlwLWNsYXNzXCIpfHx2b2lkIDAsaGlnaGxpZ2h0Q2xhc3M6cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhpZ2hsaWdodC1jbGFzc1wiKXx8dm9pZCAwLHBvc2l0aW9uOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS1wb3NpdGlvblwiKXx8dC5fb3B0aW9ucy50b29sdGlwUG9zaXRpb24sc2Nyb2xsVG86cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNjcm9sbC10b1wiKXx8dC5fb3B0aW9ucy5zY3JvbGxUbyxkaXNhYmxlSW50ZXJhY3Rpb246bH0pfX1mb3IodmFyIGQ9MCxmPTAsYj1uO2Y8Yi5sZW5ndGg7ZisrKXtwPWJbZl07aWYoKCF0Ll9vcHRpb25zLmdyb3VwfHxwLmdldEF0dHJpYnV0ZShcImRhdGEtaW50cm8tZ3JvdXBcIik9PT10Ll9vcHRpb25zLmdyb3VwKSYmbnVsbD09PXAuZ2V0QXR0cmlidXRlKFwiZGF0YS1zdGVwXCIpKXtmb3IoO3ZvaWQgMCE9PW9bZF07KWQrKztsPXAuaGFzQXR0cmlidXRlKFwiZGF0YS1kaXNhYmxlLWludGVyYWN0aW9uXCIpPyEhcC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWRpc2FibGUtaW50ZXJhY3Rpb25cIik6dC5fb3B0aW9ucy5kaXNhYmxlSW50ZXJhY3Rpb24sb1tkXT17ZWxlbWVudDpwLHRpdGxlOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS10aXRsZVwiKXx8XCJcIixpbnRybzpwLmdldEF0dHJpYnV0ZShcImRhdGEtaW50cm9cIil8fFwiXCIsc3RlcDpkKzEsdG9vbHRpcENsYXNzOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS10b29sdGlwLWNsYXNzXCIpfHx2b2lkIDAsaGlnaGxpZ2h0Q2xhc3M6cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhpZ2hsaWdodC1jbGFzc1wiKXx8dm9pZCAwLHBvc2l0aW9uOnAuZ2V0QXR0cmlidXRlKFwiZGF0YS1wb3NpdGlvblwiKXx8dC5fb3B0aW9ucy50b29sdGlwUG9zaXRpb24sc2Nyb2xsVG86cC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNjcm9sbC10b1wiKXx8dC5fb3B0aW9ucy5zY3JvbGxUbyxkaXNhYmxlSW50ZXJhY3Rpb246bH19fX1mb3IodmFyIG09W10sZz0wO2c8by5sZW5ndGg7ZysrKW9bZ10mJm0ucHVzaChvW2ddKTtyZXR1cm4obz1tKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LnN0ZXAtZS5zdGVwfSkpLG99ZnVuY3Rpb24gSih0LGUpe3ZhciBuPXQuX2N1cnJlbnRTdGVwO2lmKG51bGwhPW4mJi0xIT1uKXt2YXIgbz10Ll9pbnRyb0l0ZW1zW25dLGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllclwiKSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1oZWxwZXJMYXllclwiKSxzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1kaXNhYmxlSW50ZXJhY3Rpb25cIik7dyh0LG8sciksdyh0LG8saSksdyh0LG8scyksZSYmKHQuX2ludHJvSXRlbXM9Wih0LHQuX3RhcmdldEVsZW1lbnQpLGZ1bmN0aW9uKHQsZSl7aWYodC5fb3B0aW9ucy5zaG93QnVsbGV0cyl7dmFyIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5pbnRyb2pzLWJ1bGxldHNcIik7biYmbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKFQodCxlKSxuKX19KHQsbyksSShpLG4sdC5faW50cm9JdGVtcy5sZW5ndGgpKTt2YXIgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtYXJyb3dcIiksbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtdG9vbHRpcFwiKTtyZXR1cm4gbCYmYSYmaih0LHQuX2ludHJvSXRlbXNbbl0sbCxhKSxVKHQpLHR9fWZ1bmN0aW9uIEsodCl7Sih0KX1mdW5jdGlvbiB0dCh0LGUpe2lmKHZvaWQgMD09PWUmJihlPSExKSx0JiZ0LnBhcmVudEVsZW1lbnQpe3ZhciBuPXQucGFyZW50RWxlbWVudDtlPyh5KHQse29wYWNpdHk6XCIwXCJ9KSx3aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bi5yZW1vdmVDaGlsZCh0KX1jYXRjaCh0KXt9fSksNTAwKSk6bi5yZW1vdmVDaGlsZCh0KX19ZnVuY3Rpb24gZXQodCxvLGkpe3JldHVybiB2b2lkIDA9PT1pJiYoaT0hMSksZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGUscixzLGE7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gZT0hMCx2b2lkIDA9PT10Ll9pbnRyb0JlZm9yZUV4aXRDYWxsYmFjaz9bMywyXTpbNCx0Ll9pbnRyb0JlZm9yZUV4aXRDYWxsYmFjay5jYWxsKHQsbyldO2Nhc2UgMTplPW4uc2VudCgpLG4ubGFiZWw9MjtjYXNlIDI6aWYoIWkmJiExPT09ZSlyZXR1cm5bMl07aWYoKHI9QXJyYXkuZnJvbShvLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuaW50cm9qcy1vdmVybGF5XCIpKSkmJnIubGVuZ3RoKWZvcihzPTAsYT1yO3M8YS5sZW5ndGg7cysrKXR0KGFbc10pO3JldHVybiB0dChvLnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1oZWxwZXJMYXllclwiKSwhMCksdHQoby5xdWVyeVNlbGVjdG9yKFwiLmludHJvanMtdG9vbHRpcFJlZmVyZW5jZUxheWVyXCIpKSx0dChvLnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qcy1kaXNhYmxlSW50ZXJhY3Rpb25cIikpLHR0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuaW50cm9qc0Zsb2F0aW5nRWxlbWVudFwiKSksQSgpLGwub2ZmKHdpbmRvdyxcImtleWRvd25cIixSLHQsITApLGwub2ZmKHdpbmRvdyxcInJlc2l6ZVwiLEssdCwhMCksYyh0Ll9pbnRyb0V4aXRDYWxsYmFjayk/WzQsdC5faW50cm9FeGl0Q2FsbGJhY2suY2FsbCh0KV06WzMsNF07Y2FzZSAzOm4uc2VudCgpLG4ubGFiZWw9NDtjYXNlIDQ6cmV0dXJuIHQuX2N1cnJlbnRTdGVwPS0xLFsyXX19KSl9KSl9ZnVuY3Rpb24gbnQodCxvKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIGk7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdC5pc0FjdGl2ZSgpP2ModC5faW50cm9TdGFydENhbGxiYWNrKT9bNCx0Ll9pbnRyb1N0YXJ0Q2FsbGJhY2suY2FsbCh0LG8pXTpbMywyXTpbMiwhMV07Y2FzZSAxOnIuc2VudCgpLHIubGFiZWw9MjtjYXNlIDI6cmV0dXJuIDA9PT0oaT1aKHQsbykpLmxlbmd0aD9bMiwhMV06KHQuX2ludHJvSXRlbXM9aSxmdW5jdGlvbih0LG8pe3ZhciBpPXRoaXMscj14KFwiZGl2XCIse2NsYXNzTmFtZTpcImludHJvanMtb3ZlcmxheVwifSk7eShyLHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MCxwb3NpdGlvbjpcImZpeGVkXCJ9KSxvLmFwcGVuZENoaWxkKHIpLCEwPT09dC5fb3B0aW9ucy5leGl0T25PdmVybGF5Q2xpY2smJih5KHIse2N1cnNvcjpcInBvaW50ZXJcIn0pLHIub25jbGljaz1mdW5jdGlvbigpe3JldHVybiBlKGksdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGV0KHQsbyldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzJdfX0pKX0pKX0pfSh0LG8pLFs0LEIodCldKTtjYXNlIDM6ci5zZW50KCksby5hZGRFdmVudExpc3RlbmVyLHQuX29wdGlvbnMua2V5Ym9hcmROYXZpZ2F0aW9uJiZsLm9uKHdpbmRvdyxcImtleWRvd25cIixSLHQsITApLGwub24od2luZG93LFwicmVzaXplXCIsSyx0LCEwKSxyLmxhYmVsPTQ7Y2FzZSA0OnJldHVyblsyLCExXX19KSl9KSl9ZnVuY3Rpb24gb3QodCxlLG4pe3JldHVybiB0W2VdPW4sdH12YXIgaXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2N1cnJlbnRTdGVwPS0xLHRoaXMuX2ludHJvSXRlbXM9W10sdGhpcy5faGludEl0ZW1zPVtdLHRoaXMuX3RhcmdldEVsZW1lbnQ9dCx0aGlzLl9vcHRpb25zPXtzdGVwczpbXSxoaW50czpbXSxpc0FjdGl2ZTohMCxuZXh0TGFiZWw6XCJOZXh0XCIscHJldkxhYmVsOlwiQmFja1wiLHNraXBMYWJlbDpcIsOXXCIsZG9uZUxhYmVsOlwiRG9uZVwiLGhpZGVQcmV2OiExLGhpZGVOZXh0OiExLG5leHRUb0RvbmU6ITAsdG9vbHRpcFBvc2l0aW9uOlwiYm90dG9tXCIsdG9vbHRpcENsYXNzOlwiXCIsZ3JvdXA6XCJcIixoaWdobGlnaHRDbGFzczpcIlwiLGV4aXRPbkVzYzohMCxleGl0T25PdmVybGF5Q2xpY2s6ITAsc2hvd1N0ZXBOdW1iZXJzOiExLHN0ZXBOdW1iZXJzT2ZMYWJlbDpcIm9mXCIsa2V5Ym9hcmROYXZpZ2F0aW9uOiEwLHNob3dCdXR0b25zOiEwLHNob3dCdWxsZXRzOiEwLHNob3dQcm9ncmVzczohMSxzY3JvbGxUb0VsZW1lbnQ6ITAsc2Nyb2xsVG86XCJlbGVtZW50XCIsc2Nyb2xsUGFkZGluZzozMCxvdmVybGF5T3BhY2l0eTouNSxhdXRvUG9zaXRpb246ITAscG9zaXRpb25QcmVjZWRlbmNlOltcImJvdHRvbVwiLFwidG9wXCIsXCJyaWdodFwiLFwibGVmdFwiXSxkaXNhYmxlSW50ZXJhY3Rpb246ITEsZG9udFNob3dBZ2FpbjohMSxkb250U2hvd0FnYWluTGFiZWw6XCJEb24ndCBzaG93IHRoaXMgYWdhaW5cIixkb250U2hvd0FnYWluQ29va2llOlwiaW50cm9qcy1kb250U2hvd0FnYWluXCIsZG9udFNob3dBZ2FpbkNvb2tpZURheXM6MzY1LGhlbHBlckVsZW1lbnRQYWRkaW5nOjEwLGhpbnRQb3NpdGlvbjpcInRvcC1taWRkbGVcIixoaW50QnV0dG9uTGFiZWw6XCJHb3QgaXRcIixoaW50U2hvd0J1dHRvbjohMCxoaW50QXV0b1JlZnJlc2hJbnRlcnZhbDoxMCxoaW50QW5pbWF0aW9uOiEwLGJ1dHRvbkNsYXNzOlwiaW50cm9qcy1idXR0b25cIixwcm9ncmVzc0JhckFkZGl0aW9uYWxDbGFzczohMX19cmV0dXJuIHQucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuKCF0aGlzLl9vcHRpb25zLmRvbnRTaG93QWdhaW58fFwiXCI9PT0odD1pKHRoaXMuX29wdGlvbnMuZG9udFNob3dBZ2FpbkNvb2tpZSkpfHxcInRydWVcIiE9PXQpJiZ0aGlzLl9vcHRpb25zLmlzQWN0aXZlO3ZhciB0fSx0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgdCh0aGlzLl90YXJnZXRFbGVtZW50KX0sdC5wcm90b3R5cGUuc2V0T3B0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX29wdGlvbnM9b3QodGhpcy5fb3B0aW9ucyx0LGUpLHRoaXN9LHQucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29wdGlvbnM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MCxvPU9iamVjdC5lbnRyaWVzKGUpO248by5sZW5ndGg7bisrKXt2YXIgaT1vW25dO3Q9b3QodCxpWzBdLGlbMV0pfXJldHVybiB0fSh0aGlzLl9vcHRpb25zLHQpLHRoaXN9LHQucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKHQpe3N3aXRjaCh0LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsbnQodGhpcyx0aGlzLl90YXJnZXRFbGVtZW50KV07Y2FzZSAxOnJldHVybiB0LnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLmdvVG9TdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LFAodGhpcyx0KV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLmFkZFN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29wdGlvbnMuc3RlcHN8fCh0aGlzLl9vcHRpb25zLnN0ZXBzPVtdKSx0aGlzLl9vcHRpb25zLnN0ZXBzLnB1c2godCksdGhpc30sdC5wcm90b3R5cGUuYWRkU3RlcHM9ZnVuY3Rpb24odCl7aWYoIXQubGVuZ3RoKXJldHVybiB0aGlzO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMuYWRkU3RlcCh0W2VdKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZ29Ub1N0ZXBOdW1iZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQscSh0aGlzLHQpXTtjYXNlIDE6cmV0dXJuIGUuc2VudCgpLFsyLHRoaXNdfX0pKX0pKX0sdC5wcm90b3R5cGUubmV4dFN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24odCl7c3dpdGNoKHQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxCKHRoaXMpXTtjYXNlIDE6cmV0dXJuIHQuc2VudCgpLFsyLHRoaXNdfX0pKX0pKX0sdC5wcm90b3R5cGUucHJldmlvdXNTdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKHQpe3N3aXRjaCh0LmxhYmVsKXtjYXNlIDA6cmV0dXJuWzQsSCh0aGlzKV07Y2FzZSAxOnJldHVybiB0LnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLmN1cnJlbnRTdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRTdGVwfSx0LnByb3RvdHlwZS5leGl0PWZ1bmN0aW9uKHQpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGV0KHRoaXMsdGhpcy5fdGFyZ2V0RWxlbWVudCx0KV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24odCl7cmV0dXJuIEoodGhpcyx0KSx0aGlzfSx0LnByb3RvdHlwZS5zZXREb250U2hvd0FnYWluPWZ1bmN0aW9uKHQpe3JldHVybiByKHRoaXMsdCksdGhpc30sdC5wcm90b3R5cGUub25iZWZvcmVjaGFuZ2U9ZnVuY3Rpb24odCl7aWYoIWModCkpdGhyb3cgbmV3IEVycm9yKFwiUHJvdmlkZWQgY2FsbGJhY2sgZm9yIG9uYmVmb3JlY2hhbmdlIHdhcyBub3QgYSBmdW5jdGlvblwiKTtyZXR1cm4gdGhpcy5faW50cm9CZWZvcmVDaGFuZ2VDYWxsYmFjaz10LHRoaXN9LHQucHJvdG90eXBlLm9uY2hhbmdlPWZ1bmN0aW9uKHQpe2lmKCFjKHQpKXRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVkIGNhbGxiYWNrIGZvciBvbmNoYW5nZSB3YXMgbm90IGEgZnVuY3Rpb24uXCIpO3JldHVybiB0aGlzLl9pbnRyb0NoYW5nZUNhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25hZnRlcmNoYW5nZT1mdW5jdGlvbih0KXtpZighYyh0KSl0aHJvdyBuZXcgRXJyb3IoXCJQcm92aWRlZCBjYWxsYmFjayBmb3Igb25hZnRlcmNoYW5nZSB3YXMgbm90IGEgZnVuY3Rpb25cIik7cmV0dXJuIHRoaXMuX2ludHJvQWZ0ZXJDaGFuZ2VDYWxsYmFjaz10LHRoaXN9LHQucHJvdG90eXBlLm9uY29tcGxldGU9ZnVuY3Rpb24odCl7aWYoIWModCkpdGhyb3cgbmV3IEVycm9yKFwiUHJvdmlkZWQgY2FsbGJhY2sgZm9yIG9uY29tcGxldGUgd2FzIG5vdCBhIGZ1bmN0aW9uLlwiKTtyZXR1cm4gdGhpcy5faW50cm9Db21wbGV0ZUNhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25oaW50c2FkZGVkPWZ1bmN0aW9uKHQpe2lmKCFjKHQpKXRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVkIGNhbGxiYWNrIGZvciBvbmhpbnRzYWRkZWQgd2FzIG5vdCBhIGZ1bmN0aW9uLlwiKTtyZXR1cm4gdGhpcy5faGludHNBZGRlZENhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25oaW50Y2xpY2s9ZnVuY3Rpb24odCl7aWYoIWModCkpdGhyb3cgbmV3IEVycm9yKFwiUHJvdmlkZWQgY2FsbGJhY2sgZm9yIG9uaGludGNsaWNrIHdhcyBub3QgYSBmdW5jdGlvbi5cIik7cmV0dXJuIHRoaXMuX2hpbnRDbGlja0NhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25oaW50Y2xvc2U9ZnVuY3Rpb24odCl7aWYoIWModCkpdGhyb3cgbmV3IEVycm9yKFwiUHJvdmlkZWQgY2FsbGJhY2sgZm9yIG9uaGludGNsb3NlIHdhcyBub3QgYSBmdW5jdGlvbi5cIik7cmV0dXJuIHRoaXMuX2hpbnRDbG9zZUNhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25zdGFydD1mdW5jdGlvbih0KXtpZighYyh0KSl0aHJvdyBuZXcgRXJyb3IoXCJQcm92aWRlZCBjYWxsYmFjayBmb3Igb25zdGFydCB3YXMgbm90IGEgZnVuY3Rpb24uXCIpO3JldHVybiB0aGlzLl9pbnRyb1N0YXJ0Q2FsbGJhY2s9dCx0aGlzfSx0LnByb3RvdHlwZS5vbmV4aXQ9ZnVuY3Rpb24odCl7aWYoIWModCkpdGhyb3cgbmV3IEVycm9yKFwiUHJvdmlkZWQgY2FsbGJhY2sgZm9yIG9uZXhpdCB3YXMgbm90IGEgZnVuY3Rpb24uXCIpO3JldHVybiB0aGlzLl9pbnRyb0V4aXRDYWxsYmFjaz10LHRoaXN9LHQucHJvdG90eXBlLm9uc2tpcD1mdW5jdGlvbih0KXtpZighYyh0KSl0aHJvdyBuZXcgRXJyb3IoXCJQcm92aWRlZCBjYWxsYmFjayBmb3Igb25za2lwIHdhcyBub3QgYSBmdW5jdGlvbi5cIik7cmV0dXJuIHRoaXMuX2ludHJvU2tpcENhbGxiYWNrPXQsdGhpc30sdC5wcm90b3R5cGUub25iZWZvcmVleGl0PWZ1bmN0aW9uKHQpe2lmKCFjKHQpKXRocm93IG5ldyBFcnJvcihcIlByb3ZpZGVkIGNhbGxiYWNrIGZvciBvbmJlZm9yZWV4aXQgd2FzIG5vdCBhIGZ1bmN0aW9uLlwiKTtyZXR1cm4gdGhpcy5faW50cm9CZWZvcmVFeGl0Q2FsbGJhY2s9dCx0aGlzfSx0LnByb3RvdHlwZS5hZGRIaW50cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbih0KXtzd2l0Y2godC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LCQodGhpcyx0aGlzLl90YXJnZXRFbGVtZW50KV07Y2FzZSAxOnJldHVybiB0LnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLmhpZGVIaW50PWZ1bmN0aW9uKHQpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihlKXtzd2l0Y2goZS5sYWJlbCl7Y2FzZSAwOnJldHVybls0LEQodGhpcyx0KV07Y2FzZSAxOnJldHVybiBlLnNlbnQoKSxbMix0aGlzXX19KSl9KSl9LHQucHJvdG90eXBlLmhpZGVIaW50cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLChmdW5jdGlvbih0KXtzd2l0Y2godC5sYWJlbCl7Y2FzZSAwOnJldHVybls0LEYodGhpcyldO2Nhc2UgMTpyZXR1cm4gdC5zZW50KCksWzIsdGhpc119fSkpfSkpfSx0LnByb3RvdHlwZS5zaG93SGludD1mdW5jdGlvbih0KXtyZXR1cm4geih0KSx0aGlzfSx0LnByb3RvdHlwZS5zaG93SGludHM9ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24odCl7c3dpdGNoKHQubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxWKHRoaXMpXTtjYXNlIDE6cmV0dXJuIHQuc2VudCgpLFsyLHRoaXNdfX0pKX0pKX0sdC5wcm90b3R5cGUucmVtb3ZlSGludHM9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj1NKFwiLmludHJvanMtaGludFwiKTtlPG4ubGVuZ3RoO2UrKyl7dmFyIG89bltlXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXN0ZXBcIik7byYmRyhwYXJzZUludChvLDEwKSl9bC5vZmYoZG9jdW1lbnQsXCJjbGlja1wiLFksdCwhMSksbC5vZmYod2luZG93LFwicmVzaXplXCIsVSx0LCEwKSx0Ll9oaW50c0F1dG9SZWZyZXNoRnVuY3Rpb24mJmwub2ZmKHdpbmRvdyxcInNjcm9sbFwiLHQuX2hpbnRzQXV0b1JlZnJlc2hGdW5jdGlvbix0LCEwKX0odGhpcyksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlSGludD1mdW5jdGlvbih0KXtyZXR1cm4gRyh0KSx0aGlzfSx0LnByb3RvdHlwZS5zaG93SGludERpYWxvZz1mdW5jdGlvbih0KXtyZXR1cm4gZSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcywoZnVuY3Rpb24oZSl7c3dpdGNoKGUubGFiZWwpe2Nhc2UgMDpyZXR1cm5bNCxYKHRoaXMsdCldO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzIsdGhpc119fSkpfSkpfSx0fSgpLHJ0PWZ1bmN0aW9uIGUobil7dmFyIG87aWYoXCJvYmplY3RcIj09PXQobikpbz1uZXcgaXQobik7ZWxzZSBpZihcInN0cmluZ1wiPT10eXBlb2Ygbil7dmFyIGk9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoXCJUaGVyZSBpcyBubyBlbGVtZW50IHdpdGggZ2l2ZW4gc2VsZWN0b3IuXCIpO289bmV3IGl0KGkpfWVsc2Ugbz1uZXcgaXQoZG9jdW1lbnQuYm9keSk7cmV0dXJuIGUuaW5zdGFuY2VzW2EobyxcImludHJvanMtaW5zdGFuY2VcIildPW8sb307cnQudmVyc2lvbj1cIjcuMi4wXCIscnQuaW5zdGFuY2VzPXt9O2V4cG9ydHtydCBhcyBkZWZhdWx0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWludHJvLm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/intro.js/intro.module.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/decode.js":
/*!*********************************************!*\
!*** ./node_modules/jsonwebtoken/decode.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var jws = __webpack_require__(/*! jws */ \"./node_modules/jws/index.js\");\n\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) { return null; }\n var payload = decoded.payload;\n\n //try parse the payload\n if(typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if(obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) { }\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2RlY29kZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxVQUFVLG1CQUFPLENBQUMsd0NBQUs7O0FBRXZCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9kZWNvZGUuanM/MDVmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgandzID0gcmVxdWlyZSgnandzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGp3dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGRlY29kZWQgPSBqd3MuZGVjb2RlKGp3dCwgb3B0aW9ucyk7XG4gIGlmICghZGVjb2RlZCkgeyByZXR1cm4gbnVsbDsgfVxuICB2YXIgcGF5bG9hZCA9IGRlY29kZWQucGF5bG9hZDtcblxuICAvL3RyeSBwYXJzZSB0aGUgcGF5bG9hZFxuICBpZih0eXBlb2YgcGF5bG9hZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIG9iaiA9IEpTT04ucGFyc2UocGF5bG9hZCk7XG4gICAgICBpZihvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcGF5bG9hZCA9IG9iajtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7IH1cbiAgfVxuXG4gIC8vcmV0dXJuIGhlYWRlciBpZiBgY29tcGxldGVgIG9wdGlvbiBpcyBlbmFibGVkLiAgaGVhZGVyIGluY2x1ZGVzIGNsYWltc1xuICAvL3N1Y2ggYXMgYGtpZGAgYW5kIGBhbGdgIHVzZWQgdG8gc2VsZWN0IHRoZSBrZXkgd2l0aGluIGEgSldLUyBuZWVkZWQgdG9cbiAgLy92ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICBpZiAob3B0aW9ucy5jb21wbGV0ZSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXI6IGRlY29kZWQuaGVhZGVyLFxuICAgICAgcGF5bG9hZDogcGF5bG9hZCxcbiAgICAgIHNpZ25hdHVyZTogZGVjb2RlZC5zaWduYXR1cmVcbiAgICB9O1xuICB9XG4gIHJldHVybiBwYXlsb2FkO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/decode.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/index.js":
/*!********************************************!*\
!*** ./node_modules/jsonwebtoken/index.js ***!
\********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("module.exports = {\n decode: __webpack_require__(/*! ./decode */ \"./node_modules/jsonwebtoken/decode.js\"),\n verify: __webpack_require__(/*! ./verify */ \"./node_modules/jsonwebtoken/verify.js\"),\n sign: __webpack_require__(/*! ./sign */ \"./node_modules/jsonwebtoken/sign.js\"),\n JsonWebTokenError: __webpack_require__(/*! ./lib/JsonWebTokenError */ \"./node_modules/jsonwebtoken/lib/JsonWebTokenError.js\"),\n NotBeforeError: __webpack_require__(/*! ./lib/NotBeforeError */ \"./node_modules/jsonwebtoken/lib/NotBeforeError.js\"),\n TokenExpiredError: __webpack_require__(/*! ./lib/TokenExpiredError */ \"./node_modules/jsonwebtoken/lib/TokenExpiredError.js\"),\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsVUFBVSxtQkFBTyxDQUFDLHVEQUFVO0FBQzVCLFVBQVUsbUJBQU8sQ0FBQyx1REFBVTtBQUM1QixRQUFRLG1CQUFPLENBQUMsbURBQVE7QUFDeEIscUJBQXFCLG1CQUFPLENBQUMscUZBQXlCO0FBQ3RELGtCQUFrQixtQkFBTyxDQUFDLCtFQUFzQjtBQUNoRCxxQkFBcUIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDdEQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9pbmRleC5qcz85YmU4Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0ge1xuICBkZWNvZGU6IHJlcXVpcmUoJy4vZGVjb2RlJyksXG4gIHZlcmlmeTogcmVxdWlyZSgnLi92ZXJpZnknKSxcbiAgc2lnbjogcmVxdWlyZSgnLi9zaWduJyksXG4gIEpzb25XZWJUb2tlbkVycm9yOiByZXF1aXJlKCcuL2xpYi9Kc29uV2ViVG9rZW5FcnJvcicpLFxuICBOb3RCZWZvcmVFcnJvcjogcmVxdWlyZSgnLi9saWIvTm90QmVmb3JlRXJyb3InKSxcbiAgVG9rZW5FeHBpcmVkRXJyb3I6IHJlcXVpcmUoJy4vbGliL1Rva2VuRXhwaXJlZEVycm9yJyksXG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/index.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/JsonWebTokenError.js":
/*!************************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/JsonWebTokenError.js ***!
\************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if(Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\n\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\n\nmodule.exports = JsonWebTokenError;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9Kc29uV2ViVG9rZW5FcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9Kc29uV2ViVG9rZW5FcnJvci5qcz8xNmYyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBKc29uV2ViVG9rZW5FcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCBlcnJvcikge1xuICBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuICBpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9XG4gIHRoaXMubmFtZSA9ICdKc29uV2ViVG9rZW5FcnJvcic7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIGlmIChlcnJvcikgdGhpcy5pbm5lciA9IGVycm9yO1xufTtcblxuSnNvbldlYlRva2VuRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuSnNvbldlYlRva2VuRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSnNvbldlYlRva2VuRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gSnNvbldlYlRva2VuRXJyb3I7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/JsonWebTokenError.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/NotBeforeError.js":
/*!*********************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/NotBeforeError.js ***!
\*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var JsonWebTokenError = __webpack_require__(/*! ./JsonWebTokenError */ \"./node_modules/jsonwebtoken/lib/JsonWebTokenError.js\");\n\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\n\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\n\nNotBeforeError.prototype.constructor = NotBeforeError;\n\nmodule.exports = NotBeforeError;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9Ob3RCZWZvcmVFcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSx3QkFBd0IsbUJBQU8sQ0FBQyxpRkFBcUI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9saWIvTm90QmVmb3JlRXJyb3IuanM/ODY2OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgSnNvbldlYlRva2VuRXJyb3IgPSByZXF1aXJlKCcuL0pzb25XZWJUb2tlbkVycm9yJyk7XG5cbnZhciBOb3RCZWZvcmVFcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCBkYXRlKSB7XG4gIEpzb25XZWJUb2tlbkVycm9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG4gIHRoaXMubmFtZSA9ICdOb3RCZWZvcmVFcnJvcic7XG4gIHRoaXMuZGF0ZSA9IGRhdGU7XG59O1xuXG5Ob3RCZWZvcmVFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEpzb25XZWJUb2tlbkVycm9yLnByb3RvdHlwZSk7XG5cbk5vdEJlZm9yZUVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE5vdEJlZm9yZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5vdEJlZm9yZUVycm9yOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/NotBeforeError.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/TokenExpiredError.js":
/*!************************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/TokenExpiredError.js ***!
\************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var JsonWebTokenError = __webpack_require__(/*! ./JsonWebTokenError */ \"./node_modules/jsonwebtoken/lib/JsonWebTokenError.js\");\n\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\n\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\n\nTokenExpiredError.prototype.constructor = TokenExpiredError;\n\nmodule.exports = TokenExpiredError;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9Ub2tlbkV4cGlyZWRFcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSx3QkFBd0IsbUJBQU8sQ0FBQyxpRkFBcUI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9saWIvVG9rZW5FeHBpcmVkRXJyb3IuanM/OTBlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgSnNvbldlYlRva2VuRXJyb3IgPSByZXF1aXJlKCcuL0pzb25XZWJUb2tlbkVycm9yJyk7XG5cbnZhciBUb2tlbkV4cGlyZWRFcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCBleHBpcmVkQXQpIHtcbiAgSnNvbldlYlRva2VuRXJyb3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbiAgdGhpcy5uYW1lID0gJ1Rva2VuRXhwaXJlZEVycm9yJztcbiAgdGhpcy5leHBpcmVkQXQgPSBleHBpcmVkQXQ7XG59O1xuXG5Ub2tlbkV4cGlyZWRFcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEpzb25XZWJUb2tlbkVycm9yLnByb3RvdHlwZSk7XG5cblRva2VuRXhwaXJlZEVycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFRva2VuRXhwaXJlZEVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRva2VuRXhwaXJlZEVycm9yOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/TokenExpiredError.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js":
/*!************************************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js ***!
\************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\nconst semver = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\n\nmodule.exports = semver.satisfies(process.version, '>=15.7.0');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9hc3ltbWV0cmljS2V5RGV0YWlsc1N1cHBvcnRlZC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsZUFBZSxtQkFBTyxDQUFDLDhDQUFROztBQUUvQixrQ0FBa0MsT0FBTyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9hc3ltbWV0cmljS2V5RGV0YWlsc1N1cHBvcnRlZC5qcz83M2Q5Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNlbXZlciA9IHJlcXVpcmUoJ3NlbXZlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbXZlci5zYXRpc2ZpZXMocHJvY2Vzcy52ZXJzaW9uLCAnPj0xNS43LjAnKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/psSupported.js":
/*!******************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/psSupported.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\nvar semver = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\n\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9wc1N1cHBvcnRlZC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsYUFBYSxtQkFBTyxDQUFDLDhDQUFROztBQUU3QixrQ0FBa0MsT0FBTyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9wc1N1cHBvcnRlZC5qcz9jOGQ0Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzZW12ZXIuc2F0aXNmaWVzKHByb2Nlc3MudmVyc2lvbiwgJ142LjEyLjAgfHwgPj04LjAuMCcpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/psSupported.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js":
/*!********************************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js ***!
\********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\nconst semver = __webpack_require__(/*! semver */ \"./node_modules/semver/index.js\");\n\nmodule.exports = semver.satisfies(process.version, '>=16.9.0');\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi9yc2FQc3NLZXlEZXRhaWxzU3VwcG9ydGVkLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxlQUFlLG1CQUFPLENBQUMsOENBQVE7O0FBRS9CLGtDQUFrQyxPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9qc29ud2VidG9rZW4vbGliL3JzYVBzc0tleURldGFpbHNTdXBwb3J0ZWQuanM/ZjkwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZW12ZXIgPSByZXF1aXJlKCdzZW12ZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBzZW12ZXIuc2F0aXNmaWVzKHByb2Nlc3MudmVyc2lvbiwgJz49MTYuOS4wJyk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/timespan.js":
/*!***************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/timespan.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var ms = __webpack_require__(/*! ms */ \"./node_modules/ms/index.js\");\n\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi90aW1lc3Bhbi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxTQUFTLG1CQUFPLENBQUMsc0NBQUk7O0FBRXJCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9saWIvdGltZXNwYW4uanM/Y2VmMCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbXMgPSByZXF1aXJlKCdtcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aW1lLCBpYXQpIHtcbiAgdmFyIHRpbWVzdGFtcCA9IGlhdCB8fCBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcblxuICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIG1pbGxpc2Vjb25kcyA9IG1zKHRpbWUpO1xuICAgIGlmICh0eXBlb2YgbWlsbGlzZWNvbmRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcih0aW1lc3RhbXAgKyBtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdGltZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdGltZXN0YW1wICsgdGltZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cblxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/timespan.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js":
/*!****************************************************************!*\
!*** ./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js ***!
\****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const ASYMMETRIC_KEY_DETAILS_SUPPORTED = __webpack_require__(/*! ./asymmetricKeyDetailsSupported */ \"./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js\");\nconst RSA_PSS_KEY_DETAILS_SUPPORTED = __webpack_require__(/*! ./rsaPssKeyDetailsSupported */ \"./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js\");\n\nconst allowedAlgorithmsForKeys = {\n 'ec': ['ES256', 'ES384', 'ES512'],\n 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'],\n 'rsa-pss': ['PS256', 'PS384', 'PS512']\n};\n\nconst allowedCurves = {\n ES256: 'prime256v1',\n ES384: 'secp384r1',\n ES512: 'secp521r1',\n};\n\nmodule.exports = function(algorithm, key) {\n if (!algorithm || !key) return;\n\n const keyType = key.asymmetricKeyType;\n if (!keyType) return;\n\n const allowedAlgorithms = allowedAlgorithmsForKeys[keyType];\n\n if (!allowedAlgorithms) {\n throw new Error(`Unknown key type \"${keyType}\".`);\n }\n\n if (!allowedAlgorithms.includes(algorithm)) {\n throw new Error(`\"alg\" parameter for \"${keyType}\" key type must be one of: ${allowedAlgorithms.join(', ')}.`)\n }\n\n /*\n * Ignore the next block from test coverage because it gets executed\n * conditionally depending on the Node version. Not ignoring it would\n * prevent us from reaching the target % of coverage for versions of\n * Node under 15.7.0.\n */\n /* istanbul ignore next */\n if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) {\n switch (keyType) {\n case 'ec':\n const keyCurve = key.asymmetricKeyDetails.namedCurve;\n const allowedCurve = allowedCurves[algorithm];\n\n if (keyCurve !== allowedCurve) {\n throw new Error(`\"alg\" parameter \"${algorithm}\" requires curve \"${allowedCurve}\".`);\n }\n break;\n\n case 'rsa-pss':\n if (RSA_PSS_KEY_DETAILS_SUPPORTED) {\n const length = parseInt(algorithm.slice(-3), 10);\n const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n\n if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${algorithm}.`);\n }\n\n if (saltLength !== undefined && saltLength > length >> 3) {\n throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${algorithm}.`)\n }\n }\n break;\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL2xpYi92YWxpZGF0ZUFzeW1tZXRyaWNLZXkuanMiLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDLG1CQUFPLENBQUMseUdBQWlDO0FBQ2xGLHNDQUFzQyxtQkFBTyxDQUFDLGlHQUE2Qjs7QUFFM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHlDQUF5QyxRQUFRO0FBQ2pEOztBQUVBO0FBQ0EsNENBQTRDLFFBQVEsNkJBQTZCLDZCQUE2QjtBQUM5Rzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsVUFBVSxvQkFBb0IsYUFBYTtBQUN2RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwrQ0FBK0M7O0FBRS9ELG9DQUFvQyxPQUFPO0FBQzNDLDBIQUEwSCxVQUFVO0FBQ3BJOztBQUVBO0FBQ0Esc0lBQXNJLFVBQVU7QUFDaEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9qc29ud2VidG9rZW4vbGliL3ZhbGlkYXRlQXN5bW1ldHJpY0tleS5qcz83MTZiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFTWU1NRVRSSUNfS0VZX0RFVEFJTFNfU1VQUE9SVEVEID0gcmVxdWlyZSgnLi9hc3ltbWV0cmljS2V5RGV0YWlsc1N1cHBvcnRlZCcpO1xuY29uc3QgUlNBX1BTU19LRVlfREVUQUlMU19TVVBQT1JURUQgPSByZXF1aXJlKCcuL3JzYVBzc0tleURldGFpbHNTdXBwb3J0ZWQnKTtcblxuY29uc3QgYWxsb3dlZEFsZ29yaXRobXNGb3JLZXlzID0ge1xuICAnZWMnOiBbJ0VTMjU2JywgJ0VTMzg0JywgJ0VTNTEyJ10sXG4gICdyc2EnOiBbJ1JTMjU2JywgJ1BTMjU2JywgJ1JTMzg0JywgJ1BTMzg0JywgJ1JTNTEyJywgJ1BTNTEyJ10sXG4gICdyc2EtcHNzJzogWydQUzI1NicsICdQUzM4NCcsICdQUzUxMiddXG59O1xuXG5jb25zdCBhbGxvd2VkQ3VydmVzID0ge1xuICBFUzI1NjogJ3ByaW1lMjU2djEnLFxuICBFUzM4NDogJ3NlY3AzODRyMScsXG4gIEVTNTEyOiAnc2VjcDUyMXIxJyxcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYWxnb3JpdGhtLCBrZXkpIHtcbiAgaWYgKCFhbGdvcml0aG0gfHwgIWtleSkgcmV0dXJuO1xuXG4gIGNvbnN0IGtleVR5cGUgPSBrZXkuYXN5bW1ldHJpY0tleVR5cGU7XG4gIGlmICgha2V5VHlwZSkgcmV0dXJuO1xuXG4gIGNvbnN0IGFsbG93ZWRBbGdvcml0aG1zID0gYWxsb3dlZEFsZ29yaXRobXNGb3JLZXlzW2tleVR5cGVdO1xuXG4gIGlmICghYWxsb3dlZEFsZ29yaXRobXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24ga2V5IHR5cGUgXCIke2tleVR5cGV9XCIuYCk7XG4gIH1cblxuICBpZiAoIWFsbG93ZWRBbGdvcml0aG1zLmluY2x1ZGVzKGFsZ29yaXRobSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFwiYWxnXCIgcGFyYW1ldGVyIGZvciBcIiR7a2V5VHlwZX1cIiBrZXkgdHlwZSBtdXN0IGJlIG9uZSBvZjogJHthbGxvd2VkQWxnb3JpdGhtcy5qb2luKCcsICcpfS5gKVxuICB9XG5cbiAgLypcbiAgICogSWdub3JlIHRoZSBuZXh0IGJsb2NrIGZyb20gdGVzdCBjb3ZlcmFnZSBiZWNhdXNlIGl0IGdldHMgZXhlY3V0ZWRcbiAgICogY29uZGl0aW9uYWxseSBkZXBlbmRpbmcgb24gdGhlIE5vZGUgdmVyc2lvbi4gTm90IGlnbm9yaW5nIGl0IHdvdWxkXG4gICAqIHByZXZlbnQgdXMgZnJvbSByZWFjaGluZyB0aGUgdGFyZ2V0ICUgb2YgY292ZXJhZ2UgZm9yIHZlcnNpb25zIG9mXG4gICAqIE5vZGUgdW5kZXIgMTUuNy4wLlxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKEFTWU1NRVRSSUNfS0VZX0RFVEFJTFNfU1VQUE9SVEVEKSB7XG4gICAgc3dpdGNoIChrZXlUeXBlKSB7XG4gICAgY2FzZSAnZWMnOlxuICAgICAgY29uc3Qga2V5Q3VydmUgPSBrZXkuYXN5bW1ldHJpY0tleURldGFpbHMubmFtZWRDdXJ2ZTtcbiAgICAgIGNvbnN0IGFsbG93ZWRDdXJ2ZSA9IGFsbG93ZWRDdXJ2ZXNbYWxnb3JpdGhtXTtcblxuICAgICAgaWYgKGtleUN1cnZlICE9PSBhbGxvd2VkQ3VydmUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcImFsZ1wiIHBhcmFtZXRlciBcIiR7YWxnb3JpdGhtfVwiIHJlcXVpcmVzIGN1cnZlIFwiJHthbGxvd2VkQ3VydmV9XCIuYCk7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3JzYS1wc3MnOlxuICAgICAgaWYgKFJTQV9QU1NfS0VZX0RFVEFJTFNfU1VQUE9SVEVEKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHBhcnNlSW50KGFsZ29yaXRobS5zbGljZSgtMyksIDEwKTtcbiAgICAgICAgY29uc3QgeyBoYXNoQWxnb3JpdGhtLCBtZ2YxSGFzaEFsZ29yaXRobSwgc2FsdExlbmd0aCB9ID0ga2V5LmFzeW1tZXRyaWNLZXlEZXRhaWxzO1xuXG4gICAgICAgIGlmIChoYXNoQWxnb3JpdGhtICE9PSBgc2hhJHtsZW5ndGh9YCB8fCBtZ2YxSGFzaEFsZ29yaXRobSAhPT0gaGFzaEFsZ29yaXRobSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgZm9yIHRoaXMgb3BlcmF0aW9uLCBpdHMgUlNBLVBTUyBwYXJhbWV0ZXJzIGRvIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMgb2YgXCJhbGdcIiAke2FsZ29yaXRobX0uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2FsdExlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHNhbHRMZW5ndGggPiBsZW5ndGggPj4gMykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBrZXkgZm9yIHRoaXMgb3BlcmF0aW9uLCBpdHMgUlNBLVBTUyBwYXJhbWV0ZXIgc2FsdExlbmd0aCBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMgb2YgXCJhbGdcIiAke2FsZ29yaXRobX0uYClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/sign.js":
/*!*******************************************!*\
!*** ./node_modules/jsonwebtoken/sign.js ***!
\*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\nconst timespan = __webpack_require__(/*! ./lib/timespan */ \"./node_modules/jsonwebtoken/lib/timespan.js\");\nconst PS_SUPPORTED = __webpack_require__(/*! ./lib/psSupported */ \"./node_modules/jsonwebtoken/lib/psSupported.js\");\nconst validateAsymmetricKey = __webpack_require__(/*! ./lib/validateAsymmetricKey */ \"./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js\");\nconst jws = __webpack_require__(/*! jws */ \"./node_modules/jws/index.js\");\nconst includes = __webpack_require__(/*! lodash.includes */ \"./node_modules/lodash.includes/index.js\");\nconst isBoolean = __webpack_require__(/*! lodash.isboolean */ \"./node_modules/lodash.isboolean/index.js\");\nconst isInteger = __webpack_require__(/*! lodash.isinteger */ \"./node_modules/lodash.isinteger/index.js\");\nconst isNumber = __webpack_require__(/*! lodash.isnumber */ \"./node_modules/lodash.isnumber/index.js\");\nconst isPlainObject = __webpack_require__(/*! lodash.isplainobject */ \"./node_modules/lodash.isplainobject/index.js\");\nconst isString = __webpack_require__(/*! lodash.isstring */ \"./node_modules/lodash.isstring/index.js\");\nconst once = __webpack_require__(/*! lodash.once */ \"./node_modules/lodash.once/index.js\");\nconst { KeyObject, createSecretKey, createPrivateKey } = __webpack_require__(/*! crypto */ \"./node_modules/next/dist/compiled/crypto-browserify/index.js\")\n\nconst SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\n\nconst sign_options_schema = {\n expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"expiresIn\" should be a number of seconds or string representing a timespan' },\n notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '\"notBefore\" should be a number of seconds or string representing a timespan' },\n audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '\"audience\" must be a string or array' },\n algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '\"algorithm\" must be a valid string enum value' },\n header: { isValid: isPlainObject, message: '\"header\" must be an object' },\n encoding: { isValid: isString, message: '\"encoding\" must be a string' },\n issuer: { isValid: isString, message: '\"issuer\" must be a string' },\n subject: { isValid: isString, message: '\"subject\" must be a string' },\n jwtid: { isValid: isString, message: '\"jwtid\" must be a string' },\n noTimestamp: { isValid: isBoolean, message: '\"noTimestamp\" must be a boolean' },\n keyid: { isValid: isString, message: '\"keyid\" must be a string' },\n mutatePayload: { isValid: isBoolean, message: '\"mutatePayload\" must be a boolean' },\n allowInsecureKeySizes: { isValid: isBoolean, message: '\"allowInsecureKeySizes\" must be a boolean'},\n allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '\"allowInvalidAsymmetricKeyTypes\" must be a boolean'}\n};\n\nconst registered_claims_schema = {\n iat: { isValid: isNumber, message: '\"iat\" should be a number of seconds' },\n exp: { isValid: isNumber, message: '\"exp\" should be a number of seconds' },\n nbf: { isValid: isNumber, message: '\"nbf\" should be a number of seconds' }\n};\n\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object)\n .forEach(function(key) {\n const validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\n\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\n\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\n\nconst options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\n\nconst options_for_objects = [\n 'expiresIn',\n 'notBefore',\n 'noTimestamp',\n 'audience',\n 'issuer',\n 'subject',\n 'jwtid',\n];\n\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n\n const isObjectPayload = typeof payload === 'object' &&\n !Buffer.isBuffer(payload);\n\n const header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n\n if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) {\n try {\n secretOrPrivateKey = createPrivateKey(secretOrPrivateKey)\n } catch (_) {\n try {\n secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey)\n } catch (_) {\n return failure(new Error('secretOrPrivateKey is not valid key material'));\n }\n }\n }\n\n if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') {\n return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg)) {\n if (secretOrPrivateKey.type !== 'private') {\n return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`)))\n }\n if (!options.allowInsecureKeySizes &&\n !header.alg.startsWith('ES') &&\n secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+\n secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) {\n return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`));\n }\n }\n\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n }\n catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({},payload);\n }\n } else {\n const invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload'));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n\n try {\n validateOptions(options);\n }\n catch (error) {\n return failure(error);\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPrivateKey);\n } catch (error) {\n return failure(error);\n }\n }\n\n const timestamp = payload.iat || Math.floor(Date.now() / 1000);\n\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n }\n catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n\n Object.keys(options_to_payload).forEach(function (key) {\n const claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n\n const encoding = options.encoding || 'utf8';\n\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback)\n .once('done', function (signature) {\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`))\n }\n callback(null, signature);\n });\n } else {\n let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding});\n // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version\n if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) {\n throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)\n }\n return signature\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0Esa0dBQWtHLFdBQVc7QUFDN0c7QUFDQTtBQUNBLE9BQU87QUFDUCxJQUFJO0FBQ0osOEJBQThCLGlGQUFpRjtBQUMvRztBQUNBO0FBQ0Esb0ZBQW9GLFdBQVc7QUFDL0Y7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi9zaWduLmpzP2M0NmQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgdGltZXNwYW4gPSByZXF1aXJlKCcuL2xpYi90aW1lc3BhbicpO1xuY29uc3QgUFNfU1VQUE9SVEVEID0gcmVxdWlyZSgnLi9saWIvcHNTdXBwb3J0ZWQnKTtcbmNvbnN0IHZhbGlkYXRlQXN5bW1ldHJpY0tleSA9IHJlcXVpcmUoJy4vbGliL3ZhbGlkYXRlQXN5bW1ldHJpY0tleScpO1xuY29uc3QgandzID0gcmVxdWlyZSgnandzJyk7XG5jb25zdCBpbmNsdWRlcyA9IHJlcXVpcmUoJ2xvZGFzaC5pbmNsdWRlcycpO1xuY29uc3QgaXNCb29sZWFuID0gcmVxdWlyZSgnbG9kYXNoLmlzYm9vbGVhbicpO1xuY29uc3QgaXNJbnRlZ2VyID0gcmVxdWlyZSgnbG9kYXNoLmlzaW50ZWdlcicpO1xuY29uc3QgaXNOdW1iZXIgPSByZXF1aXJlKCdsb2Rhc2guaXNudW1iZXInKTtcbmNvbnN0IGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCdsb2Rhc2guaXNwbGFpbm9iamVjdCcpO1xuY29uc3QgaXNTdHJpbmcgPSByZXF1aXJlKCdsb2Rhc2guaXNzdHJpbmcnKTtcbmNvbnN0IG9uY2UgPSByZXF1aXJlKCdsb2Rhc2gub25jZScpO1xuY29uc3QgeyBLZXlPYmplY3QsIGNyZWF0ZVNlY3JldEtleSwgY3JlYXRlUHJpdmF0ZUtleSB9ID0gcmVxdWlyZSgnY3J5cHRvJylcblxuY29uc3QgU1VQUE9SVEVEX0FMR1MgPSBbJ1JTMjU2JywgJ1JTMzg0JywgJ1JTNTEyJywgJ0VTMjU2JywgJ0VTMzg0JywgJ0VTNTEyJywgJ0hTMjU2JywgJ0hTMzg0JywgJ0hTNTEyJywgJ25vbmUnXTtcbmlmIChQU19TVVBQT1JURUQpIHtcbiAgU1VQUE9SVEVEX0FMR1Muc3BsaWNlKDMsIDAsICdQUzI1NicsICdQUzM4NCcsICdQUzUxMicpO1xufVxuXG5jb25zdCBzaWduX29wdGlvbnNfc2NoZW1hID0ge1xuICBleHBpcmVzSW46IHsgaXNWYWxpZDogZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgfHwgKGlzU3RyaW5nKHZhbHVlKSAmJiB2YWx1ZSk7IH0sIG1lc3NhZ2U6ICdcImV4cGlyZXNJblwiIHNob3VsZCBiZSBhIG51bWJlciBvZiBzZWNvbmRzIG9yIHN0cmluZyByZXByZXNlbnRpbmcgYSB0aW1lc3BhbicgfSxcbiAgbm90QmVmb3JlOiB7IGlzVmFsaWQ6IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBpc0ludGVnZXIodmFsdWUpIHx8IChpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUpOyB9LCBtZXNzYWdlOiAnXCJub3RCZWZvcmVcIiBzaG91bGQgYmUgYSBudW1iZXIgb2Ygc2Vjb25kcyBvciBzdHJpbmcgcmVwcmVzZW50aW5nIGEgdGltZXNwYW4nIH0sXG4gIGF1ZGllbmNlOiB7IGlzVmFsaWQ6IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBpc1N0cmluZyh2YWx1ZSkgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSk7IH0sIG1lc3NhZ2U6ICdcImF1ZGllbmNlXCIgbXVzdCBiZSBhIHN0cmluZyBvciBhcnJheScgfSxcbiAgYWxnb3JpdGhtOiB7IGlzVmFsaWQ6IGluY2x1ZGVzLmJpbmQobnVsbCwgU1VQUE9SVEVEX0FMR1MpLCBtZXNzYWdlOiAnXCJhbGdvcml0aG1cIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVudW0gdmFsdWUnIH0sXG4gIGhlYWRlcjogeyBpc1ZhbGlkOiBpc1BsYWluT2JqZWN0LCBtZXNzYWdlOiAnXCJoZWFkZXJcIiBtdXN0IGJlIGFuIG9iamVjdCcgfSxcbiAgZW5jb2Rpbmc6IHsgaXNWYWxpZDogaXNTdHJpbmcsIG1lc3NhZ2U6ICdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHN0cmluZycgfSxcbiAgaXNzdWVyOiB7IGlzVmFsaWQ6IGlzU3RyaW5nLCBtZXNzYWdlOiAnXCJpc3N1ZXJcIiBtdXN0IGJlIGEgc3RyaW5nJyB9LFxuICBzdWJqZWN0OiB7IGlzVmFsaWQ6IGlzU3RyaW5nLCBtZXNzYWdlOiAnXCJzdWJqZWN0XCIgbXVzdCBiZSBhIHN0cmluZycgfSxcbiAgand0aWQ6IHsgaXNWYWxpZDogaXNTdHJpbmcsIG1lc3NhZ2U6ICdcImp3dGlkXCIgbXVzdCBiZSBhIHN0cmluZycgfSxcbiAgbm9UaW1lc3RhbXA6IHsgaXNWYWxpZDogaXNCb29sZWFuLCBtZXNzYWdlOiAnXCJub1RpbWVzdGFtcFwiIG11c3QgYmUgYSBib29sZWFuJyB9LFxuICBrZXlpZDogeyBpc1ZhbGlkOiBpc1N0cmluZywgbWVzc2FnZTogJ1wia2V5aWRcIiBtdXN0IGJlIGEgc3RyaW5nJyB9LFxuICBtdXRhdGVQYXlsb2FkOiB7IGlzVmFsaWQ6IGlzQm9vbGVhbiwgbWVzc2FnZTogJ1wibXV0YXRlUGF5bG9hZFwiIG11c3QgYmUgYSBib29sZWFuJyB9LFxuICBhbGxvd0luc2VjdXJlS2V5U2l6ZXM6IHsgaXNWYWxpZDogaXNCb29sZWFuLCBtZXNzYWdlOiAnXCJhbGxvd0luc2VjdXJlS2V5U2l6ZXNcIiBtdXN0IGJlIGEgYm9vbGVhbid9LFxuICBhbGxvd0ludmFsaWRBc3ltbWV0cmljS2V5VHlwZXM6IHsgaXNWYWxpZDogaXNCb29sZWFuLCBtZXNzYWdlOiAnXCJhbGxvd0ludmFsaWRBc3ltbWV0cmljS2V5VHlwZXNcIiBtdXN0IGJlIGEgYm9vbGVhbid9XG59O1xuXG5jb25zdCByZWdpc3RlcmVkX2NsYWltc19zY2hlbWEgPSB7XG4gIGlhdDogeyBpc1ZhbGlkOiBpc051bWJlciwgbWVzc2FnZTogJ1wiaWF0XCIgc2hvdWxkIGJlIGEgbnVtYmVyIG9mIHNlY29uZHMnIH0sXG4gIGV4cDogeyBpc1ZhbGlkOiBpc051bWJlciwgbWVzc2FnZTogJ1wiZXhwXCIgc2hvdWxkIGJlIGEgbnVtYmVyIG9mIHNlY29uZHMnIH0sXG4gIG5iZjogeyBpc1ZhbGlkOiBpc051bWJlciwgbWVzc2FnZTogJ1wibmJmXCIgc2hvdWxkIGJlIGEgbnVtYmVyIG9mIHNlY29uZHMnIH1cbn07XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKHNjaGVtYSwgYWxsb3dVbmtub3duLCBvYmplY3QsIHBhcmFtZXRlck5hbWUpIHtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KG9iamVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIFwiJyArIHBhcmFtZXRlck5hbWUgKyAnXCIgdG8gYmUgYSBwbGFpbiBvYmplY3QuJyk7XG4gIH1cbiAgT2JqZWN0LmtleXMob2JqZWN0KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gc2NoZW1hW2tleV07XG4gICAgICBpZiAoIXZhbGlkYXRvcikge1xuICAgICAgICBpZiAoIWFsbG93VW5rbm93bikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsga2V5ICsgJ1wiIGlzIG5vdCBhbGxvd2VkIGluIFwiJyArIHBhcmFtZXRlck5hbWUgKyAnXCInKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRvci5pc1ZhbGlkKG9iamVjdFtrZXldKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IodmFsaWRhdG9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucykge1xuICByZXR1cm4gdmFsaWRhdGUoc2lnbl9vcHRpb25zX3NjaGVtYSwgZmFsc2UsIG9wdGlvbnMsICdvcHRpb25zJyk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGF5bG9hZChwYXlsb2FkKSB7XG4gIHJldHVybiB2YWxpZGF0ZShyZWdpc3RlcmVkX2NsYWltc19zY2hlbWEsIHRydWUsIHBheWxvYWQsICdwYXlsb2FkJyk7XG59XG5cbmNvbnN0IG9wdGlvbnNfdG9fcGF5bG9hZCA9IHtcbiAgJ2F1ZGllbmNlJzogJ2F1ZCcsXG4gICdpc3N1ZXInOiAnaXNzJyxcbiAgJ3N1YmplY3QnOiAnc3ViJyxcbiAgJ2p3dGlkJzogJ2p0aSdcbn07XG5cbmNvbnN0IG9wdGlvbnNfZm9yX29iamVjdHMgPSBbXG4gICdleHBpcmVzSW4nLFxuICAnbm90QmVmb3JlJyxcbiAgJ25vVGltZXN0YW1wJyxcbiAgJ2F1ZGllbmNlJyxcbiAgJ2lzc3VlcicsXG4gICdzdWJqZWN0JyxcbiAgJ2p3dGlkJyxcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBheWxvYWQsIHNlY3JldE9yUHJpdmF0ZUtleSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIGNvbnN0IGlzT2JqZWN0UGF5bG9hZCA9IHR5cGVvZiBwYXlsb2FkID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIUJ1ZmZlci5pc0J1ZmZlcihwYXlsb2FkKTtcblxuICBjb25zdCBoZWFkZXIgPSBPYmplY3QuYXNzaWduKHtcbiAgICBhbGc6IG9wdGlvbnMuYWxnb3JpdGhtIHx8ICdIUzI1NicsXG4gICAgdHlwOiBpc09iamVjdFBheWxvYWQgPyAnSldUJyA6IHVuZGVmaW5lZCxcbiAgICBraWQ6IG9wdGlvbnMua2V5aWRcbiAgfSwgb3B0aW9ucy5oZWFkZXIpO1xuXG4gIGZ1bmN0aW9uIGZhaWx1cmUoZXJyKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgaWYgKCFzZWNyZXRPclByaXZhdGVLZXkgJiYgb3B0aW9ucy5hbGdvcml0aG0gIT09ICdub25lJykge1xuICAgIHJldHVybiBmYWlsdXJlKG5ldyBFcnJvcignc2VjcmV0T3JQcml2YXRlS2V5IG11c3QgaGF2ZSBhIHZhbHVlJykpO1xuICB9XG5cbiAgaWYgKHNlY3JldE9yUHJpdmF0ZUtleSAhPSBudWxsICYmICEoc2VjcmV0T3JQcml2YXRlS2V5IGluc3RhbmNlb2YgS2V5T2JqZWN0KSkge1xuICAgIHRyeSB7XG4gICAgICBzZWNyZXRPclByaXZhdGVLZXkgPSBjcmVhdGVQcml2YXRlS2V5KHNlY3JldE9yUHJpdmF0ZUtleSlcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZWNyZXRPclByaXZhdGVLZXkgPSBjcmVhdGVTZWNyZXRLZXkodHlwZW9mIHNlY3JldE9yUHJpdmF0ZUtleSA9PT0gJ3N0cmluZycgPyBCdWZmZXIuZnJvbShzZWNyZXRPclByaXZhdGVLZXkpIDogc2VjcmV0T3JQcml2YXRlS2V5KVxuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gZmFpbHVyZShuZXcgRXJyb3IoJ3NlY3JldE9yUHJpdmF0ZUtleSBpcyBub3QgdmFsaWQga2V5IG1hdGVyaWFsJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChoZWFkZXIuYWxnLnN0YXJ0c1dpdGgoJ0hTJykgJiYgc2VjcmV0T3JQcml2YXRlS2V5LnR5cGUgIT09ICdzZWNyZXQnKSB7XG4gICAgcmV0dXJuIGZhaWx1cmUobmV3IEVycm9yKChgc2VjcmV0T3JQcml2YXRlS2V5IG11c3QgYmUgYSBzeW1tZXRyaWMga2V5IHdoZW4gdXNpbmcgJHtoZWFkZXIuYWxnfWApKSlcbiAgfSBlbHNlIGlmICgvXig/OlJTfFBTfEVTKS8udGVzdChoZWFkZXIuYWxnKSkge1xuICAgIGlmIChzZWNyZXRPclByaXZhdGVLZXkudHlwZSAhPT0gJ3ByaXZhdGUnKSB7XG4gICAgICByZXR1cm4gZmFpbHVyZShuZXcgRXJyb3IoKGBzZWNyZXRPclByaXZhdGVLZXkgbXVzdCBiZSBhbiBhc3ltbWV0cmljIGtleSB3aGVuIHVzaW5nICR7aGVhZGVyLmFsZ31gKSkpXG4gICAgfVxuICAgIGlmICghb3B0aW9ucy5hbGxvd0luc2VjdXJlS2V5U2l6ZXMgJiZcbiAgICAgICFoZWFkZXIuYWxnLnN0YXJ0c1dpdGgoJ0VTJykgJiZcbiAgICAgIHNlY3JldE9yUHJpdmF0ZUtleS5hc3ltbWV0cmljS2V5RGV0YWlscyAhPT0gdW5kZWZpbmVkICYmIC8vS2V5T2JqZWN0LmFzeW1tZXRyaWNLZXlEZXRhaWxzIGlzIHN1cHBvcnRlZCBpbiBOb2RlIDE1K1xuICAgICAgc2VjcmV0T3JQcml2YXRlS2V5LmFzeW1tZXRyaWNLZXlEZXRhaWxzLm1vZHVsdXNMZW5ndGggPCAyMDQ4KSB7XG4gICAgICByZXR1cm4gZmFpbHVyZShuZXcgRXJyb3IoYHNlY3JldE9yUHJpdmF0ZUtleSBoYXMgYSBtaW5pbXVtIGtleSBzaXplIG9mIDIwNDggYml0cyBmb3IgJHtoZWFkZXIuYWxnfWApKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHBheWxvYWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhaWx1cmUobmV3IEVycm9yKCdwYXlsb2FkIGlzIHJlcXVpcmVkJykpO1xuICB9IGVsc2UgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZVBheWxvYWQocGF5bG9hZCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMubXV0YXRlUGF5bG9hZCkge1xuICAgICAgcGF5bG9hZCA9IE9iamVjdC5hc3NpZ24oe30scGF5bG9hZCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGludmFsaWRfb3B0aW9ucyA9IG9wdGlvbnNfZm9yX29iamVjdHMuZmlsdGVyKGZ1bmN0aW9uIChvcHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb3B0aW9uc1tvcHRdICE9PSAndW5kZWZpbmVkJztcbiAgICB9KTtcblxuICAgIGlmIChpbnZhbGlkX29wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGZhaWx1cmUobmV3IEVycm9yKCdpbnZhbGlkICcgKyBpbnZhbGlkX29wdGlvbnMuam9pbignLCcpICsgJyBvcHRpb24gZm9yICcgKyAodHlwZW9mIHBheWxvYWQgKSArICcgcGF5bG9hZCcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHBheWxvYWQuZXhwICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygb3B0aW9ucy5leHBpcmVzSW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhaWx1cmUobmV3IEVycm9yKCdCYWQgXCJvcHRpb25zLmV4cGlyZXNJblwiIG9wdGlvbiB0aGUgcGF5bG9hZCBhbHJlYWR5IGhhcyBhbiBcImV4cFwiIHByb3BlcnR5LicpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZC5uYmYgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBvcHRpb25zLm5vdEJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFpbHVyZShuZXcgRXJyb3IoJ0JhZCBcIm9wdGlvbnMubm90QmVmb3JlXCIgb3B0aW9uIHRoZSBwYXlsb2FkIGFscmVhZHkgaGFzIGFuIFwibmJmXCIgcHJvcGVydHkuJykpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG4gIH1cbiAgY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhaWx1cmUoZXJyb3IpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLmFsbG93SW52YWxpZEFzeW1tZXRyaWNLZXlUeXBlcykge1xuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUFzeW1tZXRyaWNLZXkoaGVhZGVyLmFsZywgc2VjcmV0T3JQcml2YXRlS2V5KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhaWx1cmUoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRpbWVzdGFtcCA9IHBheWxvYWQuaWF0IHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuXG4gIGlmIChvcHRpb25zLm5vVGltZXN0YW1wKSB7XG4gICAgZGVsZXRlIHBheWxvYWQuaWF0O1xuICB9IGVsc2UgaWYgKGlzT2JqZWN0UGF5bG9hZCkge1xuICAgIHBheWxvYWQuaWF0ID0gdGltZXN0YW1wO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLm5vdEJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkge1xuICAgICAgcGF5bG9hZC5uYmYgPSB0aW1lc3BhbihvcHRpb25zLm5vdEJlZm9yZSwgdGltZXN0YW1wKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhaWx1cmUoZXJyKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwYXlsb2FkLm5iZiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWlsdXJlKG5ldyBFcnJvcignXCJub3RCZWZvcmVcIiBzaG91bGQgYmUgYSBudW1iZXIgb2Ygc2Vjb25kcyBvciBzdHJpbmcgcmVwcmVzZW50aW5nIGEgdGltZXNwYW4gZWc6IFwiMWRcIiwgXCIyMGhcIiwgNjAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmV4cGlyZXNJbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHBheWxvYWQuZXhwID0gdGltZXNwYW4ob3B0aW9ucy5leHBpcmVzSW4sIHRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWlsdXJlKGVycik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcGF5bG9hZC5leHAgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gZmFpbHVyZShuZXcgRXJyb3IoJ1wiZXhwaXJlc0luXCIgc2hvdWxkIGJlIGEgbnVtYmVyIG9mIHNlY29uZHMgb3Igc3RyaW5nIHJlcHJlc2VudGluZyBhIHRpbWVzcGFuIGVnOiBcIjFkXCIsIFwiMjBoXCIsIDYwJykpO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKG9wdGlvbnNfdG9fcGF5bG9hZCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgY29uc3QgY2xhaW0gPSBvcHRpb25zX3RvX3BheWxvYWRba2V5XTtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNba2V5XSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0eXBlb2YgcGF5bG9hZFtjbGFpbV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBmYWlsdXJlKG5ldyBFcnJvcignQmFkIFwib3B0aW9ucy4nICsga2V5ICsgJ1wiIG9wdGlvbi4gVGhlIHBheWxvYWQgYWxyZWFkeSBoYXMgYW4gXCInICsgY2xhaW0gKyAnXCIgcHJvcGVydHkuJykpO1xuICAgICAgfVxuICAgICAgcGF5bG9hZFtjbGFpbV0gPSBvcHRpb25zW2tleV07XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBlbmNvZGluZyA9IG9wdGlvbnMuZW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrICYmIG9uY2UoY2FsbGJhY2spO1xuXG4gICAgandzLmNyZWF0ZVNpZ24oe1xuICAgICAgaGVhZGVyOiBoZWFkZXIsXG4gICAgICBwcml2YXRlS2V5OiBzZWNyZXRPclByaXZhdGVLZXksXG4gICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nXG4gICAgfSkub25jZSgnZXJyb3InLCBjYWxsYmFjaylcbiAgICAgIC5vbmNlKCdkb25lJywgZnVuY3Rpb24gKHNpZ25hdHVyZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaW4gZmF2b3Igb2YgdGhlIG1vZHVsdXMgbGVuZ3RoIGNoZWNrIGJlZm9yZSBzaWduaW5nIG9uY2Ugbm9kZSAxNSsgaXMgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHZlcnNpb25cbiAgICAgICAgaWYoIW9wdGlvbnMuYWxsb3dJbnNlY3VyZUtleVNpemVzICYmIC9eKD86UlN8UFMpLy50ZXN0KGhlYWRlci5hbGcpICYmIHNpZ25hdHVyZS5sZW5ndGggPCAyNTYpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKGBzZWNyZXRPclByaXZhdGVLZXkgaGFzIGEgbWluaW11bSBrZXkgc2l6ZSBvZiAyMDQ4IGJpdHMgZm9yICR7aGVhZGVyLmFsZ31gKSlcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCBzaWduYXR1cmUpO1xuICAgICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgbGV0IHNpZ25hdHVyZSA9IGp3cy5zaWduKHtoZWFkZXI6IGhlYWRlciwgcGF5bG9hZDogcGF5bG9hZCwgc2VjcmV0OiBzZWNyZXRPclByaXZhdGVLZXksIGVuY29kaW5nOiBlbmNvZGluZ30pO1xuICAgIC8vIFRPRE86IFJlbW92ZSBpbiBmYXZvciBvZiB0aGUgbW9kdWx1cyBsZW5ndGggY2hlY2sgYmVmb3JlIHNpZ25pbmcgb25jZSBub2RlIDE1KyBpcyB0aGUgbWluaW11bSBzdXBwb3J0ZWQgdmVyc2lvblxuICAgIGlmKCFvcHRpb25zLmFsbG93SW5zZWN1cmVLZXlTaXplcyAmJiAvXig/OlJTfFBTKS8udGVzdChoZWFkZXIuYWxnKSAmJiBzaWduYXR1cmUubGVuZ3RoIDwgMjU2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNlY3JldE9yUHJpdmF0ZUtleSBoYXMgYSBtaW5pbXVtIGtleSBzaXplIG9mIDIwNDggYml0cyBmb3IgJHtoZWFkZXIuYWxnfWApXG4gICAgfVxuICAgIHJldHVybiBzaWduYXR1cmVcbiAgfVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/sign.js\n"));
/***/ }),
/***/ "./node_modules/jsonwebtoken/verify.js":
/*!*********************************************!*\
!*** ./node_modules/jsonwebtoken/verify.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\nconst JsonWebTokenError = __webpack_require__(/*! ./lib/JsonWebTokenError */ \"./node_modules/jsonwebtoken/lib/JsonWebTokenError.js\");\nconst NotBeforeError = __webpack_require__(/*! ./lib/NotBeforeError */ \"./node_modules/jsonwebtoken/lib/NotBeforeError.js\");\nconst TokenExpiredError = __webpack_require__(/*! ./lib/TokenExpiredError */ \"./node_modules/jsonwebtoken/lib/TokenExpiredError.js\");\nconst decode = __webpack_require__(/*! ./decode */ \"./node_modules/jsonwebtoken/decode.js\");\nconst timespan = __webpack_require__(/*! ./lib/timespan */ \"./node_modules/jsonwebtoken/lib/timespan.js\");\nconst validateAsymmetricKey = __webpack_require__(/*! ./lib/validateAsymmetricKey */ \"./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js\");\nconst PS_SUPPORTED = __webpack_require__(/*! ./lib/psSupported */ \"./node_modules/jsonwebtoken/lib/psSupported.js\");\nconst jws = __webpack_require__(/*! jws */ \"./node_modules/jws/index.js\");\nconst {KeyObject, createSecretKey, createPublicKey} = __webpack_require__(/*! crypto */ \"./node_modules/next/dist/compiled/crypto-browserify/index.js\");\n\nconst PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst EC_KEY_ALGS = ['ES256', 'ES384', 'ES512'];\nconst RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nconst HS_ALGS = ['HS256', 'HS384', 'HS512'];\n\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512');\n}\n\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if ((typeof options === 'function') && !callback) {\n callback = options;\n options = {};\n }\n\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n\n let done;\n\n if (callback) {\n done = callback;\n } else {\n done = function(err, data) {\n if (err) throw err;\n return data;\n };\n }\n\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n\n if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') {\n return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean'));\n }\n\n const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n\n if (!jwtString){\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n\n const parts = jwtString.split('.');\n\n if (parts.length !== 3){\n return done(new JsonWebTokenError('jwt malformed'));\n }\n\n let decodedToken;\n\n try {\n decodedToken = decode(jwtString, { complete: true });\n } catch(err) {\n return done(err);\n }\n\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n\n const header = decodedToken.header;\n let getSecret;\n\n if(typeof secretOrPublicKey === 'function') {\n if(!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n\n getSecret = secretOrPublicKey;\n }\n else {\n getSecret = function(header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n\n return getSecret(header, function(err, secretOrPublicKey) {\n if(err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n\n const hasSignature = parts[2].trim() !== '';\n\n if (!hasSignature && secretOrPublicKey){\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n\n if (!hasSignature && !options.algorithms) {\n return done(new JsonWebTokenError('please specify \"none\" in \"algorithms\" to verify unsigned tokens'));\n }\n\n if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) {\n try {\n secretOrPublicKey = createPublicKey(secretOrPublicKey);\n } catch (_) {\n try {\n secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey);\n } catch (_) {\n return done(new JsonWebTokenError('secretOrPublicKey is not valid key material'))\n }\n }\n }\n\n if (!options.algorithms) {\n if (secretOrPublicKey.type === 'secret') {\n options.algorithms = HS_ALGS;\n } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) {\n options.algorithms = RSA_KEY_ALGS\n } else if (secretOrPublicKey.asymmetricKeyType === 'ec') {\n options.algorithms = EC_KEY_ALGS\n } else {\n options.algorithms = PUB_KEY_ALGS\n }\n }\n\n if (options.algorithms.indexOf(decodedToken.header.alg) === -1) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n\n if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`)))\n } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') {\n return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`)))\n }\n\n if (!options.allowInvalidAsymmetricKeyTypes) {\n try {\n validateAsymmetricKey(header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n }\n\n let valid;\n\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n\n const payload = decodedToken.payload;\n\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n\n if (options.audience) {\n const audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n\n const match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n\n if (options.issuer) {\n const invalid_issuer =\n (typeof options.issuer === 'string' && payload.iss !== options.issuer) ||\n (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1);\n\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n\n const maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n\n if (options.complete === true) {\n const signature = decodedToken.signature;\n\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n\n return done(null, payload);\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvanNvbndlYnRva2VuL3ZlcmlmeS5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsMEJBQTBCLG1CQUFPLENBQUMscUZBQXlCO0FBQzNELHVCQUF1QixtQkFBTyxDQUFDLCtFQUFzQjtBQUNyRCwwQkFBMEIsbUJBQU8sQ0FBQyxxRkFBeUI7QUFDM0QsZUFBZSxtQkFBTyxDQUFDLHVEQUFVO0FBQ2pDLGlCQUFpQixtQkFBTyxDQUFDLG1FQUFnQjtBQUN6Qyw4QkFBOEIsbUJBQU8sQ0FBQyw2RkFBNkI7QUFDbkUscUJBQXFCLG1CQUFPLENBQUMseUVBQW1CO0FBQ2hELFlBQVksbUJBQU8sQ0FBQyx3Q0FBSztBQUN6QixPQUFPLDZDQUE2QyxFQUFFLG1CQUFPLENBQUMsNEVBQVE7O0FBRXRFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCOztBQUU1Qjs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1Q0FBdUMsZ0JBQWdCO0FBQ3ZELElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLHNGQUFzRixNQUFNO0FBQzVGLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlHQUFpRyxXQUFXO0FBQzVHLE1BQU07QUFDTixtR0FBbUcsV0FBVztBQUM5Rzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2pzb253ZWJ0b2tlbi92ZXJpZnkuanM/OWQ4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKc29uV2ViVG9rZW5FcnJvciA9IHJlcXVpcmUoJy4vbGliL0pzb25XZWJUb2tlbkVycm9yJyk7XG5jb25zdCBOb3RCZWZvcmVFcnJvciA9IHJlcXVpcmUoJy4vbGliL05vdEJlZm9yZUVycm9yJyk7XG5jb25zdCBUb2tlbkV4cGlyZWRFcnJvciA9IHJlcXVpcmUoJy4vbGliL1Rva2VuRXhwaXJlZEVycm9yJyk7XG5jb25zdCBkZWNvZGUgPSByZXF1aXJlKCcuL2RlY29kZScpO1xuY29uc3QgdGltZXNwYW4gPSByZXF1aXJlKCcuL2xpYi90aW1lc3BhbicpO1xuY29uc3QgdmFsaWRhdGVBc3ltbWV0cmljS2V5ID0gcmVxdWlyZSgnLi9saWIvdmFsaWRhdGVBc3ltbWV0cmljS2V5Jyk7XG5jb25zdCBQU19TVVBQT1JURUQgPSByZXF1aXJlKCcuL2xpYi9wc1N1cHBvcnRlZCcpO1xuY29uc3QgandzID0gcmVxdWlyZSgnandzJyk7XG5jb25zdCB7S2V5T2JqZWN0LCBjcmVhdGVTZWNyZXRLZXksIGNyZWF0ZVB1YmxpY0tleX0gPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuXG5jb25zdCBQVUJfS0VZX0FMR1MgPSBbJ1JTMjU2JywgJ1JTMzg0JywgJ1JTNTEyJ107XG5jb25zdCBFQ19LRVlfQUxHUyA9IFsnRVMyNTYnLCAnRVMzODQnLCAnRVM1MTInXTtcbmNvbnN0IFJTQV9LRVlfQUxHUyA9IFsnUlMyNTYnLCAnUlMzODQnLCAnUlM1MTInXTtcbmNvbnN0IEhTX0FMR1MgPSBbJ0hTMjU2JywgJ0hTMzg0JywgJ0hTNTEyJ107XG5cbmlmIChQU19TVVBQT1JURUQpIHtcbiAgUFVCX0tFWV9BTEdTLnNwbGljZShQVUJfS0VZX0FMR1MubGVuZ3RoLCAwLCAnUFMyNTYnLCAnUFMzODQnLCAnUFM1MTInKTtcbiAgUlNBX0tFWV9BTEdTLnNwbGljZShSU0FfS0VZX0FMR1MubGVuZ3RoLCAwLCAnUFMyNTYnLCAnUFMzODQnLCAnUFM1MTInKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoand0U3RyaW5nLCBzZWNyZXRPclB1YmxpY0tleSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgaWYgKCh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgJiYgIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIC8vY2xvbmUgdGhpcyBvYmplY3Qgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIG11dGF0ZSBpdC5cbiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMpO1xuXG4gIGxldCBkb25lO1xuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIGRvbmUgPSBjYWxsYmFjaztcbiAgfSBlbHNlIHtcbiAgICBkb25lID0gZnVuY3Rpb24oZXJyLCBkYXRhKSB7XG4gICAgICBpZiAoZXJyKSB0aHJvdyBlcnI7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuY2xvY2tUaW1lc3RhbXAgJiYgdHlwZW9mIG9wdGlvbnMuY2xvY2tUaW1lc3RhbXAgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdjbG9ja1RpbWVzdGFtcCBtdXN0IGJlIGEgbnVtYmVyJykpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMubm9uY2UgIT09IHVuZGVmaW5lZCAmJiAodHlwZW9mIG9wdGlvbnMubm9uY2UgIT09ICdzdHJpbmcnIHx8IG9wdGlvbnMubm9uY2UudHJpbSgpID09PSAnJykpIHtcbiAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ25vbmNlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJykpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuYWxsb3dJbnZhbGlkQXN5bW1ldHJpY0tleVR5cGVzICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuYWxsb3dJbnZhbGlkQXN5bW1ldHJpY0tleVR5cGVzICE9PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2FsbG93SW52YWxpZEFzeW1tZXRyaWNLZXlUeXBlcyBtdXN0IGJlIGEgYm9vbGVhbicpKTtcbiAgfVxuXG4gIGNvbnN0IGNsb2NrVGltZXN0YW1wID0gb3B0aW9ucy5jbG9ja1RpbWVzdGFtcCB8fCBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcblxuICBpZiAoIWp3dFN0cmluZyl7XG4gICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdqd3QgbXVzdCBiZSBwcm92aWRlZCcpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygand0U3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcignand0IG11c3QgYmUgYSBzdHJpbmcnKSk7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IGp3dFN0cmluZy5zcGxpdCgnLicpO1xuXG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpe1xuICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcignand0IG1hbGZvcm1lZCcpKTtcbiAgfVxuXG4gIGxldCBkZWNvZGVkVG9rZW47XG5cbiAgdHJ5IHtcbiAgICBkZWNvZGVkVG9rZW4gPSBkZWNvZGUoand0U3RyaW5nLCB7IGNvbXBsZXRlOiB0cnVlIH0pO1xuICB9IGNhdGNoKGVycikge1xuICAgIHJldHVybiBkb25lKGVycik7XG4gIH1cblxuICBpZiAoIWRlY29kZWRUb2tlbikge1xuICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcignaW52YWxpZCB0b2tlbicpKTtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlciA9IGRlY29kZWRUb2tlbi5oZWFkZXI7XG4gIGxldCBnZXRTZWNyZXQ7XG5cbiAgaWYodHlwZW9mIHNlY3JldE9yUHVibGljS2V5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYoIWNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ3ZlcmlmeSBtdXN0IGJlIGNhbGxlZCBhc3luY2hyb25vdXMgaWYgc2VjcmV0IG9yIHB1YmxpYyBrZXkgaXMgcHJvdmlkZWQgYXMgYSBjYWxsYmFjaycpKTtcbiAgICB9XG5cbiAgICBnZXRTZWNyZXQgPSBzZWNyZXRPclB1YmxpY0tleTtcbiAgfVxuICBlbHNlIHtcbiAgICBnZXRTZWNyZXQgPSBmdW5jdGlvbihoZWFkZXIsIHNlY3JldENhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gc2VjcmV0Q2FsbGJhY2sobnVsbCwgc2VjcmV0T3JQdWJsaWNLZXkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZ2V0U2VjcmV0KGhlYWRlciwgZnVuY3Rpb24oZXJyLCBzZWNyZXRPclB1YmxpY0tleSkge1xuICAgIGlmKGVycikge1xuICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdlcnJvciBpbiBzZWNyZXQgb3IgcHVibGljIGtleSBjYWxsYmFjazogJyArIGVyci5tZXNzYWdlKSk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzU2lnbmF0dXJlID0gcGFydHNbMl0udHJpbSgpICE9PSAnJztcblxuICAgIGlmICghaGFzU2lnbmF0dXJlICYmIHNlY3JldE9yUHVibGljS2V5KXtcbiAgICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcignand0IHNpZ25hdHVyZSBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG5cbiAgICBpZiAoaGFzU2lnbmF0dXJlICYmICFzZWNyZXRPclB1YmxpY0tleSkge1xuICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdzZWNyZXQgb3IgcHVibGljIGtleSBtdXN0IGJlIHByb3ZpZGVkJykpO1xuICAgIH1cblxuICAgIGlmICghaGFzU2lnbmF0dXJlICYmICFvcHRpb25zLmFsZ29yaXRobXMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcigncGxlYXNlIHNwZWNpZnkgXCJub25lXCIgaW4gXCJhbGdvcml0aG1zXCIgdG8gdmVyaWZ5IHVuc2lnbmVkIHRva2VucycpKTtcbiAgICB9XG5cbiAgICBpZiAoc2VjcmV0T3JQdWJsaWNLZXkgIT0gbnVsbCAmJiAhKHNlY3JldE9yUHVibGljS2V5IGluc3RhbmNlb2YgS2V5T2JqZWN0KSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2VjcmV0T3JQdWJsaWNLZXkgPSBjcmVhdGVQdWJsaWNLZXkoc2VjcmV0T3JQdWJsaWNLZXkpO1xuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNlY3JldE9yUHVibGljS2V5ID0gY3JlYXRlU2VjcmV0S2V5KHR5cGVvZiBzZWNyZXRPclB1YmxpY0tleSA9PT0gJ3N0cmluZycgPyBCdWZmZXIuZnJvbShzZWNyZXRPclB1YmxpY0tleSkgOiBzZWNyZXRPclB1YmxpY0tleSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ3NlY3JldE9yUHVibGljS2V5IGlzIG5vdCB2YWxpZCBrZXkgbWF0ZXJpYWwnKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5hbGdvcml0aG1zKSB7XG4gICAgICBpZiAoc2VjcmV0T3JQdWJsaWNLZXkudHlwZSA9PT0gJ3NlY3JldCcpIHtcbiAgICAgICAgb3B0aW9ucy5hbGdvcml0aG1zID0gSFNfQUxHUztcbiAgICAgIH0gZWxzZSBpZiAoWydyc2EnLCAncnNhLXBzcyddLmluY2x1ZGVzKHNlY3JldE9yUHVibGljS2V5LmFzeW1tZXRyaWNLZXlUeXBlKSkge1xuICAgICAgICBvcHRpb25zLmFsZ29yaXRobXMgPSBSU0FfS0VZX0FMR1NcbiAgICAgIH0gZWxzZSBpZiAoc2VjcmV0T3JQdWJsaWNLZXkuYXN5bW1ldHJpY0tleVR5cGUgPT09ICdlYycpIHtcbiAgICAgICAgb3B0aW9ucy5hbGdvcml0aG1zID0gRUNfS0VZX0FMR1NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuYWxnb3JpdGhtcyA9IFBVQl9LRVlfQUxHU1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmFsZ29yaXRobXMuaW5kZXhPZihkZWNvZGVkVG9rZW4uaGVhZGVyLmFsZykgPT09IC0xKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2ludmFsaWQgYWxnb3JpdGhtJykpO1xuICAgIH1cblxuICAgIGlmIChoZWFkZXIuYWxnLnN0YXJ0c1dpdGgoJ0hTJykgJiYgc2VjcmV0T3JQdWJsaWNLZXkudHlwZSAhPT0gJ3NlY3JldCcpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcigoYHNlY3JldE9yUHVibGljS2V5IG11c3QgYmUgYSBzeW1tZXRyaWMga2V5IHdoZW4gdXNpbmcgJHtoZWFkZXIuYWxnfWApKSlcbiAgICB9IGVsc2UgaWYgKC9eKD86UlN8UFN8RVMpLy50ZXN0KGhlYWRlci5hbGcpICYmIHNlY3JldE9yUHVibGljS2V5LnR5cGUgIT09ICdwdWJsaWMnKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoKGBzZWNyZXRPclB1YmxpY0tleSBtdXN0IGJlIGFuIGFzeW1tZXRyaWMga2V5IHdoZW4gdXNpbmcgJHtoZWFkZXIuYWxnfWApKSlcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuYWxsb3dJbnZhbGlkQXN5bW1ldHJpY0tleVR5cGVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YWxpZGF0ZUFzeW1tZXRyaWNLZXkoaGVhZGVyLmFsZywgc2VjcmV0T3JQdWJsaWNLZXkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZG9uZShlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgdmFsaWQ7XG5cbiAgICB0cnkge1xuICAgICAgdmFsaWQgPSBqd3MudmVyaWZ5KGp3dFN0cmluZywgZGVjb2RlZFRva2VuLmhlYWRlci5hbGcsIHNlY3JldE9yUHVibGljS2V5KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZG9uZShlKTtcbiAgICB9XG5cbiAgICBpZiAoIXZhbGlkKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2ludmFsaWQgc2lnbmF0dXJlJykpO1xuICAgIH1cblxuICAgIGNvbnN0IHBheWxvYWQgPSBkZWNvZGVkVG9rZW4ucGF5bG9hZDtcblxuICAgIGlmICh0eXBlb2YgcGF5bG9hZC5uYmYgIT09ICd1bmRlZmluZWQnICYmICFvcHRpb25zLmlnbm9yZU5vdEJlZm9yZSkge1xuICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLm5iZiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdpbnZhbGlkIG5iZiB2YWx1ZScpKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXlsb2FkLm5iZiA+IGNsb2NrVGltZXN0YW1wICsgKG9wdGlvbnMuY2xvY2tUb2xlcmFuY2UgfHwgMCkpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IE5vdEJlZm9yZUVycm9yKCdqd3Qgbm90IGFjdGl2ZScsIG5ldyBEYXRlKHBheWxvYWQubmJmICogMTAwMCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHBheWxvYWQuZXhwICE9PSAndW5kZWZpbmVkJyAmJiAhb3B0aW9ucy5pZ25vcmVFeHBpcmF0aW9uKSB7XG4gICAgICBpZiAodHlwZW9mIHBheWxvYWQuZXhwICE9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2ludmFsaWQgZXhwIHZhbHVlJykpO1xuICAgICAgfVxuICAgICAgaWYgKGNsb2NrVGltZXN0YW1wID49IHBheWxvYWQuZXhwICsgKG9wdGlvbnMuY2xvY2tUb2xlcmFuY2UgfHwgMCkpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IFRva2VuRXhwaXJlZEVycm9yKCdqd3QgZXhwaXJlZCcsIG5ldyBEYXRlKHBheWxvYWQuZXhwICogMTAwMCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hdWRpZW5jZSkge1xuICAgICAgY29uc3QgYXVkaWVuY2VzID0gQXJyYXkuaXNBcnJheShvcHRpb25zLmF1ZGllbmNlKSA/IG9wdGlvbnMuYXVkaWVuY2UgOiBbb3B0aW9ucy5hdWRpZW5jZV07XG4gICAgICBjb25zdCB0YXJnZXQgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXVkKSA/IHBheWxvYWQuYXVkIDogW3BheWxvYWQuYXVkXTtcblxuICAgICAgY29uc3QgbWF0Y2ggPSB0YXJnZXQuc29tZShmdW5jdGlvbiAodGFyZ2V0QXVkaWVuY2UpIHtcbiAgICAgICAgcmV0dXJuIGF1ZGllbmNlcy5zb21lKGZ1bmN0aW9uIChhdWRpZW5jZSkge1xuICAgICAgICAgIHJldHVybiBhdWRpZW5jZSBpbnN0YW5jZW9mIFJlZ0V4cCA/IGF1ZGllbmNlLnRlc3QodGFyZ2V0QXVkaWVuY2UpIDogYXVkaWVuY2UgPT09IHRhcmdldEF1ZGllbmNlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHJldHVybiBkb25lKG5ldyBKc29uV2ViVG9rZW5FcnJvcignand0IGF1ZGllbmNlIGludmFsaWQuIGV4cGVjdGVkOiAnICsgYXVkaWVuY2VzLmpvaW4oJyBvciAnKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmlzc3Vlcikge1xuICAgICAgY29uc3QgaW52YWxpZF9pc3N1ZXIgPVxuICAgICAgICAgICAgICAodHlwZW9mIG9wdGlvbnMuaXNzdWVyID09PSAnc3RyaW5nJyAmJiBwYXlsb2FkLmlzcyAhPT0gb3B0aW9ucy5pc3N1ZXIpIHx8XG4gICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KG9wdGlvbnMuaXNzdWVyKSAmJiBvcHRpb25zLmlzc3Vlci5pbmRleE9mKHBheWxvYWQuaXNzKSA9PT0gLTEpO1xuXG4gICAgICBpZiAoaW52YWxpZF9pc3N1ZXIpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdqd3QgaXNzdWVyIGludmFsaWQuIGV4cGVjdGVkOiAnICsgb3B0aW9ucy5pc3N1ZXIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zdWJqZWN0KSB7XG4gICAgICBpZiAocGF5bG9hZC5zdWIgIT09IG9wdGlvbnMuc3ViamVjdCkge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2p3dCBzdWJqZWN0IGludmFsaWQuIGV4cGVjdGVkOiAnICsgb3B0aW9ucy5zdWJqZWN0KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuand0aWQpIHtcbiAgICAgIGlmIChwYXlsb2FkLmp0aSAhPT0gb3B0aW9ucy5qd3RpZCkge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2p3dCBqd3RpZCBpbnZhbGlkLiBleHBlY3RlZDogJyArIG9wdGlvbnMuand0aWQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5ub25jZSkge1xuICAgICAgaWYgKHBheWxvYWQubm9uY2UgIT09IG9wdGlvbnMubm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdqd3Qgbm9uY2UgaW52YWxpZC4gZXhwZWN0ZWQ6ICcgKyBvcHRpb25zLm5vbmNlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubWF4QWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHBheWxvYWQuaWF0ICE9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgSnNvbldlYlRva2VuRXJyb3IoJ2lhdCByZXF1aXJlZCB3aGVuIG1heEFnZSBpcyBzcGVjaWZpZWQnKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heEFnZVRpbWVzdGFtcCA9IHRpbWVzcGFuKG9wdGlvbnMubWF4QWdlLCBwYXlsb2FkLmlhdCk7XG4gICAgICBpZiAodHlwZW9mIG1heEFnZVRpbWVzdGFtcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEpzb25XZWJUb2tlbkVycm9yKCdcIm1heEFnZVwiIHNob3VsZCBiZSBhIG51bWJlciBvZiBzZWNvbmRzIG9yIHN0cmluZyByZXByZXNlbnRpbmcgYSB0aW1lc3BhbiBlZzogXCIxZFwiLCBcIjIwaFwiLCA2MCcpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjbG9ja1RpbWVzdGFtcCA+PSBtYXhBZ2VUaW1lc3RhbXAgKyAob3B0aW9ucy5jbG9ja1RvbGVyYW5jZSB8fCAwKSkge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgVG9rZW5FeHBpcmVkRXJyb3IoJ21heEFnZSBleGNlZWRlZCcsIG5ldyBEYXRlKG1heEFnZVRpbWVzdGFtcCAqIDEwMDApKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29tcGxldGUgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IGRlY29kZWRUb2tlbi5zaWduYXR1cmU7XG5cbiAgICAgIHJldHVybiBkb25lKG51bGwsIHtcbiAgICAgICAgaGVhZGVyOiBoZWFkZXIsXG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZG9uZShudWxsLCBwYXlsb2FkKTtcbiAgfSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jsonwebtoken/verify.js\n"));
/***/ }),
/***/ "./node_modules/jwa/index.js":
/*!***********************************!*\
!*** ./node_modules/jwa/index.js ***!
\***********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var bufferEqual = __webpack_require__(/*! buffer-equal-constant-time */ \"./node_modules/buffer-equal-constant-time/index.js\");\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\nvar crypto = __webpack_require__(/*! crypto */ \"./node_modules/next/dist/compiled/crypto-browserify/index.js\");\nvar formatEcdsa = __webpack_require__(/*! ecdsa-sig-formatter */ \"./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\");\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandhL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQixtQkFBTyxDQUFDLHNGQUE0QjtBQUN0RCxhQUFhLHNGQUE2QjtBQUMxQyxhQUFhLG1CQUFPLENBQUMsNEVBQVE7QUFDN0Isa0JBQWtCLG1CQUFPLENBQUMsMEZBQXFCO0FBQy9DLFdBQVcsbUJBQU8sQ0FBQyw0REFBTTs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvandhL2luZGV4LmpzP2M0OTMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGJ1ZmZlckVxdWFsID0gcmVxdWlyZSgnYnVmZmVyLWVxdWFsLWNvbnN0YW50LXRpbWUnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbnZhciBmb3JtYXRFY2RzYSA9IHJlcXVpcmUoJ2VjZHNhLXNpZy1mb3JtYXR0ZXInKTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG52YXIgTVNHX0lOVkFMSURfQUxHT1JJVEhNID0gJ1wiJXNcIiBpcyBub3QgYSB2YWxpZCBhbGdvcml0aG0uXFxuICBTdXBwb3J0ZWQgYWxnb3JpdGhtcyBhcmU6XFxuICBcIkhTMjU2XCIsIFwiSFMzODRcIiwgXCJIUzUxMlwiLCBcIlJTMjU2XCIsIFwiUlMzODRcIiwgXCJSUzUxMlwiLCBcIlBTMjU2XCIsIFwiUFMzODRcIiwgXCJQUzUxMlwiLCBcIkVTMjU2XCIsIFwiRVMzODRcIiwgXCJFUzUxMlwiIGFuZCBcIm5vbmVcIi4nXG52YXIgTVNHX0lOVkFMSURfU0VDUkVUID0gJ3NlY3JldCBtdXN0IGJlIGEgc3RyaW5nIG9yIGJ1ZmZlcic7XG52YXIgTVNHX0lOVkFMSURfVkVSSUZJRVJfS0VZID0gJ2tleSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyJztcbnZhciBNU0dfSU5WQUxJRF9TSUdORVJfS0VZID0gJ2tleSBtdXN0IGJlIGEgc3RyaW5nLCBhIGJ1ZmZlciBvciBhbiBvYmplY3QnO1xuXG52YXIgc3VwcG9ydHNLZXlPYmplY3RzID0gdHlwZW9mIGNyeXB0by5jcmVhdGVQdWJsaWNLZXkgPT09ICdmdW5jdGlvbic7XG5pZiAoc3VwcG9ydHNLZXlPYmplY3RzKSB7XG4gIE1TR19JTlZBTElEX1ZFUklGSUVSX0tFWSArPSAnIG9yIGEgS2V5T2JqZWN0JztcbiAgTVNHX0lOVkFMSURfU0VDUkVUICs9ICdvciBhIEtleU9iamVjdCc7XG59XG5cbmZ1bmN0aW9uIGNoZWNrSXNQdWJsaWNLZXkoa2V5KSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghc3VwcG9ydHNLZXlPYmplY3RzKSB7XG4gICAgdGhyb3cgdHlwZUVycm9yKE1TR19JTlZBTElEX1ZFUklGSUVSX0tFWSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGtleSAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyB0eXBlRXJyb3IoTVNHX0lOVkFMSURfVkVSSUZJRVJfS0VZKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5LnR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgdHlwZUVycm9yKE1TR19JTlZBTElEX1ZFUklGSUVSX0tFWSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGtleS5hc3ltbWV0cmljS2V5VHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyB0eXBlRXJyb3IoTVNHX0lOVkFMSURfVkVSSUZJRVJfS0VZKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5LmV4cG9ydCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IHR5cGVFcnJvcihNU0dfSU5WQUxJRF9WRVJJRklFUl9LRVkpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjaGVja0lzUHJpdmF0ZUtleShrZXkpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihrZXkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgdHlwZUVycm9yKE1TR19JTlZBTElEX1NJR05FUl9LRVkpO1xufTtcblxuZnVuY3Rpb24gY2hlY2tJc1NlY3JldEtleShrZXkpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihrZXkpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIGlmICghc3VwcG9ydHNLZXlPYmplY3RzKSB7XG4gICAgdGhyb3cgdHlwZUVycm9yKE1TR19JTlZBTElEX1NFQ1JFVCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGtleSAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyB0eXBlRXJyb3IoTVNHX0lOVkFMSURfU0VDUkVUKTtcbiAgfVxuXG4gIGlmIChrZXkudHlwZSAhPT0gJ3NlY3JldCcpIHtcbiAgICB0aHJvdyB0eXBlRXJyb3IoTVNHX0lOVkFMSURfU0VDUkVUKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5LmV4cG9ydCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IHR5cGVFcnJvcihNU0dfSU5WQUxJRF9TRUNSRVQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZyb21CYXNlNjQoYmFzZTY0KSB7XG4gIHJldHVybiBiYXNlNjRcbiAgICAucmVwbGFjZSgvPS9nLCAnJylcbiAgICAucmVwbGFjZSgvXFwrL2csICctJylcbiAgICAucmVwbGFjZSgvXFwvL2csICdfJyk7XG59XG5cbmZ1bmN0aW9uIHRvQmFzZTY0KGJhc2U2NHVybCkge1xuICBiYXNlNjR1cmwgPSBiYXNlNjR1cmwudG9TdHJpbmcoKTtcblxuICB2YXIgcGFkZGluZyA9IDQgLSBiYXNlNjR1cmwubGVuZ3RoICUgNDtcbiAgaWYgKHBhZGRpbmcgIT09IDQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhZGRpbmc7ICsraSkge1xuICAgICAgYmFzZTY0dXJsICs9ICc9JztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYmFzZTY0dXJsXG4gICAgLnJlcGxhY2UoL1xcLS9nLCAnKycpXG4gICAgLnJlcGxhY2UoL18vZywgJy8nKTtcbn1cblxuZnVuY3Rpb24gdHlwZUVycm9yKHRlbXBsYXRlKSB7XG4gIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB2YXIgZXJyTXNnID0gdXRpbC5mb3JtYXQuYmluZCh1dGlsLCB0ZW1wbGF0ZSkuYXBwbHkobnVsbCwgYXJncyk7XG4gIHJldHVybiBuZXcgVHlwZUVycm9yKGVyck1zZyk7XG59XG5cbmZ1bmN0aW9uIGJ1ZmZlck9yU3RyaW5nKG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgdHlwZW9mIG9iaiA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlucHV0KHRoaW5nKSB7XG4gIGlmICghYnVmZmVyT3JTdHJpbmcodGhpbmcpKVxuICAgIHRoaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpbmcpO1xuICByZXR1cm4gdGhpbmc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUhtYWNTaWduZXIoYml0cykge1xuICByZXR1cm4gZnVuY3Rpb24gc2lnbih0aGluZywgc2VjcmV0KSB7XG4gICAgY2hlY2tJc1NlY3JldEtleShzZWNyZXQpO1xuICAgIHRoaW5nID0gbm9ybWFsaXplSW5wdXQodGhpbmcpO1xuICAgIHZhciBobWFjID0gY3J5cHRvLmNyZWF0ZUhtYWMoJ3NoYScgKyBiaXRzLCBzZWNyZXQpO1xuICAgIHZhciBzaWcgPSAoaG1hYy51cGRhdGUodGhpbmcpLCBobWFjLmRpZ2VzdCgnYmFzZTY0JykpXG4gICAgcmV0dXJuIGZyb21CYXNlNjQoc2lnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVIbWFjVmVyaWZpZXIoYml0cykge1xuICByZXR1cm4gZnVuY3Rpb24gdmVyaWZ5KHRoaW5nLCBzaWduYXR1cmUsIHNlY3JldCkge1xuICAgIHZhciBjb21wdXRlZFNpZyA9IGNyZWF0ZUhtYWNTaWduZXIoYml0cykodGhpbmcsIHNlY3JldCk7XG4gICAgcmV0dXJuIGJ1ZmZlckVxdWFsKEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSksIEJ1ZmZlci5mcm9tKGNvbXB1dGVkU2lnKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5U2lnbmVyKGJpdHMpIHtcbiByZXR1cm4gZnVuY3Rpb24gc2lnbih0aGluZywgcHJpdmF0ZUtleSkge1xuICAgIGNoZWNrSXNQcml2YXRlS2V5KHByaXZhdGVLZXkpO1xuICAgIHRoaW5nID0gbm9ybWFsaXplSW5wdXQodGhpbmcpO1xuICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGFyZSBzcGVjaWZ5aW5nIFwiUlNBXCIgaGVyZSwgdGhpcyB3b3JrcyB3aXRoIEVDRFNBXG4gICAgLy8ga2V5cyBhcyB3ZWxsLlxuICAgIHZhciBzaWduZXIgPSBjcnlwdG8uY3JlYXRlU2lnbignUlNBLVNIQScgKyBiaXRzKTtcbiAgICB2YXIgc2lnID0gKHNpZ25lci51cGRhdGUodGhpbmcpLCBzaWduZXIuc2lnbihwcml2YXRlS2V5LCAnYmFzZTY0JykpO1xuICAgIHJldHVybiBmcm9tQmFzZTY0KHNpZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlS2V5VmVyaWZpZXIoYml0cykge1xuICByZXR1cm4gZnVuY3Rpb24gdmVyaWZ5KHRoaW5nLCBzaWduYXR1cmUsIHB1YmxpY0tleSkge1xuICAgIGNoZWNrSXNQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICB0aGluZyA9IG5vcm1hbGl6ZUlucHV0KHRoaW5nKTtcbiAgICBzaWduYXR1cmUgPSB0b0Jhc2U2NChzaWduYXR1cmUpO1xuICAgIHZhciB2ZXJpZmllciA9IGNyeXB0by5jcmVhdGVWZXJpZnkoJ1JTQS1TSEEnICsgYml0cyk7XG4gICAgdmVyaWZpZXIudXBkYXRlKHRoaW5nKTtcbiAgICByZXR1cm4gdmVyaWZpZXIudmVyaWZ5KHB1YmxpY0tleSwgc2lnbmF0dXJlLCAnYmFzZTY0Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUFNTS2V5U2lnbmVyKGJpdHMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNpZ24odGhpbmcsIHByaXZhdGVLZXkpIHtcbiAgICBjaGVja0lzUHJpdmF0ZUtleShwcml2YXRlS2V5KTtcbiAgICB0aGluZyA9IG5vcm1hbGl6ZUlucHV0KHRoaW5nKTtcbiAgICB2YXIgc2lnbmVyID0gY3J5cHRvLmNyZWF0ZVNpZ24oJ1JTQS1TSEEnICsgYml0cyk7XG4gICAgdmFyIHNpZyA9IChzaWduZXIudXBkYXRlKHRoaW5nKSwgc2lnbmVyLnNpZ24oe1xuICAgICAga2V5OiBwcml2YXRlS2V5LFxuICAgICAgcGFkZGluZzogY3J5cHRvLmNvbnN0YW50cy5SU0FfUEtDUzFfUFNTX1BBRERJTkcsXG4gICAgICBzYWx0TGVuZ3RoOiBjcnlwdG8uY29uc3RhbnRzLlJTQV9QU1NfU0FMVExFTl9ESUdFU1RcbiAgICB9LCAnYmFzZTY0JykpO1xuICAgIHJldHVybiBmcm9tQmFzZTY0KHNpZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlUFNTS2V5VmVyaWZpZXIoYml0cykge1xuICByZXR1cm4gZnVuY3Rpb24gdmVyaWZ5KHRoaW5nLCBzaWduYXR1cmUsIHB1YmxpY0tleSkge1xuICAgIGNoZWNrSXNQdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICB0aGluZyA9IG5vcm1hbGl6ZUlucHV0KHRoaW5nKTtcbiAgICBzaWduYXR1cmUgPSB0b0Jhc2U2NChzaWduYXR1cmUpO1xuICAgIHZhciB2ZXJpZmllciA9IGNyeXB0by5jcmVhdGVWZXJpZnkoJ1JTQS1TSEEnICsgYml0cyk7XG4gICAgdmVyaWZpZXIudXBkYXRlKHRoaW5nKTtcbiAgICByZXR1cm4gdmVyaWZpZXIudmVyaWZ5KHtcbiAgICAgIGtleTogcHVibGljS2V5LFxuICAgICAgcGFkZGluZzogY3J5cHRvLmNvbnN0YW50cy5SU0FfUEtDUzFfUFNTX1BBRERJTkcsXG4gICAgICBzYWx0TGVuZ3RoOiBjcnlwdG8uY29uc3RhbnRzLlJTQV9QU1NfU0FMVExFTl9ESUdFU1RcbiAgICB9LCBzaWduYXR1cmUsICdiYXNlNjQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFQ0RTQVNpZ25lcihiaXRzKSB7XG4gIHZhciBpbm5lciA9IGNyZWF0ZUtleVNpZ25lcihiaXRzKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNpZ24oKSB7XG4gICAgdmFyIHNpZ25hdHVyZSA9IGlubmVyLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgc2lnbmF0dXJlID0gZm9ybWF0RWNkc2EuZGVyVG9Kb3NlKHNpZ25hdHVyZSwgJ0VTJyArIGJpdHMpO1xuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVDRFNBVmVyaWZlcihiaXRzKSB7XG4gIHZhciBpbm5lciA9IGNyZWF0ZUtleVZlcmlmaWVyKGJpdHMpO1xuICByZXR1cm4gZnVuY3Rpb24gdmVyaWZ5KHRoaW5nLCBzaWduYXR1cmUsIHB1YmxpY0tleSkge1xuICAgIHNpZ25hdHVyZSA9IGZvcm1hdEVjZHNhLmpvc2VUb0RlcihzaWduYXR1cmUsICdFUycgKyBiaXRzKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgdmFyIHJlc3VsdCA9IGlubmVyKHRoaW5nLCBzaWduYXR1cmUsIHB1YmxpY0tleSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTm9uZVNpZ25lcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNpZ24oKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5vbmVWZXJpZmllcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHZlcmlmeSh0aGluZywgc2lnbmF0dXJlKSB7XG4gICAgcmV0dXJuIHNpZ25hdHVyZSA9PT0gJyc7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBqd2EoYWxnb3JpdGhtKSB7XG4gIHZhciBzaWduZXJGYWN0b3JpZXMgPSB7XG4gICAgaHM6IGNyZWF0ZUhtYWNTaWduZXIsXG4gICAgcnM6IGNyZWF0ZUtleVNpZ25lcixcbiAgICBwczogY3JlYXRlUFNTS2V5U2lnbmVyLFxuICAgIGVzOiBjcmVhdGVFQ0RTQVNpZ25lcixcbiAgICBub25lOiBjcmVhdGVOb25lU2lnbmVyLFxuICB9XG4gIHZhciB2ZXJpZmllckZhY3RvcmllcyA9IHtcbiAgICBoczogY3JlYXRlSG1hY1ZlcmlmaWVyLFxuICAgIHJzOiBjcmVhdGVLZXlWZXJpZmllcixcbiAgICBwczogY3JlYXRlUFNTS2V5VmVyaWZpZXIsXG4gICAgZXM6IGNyZWF0ZUVDRFNBVmVyaWZlcixcbiAgICBub25lOiBjcmVhdGVOb25lVmVyaWZpZXIsXG4gIH1cbiAgdmFyIG1hdGNoID0gYWxnb3JpdGhtLm1hdGNoKC9eKFJTfFBTfEVTfEhTKSgyNTZ8Mzg0fDUxMikkfF4obm9uZSkkL2kpO1xuICBpZiAoIW1hdGNoKVxuICAgIHRocm93IHR5cGVFcnJvcihNU0dfSU5WQUxJRF9BTEdPUklUSE0sIGFsZ29yaXRobSk7XG4gIHZhciBhbGdvID0gKG1hdGNoWzFdIHx8IG1hdGNoWzNdKS50b0xvd2VyQ2FzZSgpO1xuICB2YXIgYml0cyA9IG1hdGNoWzJdO1xuXG4gIHJldHVybiB7XG4gICAgc2lnbjogc2lnbmVyRmFjdG9yaWVzW2FsZ29dKGJpdHMpLFxuICAgIHZlcmlmeTogdmVyaWZpZXJGYWN0b3JpZXNbYWxnb10oYml0cyksXG4gIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/jwa/index.js\n"));
/***/ }),
/***/ "./node_modules/jws/index.js":
/*!***********************************!*\
!*** ./node_modules/jws/index.js ***!
\***********************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
eval(__webpack_require__.ts("/*global exports*/\nvar SignStream = __webpack_require__(/*! ./lib/sign-stream */ \"./node_modules/jws/lib/sign-stream.js\");\nvar VerifyStream = __webpack_require__(/*! ./lib/verify-stream */ \"./node_modules/jws/lib/verify-stream.js\");\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandzL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsZ0VBQW1CO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLG9FQUFxQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQjtBQUNsQixZQUFZO0FBQ1osY0FBYztBQUNkLGNBQWM7QUFDZCxlQUFlO0FBQ2Ysa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvandzL2luZGV4LmpzP2UyMTEiXSwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWwgZXhwb3J0cyovXG52YXIgU2lnblN0cmVhbSA9IHJlcXVpcmUoJy4vbGliL3NpZ24tc3RyZWFtJyk7XG52YXIgVmVyaWZ5U3RyZWFtID0gcmVxdWlyZSgnLi9saWIvdmVyaWZ5LXN0cmVhbScpO1xuXG52YXIgQUxHT1JJVEhNUyA9IFtcbiAgJ0hTMjU2JywgJ0hTMzg0JywgJ0hTNTEyJyxcbiAgJ1JTMjU2JywgJ1JTMzg0JywgJ1JTNTEyJyxcbiAgJ1BTMjU2JywgJ1BTMzg0JywgJ1BTNTEyJyxcbiAgJ0VTMjU2JywgJ0VTMzg0JywgJ0VTNTEyJ1xuXTtcblxuZXhwb3J0cy5BTEdPUklUSE1TID0gQUxHT1JJVEhNUztcbmV4cG9ydHMuc2lnbiA9IFNpZ25TdHJlYW0uc2lnbjtcbmV4cG9ydHMudmVyaWZ5ID0gVmVyaWZ5U3RyZWFtLnZlcmlmeTtcbmV4cG9ydHMuZGVjb2RlID0gVmVyaWZ5U3RyZWFtLmRlY29kZTtcbmV4cG9ydHMuaXNWYWxpZCA9IFZlcmlmeVN0cmVhbS5pc1ZhbGlkO1xuZXhwb3J0cy5jcmVhdGVTaWduID0gZnVuY3Rpb24gY3JlYXRlU2lnbihvcHRzKSB7XG4gIHJldHVybiBuZXcgU2lnblN0cmVhbShvcHRzKTtcbn07XG5leHBvcnRzLmNyZWF0ZVZlcmlmeSA9IGZ1bmN0aW9uIGNyZWF0ZVZlcmlmeShvcHRzKSB7XG4gIHJldHVybiBuZXcgVmVyaWZ5U3RyZWFtKG9wdHMpO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/jws/index.js\n"));
/***/ }),
/***/ "./node_modules/jws/lib/data-stream.js":
/*!*********************************************!*\
!*** ./node_modules/jws/lib/data-stream.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n/*global module, process*/\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\nvar Stream = __webpack_require__(/*! stream */ \"./node_modules/next/dist/compiled/stream-browserify/index.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\");\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandzL2xpYi9kYXRhLXN0cmVhbS5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7QUFDQSxhQUFhLHNGQUE2QjtBQUMxQyxhQUFhLG1CQUFPLENBQUMsNEVBQVE7QUFDN0IsV0FBVyxtQkFBTyxDQUFDLDREQUFNOztBQUV6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxPQUFPO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2p3cy9saWIvZGF0YS1zdHJlYW0uanM/NmI3OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKmdsb2JhbCBtb2R1bGUsIHByb2Nlc3MqL1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbmZ1bmN0aW9uIERhdGFTdHJlYW0oZGF0YSkge1xuICB0aGlzLmJ1ZmZlciA9IG51bGw7XG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyBObyBpbnB1dFxuICBpZiAoIWRhdGEpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIFN0cmVhbVxuICBpZiAodHlwZW9mIGRhdGEucGlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jKDApO1xuICAgIGRhdGEucGlwZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEJ1ZmZlciBvciBTdHJpbmdcbiAgLy8gb3IgT2JqZWN0IChhc3N1bWVkbHkgYSBwYXNzd29yZGVkIGtleSlcbiAgaWYgKGRhdGEubGVuZ3RoIHx8IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgIHRoaXMuYnVmZmVyID0gZGF0YTtcbiAgICB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmVtaXQoJ2VuZCcsIGRhdGEpO1xuICAgICAgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5lbWl0KCdjbG9zZScpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmV4cGVjdGVkIGRhdGEgdHlwZSAoJysgdHlwZW9mIGRhdGEgKyAnKScpO1xufVxudXRpbC5pbmhlcml0cyhEYXRhU3RyZWFtLCBTdHJlYW0pO1xuXG5EYXRhU3RyZWFtLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlKGRhdGEpIHtcbiAgdGhpcy5idWZmZXIgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmJ1ZmZlciwgQnVmZmVyLmZyb20oZGF0YSldKTtcbiAgdGhpcy5lbWl0KCdkYXRhJywgZGF0YSk7XG59O1xuXG5EYXRhU3RyZWFtLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiBlbmQoZGF0YSkge1xuICBpZiAoZGF0YSlcbiAgICB0aGlzLndyaXRlKGRhdGEpO1xuICB0aGlzLmVtaXQoJ2VuZCcsIGRhdGEpO1xuICB0aGlzLmVtaXQoJ2Nsb3NlJyk7XG4gIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYXRhU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jws/lib/data-stream.js\n"));
/***/ }),
/***/ "./node_modules/jws/lib/sign-stream.js":
/*!*********************************************!*\
!*** ./node_modules/jws/lib/sign-stream.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/*global module*/\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\nvar DataStream = __webpack_require__(/*! ./data-stream */ \"./node_modules/jws/lib/data-stream.js\");\nvar jwa = __webpack_require__(/*! jwa */ \"./node_modules/jwa/index.js\");\nvar Stream = __webpack_require__(/*! stream */ \"./node_modules/next/dist/compiled/stream-browserify/index.js\");\nvar toString = __webpack_require__(/*! ./tostring */ \"./node_modules/jws/lib/tostring.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\");\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret||opts.privateKey||opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandzL2xpYi9zaWduLXN0cmVhbS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGFBQWEsc0ZBQTZCO0FBQzFDLGlCQUFpQixtQkFBTyxDQUFDLDREQUFlO0FBQ3hDLFVBQVUsbUJBQU8sQ0FBQyx3Q0FBSztBQUN2QixhQUFhLG1CQUFPLENBQUMsNEVBQVE7QUFDN0IsZUFBZSxtQkFBTyxDQUFDLHNEQUFZO0FBQ25DLFdBQVcsbUJBQU8sQ0FBQyw0REFBTTs7QUFFekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9qd3MvbGliL3NpZ24tc3RyZWFtLmpzPzZmMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLypnbG9iYWwgbW9kdWxlKi9cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBEYXRhU3RyZWFtID0gcmVxdWlyZSgnLi9kYXRhLXN0cmVhbScpO1xudmFyIGp3YSA9IHJlcXVpcmUoJ2p3YScpO1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b3N0cmluZycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbmZ1bmN0aW9uIGJhc2U2NHVybChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIHJldHVybiBCdWZmZXJcbiAgICAuZnJvbShzdHJpbmcsIGVuY29kaW5nKVxuICAgIC50b1N0cmluZygnYmFzZTY0JylcbiAgICAucmVwbGFjZSgvPS9nLCAnJylcbiAgICAucmVwbGFjZSgvXFwrL2csICctJylcbiAgICAucmVwbGFjZSgvXFwvL2csICdfJyk7XG59XG5cbmZ1bmN0aW9uIGp3c1NlY3VyZWRJbnB1dChoZWFkZXIsIHBheWxvYWQsIGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ3V0ZjgnO1xuICB2YXIgZW5jb2RlZEhlYWRlciA9IGJhc2U2NHVybCh0b1N0cmluZyhoZWFkZXIpLCAnYmluYXJ5Jyk7XG4gIHZhciBlbmNvZGVkUGF5bG9hZCA9IGJhc2U2NHVybCh0b1N0cmluZyhwYXlsb2FkKSwgZW5jb2RpbmcpO1xuICByZXR1cm4gdXRpbC5mb3JtYXQoJyVzLiVzJywgZW5jb2RlZEhlYWRlciwgZW5jb2RlZFBheWxvYWQpO1xufVxuXG5mdW5jdGlvbiBqd3NTaWduKG9wdHMpIHtcbiAgdmFyIGhlYWRlciA9IG9wdHMuaGVhZGVyO1xuICB2YXIgcGF5bG9hZCA9IG9wdHMucGF5bG9hZDtcbiAgdmFyIHNlY3JldE9yS2V5ID0gb3B0cy5zZWNyZXQgfHwgb3B0cy5wcml2YXRlS2V5O1xuICB2YXIgZW5jb2RpbmcgPSBvcHRzLmVuY29kaW5nO1xuICB2YXIgYWxnbyA9IGp3YShoZWFkZXIuYWxnKTtcbiAgdmFyIHNlY3VyZWRJbnB1dCA9IGp3c1NlY3VyZWRJbnB1dChoZWFkZXIsIHBheWxvYWQsIGVuY29kaW5nKTtcbiAgdmFyIHNpZ25hdHVyZSA9IGFsZ28uc2lnbihzZWN1cmVkSW5wdXQsIHNlY3JldE9yS2V5KTtcbiAgcmV0dXJuIHV0aWwuZm9ybWF0KCclcy4lcycsIHNlY3VyZWRJbnB1dCwgc2lnbmF0dXJlKTtcbn1cblxuZnVuY3Rpb24gU2lnblN0cmVhbShvcHRzKSB7XG4gIHZhciBzZWNyZXQgPSBvcHRzLnNlY3JldHx8b3B0cy5wcml2YXRlS2V5fHxvcHRzLmtleTtcbiAgdmFyIHNlY3JldFN0cmVhbSA9IG5ldyBEYXRhU3RyZWFtKHNlY3JldCk7XG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuICB0aGlzLmhlYWRlciA9IG9wdHMuaGVhZGVyO1xuICB0aGlzLmVuY29kaW5nID0gb3B0cy5lbmNvZGluZztcbiAgdGhpcy5zZWNyZXQgPSB0aGlzLnByaXZhdGVLZXkgPSB0aGlzLmtleSA9IHNlY3JldFN0cmVhbTtcbiAgdGhpcy5wYXlsb2FkID0gbmV3IERhdGFTdHJlYW0ob3B0cy5wYXlsb2FkKTtcbiAgdGhpcy5zZWNyZXQub25jZSgnY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLnBheWxvYWQud3JpdGFibGUgJiYgdGhpcy5yZWFkYWJsZSlcbiAgICAgIHRoaXMuc2lnbigpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHRoaXMucGF5bG9hZC5vbmNlKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuc2VjcmV0LndyaXRhYmxlICYmIHRoaXMucmVhZGFibGUpXG4gICAgICB0aGlzLnNpZ24oKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cbnV0aWwuaW5oZXJpdHMoU2lnblN0cmVhbSwgU3RyZWFtKTtcblxuU2lnblN0cmVhbS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIHNpZ25hdHVyZSA9IGp3c1NpZ24oe1xuICAgICAgaGVhZGVyOiB0aGlzLmhlYWRlcixcbiAgICAgIHBheWxvYWQ6IHRoaXMucGF5bG9hZC5idWZmZXIsXG4gICAgICBzZWNyZXQ6IHRoaXMuc2VjcmV0LmJ1ZmZlcixcbiAgICAgIGVuY29kaW5nOiB0aGlzLmVuY29kaW5nXG4gICAgfSk7XG4gICAgdGhpcy5lbWl0KCdkb25lJywgc2lnbmF0dXJlKTtcbiAgICB0aGlzLmVtaXQoJ2RhdGEnLCBzaWduYXR1cmUpO1xuICAgIHRoaXMuZW1pdCgnZW5kJyk7XG4gICAgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHJldHVybiBzaWduYXR1cmU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgIHRoaXMuZW1pdCgnY2xvc2UnKTtcbiAgfVxufTtcblxuU2lnblN0cmVhbS5zaWduID0gandzU2lnbjtcblxubW9kdWxlLmV4cG9ydHMgPSBTaWduU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jws/lib/sign-stream.js\n"));
/***/ }),
/***/ "./node_modules/jws/lib/tostring.js":
/*!******************************************!*\
!*** ./node_modules/jws/lib/tostring.js ***!
\******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/*global module*/\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\").Buffer);\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandzL2xpYi90b3N0cmluZy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGFBQWEsK0ZBQXdCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvandzL2xpYi90b3N0cmluZy5qcz8yM2EyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qZ2xvYmFsIG1vZHVsZSovXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRvU3RyaW5nKG9iaikge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpXG4gICAgcmV0dXJuIG9iajtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdudW1iZXInIHx8IEJ1ZmZlci5pc0J1ZmZlcihvYmopKVxuICAgIHJldHVybiBvYmoudG9TdHJpbmcoKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jws/lib/tostring.js\n"));
/***/ }),
/***/ "./node_modules/jws/lib/verify-stream.js":
/*!***********************************************!*\
!*** ./node_modules/jws/lib/verify-stream.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/*global module*/\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\nvar DataStream = __webpack_require__(/*! ./data-stream */ \"./node_modules/jws/lib/data-stream.js\");\nvar jwa = __webpack_require__(/*! jwa */ \"./node_modules/jwa/index.js\");\nvar Stream = __webpack_require__(/*! stream */ \"./node_modules/next/dist/compiled/stream-browserify/index.js\");\nvar toString = __webpack_require__(/*! ./tostring */ \"./node_modules/jws/lib/tostring.js\");\nvar util = __webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\");\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret||opts.publicKey||opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvandzL2xpYi92ZXJpZnktc3RyZWFtLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsYUFBYSxzRkFBNkI7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsNERBQWU7QUFDeEMsVUFBVSxtQkFBTyxDQUFDLHdDQUFLO0FBQ3ZCLGFBQWEsbUJBQU8sQ0FBQyw0RUFBUTtBQUM3QixlQUFlLG1CQUFPLENBQUMsc0RBQVk7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLDREQUFNO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9qd3MvbGliL3ZlcmlmeS1zdHJlYW0uanM/NDAwNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKmdsb2JhbCBtb2R1bGUqL1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIERhdGFTdHJlYW0gPSByZXF1aXJlKCcuL2RhdGEtc3RyZWFtJyk7XG52YXIgandhID0gcmVxdWlyZSgnandhJyk7XG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuL3Rvc3RyaW5nJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBKV1NfUkVHRVggPSAvXlthLXpBLVowLTlcXC1fXSs/XFwuW2EtekEtWjAtOVxcLV9dKz9cXC4oW2EtekEtWjAtOVxcLV9dKyk/JC87XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHRoaW5nKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGhpbmcpID09PSAnW29iamVjdCBPYmplY3RdJztcbn1cblxuZnVuY3Rpb24gc2FmZUpzb25QYXJzZSh0aGluZykge1xuICBpZiAoaXNPYmplY3QodGhpbmcpKVxuICAgIHJldHVybiB0aGluZztcbiAgdHJ5IHsgcmV0dXJuIEpTT04ucGFyc2UodGhpbmcpOyB9XG4gIGNhdGNoIChlKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbn1cblxuZnVuY3Rpb24gaGVhZGVyRnJvbUpXUyhqd3NTaWcpIHtcbiAgdmFyIGVuY29kZWRIZWFkZXIgPSBqd3NTaWcuc3BsaXQoJy4nLCAxKVswXTtcbiAgcmV0dXJuIHNhZmVKc29uUGFyc2UoQnVmZmVyLmZyb20oZW5jb2RlZEhlYWRlciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdiaW5hcnknKSk7XG59XG5cbmZ1bmN0aW9uIHNlY3VyZWRJbnB1dEZyb21KV1MoandzU2lnKSB7XG4gIHJldHVybiBqd3NTaWcuc3BsaXQoJy4nLCAyKS5qb2luKCcuJyk7XG59XG5cbmZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KV1MoandzU2lnKSB7XG4gIHJldHVybiBqd3NTaWcuc3BsaXQoJy4nKVsyXTtcbn1cblxuZnVuY3Rpb24gcGF5bG9hZEZyb21KV1MoandzU2lnLCBlbmNvZGluZykge1xuICBlbmNvZGluZyA9IGVuY29kaW5nIHx8ICd1dGY4JztcbiAgdmFyIHBheWxvYWQgPSBqd3NTaWcuc3BsaXQoJy4nKVsxXTtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHBheWxvYWQsICdiYXNlNjQnKS50b1N0cmluZyhlbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRKd3Moc3RyaW5nKSB7XG4gIHJldHVybiBKV1NfUkVHRVgudGVzdChzdHJpbmcpICYmICEhaGVhZGVyRnJvbUpXUyhzdHJpbmcpO1xufVxuXG5mdW5jdGlvbiBqd3NWZXJpZnkoandzU2lnLCBhbGdvcml0aG0sIHNlY3JldE9yS2V5KSB7XG4gIGlmICghYWxnb3JpdGhtKSB7XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcIk1pc3NpbmcgYWxnb3JpdGhtIHBhcmFtZXRlciBmb3IgandzLnZlcmlmeVwiKTtcbiAgICBlcnIuY29kZSA9IFwiTUlTU0lOR19BTEdPUklUSE1cIjtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbiAgandzU2lnID0gdG9TdHJpbmcoandzU2lnKTtcbiAgdmFyIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KV1MoandzU2lnKTtcbiAgdmFyIHNlY3VyZWRJbnB1dCA9IHNlY3VyZWRJbnB1dEZyb21KV1MoandzU2lnKTtcbiAgdmFyIGFsZ28gPSBqd2EoYWxnb3JpdGhtKTtcbiAgcmV0dXJuIGFsZ28udmVyaWZ5KHNlY3VyZWRJbnB1dCwgc2lnbmF0dXJlLCBzZWNyZXRPcktleSk7XG59XG5cbmZ1bmN0aW9uIGp3c0RlY29kZShqd3NTaWcsIG9wdHMpIHtcbiAgb3B0cyA9IG9wdHMgfHwge307XG4gIGp3c1NpZyA9IHRvU3RyaW5nKGp3c1NpZyk7XG5cbiAgaWYgKCFpc1ZhbGlkSndzKGp3c1NpZykpXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgdmFyIGhlYWRlciA9IGhlYWRlckZyb21KV1MoandzU2lnKTtcblxuICBpZiAoIWhlYWRlcilcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgcGF5bG9hZCA9IHBheWxvYWRGcm9tSldTKGp3c1NpZyk7XG4gIGlmIChoZWFkZXIudHlwID09PSAnSldUJyB8fCBvcHRzLmpzb24pXG4gICAgcGF5bG9hZCA9IEpTT04ucGFyc2UocGF5bG9hZCwgb3B0cy5lbmNvZGluZyk7XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFkZXI6IGhlYWRlcixcbiAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlRnJvbUpXUyhqd3NTaWcpXG4gIH07XG59XG5cbmZ1bmN0aW9uIFZlcmlmeVN0cmVhbShvcHRzKSB7XG4gIG9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgc2VjcmV0T3JLZXkgPSBvcHRzLnNlY3JldHx8b3B0cy5wdWJsaWNLZXl8fG9wdHMua2V5O1xuICB2YXIgc2VjcmV0U3RyZWFtID0gbmV3IERhdGFTdHJlYW0oc2VjcmV0T3JLZXkpO1xuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcbiAgdGhpcy5hbGdvcml0aG0gPSBvcHRzLmFsZ29yaXRobTtcbiAgdGhpcy5lbmNvZGluZyA9IG9wdHMuZW5jb2Rpbmc7XG4gIHRoaXMuc2VjcmV0ID0gdGhpcy5wdWJsaWNLZXkgPSB0aGlzLmtleSA9IHNlY3JldFN0cmVhbTtcbiAgdGhpcy5zaWduYXR1cmUgPSBuZXcgRGF0YVN0cmVhbShvcHRzLnNpZ25hdHVyZSk7XG4gIHRoaXMuc2VjcmV0Lm9uY2UoJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5zaWduYXR1cmUud3JpdGFibGUgJiYgdGhpcy5yZWFkYWJsZSlcbiAgICAgIHRoaXMudmVyaWZ5KCk7XG4gIH0uYmluZCh0aGlzKSk7XG5cbiAgdGhpcy5zaWduYXR1cmUub25jZSgnY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLnNlY3JldC53cml0YWJsZSAmJiB0aGlzLnJlYWRhYmxlKVxuICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cbnV0aWwuaW5oZXJpdHMoVmVyaWZ5U3RyZWFtLCBTdHJlYW0pO1xuVmVyaWZ5U3RyZWFtLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkoKSB7XG4gIHRyeSB7XG4gICAgdmFyIHZhbGlkID0gandzVmVyaWZ5KHRoaXMuc2lnbmF0dXJlLmJ1ZmZlciwgdGhpcy5hbGdvcml0aG0sIHRoaXMua2V5LmJ1ZmZlcik7XG4gICAgdmFyIG9iaiA9IGp3c0RlY29kZSh0aGlzLnNpZ25hdHVyZS5idWZmZXIsIHRoaXMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW1pdCgnZG9uZScsIHZhbGlkLCBvYmopO1xuICAgIHRoaXMuZW1pdCgnZGF0YScsIHZhbGlkKTtcbiAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICAgIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcbiAgICByZXR1cm4gdmFsaWQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgIHRoaXMuZW1pdCgnY2xvc2UnKTtcbiAgfVxufTtcblxuVmVyaWZ5U3RyZWFtLmRlY29kZSA9IGp3c0RlY29kZTtcblZlcmlmeVN0cmVhbS5pc1ZhbGlkID0gaXNWYWxpZEp3cztcblZlcmlmeVN0cmVhbS52ZXJpZnkgPSBqd3NWZXJpZnk7XG5cbm1vZHVsZS5leHBvcnRzID0gVmVyaWZ5U3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/jws/lib/verify-stream.js\n"));
/***/ }),
/***/ "./node_modules/lodash.includes/index.js":
/*!***********************************************!*\
!*** ./node_modules/lodash.includes/index.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\n\nmodule.exports = includes;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmluY2x1ZGVzL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFVBQVU7QUFDckIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEdBQUc7QUFDZCxXQUFXLFFBQVE7QUFDbkIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guaW5jbHVkZXMvaW5kZXguanM/ZmFhMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAqIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID8gYXJyYXkubGVuZ3RoIDogMCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICBpZiAodmFsdWUgIT09IHZhbHVlKSB7XG4gICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbiAgfVxuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggLSAxLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnZhbHVlc2AgYW5kIGBfLnZhbHVlc0luYCB3aGljaCBjcmVhdGVzIGFuXG4gKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAqIG9mIGBwcm9wc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gYmFzZVZhbHVlcyhvYmplY3QsIHByb3BzKSB7XG4gIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCksXG4gICAgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICAvLyBTYWZhcmkgOC4xIG1ha2VzIGBhcmd1bWVudHMuY2FsbGVlYCBlbnVtZXJhYmxlIGluIHN0cmljdCBtb2RlLlxuICAvLyBTYWZhcmkgOSBtYWtlcyBgYXJndW1lbnRzLmxlbmd0aGAgZW51bWVyYWJsZSBpbiBzdHJpY3QgbW9kZS5cbiAgdmFyIHJlc3VsdCA9IChpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkpXG4gICAgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpXG4gICAgOiBbXTtcblxuICB2YXIgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aCxcbiAgICAgIHNraXBJbmRleGVzID0gISFsZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoa2V5ID09ICdsZW5ndGgnIHx8IGlzSW5kZXgoa2V5LCBsZW5ndGgpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuICByZXR1cm4gISFsZW5ndGggJiZcbiAgICAodHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8IHJlSXNVaW50LnRlc3QodmFsdWUpKSAmJlxuICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIGBjb2xsZWN0aW9uYC4gSWYgYGNvbGxlY3Rpb25gIGlzIGEgc3RyaW5nLCBpdCdzXG4gKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBpcyB1c2VkIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhc1xuICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pbmNsdWRlcyh7ICdhJzogMSwgJ2InOiAyIH0sIDEpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaW5jbHVkZXMoJ2FiY2QnLCAnYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaW5jbHVkZXMoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgY29sbGVjdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gY29sbGVjdGlvbiA6IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgfVxuICByZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbilcbiAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgIDogKCEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkge1xuICAvLyBTYWZhcmkgOC4xIG1ha2VzIGBhcmd1bWVudHMuY2FsbGVlYCBlbnVtZXJhYmxlIGluIHN0cmljdCBtb2RlLlxuICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICghcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpIHx8IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IGFyZ3NUYWcpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYEZ1bmN0aW9uYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oXyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gIC8vIGluIFNhZmFyaSA4LTkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXkgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGlzT2JqZWN0KHZhbHVlKSA/IG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAqIC8vID0+IFsxLCAyXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8udmFsdWVzKCdoaScpO1xuICogLy8gPT4gWydoJywgJ2knXVxuICovXG5mdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPyBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKSA6IFtdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluY2x1ZGVzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.includes/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.isboolean/index.js":
/*!************************************************!*\
!*** ./node_modules/lodash.isboolean/index.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzYm9vbGVhbi9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guaXNib29sZWFuL2luZGV4LmpzP2FkODkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBsb2Rhc2ggMy4wLjMgKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCAyMDEyLTIwMTYgVGhlIERvam8gRm91bmRhdGlvbiA8aHR0cDovL2Rvam9mb3VuZGF0aW9uLm9yZy8+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IDIwMDktMjAxNiBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICogQXZhaWxhYmxlIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqL1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYm9vbGVhbiBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQm9vbGVhbihmYWxzZSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0Jvb2xlYW4obnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IGJvb2xUYWcpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCb29sZWFuO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.isboolean/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.isinteger/index.js":
/*!************************************************!*\
!*** ./node_modules/lodash.isinteger/index.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = isInteger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzaW50ZWdlci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC5pc2ludGVnZXIvaW5kZXguanM/MjA1NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0ludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gISF2YWx1ZSAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgZmluaXRlIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTIuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvRmluaXRlKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9GaW5pdGUoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6IDA7XG4gIH1cbiAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmICh2YWx1ZSA9PT0gSU5GSU5JVFkgfHwgdmFsdWUgPT09IC1JTkZJTklUWSkge1xuICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgfVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0ludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgdmFyIHJlc3VsdCA9IHRvRmluaXRlKHZhbHVlKSxcbiAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgcmV0dXJuIHJlc3VsdCA9PT0gcmVzdWx0ID8gKHJlbWFpbmRlciA/IHJlc3VsdCAtIHJlbWFpbmRlciA6IHJlc3VsdCkgOiAwO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNJbnRlZ2VyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.isinteger/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.isnumber/index.js":
/*!***********************************************!*\
!*** ./node_modules/lodash.isnumber/index.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && objectToString.call(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzbnVtYmVyL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC5pc251bWJlci9pbmRleC5qcz9mMzU0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIDMuMC4zIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDE2IFRoZSBEb2pvIEZvdW5kYXRpb24gPGh0dHA6Ly9kb2pvZm91bmRhdGlvbi5vcmcvPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCAyMDA5LTIwMTYgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqIEF2YWlsYWJsZSB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKi9cblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBvYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlIGNsYXNzaWZpZWRcbiAqIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc051bWJlcigzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBudW1iZXJUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTnVtYmVyO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.isnumber/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.isplainobject/index.js":
/*!****************************************************!*\
!*** ./node_modules/lodash.isplainobject/index.js ***!
\****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzcGxhaW5vYmplY3QvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQixhQUFhLFVBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guaXNwbGFpbm9iamVjdC9pbmRleC5qcz8zMWY3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBob3N0IG9iamVjdCBpbiBJRSA8IDkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBob3N0IG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0hvc3RPYmplY3QodmFsdWUpIHtcbiAgLy8gTWFueSBob3N0IG9iamVjdHMgYXJlIGBPYmplY3RgIG9iamVjdHMgdGhhdCBjYW4gY29lcmNlIHRvIHN0cmluZ3NcbiAgLy8gZGVzcGl0ZSBoYXZpbmcgaW1wcm9wZXJseSBkZWZpbmVkIGB0b1N0cmluZ2AgbWV0aG9kcy5cbiAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICBpZiAodmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSAhISh2YWx1ZSArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fFxuICAgICAgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgIT0gb2JqZWN0VGFnIHx8IGlzSG9zdE9iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmXG4gICAgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiYgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash.isplainobject/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.isstring/index.js":
/*!***********************************************!*\
!*** ./node_modules/lodash.isstring/index.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLmlzc3RyaW5nL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guaXNzdHJpbmcvaW5kZXguanM/OGY1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGxvZGFzaCA0LjAuMSAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IDIwMTItMjAxNiBUaGUgRG9qbyBGb3VuZGF0aW9uIDxodHRwOi8vZG9qb2ZvdW5kYXRpb24ub3JnLz5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgMjAwOS0yMDE2IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKiBBdmFpbGFibGUgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICovXG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAdHlwZSBGdW5jdGlvblxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgY29ycmVjdGx5IGNsYXNzaWZpZWQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBjb3JyZWN0bHkgY2xhc3NpZmllZCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash.isstring/index.js\n"));
/***/ }),
/***/ "./node_modules/lodash.once/index.js":
/*!*******************************************!*\
!*** ./node_modules/lodash.once/index.js ***!
\*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = once;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoLm9uY2UvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFVBQVU7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gub25jZS9pbmRleC5qcz8yNTUwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogbG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwibnBtXCIgLW8gLi9gXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9qcXVlcnkub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuXG4vKiogVXNlZCBhcyB0aGUgYFR5cGVFcnJvcmAgbWVzc2FnZSBmb3IgXCJGdW5jdGlvbnNcIiBtZXRob2RzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4LFxuICAgIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHNcbiAqIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLCB3aGlsZSBpdCdzIGNhbGxlZCBsZXNzIHRoYW4gYG5gIHRpbWVzLiBTdWJzZXF1ZW50XG4gKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5iZWZvcmUoNSwgYWRkQ29udGFjdFRvTGlzdCkpO1xuICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICovXG5mdW5jdGlvbiBiZWZvcmUobiwgZnVuYykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICBuID0gdG9JbnRlZ2VyKG4pO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgaWYgKC0tbiA+IDApIHtcbiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgaWYgKG4gPD0gMSkge1xuICAgICAgZnVuYyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpcyByZXN0cmljdGVkIHRvIGludm9raW5nIGBmdW5jYCBvbmNlLiBSZXBlYXQgY2FsbHNcbiAqIHRvIHRoZSBmdW5jdGlvbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBpbnZvY2F0aW9uLiBUaGUgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBpbml0aWFsaXplID0gXy5vbmNlKGNyZWF0ZUFwcGxpY2F0aW9uKTtcbiAqIGluaXRpYWxpemUoKTtcbiAqIGluaXRpYWxpemUoKTtcbiAqIC8vID0+IGBjcmVhdGVBcHBsaWNhdGlvbmAgaXMgaW52b2tlZCBvbmNlXG4gKi9cbmZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICByZXR1cm4gYmVmb3JlKDIsIGZ1bmMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuICEhdmFsdWUgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICB9XG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICB2YXIgc2lnbiA9ICh2YWx1ZSA8IDAgPyAtMSA6IDEpO1xuICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9uY2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash.once/index.js\n"));
/***/ }),
/***/ "./node_modules/ms/index.js":
/*!**********************************!*\
!*** ./node_modules/ms/index.js ***!
\**********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbXMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixXQUFXLFFBQVE7QUFDbkIsWUFBWSxPQUFPO0FBQ25CLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzPzNhNzkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWxwZXJzLlxuICovXG5cbnZhciBzID0gMTAwMDtcbnZhciBtID0gcyAqIDYwO1xudmFyIGggPSBtICogNjA7XG52YXIgZCA9IGggKiAyNDtcbnZhciB3ID0gZCAqIDc7XG52YXIgeSA9IGQgKiAzNjUuMjU7XG5cbi8qKlxuICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBnaXZlbiBgdmFsYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAtIGBsb25nYCB2ZXJib3NlIGZvcm1hdHRpbmcgW2ZhbHNlXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAdGhyb3dzIHtFcnJvcn0gdGhyb3cgYW4gZXJyb3IgaWYgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB2YWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYXJzZSh2YWwpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGlzRmluaXRlKHZhbCkpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5sb25nID8gZm10TG9uZyh2YWwpIDogZm10U2hvcnQodmFsKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3ZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9JyArXG4gICAgICBKU09OLnN0cmluZ2lmeSh2YWwpXG4gICk7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBgc3RyYCBhbmQgcmV0dXJuIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZShzdHIpIHtcbiAgc3RyID0gU3RyaW5nKHN0cik7XG4gIGlmIChzdHIubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBtYXRjaCA9IC9eKC0/KD86XFxkKyk/XFwuP1xcZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhcbiAgICBzdHJcbiAgKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICd5ZWFycyc6XG4gICAgY2FzZSAneWVhcic6XG4gICAgY2FzZSAneXJzJzpcbiAgICBjYXNlICd5cic6XG4gICAgY2FzZSAneSc6XG4gICAgICByZXR1cm4gbiAqIHk7XG4gICAgY2FzZSAnd2Vla3MnOlxuICAgIGNhc2UgJ3dlZWsnOlxuICAgIGNhc2UgJ3cnOlxuICAgICAgcmV0dXJuIG4gKiB3O1xuICAgIGNhc2UgJ2RheXMnOlxuICAgIGNhc2UgJ2RheSc6XG4gICAgY2FzZSAnZCc6XG4gICAgICByZXR1cm4gbiAqIGQ7XG4gICAgY2FzZSAnaG91cnMnOlxuICAgIGNhc2UgJ2hvdXInOlxuICAgIGNhc2UgJ2hycyc6XG4gICAgY2FzZSAnaHInOlxuICAgIGNhc2UgJ2gnOlxuICAgICAgcmV0dXJuIG4gKiBoO1xuICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgY2FzZSAnbWlucyc6XG4gICAgY2FzZSAnbWluJzpcbiAgICBjYXNlICdtJzpcbiAgICAgIHJldHVybiBuICogbTtcbiAgICBjYXNlICdzZWNvbmRzJzpcbiAgICBjYXNlICdzZWNvbmQnOlxuICAgIGNhc2UgJ3NlY3MnOlxuICAgIGNhc2UgJ3NlYyc6XG4gICAgY2FzZSAncyc6XG4gICAgICByZXR1cm4gbiAqIHM7XG4gICAgY2FzZSAnbWlsbGlzZWNvbmRzJzpcbiAgICBjYXNlICdtaWxsaXNlY29uZCc6XG4gICAgY2FzZSAnbXNlY3MnOlxuICAgIGNhc2UgJ21zZWMnOlxuICAgIGNhc2UgJ21zJzpcbiAgICAgIHJldHVybiBuO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogU2hvcnQgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10U2hvcnQobXMpIHtcbiAgdmFyIG1zQWJzID0gTWF0aC5hYnMobXMpO1xuICBpZiAobXNBYnMgPj0gZCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gZCkgKyAnZCc7XG4gIH1cbiAgaWYgKG1zQWJzID49IGgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGgpICsgJ2gnO1xuICB9XG4gIGlmIChtc0FicyA+PSBtKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBtKSArICdtJztcbiAgfVxuICBpZiAobXNBYnMgPj0gcykge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gcykgKyAncyc7XG4gIH1cbiAgcmV0dXJuIG1zICsgJ21zJztcbn1cblxuLyoqXG4gKiBMb25nIGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdExvbmcobXMpIHtcbiAgdmFyIG1zQWJzID0gTWF0aC5hYnMobXMpO1xuICBpZiAobXNBYnMgPj0gZCkge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBkLCAnZGF5Jyk7XG4gIH1cbiAgaWYgKG1zQWJzID49IGgpIHtcbiAgICByZXR1cm4gcGx1cmFsKG1zLCBtc0FicywgaCwgJ2hvdXInKTtcbiAgfVxuICBpZiAobXNBYnMgPj0gbSkge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBtLCAnbWludXRlJyk7XG4gIH1cbiAgaWYgKG1zQWJzID49IHMpIHtcbiAgICByZXR1cm4gcGx1cmFsKG1zLCBtc0FicywgcywgJ3NlY29uZCcpO1xuICB9XG4gIHJldHVybiBtcyArICcgbXMnO1xufVxuXG4vKipcbiAqIFBsdXJhbGl6YXRpb24gaGVscGVyLlxuICovXG5cbmZ1bmN0aW9uIHBsdXJhbChtcywgbXNBYnMsIG4sIG5hbWUpIHtcbiAgdmFyIGlzUGx1cmFsID0gbXNBYnMgPj0gbiAqIDEuNTtcbiAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBuKSArICcgJyArIG5hbWUgKyAoaXNQbHVyYWwgPyAncycgOiAnJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/ms/index.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/polyfills/object-assign.js":
/*!*****************************************************************!*\
!*** ./node_modules/next/dist/build/polyfills/object-assign.js ***!
\*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\nvar assign = Object.assign.bind(Object);\nmodule.exports = assign;\nmodule.exports[\"default\"] = module.exports;\n\n//# sourceMappingURL=object-assign.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9vYmplY3QtYXNzaWduLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBLHlCQUFzQjs7QUFFdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvb2JqZWN0LWFzc2lnbi5qcz9lN2QxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpO1xubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ247XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9iamVjdC1hc3NpZ24uanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/object-assign.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css":
/*!*************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css ***!
\*************************************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../next/dist/build/webpack/loaders/css-loader/src/runtime/api.js */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js\");\n/* harmony import */ var _next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".introjs-overlay{position:absolute;box-sizing:content-box;z-index:999999;opacity:0;transition:all .3s ease-out}.introjs-showElement{z-index:9999999!important}tr.introjs-showElement>td{z-index:9999999!important;position:relative}tr.introjs-showElement>th{z-index:9999999!important;position:relative}.introjs-disableInteraction{z-index:99999999!important;position:absolute;background-color:#fff;opacity:0}.introjs-relativePosition{position:relative}.introjs-helperLayer{box-sizing:content-box;position:absolute;z-index:9999998;border-radius:4px;transition:all .3s ease-out}.introjs-helperLayer *{box-sizing:content-box}.introjs-helperLayer :before{box-sizing:content-box}.introjs-helperLayer :after{box-sizing:content-box}.introjs-tooltipReferenceLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;box-sizing:content-box;position:absolute;visibility:hidden;z-index:100000000;background-color:transparent;transition:all .3s ease-out}.introjs-tooltipReferenceLayer *{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif}.introjs-helperNumberLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;color:#9e9e9e;text-align:center;padding-top:10px;padding-bottom:10px}.introjs-arrow{border:5px solid transparent;content:\\\"\\\";position:absolute}.introjs-arrow.top{top:-10px;left:10px;border-bottom-color:#fff}.introjs-arrow.top-right{top:-10px;right:10px;border-bottom-color:#fff}.introjs-arrow.top-middle{top:-10px;left:50%;margin-left:-5px;border-bottom-color:#fff}.introjs-arrow.right{right:-10px;top:10px;border-left-color:#fff}.introjs-arrow.right-bottom{bottom:10px;right:-10px;border-left-color:#fff}.introjs-arrow.bottom{bottom:-10px;left:10px;border-top-color:#fff}.introjs-arrow.bottom-right{bottom:-10px;right:10px;border-top-color:#fff}.introjs-arrow.bottom-middle{bottom:-10px;left:50%;margin-left:-5px;border-top-color:#fff}.introjs-arrow.left{left:-10px;top:10px;border-right-color:#fff}.introjs-arrow.left-bottom{left:-10px;bottom:10px;border-right-color:#fff}.introjs-tooltip{box-sizing:content-box;position:absolute;visibility:visible;background-color:#fff;min-width:250px;max-width:300px;border-radius:5px;box-shadow:0 3px 30px rgba(33,33,33,.3);transition:opacity .1s ease-out}.introjs-tooltiptext{padding:20px}.introjs-dontShowAgain{padding-left:20px;padding-right:20px}.introjs-dontShowAgain input{padding:0;margin:0;margin-bottom:2px;display:inline;width:10px;height:10px}.introjs-dontShowAgain label{font-size:14px;display:inline-block;font-weight:400;margin:0 0 0 5px;padding:0;background-color:#fff;color:#616161;-webkit-user-select:none;-moz-user-select:none;user-select:none}.introjs-tooltip-title{font-size:18px;width:90%;min-height:1.5em;margin:0;padding:0;font-weight:700;line-height:1.5}.introjs-tooltip-header{position:relative;padding-left:20px;padding-right:20px;padding-top:10px;min-height:1.5em}.introjs-tooltipbuttons{border-top:1px solid #e0e0e0;padding:10px;text-align:right;white-space:nowrap}.introjs-tooltipbuttons:after{content:\\\"\\\";visibility:hidden;display:block;height:0;clear:both}.introjs-button{box-sizing:content-box;position:relative;overflow:visible;padding:.5rem 1rem;border:1px solid #bdbdbd;text-decoration:none;text-shadow:1px 1px 0 #fff;font-size:14px;color:#424242;white-space:nowrap;cursor:pointer;outline:0;background-color:#f4f4f4;border-radius:.2em;zoom:1;display:inline}.introjs-button:hover{outline:0;text-decoration:none;border-color:#9e9e9e;background-color:#e0e0e0;color:#212121}.introjs-button:focus{outline:0;text-decoration:none;background-color:#eee;box-shadow:0 0 0 .2rem rgba(158,158,158,.5);border:1px solid #616161;color:#212121}.introjs-button:active{outline:0;text-decoration:none;background-color:#e0e0e0;border-color:#9e9e9e;color:#212121}.introjs-button::-moz-focus-inner{padding:0;border:0}.introjs-skipbutton{position:absolute;top:0;right:0;display:inline-block;width:45px;height:45px;line-height:45px;color:#616161;font-size:22px;cursor:pointer;font-weight:700;text-align:center;text-decoration:none}.introjs-skipbutton:focus,.introjs-skipbutton:hover{color:#212121;outline:0;text-decoration:none}.introjs-prevbutton{float:left}.introjs-nextbutton{float:right}.introjs-disabled{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-disabled:focus,.introjs-disabled:hover{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-hidden{display:none}.introjs-bullets{text-align:center;padding-top:10px;padding-bottom:10px}.introjs-bullets ul{box-sizing:content-box;clear:both;margin:0 auto 0;padding:0;display:inline-block}.introjs-bullets ul li{box-sizing:content-box;list-style:none;float:left;margin:0 2px}.introjs-bullets ul li a{transition:width .1s ease-in;box-sizing:content-box;display:block;width:6px;height:6px;background:#ccc;border-radius:10px;text-decoration:none;cursor:pointer}.introjs-bullets ul li a:focus,.introjs-bullets ul li a:hover{width:15px;background:#999;text-decoration:none;outline:0}.introjs-bullets ul li a.active{width:15px;background:#999}.introjs-progress{box-sizing:content-box;overflow:hidden;height:10px;margin:10px;border-radius:4px;background-color:#e0e0e0}.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;font-size:10px;line-height:10px;text-align:center;background-color:#08c}.introjsFloatingElement{position:absolute;height:0;width:0;left:50%;top:50%}.introjs-fixedTooltip{position:fixed}.introjs-hint{box-sizing:content-box;position:absolute;background:0 0;width:20px;height:15px;cursor:pointer}.introjs-hint:focus{border:0;outline:0}.introjs-hint:hover>.introjs-hint-pulse{background-color:rgba(60,60,60,.57)}.introjs-hidehint{display:none}.introjs-fixedhint{position:fixed}@keyframes introjspulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(0,0,0,.7)}70%{transform:scale(1);box-shadow:0 0 0 10px transparent}100%{transform:scale(.95);box-shadow:0 0 0 0 transparent}}.introjs-hint-pulse{box-sizing:content-box;width:15px;height:15px;border-radius:30px;background-color:rgba(136,136,136,.24);z-index:10;position:absolute;transition:all .2s ease-out;animation:introjspulse 2s infinite}.introjs-hint-no-anim .introjs-hint-pulse{animation:none}.introjs-hint-dot{box-sizing:content-box;background:0 0;border-radius:60px;height:50px;width:50px;position:absolute;top:-18px;left:-18px;z-index:1;opacity:0}/*# sourceMappingURL=introjs.css.map */\", \"\",{\"version\":3,\"sources\":[\"webpack://node_modules/intro.js/%3Cinput%20css%202%3E\",\"webpack://node_modules/intro.js/introjs.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".introjs-overlay{position:absolute;box-sizing:content-box;z-index:999999;opacity:0;transition:all .3s ease-out}.introjs-showElement{z-index:9999999!important}tr.introjs-showElement>td{z-index:9999999!important;position:relative}tr.introjs-showElement>th{z-index:9999999!important;position:relative}.introjs-disableInteraction{z-index:99999999!important;position:absolute;background-color:#fff;opacity:0}.introjs-relativePosition{position:relative}.introjs-helperLayer{box-sizing:content-box;position:absolute;z-index:9999998;border-radius:4px;transition:all .3s ease-out}.introjs-helperLayer *{box-sizing:content-box}.introjs-helperLayer :before{box-sizing:content-box}.introjs-helperLayer :after{box-sizing:content-box}.introjs-tooltipReferenceLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;box-sizing:content-box;position:absolute;visibility:hidden;z-index:100000000;background-color:transparent;transition:all .3s ease-out}.introjs-tooltipReferenceLayer *{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif}.introjs-helperNumberLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;color:#9e9e9e;text-align:center;padding-top:10px;padding-bottom:10px}.introjs-arrow{border:5px solid transparent;content:\\\"\\\";position:absolute}.introjs-arrow.top{top:-10px;left:10px;border-bottom-color:#fff}.introjs-arrow.top-right{top:-10px;right:10px;border-bottom-color:#fff}.introjs-arrow.top-middle{top:-10px;left:50%;margin-left:-5px;border-bottom-color:#fff}.introjs-arrow.right{right:-10px;top:10px;border-left-color:#fff}.introjs-arrow.right-bottom{bottom:10px;right:-10px;border-left-color:#fff}.introjs-arrow.bottom{bottom:-10px;left:10px;border-top-color:#fff}.introjs-arrow.bottom-right{bottom:-10px;right:10px;border-top-color:#fff}.introjs-arrow.bottom-middle{bottom:-10px;left:50%;margin-left:-5px;border-top-color:#fff}.introjs-arrow.left{left:-10px;top:10px;border-right-color:#fff}.introjs-arrow.left-bottom{left:-10px;bottom:10px;border-right-color:#fff}.introjs-tooltip{box-sizing:content-box;position:absolute;visibility:visible;background-color:#fff;min-width:250px;max-width:300px;border-radius:5px;box-shadow:0 3px 30px rgba(33,33,33,.3);transition:opacity .1s ease-out}.introjs-tooltiptext{padding:20px}.introjs-dontShowAgain{padding-left:20px;padding-right:20px}.introjs-dontShowAgain input{padding:0;margin:0;margin-bottom:2px;display:inline;width:10px;height:10px}.introjs-dontShowAgain label{font-size:14px;display:inline-block;font-weight:400;margin:0 0 0 5px;padding:0;background-color:#fff;color:#616161;-webkit-user-select:none;user-select:none}.introjs-tooltip-title{font-size:18px;width:90%;min-height:1.5em;margin:0;padding:0;font-weight:700;line-height:1.5}.introjs-tooltip-header{position:relative;padding-left:20px;padding-right:20px;padding-top:10px;min-height:1.5em}.introjs-tooltipbuttons{border-top:1px solid #e0e0e0;padding:10px;text-align:right;white-space:nowrap}.introjs-tooltipbuttons:after{content:\\\"\\\";visibility:hidden;display:block;height:0;clear:both}.introjs-button{box-sizing:content-box;position:relative;overflow:visible;padding:.5rem 1rem;border:1px solid #bdbdbd;text-decoration:none;text-shadow:1px 1px 0 #fff;font-size:14px;color:#424242;white-space:nowrap;cursor:pointer;outline:0;background-color:#f4f4f4;border-radius:.2em;zoom:1;display:inline}.introjs-button:hover{outline:0;text-decoration:none;border-color:#9e9e9e;background-color:#e0e0e0;color:#212121}.introjs-button:focus{outline:0;text-decoration:none;background-color:#eee;box-shadow:0 0 0 .2rem rgba(158,158,158,.5);border:1px solid #616161;color:#212121}.introjs-button:active{outline:0;text-decoration:none;background-color:#e0e0e0;border-color:#9e9e9e;color:#212121}.introjs-button::-moz-focus-inner{padding:0;border:0}.introjs-skipbutton{position:absolute;top:0;right:0;display:inline-block;width:45px;height:45px;line-height:45px;color:#616161;font-size:22px;cursor:pointer;font-weight:700;text-align:center;text-decoration:none}.introjs-skipbutton:focus,.introjs-skipbutton:hover{color:#212121;outline:0;text-decoration:none}.introjs-prevbutton{float:left}.introjs-nextbutton{float:right}.introjs-disabled{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-disabled:focus,.introjs-disabled:hover{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-hidden{display:none}.introjs-bullets{text-align:center;padding-top:10px;padding-bottom:10px}.introjs-bullets ul{box-sizing:content-box;clear:both;margin:0 auto 0;padding:0;display:inline-block}.introjs-bullets ul li{box-sizing:content-box;list-style:none;float:left;margin:0 2px}.introjs-bullets ul li a{transition:width .1s ease-in;box-sizing:content-box;display:block;width:6px;height:6px;background:#ccc;border-radius:10px;text-decoration:none;cursor:pointer}.introjs-bullets ul li a:focus,.introjs-bullets ul li a:hover{width:15px;background:#999;text-decoration:none;outline:0}.introjs-bullets ul li a.active{width:15px;background:#999}.introjs-progress{box-sizing:content-box;overflow:hidden;height:10px;margin:10px;border-radius:4px;background-color:#e0e0e0}.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;font-size:10px;line-height:10px;text-align:center;background-color:#08c}.introjsFloatingElement{position:absolute;height:0;width:0;left:50%;top:50%}.introjs-fixedTooltip{position:fixed}.introjs-hint{box-sizing:content-box;position:absolute;background:0 0;width:20px;height:15px;cursor:pointer}.introjs-hint:focus{border:0;outline:0}.introjs-hint:hover>.introjs-hint-pulse{background-color:rgba(60,60,60,.57)}.introjs-hidehint{display:none}.introjs-fixedhint{position:fixed}@keyframes introjspulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(0,0,0,.7)}70%{transform:scale(1);box-shadow:0 0 0 10px transparent}100%{transform:scale(.95);box-shadow:0 0 0 0 transparent}}.introjs-hint-pulse{box-sizing:content-box;width:15px;height:15px;border-radius:30px;background-color:rgba(136,136,136,.24);z-index:10;position:absolute;transition:all .2s ease-out;animation:introjspulse 2s infinite}.introjs-hint-no-anim .introjs-hint-pulse{animation:none}.introjs-hint-dot{box-sizing:content-box;background:0 0;border-radius:60px;height:50px;width:50px;position:absolute;top:-18px;left:-18px;z-index:1;opacity:0}\",\".introjs-overlay{position:absolute;box-sizing:content-box;z-index:999999;opacity:0;transition:all .3s ease-out}.introjs-showElement{z-index:9999999!important}tr.introjs-showElement>td{z-index:9999999!important;position:relative}tr.introjs-showElement>th{z-index:9999999!important;position:relative}.introjs-disableInteraction{z-index:99999999!important;position:absolute;background-color:#fff;opacity:0}.introjs-relativePosition{position:relative}.introjs-helperLayer{box-sizing:content-box;position:absolute;z-index:9999998;border-radius:4px;transition:all .3s ease-out}.introjs-helperLayer *{box-sizing:content-box}.introjs-helperLayer :before{box-sizing:content-box}.introjs-helperLayer :after{box-sizing:content-box}.introjs-tooltipReferenceLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;box-sizing:content-box;position:absolute;visibility:hidden;z-index:100000000;background-color:transparent;transition:all .3s ease-out}.introjs-tooltipReferenceLayer *{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif}.introjs-helperNumberLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;color:#9e9e9e;text-align:center;padding-top:10px;padding-bottom:10px}.introjs-arrow{border:5px solid transparent;content:\\\"\\\";position:absolute}.introjs-arrow.top{top:-10px;left:10px;border-bottom-color:#fff}.introjs-arrow.top-right{top:-10px;right:10px;border-bottom-color:#fff}.introjs-arrow.top-middle{top:-10px;left:50%;margin-left:-5px;border-bottom-color:#fff}.introjs-arrow.right{right:-10px;top:10px;border-left-color:#fff}.introjs-arrow.right-bottom{bottom:10px;right:-10px;border-left-color:#fff}.introjs-arrow.bottom{bottom:-10px;left:10px;border-top-color:#fff}.introjs-arrow.bottom-right{bottom:-10px;right:10px;border-top-color:#fff}.introjs-arrow.bottom-middle{bottom:-10px;left:50%;margin-left:-5px;border-top-color:#fff}.introjs-arrow.left{left:-10px;top:10px;border-right-color:#fff}.introjs-arrow.left-bottom{left:-10px;bottom:10px;border-right-color:#fff}.introjs-tooltip{box-sizing:content-box;position:absolute;visibility:visible;background-color:#fff;min-width:250px;max-width:300px;border-radius:5px;box-shadow:0 3px 30px rgba(33,33,33,.3);transition:opacity .1s ease-out}.introjs-tooltiptext{padding:20px}.introjs-dontShowAgain{padding-left:20px;padding-right:20px}.introjs-dontShowAgain input{padding:0;margin:0;margin-bottom:2px;display:inline;width:10px;height:10px}.introjs-dontShowAgain label{font-size:14px;display:inline-block;font-weight:400;margin:0 0 0 5px;padding:0;background-color:#fff;color:#616161;-webkit-user-select:none;user-select:none}.introjs-tooltip-title{font-size:18px;width:90%;min-height:1.5em;margin:0;padding:0;font-weight:700;line-height:1.5}.introjs-tooltip-header{position:relative;padding-left:20px;padding-right:20px;padding-top:10px;min-height:1.5em}.introjs-tooltipbuttons{border-top:1px solid #e0e0e0;padding:10px;text-align:right;white-space:nowrap}.introjs-tooltipbuttons:after{content:\\\"\\\";visibility:hidden;display:block;height:0;clear:both}.introjs-button{box-sizing:content-box;position:relative;overflow:visible;padding:.5rem 1rem;border:1px solid #bdbdbd;text-decoration:none;text-shadow:1px 1px 0 #fff;font-size:14px;color:#424242;white-space:nowrap;cursor:pointer;outline:0;background-color:#f4f4f4;border-radius:.2em;zoom:1;display:inline}.introjs-button:hover{outline:0;text-decoration:none;border-color:#9e9e9e;background-color:#e0e0e0;color:#212121}.introjs-button:focus{outline:0;text-decoration:none;background-color:#eee;box-shadow:0 0 0 .2rem rgba(158,158,158,.5);border:1px solid #616161;color:#212121}.introjs-button:active{outline:0;text-decoration:none;background-color:#e0e0e0;border-color:#9e9e9e;color:#212121}.introjs-button::-moz-focus-inner{padding:0;border:0}.introjs-skipbutton{position:absolute;top:0;right:0;display:inline-block;width:45px;height:45px;line-height:45px;color:#616161;font-size:22px;cursor:pointer;font-weight:700;text-align:center;text-decoration:none}.introjs-skipbutton:focus,.introjs-skipbutton:hover{color:#212121;outline:0;text-decoration:none}.introjs-prevbutton{float:left}.introjs-nextbutton{float:right}.introjs-disabled{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-disabled:focus,.introjs-disabled:hover{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-hidden{display:none}.introjs-bullets{text-align:center;padding-top:10px;padding-bottom:10px}.introjs-bullets ul{box-sizing:content-box;clear:both;margin:0 auto 0;padding:0;display:inline-block}.introjs-bullets ul li{box-sizing:content-box;list-style:none;float:left;margin:0 2px}.introjs-bullets ul li a{transition:width .1s ease-in;box-sizing:content-box;display:block;width:6px;height:6px;background:#ccc;border-radius:10px;text-decoration:none;cursor:pointer}.introjs-bullets ul li a:focus,.introjs-bullets ul li a:hover{width:15px;background:#999;text-decoration:none;outline:0}.introjs-bullets ul li a.active{width:15px;background:#999}.introjs-progress{box-sizing:content-box;overflow:hidden;height:10px;margin:10px;border-radius:4px;background-color:#e0e0e0}.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;font-size:10px;line-height:10px;text-align:center;background-color:#08c}.introjsFloatingElement{position:absolute;height:0;width:0;left:50%;top:50%}.introjs-fixedTooltip{position:fixed}.introjs-hint{box-sizing:content-box;position:absolute;background:0 0;width:20px;height:15px;cursor:pointer}.introjs-hint:focus{border:0;outline:0}.introjs-hint:hover>.introjs-hint-pulse{background-color:rgba(60,60,60,.57)}.introjs-hidehint{display:none}.introjs-fixedhint{position:fixed}@keyframes introjspulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(0,0,0,.7)}70%{transform:scale(1);box-shadow:0 0 0 10px transparent}100%{transform:scale(.95);box-shadow:0 0 0 0 transparent}}.introjs-hint-pulse{box-sizing:content-box;width:15px;height:15px;border-radius:30px;background-color:rgba(136,136,136,.24);z-index:10;position:absolute;transition:all .2s ease-out;animation:introjspulse 2s infinite}.introjs-hint-no-anim .introjs-hint-pulse{animation:none}.introjs-hint-dot{box-sizing:content-box;background:0 0;border-radius:60px;height:50px;width:50px;position:absolute;top:-18px;left:-18px;z-index:1;opacity:0}\\n/*# sourceMappingURL=introjs.css.map */\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9jc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxMl0udXNlWzFdIS4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzddLm9uZU9mWzEyXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvaW50cm8uanMvaW50cm9qcy5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDMkc7QUFDM0csOEJBQThCLHFHQUEyQjtBQUN6RDtBQUNBLDJEQUEyRCxrQkFBa0IsdUJBQXVCLGVBQWUsVUFBVSw0QkFBNEIscUJBQXFCLDBCQUEwQiwwQkFBMEIsMEJBQTBCLGtCQUFrQiwwQkFBMEIsMEJBQTBCLGtCQUFrQiw0QkFBNEIsMkJBQTJCLGtCQUFrQixzQkFBc0IsVUFBVSwwQkFBMEIsa0JBQWtCLHFCQUFxQix1QkFBdUIsa0JBQWtCLGdCQUFnQixrQkFBa0IsNEJBQTRCLHVCQUF1Qix1QkFBdUIsNkJBQTZCLHVCQUF1Qiw0QkFBNEIsdUJBQXVCLCtCQUErQixvR0FBb0csdUJBQXVCLGtCQUFrQixrQkFBa0Isa0JBQWtCLDZCQUE2Qiw0QkFBNEIsaUNBQWlDLG9HQUFvRywyQkFBMkIsb0dBQW9HLGNBQWMsa0JBQWtCLGlCQUFpQixvQkFBb0IsZUFBZSw2QkFBNkIsYUFBYSxrQkFBa0IsbUJBQW1CLFVBQVUsVUFBVSx5QkFBeUIseUJBQXlCLFVBQVUsV0FBVyx5QkFBeUIsMEJBQTBCLFVBQVUsU0FBUyxpQkFBaUIseUJBQXlCLHFCQUFxQixZQUFZLFNBQVMsdUJBQXVCLDRCQUE0QixZQUFZLFlBQVksdUJBQXVCLHNCQUFzQixhQUFhLFVBQVUsc0JBQXNCLDRCQUE0QixhQUFhLFdBQVcsc0JBQXNCLDZCQUE2QixhQUFhLFNBQVMsaUJBQWlCLHNCQUFzQixvQkFBb0IsV0FBVyxTQUFTLHdCQUF3QiwyQkFBMkIsV0FBVyxZQUFZLHdCQUF3QixpQkFBaUIsdUJBQXVCLGtCQUFrQixtQkFBbUIsc0JBQXNCLGdCQUFnQixnQkFBZ0Isa0JBQWtCLHdDQUF3QyxnQ0FBZ0MscUJBQXFCLGFBQWEsdUJBQXVCLGtCQUFrQixtQkFBbUIsNkJBQTZCLFVBQVUsU0FBUyxrQkFBa0IsZUFBZSxXQUFXLFlBQVksNkJBQTZCLGVBQWUscUJBQXFCLGdCQUFnQixpQkFBaUIsVUFBVSxzQkFBc0IsY0FBYyx5QkFBeUIsc0JBQXNCLGlCQUFpQix1QkFBdUIsZUFBZSxVQUFVLGlCQUFpQixTQUFTLFVBQVUsZ0JBQWdCLGdCQUFnQix3QkFBd0Isa0JBQWtCLGtCQUFrQixtQkFBbUIsaUJBQWlCLGlCQUFpQix3QkFBd0IsNkJBQTZCLGFBQWEsaUJBQWlCLG1CQUFtQiw4QkFBOEIsYUFBYSxrQkFBa0IsY0FBYyxTQUFTLFdBQVcsZ0JBQWdCLHVCQUF1QixrQkFBa0IsaUJBQWlCLG1CQUFtQix5QkFBeUIscUJBQXFCLDJCQUEyQixlQUFlLGNBQWMsbUJBQW1CLGVBQWUsVUFBVSx5QkFBeUIsbUJBQW1CLE9BQU8sZUFBZSxzQkFBc0IsVUFBVSxxQkFBcUIscUJBQXFCLHlCQUF5QixjQUFjLHNCQUFzQixVQUFVLHFCQUFxQixzQkFBc0IsNENBQTRDLHlCQUF5QixjQUFjLHVCQUF1QixVQUFVLHFCQUFxQix5QkFBeUIscUJBQXFCLGNBQWMsa0NBQWtDLFVBQVUsU0FBUyxvQkFBb0Isa0JBQWtCLE1BQU0sUUFBUSxxQkFBcUIsV0FBVyxZQUFZLGlCQUFpQixjQUFjLGVBQWUsZUFBZSxnQkFBZ0Isa0JBQWtCLHFCQUFxQixvREFBb0QsY0FBYyxVQUFVLHFCQUFxQixvQkFBb0IsV0FBVyxvQkFBb0IsWUFBWSxrQkFBa0IsY0FBYyxxQkFBcUIsZ0JBQWdCLGVBQWUseUJBQXlCLHNCQUFzQixxQkFBcUIsZ0RBQWdELGNBQWMscUJBQXFCLGdCQUFnQixlQUFlLHlCQUF5QixzQkFBc0IscUJBQXFCLGdCQUFnQixhQUFhLGlCQUFpQixrQkFBa0IsaUJBQWlCLG9CQUFvQixvQkFBb0IsdUJBQXVCLFdBQVcsZ0JBQWdCLFVBQVUscUJBQXFCLHVCQUF1Qix1QkFBdUIsZ0JBQWdCLFdBQVcsYUFBYSx5QkFBeUIsNkJBQTZCLHVCQUF1QixjQUFjLFVBQVUsV0FBVyxnQkFBZ0IsbUJBQW1CLHFCQUFxQixlQUFlLDhEQUE4RCxXQUFXLGdCQUFnQixxQkFBcUIsVUFBVSxnQ0FBZ0MsV0FBVyxnQkFBZ0Isa0JBQWtCLHVCQUF1QixnQkFBZ0IsWUFBWSxZQUFZLGtCQUFrQix5QkFBeUIscUJBQXFCLHVCQUF1QixXQUFXLFNBQVMsWUFBWSxlQUFlLGlCQUFpQixrQkFBa0Isc0JBQXNCLHdCQUF3QixrQkFBa0IsU0FBUyxRQUFRLFNBQVMsUUFBUSxzQkFBc0IsZUFBZSxjQUFjLHVCQUF1QixrQkFBa0IsZUFBZSxXQUFXLFlBQVksZUFBZSxvQkFBb0IsU0FBUyxVQUFVLHdDQUF3QyxvQ0FBb0Msa0JBQWtCLGFBQWEsbUJBQW1CLGVBQWUsd0JBQXdCLEdBQUcscUJBQXFCLGtDQUFrQyxJQUFJLG1CQUFtQixrQ0FBa0MsS0FBSyxxQkFBcUIsZ0NBQWdDLG9CQUFvQix1QkFBdUIsV0FBVyxZQUFZLG1CQUFtQix1Q0FBdUMsV0FBVyxrQkFBa0IsNEJBQTRCLG1DQUFtQywwQ0FBMEMsZUFBZSxrQkFBa0IsdUJBQXVCLGVBQWUsbUJBQW1CLFlBQVksV0FBVyxrQkFBa0IsVUFBVSxXQUFXLFVBQVUsVUFBVSw4Q0FBOEMseWtIQUF5a0gsa0JBQWtCLHVCQUF1QixlQUFlLFVBQVUsNEJBQTRCLHFCQUFxQiwwQkFBMEIsMEJBQTBCLDBCQUEwQixrQkFBa0IsMEJBQTBCLDBCQUEwQixrQkFBa0IsNEJBQTRCLDJCQUEyQixrQkFBa0Isc0JBQXNCLFVBQVUsMEJBQTBCLGtCQUFrQixxQkFBcUIsdUJBQXVCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLDRCQUE0Qix1QkFBdUIsdUJBQXVCLDZCQUE2Qix1QkFBdUIsNEJBQTRCLHVCQUF1QiwrQkFBK0Isb0dBQW9HLHVCQUF1QixrQkFBa0Isa0JBQWtCLGtCQUFrQiw2QkFBNkIsNEJBQTRCLGlDQUFpQyxvR0FBb0csMkJBQTJCLG9HQUFvRyxjQUFjLGtCQUFrQixpQkFBaUIsb0JBQW9CLGVBQWUsNkJBQTZCLGFBQWEsa0JBQWtCLG1CQUFtQixVQUFVLFVBQVUseUJBQXlCLHlCQUF5QixVQUFVLFdBQVcseUJBQXlCLDBCQUEwQixVQUFVLFNBQVMsaUJBQWlCLHlCQUF5QixxQkFBcUIsWUFBWSxTQUFTLHVCQUF1Qiw0QkFBNEIsWUFBWSxZQUFZLHVCQUF1QixzQkFBc0IsYUFBYSxVQUFVLHNCQUFzQiw0QkFBNEIsYUFBYSxXQUFXLHNCQUFzQiw2QkFBNkIsYUFBYSxTQUFTLGlCQUFpQixzQkFBc0Isb0JBQW9CLFdBQVcsU0FBUyx3QkFBd0IsMkJBQTJCLFdBQVcsWUFBWSx3QkFBd0IsaUJBQWlCLHVCQUF1QixrQkFBa0IsbUJBQW1CLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLGtCQUFrQix3Q0FBd0MsZ0NBQWdDLHFCQUFxQixhQUFhLHVCQUF1QixrQkFBa0IsbUJBQW1CLDZCQUE2QixVQUFVLFNBQVMsa0JBQWtCLGVBQWUsV0FBVyxZQUFZLDZCQUE2QixlQUFlLHFCQUFxQixnQkFBZ0IsaUJBQWlCLFVBQVUsc0JBQXNCLGNBQWMseUJBQXlCLGlCQUFpQix1QkFBdUIsZUFBZSxVQUFVLGlCQUFpQixTQUFTLFVBQVUsZ0JBQWdCLGdCQUFnQix3QkFBd0Isa0JBQWtCLGtCQUFrQixtQkFBbUIsaUJBQWlCLGlCQUFpQix3QkFBd0IsNkJBQTZCLGFBQWEsaUJBQWlCLG1CQUFtQiw4QkFBOEIsYUFBYSxrQkFBa0IsY0FBYyxTQUFTLFdBQVcsZ0JBQWdCLHVCQUF1QixrQkFBa0IsaUJBQWlCLG1CQUFtQix5QkFBeUIscUJBQXFCLDJCQUEyQixlQUFlLGNBQWMsbUJBQW1CLGVBQWUsVUFBVSx5QkFBeUIsbUJBQW1CLE9BQU8sZUFBZSxzQkFBc0IsVUFBVSxxQkFBcUIscUJBQXFCLHlCQUF5QixjQUFjLHNCQUFzQixVQUFVLHFCQUFxQixzQkFBc0IsNENBQTRDLHlCQUF5QixjQUFjLHVCQUF1QixVQUFVLHFCQUFxQix5QkFBeUIscUJBQXFCLGNBQWMsa0NBQWtDLFVBQVUsU0FBUyxvQkFBb0Isa0JBQWtCLE1BQU0sUUFBUSxxQkFBcUIsV0FBVyxZQUFZLGlCQUFpQixjQUFjLGVBQWUsZUFBZSxnQkFBZ0Isa0JBQWtCLHFCQUFxQixvREFBb0QsY0FBYyxVQUFVLHFCQUFxQixvQkFBb0IsV0FBVyxvQkFBb0IsWUFBWSxrQkFBa0IsY0FBYyxxQkFBcUIsZ0JBQWdCLGVBQWUseUJBQXlCLHNCQUFzQixxQkFBcUIsZ0RBQWdELGNBQWMscUJBQXFCLGdCQUFnQixlQUFlLHlCQUF5QixzQkFBc0IscUJBQXFCLGdCQUFnQixhQUFhLGlCQUFpQixrQkFBa0IsaUJBQWlCLG9CQUFvQixvQkFBb0IsdUJBQXVCLFdBQVcsZ0JBQWdCLFVBQVUscUJBQXFCLHVCQUF1Qix1QkFBdUIsZ0JBQWdCLFdBQVcsYUFBYSx5QkFBeUIsNkJBQTZCLHVCQUF1QixjQUFjLFVBQVUsV0FBVyxnQkFBZ0IsbUJBQW1CLHFCQUFxQixlQUFlLDhEQUE4RCxXQUFXLGdCQUFnQixxQkFBcUIsVUFBVSxnQ0FBZ0MsV0FBVyxnQkFBZ0Isa0JBQWtCLHVCQUF1QixnQkFBZ0IsWUFBWSxZQUFZLGtCQUFrQix5QkFBeUIscUJBQXFCLHVCQUF1QixXQUFXLFNBQVMsWUFBWSxlQUFlLGlCQUFpQixrQkFBa0Isc0JBQXNCLHdCQUF3QixrQkFBa0IsU0FBUyxRQUFRLFNBQVMsUUFBUSxzQkFBc0IsZUFBZSxjQUFjLHVCQUF1QixrQkFBa0IsZUFBZSxXQUFXLFlBQVksZUFBZSxvQkFBb0IsU0FBUyxVQUFVLHdDQUF3QyxvQ0FBb0Msa0JBQWtCLGFBQWEsbUJBQW1CLGVBQWUsd0JBQXdCLEdBQUcscUJBQXFCLGtDQUFrQyxJQUFJLG1CQUFtQixrQ0FBa0MsS0FBSyxxQkFBcUIsZ0NBQWdDLG9CQUFvQix1QkFBdUIsV0FBVyxZQUFZLG1CQUFtQix1Q0FBdUMsV0FBVyxrQkFBa0IsNEJBQTRCLG1DQUFtQywwQ0FBMEMsZUFBZSxrQkFBa0IsdUJBQXVCLGVBQWUsbUJBQW1CLFlBQVksV0FBVyxrQkFBa0IsVUFBVSxXQUFXLFVBQVUsVUFBVSxvQkFBb0Isa0JBQWtCLHVCQUF1QixlQUFlLFVBQVUsNEJBQTRCLHFCQUFxQiwwQkFBMEIsMEJBQTBCLDBCQUEwQixrQkFBa0IsMEJBQTBCLDBCQUEwQixrQkFBa0IsNEJBQTRCLDJCQUEyQixrQkFBa0Isc0JBQXNCLFVBQVUsMEJBQTBCLGtCQUFrQixxQkFBcUIsdUJBQXVCLGtCQUFrQixnQkFBZ0Isa0JBQWtCLDRCQUE0Qix1QkFBdUIsdUJBQXVCLDZCQUE2Qix1QkFBdUIsNEJBQTRCLHVCQUF1QiwrQkFBK0Isb0dBQW9HLHVCQUF1QixrQkFBa0Isa0JBQWtCLGtCQUFrQiw2QkFBNkIsNEJBQTRCLGlDQUFpQyxvR0FBb0csMkJBQTJCLG9HQUFvRyxjQUFjLGtCQUFrQixpQkFBaUIsb0JBQW9CLGVBQWUsNkJBQTZCLGFBQWEsa0JBQWtCLG1CQUFtQixVQUFVLFVBQVUseUJBQXlCLHlCQUF5QixVQUFVLFdBQVcseUJBQXlCLDBCQUEwQixVQUFVLFNBQVMsaUJBQWlCLHlCQUF5QixxQkFBcUIsWUFBWSxTQUFTLHVCQUF1Qiw0QkFBNEIsWUFBWSxZQUFZLHVCQUF1QixzQkFBc0IsYUFBYSxVQUFVLHNCQUFzQiw0QkFBNEIsYUFBYSxXQUFXLHNCQUFzQiw2QkFBNkIsYUFBYSxTQUFTLGlCQUFpQixzQkFBc0Isb0JBQW9CLFdBQVcsU0FBUyx3QkFBd0IsMkJBQTJCLFdBQVcsWUFBWSx3QkFBd0IsaUJBQWlCLHVCQUF1QixrQkFBa0IsbUJBQW1CLHNCQUFzQixnQkFBZ0IsZ0JBQWdCLGtCQUFrQix3Q0FBd0MsZ0NBQWdDLHFCQUFxQixhQUFhLHVCQUF1QixrQkFBa0IsbUJBQW1CLDZCQUE2QixVQUFVLFNBQVMsa0JBQWtCLGVBQWUsV0FBVyxZQUFZLDZCQUE2QixlQUFlLHFCQUFxQixnQkFBZ0IsaUJBQWlCLFVBQVUsc0JBQXNCLGNBQWMseUJBQXlCLGlCQUFpQix1QkFBdUIsZUFBZSxVQUFVLGlCQUFpQixTQUFTLFVBQVUsZ0JBQWdCLGdCQUFnQix3QkFBd0Isa0JBQWtCLGtCQUFrQixtQkFBbUIsaUJBQWlCLGlCQUFpQix3QkFBd0IsNkJBQTZCLGFBQWEsaUJBQWlCLG1CQUFtQiw4QkFBOEIsYUFBYSxrQkFBa0IsY0FBYyxTQUFTLFdBQVcsZ0JBQWdCLHVCQUF1QixrQkFBa0IsaUJBQWlCLG1CQUFtQix5QkFBeUIscUJBQXFCLDJCQUEyQixlQUFlLGNBQWMsbUJBQW1CLGVBQWUsVUFBVSx5QkFBeUIsbUJBQW1CLE9BQU8sZUFBZSxzQkFBc0IsVUFBVSxxQkFBcUIscUJBQXFCLHlCQUF5QixjQUFjLHNCQUFzQixVQUFVLHFCQUFxQixzQkFBc0IsNENBQTRDLHlCQUF5QixjQUFjLHVCQUF1QixVQUFVLHFCQUFxQix5QkFBeUIscUJBQXFCLGNBQWMsa0NBQWtDLFVBQVUsU0FBUyxvQkFBb0Isa0JBQWtCLE1BQU0sUUFBUSxxQkFBcUIsV0FBVyxZQUFZLGlCQUFpQixjQUFjLGVBQWUsZUFBZSxnQkFBZ0Isa0JBQWtCLHFCQUFxQixvREFBb0QsY0FBYyxVQUFVLHFCQUFxQixvQkFBb0IsV0FBVyxvQkFBb0IsWUFBWSxrQkFBa0IsY0FBYyxxQkFBcUIsZ0JBQWdCLGVBQWUseUJBQXlCLHNCQUFzQixxQkFBcUIsZ0RBQWdELGNBQWMscUJBQXFCLGdCQUFnQixlQUFlLHlCQUF5QixzQkFBc0IscUJBQXFCLGdCQUFnQixhQUFhLGlCQUFpQixrQkFBa0IsaUJBQWlCLG9CQUFvQixvQkFBb0IsdUJBQXVCLFdBQVcsZ0JBQWdCLFVBQVUscUJBQXFCLHVCQUF1Qix1QkFBdUIsZ0JBQWdCLFdBQVcsYUFBYSx5QkFBeUIsNkJBQTZCLHVCQUF1QixjQUFjLFVBQVUsV0FBVyxnQkFBZ0IsbUJBQW1CLHFCQUFxQixlQUFlLDhEQUE4RCxXQUFXLGdCQUFnQixxQkFBcUIsVUFBVSxnQ0FBZ0MsV0FBVyxnQkFBZ0Isa0JBQWtCLHVCQUF1QixnQkFBZ0IsWUFBWSxZQUFZLGtCQUFrQix5QkFBeUIscUJBQXFCLHVCQUF1QixXQUFXLFNBQVMsWUFBWSxlQUFlLGlCQUFpQixrQkFBa0Isc0JBQXNCLHdCQUF3QixrQkFBa0IsU0FBUyxRQUFRLFNBQVMsUUFBUSxzQkFBc0IsZUFBZSxjQUFjLHVCQUF1QixrQkFBa0IsZUFBZSxXQUFXLFlBQVksZUFBZSxvQkFBb0IsU0FBUyxVQUFVLHdDQUF3QyxvQ0FBb0Msa0JBQWtCLGFBQWEsbUJBQW1CLGVBQWUsd0JBQXdCLEdBQUcscUJBQXFCLGtDQUFrQyxJQUFJLG1CQUFtQixrQ0FBa0MsS0FBSyxxQkFBcUIsZ0NBQWdDLG9CQUFvQix1QkFBdUIsV0FBVyxZQUFZLG1CQUFtQix1Q0FBdUMsV0FBVyxrQkFBa0IsNEJBQTRCLG1DQUFtQywwQ0FBMEMsZUFBZSxrQkFBa0IsdUJBQXVCLGVBQWUsbUJBQW1CLFlBQVksV0FBVyxrQkFBa0IsVUFBVSxXQUFXLFVBQVUsVUFBVSw0REFBNEQ7QUFDdjZ0QjtBQUNBLCtEQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9pbnRyby5qcy9pbnRyb2pzLmNzcz8yNmYxIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyh0cnVlKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5pbnRyb2pzLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpjb250ZW50LWJveDt6LWluZGV4Ojk5OTk5OTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fS5pbnRyb2pzLXNob3dFbGVtZW50e3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnR9dHIuaW50cm9qcy1zaG93RWxlbWVudD50ZHt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfXRyLmludHJvanMtc2hvd0VsZW1lbnQ+dGh7ei1pbmRleDo5OTk5OTk5IWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZX0uaW50cm9qcy1kaXNhYmxlSW50ZXJhY3Rpb257ei1pbmRleDo5OTk5OTk5OSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO29wYWNpdHk6MH0uaW50cm9qcy1yZWxhdGl2ZVBvc2l0aW9ue3Bvc2l0aW9uOnJlbGF0aXZlfS5pbnRyb2pzLWhlbHBlckxheWVye2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5OTk4O2JvcmRlci1yYWRpdXM6NHB4O3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLW91dH0uaW50cm9qcy1oZWxwZXJMYXllciAqe2JveC1zaXppbmc6Y29udGVudC1ib3h9LmludHJvanMtaGVscGVyTGF5ZXIgOmJlZm9yZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5pbnRyb2pzLWhlbHBlckxheWVyIDphZnRlcntib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllcntmb250LWZhbWlseTpcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLEludGVyLHVpLXNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MTAwMDAwMDAwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fS5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllciAqe2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfS5pbnRyb2pzLWhlbHBlck51bWJlckxheWVye2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiM5ZTllOWU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5pbnRyb2pzLWFycm93e2JvcmRlcjo1cHggc29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDpcXFwiXFxcIjtwb3NpdGlvbjphYnNvbHV0ZX0uaW50cm9qcy1hcnJvdy50b3B7dG9wOi0xMHB4O2xlZnQ6MTBweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cudG9wLXJpZ2h0e3RvcDotMTBweDtyaWdodDoxMHB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy50b3AtbWlkZGxle3RvcDotMTBweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5yaWdodHtyaWdodDotMTBweDt0b3A6MTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LnJpZ2h0LWJvdHRvbXtib3R0b206MTBweDtyaWdodDotMTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmJvdHRvbXtib3R0b206LTEwcHg7bGVmdDoxMHB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5ib3R0b20tcmlnaHR7Ym90dG9tOi0xMHB4O3JpZ2h0OjEwcHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmJvdHRvbS1taWRkbGV7Ym90dG9tOi0xMHB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmxlZnR7bGVmdDotMTBweDt0b3A6MTBweDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5sZWZ0LWJvdHRvbXtsZWZ0Oi0xMHB4O2JvdHRvbToxMHB4O2JvcmRlci1yaWdodC1jb2xvcjojZmZmfS5pbnRyb2pzLXRvb2x0aXB7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OnZpc2libGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO21pbi13aWR0aDoyNTBweDttYXgtd2lkdGg6MzAwcHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym94LXNoYWRvdzowIDNweCAzMHB4IHJnYmEoMzMsMzMsMzMsLjMpO3RyYW5zaXRpb246b3BhY2l0eSAuMXMgZWFzZS1vdXR9LmludHJvanMtdG9vbHRpcHRleHR7cGFkZGluZzoyMHB4fS5pbnRyb2pzLWRvbnRTaG93QWdhaW57cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4fS5pbnRyb2pzLWRvbnRTaG93QWdhaW4gaW5wdXR7cGFkZGluZzowO21hcmdpbjowO21hcmdpbi1ib3R0b206MnB4O2Rpc3BsYXk6aW5saW5lO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHh9LmludHJvanMtZG9udFNob3dBZ2FpbiBsYWJlbHtmb250LXNpemU6MTRweDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDo0MDA7bWFyZ2luOjAgMCAwIDVweDtwYWRkaW5nOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2MTYxNjE7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5pbnRyb2pzLXRvb2x0aXAtdGl0bGV7Zm9udC1zaXplOjE4cHg7d2lkdGg6OTAlO21pbi1oZWlnaHQ6MS41ZW07bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjV9LmludHJvanMtdG9vbHRpcC1oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctdG9wOjEwcHg7bWluLWhlaWdodDoxLjVlbX0uaW50cm9qcy10b29sdGlwYnV0dG9uc3tib3JkZXItdG9wOjFweCBzb2xpZCAjZTBlMGUwO3BhZGRpbmc6MTBweDt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uaW50cm9qcy10b29sdGlwYnV0dG9uczphZnRlcntjb250ZW50OlxcXCJcXFwiO3Zpc2liaWxpdHk6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7Y2xlYXI6Ym90aH0uaW50cm9qcy1idXR0b257Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlO3BhZGRpbmc6LjVyZW0gMXJlbTtib3JkZXI6MXB4IHNvbGlkICNiZGJkYmQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6MXB4IDFweCAwICNmZmY7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzQyNDI0Mjt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtib3JkZXItcmFkaXVzOi4yZW07em9vbToxO2Rpc3BsYXk6aW5saW5lfS5pbnRyb2pzLWJ1dHRvbjpob3ZlcntvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9LmludHJvanMtYnV0dG9uOmZvY3Vze291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDE1OCwxNTgsMTU4LC41KTtib3JkZXI6MXB4IHNvbGlkICM2MTYxNjE7Y29sb3I6IzIxMjEyMX0uaW50cm9qcy1idXR0b246YWN0aXZle291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7Y29sb3I6IzIxMjEyMX0uaW50cm9qcy1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlcjowfS5pbnRyb2pzLXNraXBidXR0b257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo0NXB4O2hlaWdodDo0NXB4O2xpbmUtaGVpZ2h0OjQ1cHg7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MjJweDtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtc2tpcGJ1dHRvbjpmb2N1cywuaW50cm9qcy1za2lwYnV0dG9uOmhvdmVye2NvbG9yOiMyMTIxMjE7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lfS5pbnRyb2pzLXByZXZidXR0b257ZmxvYXQ6bGVmdH0uaW50cm9qcy1uZXh0YnV0dG9ue2Zsb2F0OnJpZ2h0fS5pbnRyb2pzLWRpc2FibGVke2NvbG9yOiM5ZTllOWU7Ym9yZGVyLWNvbG9yOiNiZGJkYmQ7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtZGlzYWJsZWQ6Zm9jdXMsLmludHJvanMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6IzllOWU5ZTtib3JkZXItY29sb3I6I2JkYmRiZDtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O2JhY2tncm91bmQtaW1hZ2U6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50cm9qcy1oaWRkZW57ZGlzcGxheTpub25lfS5pbnRyb2pzLWJ1bGxldHN7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5pbnRyb2pzLWJ1bGxldHMgdWx7Ym94LXNpemluZzpjb250ZW50LWJveDtjbGVhcjpib3RoO21hcmdpbjowIGF1dG8gMDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmludHJvanMtYnVsbGV0cyB1bCBsaXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O21hcmdpbjowIDJweH0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGF7dHJhbnNpdGlvbjp3aWR0aCAuMXMgZWFzZS1pbjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NnB4O2hlaWdodDo2cHg7YmFja2dyb3VuZDojY2NjO2JvcmRlci1yYWRpdXM6MTBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGE6Zm9jdXMsLmludHJvanMtYnVsbGV0cyB1bCBsaSBhOmhvdmVye3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5O3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MH0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGEuYWN0aXZle3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5fS5pbnRyb2pzLXByb2dyZXNze2JveC1zaXppbmc6Y29udGVudC1ib3g7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMHB4O21hcmdpbjoxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6I2UwZTBlMH0uaW50cm9qcy1wcm9ncmVzc2Jhcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Zsb2F0OmxlZnQ7d2lkdGg6MCU7aGVpZ2h0OjEwMCU7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwOGN9LmludHJvanNGbG9hdGluZ0VsZW1lbnR7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0OjUwJTt0b3A6NTAlfS5pbnRyb2pzLWZpeGVkVG9vbHRpcHtwb3NpdGlvbjpmaXhlZH0uaW50cm9qcy1oaW50e2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDowIDA7d2lkdGg6MjBweDtoZWlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcn0uaW50cm9qcy1oaW50OmZvY3Vze2JvcmRlcjowO291dGxpbmU6MH0uaW50cm9qcy1oaW50OmhvdmVyPi5pbnRyb2pzLWhpbnQtcHVsc2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDYwLDYwLDYwLC41Nyl9LmludHJvanMtaGlkZWhpbnR7ZGlzcGxheTpub25lfS5pbnRyb2pzLWZpeGVkaGludHtwb3NpdGlvbjpmaXhlZH1Aa2V5ZnJhbWVzIGludHJvanNwdWxzZXswJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuNyl9NzAle3RyYW5zZm9ybTpzY2FsZSgxKTtib3gtc2hhZG93OjAgMCAwIDEwcHggdHJhbnNwYXJlbnR9MTAwJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgdHJhbnNwYXJlbnR9fS5pbnRyb2pzLWhpbnQtcHVsc2V7Ym94LXNpemluZzpjb250ZW50LWJveDt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2JvcmRlci1yYWRpdXM6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTM2LDEzNiwxMzYsLjI0KTt6LWluZGV4OjEwO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLW91dDthbmltYXRpb246aW50cm9qc3B1bHNlIDJzIGluZmluaXRlfS5pbnRyb2pzLWhpbnQtbm8tYW5pbSAuaW50cm9qcy1oaW50LXB1bHNle2FuaW1hdGlvbjpub25lfS5pbnRyb2pzLWhpbnQtZG90e2JveC1zaXppbmc6Y29udGVudC1ib3g7YmFja2dyb3VuZDowIDA7Ym9yZGVyLXJhZGl1czo2MHB4O2hlaWdodDo1MHB4O3dpZHRoOjUwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xOHB4O2xlZnQ6LTE4cHg7ei1pbmRleDoxO29wYWNpdHk6MH0vKiMgc291cmNlTWFwcGluZ1VSTD1pbnRyb2pzLmNzcy5tYXAgKi9cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vbm9kZV9tb2R1bGVzL2ludHJvLmpzLyUzQ2lucHV0JTIwY3NzJTIwMiUzRVwiLFwid2VicGFjazovL25vZGVfbW9kdWxlcy9pbnRyby5qcy9pbnRyb2pzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxpQkFBaUIsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIseUJBQXlCLENBQUMsMEJBQTBCLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLDBCQUEwQix5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsMEJBQTBCLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLDBCQUEwQixpQkFBaUIsQ0FBQyxxQkFBcUIsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLHVCQUF1QixzQkFBc0IsQ0FBQyw2QkFBNkIsc0JBQXNCLENBQUMsNEJBQTRCLHNCQUFzQixDQUFDLCtCQUErQiwrRkFBK0YsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsQ0FBQywyQkFBMkIsQ0FBQyxpQ0FBaUMsK0ZBQStGLENBQUMsMkJBQTJCLCtGQUErRixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFB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b0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLG9CQUFvQixzQkFBc0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLHNDQUFzQyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxrQ0FBa0MsQ0FBQywwQ0FBMEMsY0FBYyxDQUFDLGtCQUFrQixzQkFBc0IsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENDQ3I0TSxzQ0FBc0NcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmludHJvanMtb3ZlcmxheXtwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3otaW5kZXg6OTk5OTk5O29wYWNpdHk6MDt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZS1vdXR9LmludHJvanMtc2hvd0VsZW1lbnR7ei1pbmRleDo5OTk5OTk5IWltcG9ydGFudH10ci5pbnRyb2pzLXNob3dFbGVtZW50PnRke3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmV9dHIuaW50cm9qcy1zaG93RWxlbWVudD50aHt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfS5pbnRyb2pzLWRpc2FibGVJbnRlcmFjdGlvbnt6LWluZGV4Ojk5OTk5OTk5IWltcG9ydGFudDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3BhY2l0eTowfS5pbnRyb2pzLXJlbGF0aXZlUG9zaXRpb257cG9zaXRpb246cmVsYXRpdmV9LmludHJvanMtaGVscGVyTGF5ZXJ7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTk5OTg7Ym9yZGVyLXJhZGl1czo0cHg7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fS5pbnRyb2pzLWhlbHBlckxheWVyICp7Ym94LXNpemluZzpjb250ZW50LWJveH0uaW50cm9qcy1oZWxwZXJMYXllciA6YmVmb3Jle2JveC1zaXppbmc6Y29udGVudC1ib3h9LmludHJvanMtaGVscGVyTGF5ZXIgOmFmdGVye2JveC1zaXppbmc6Y29udGVudC1ib3h9LmludHJvanMtdG9vbHRpcFJlZmVyZW5jZUxheWVye2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7dmlzaWJpbGl0eTpoaWRkZW47ei1pbmRleDoxMDAwMDAwMDA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZS1vdXR9LmludHJvanMtdG9vbHRpcFJlZmVyZW5jZUxheWVyICp7Zm9udC1mYW1pbHk6XFxcIkhlbHZldGljYSBOZXVlXFxcIixJbnRlcix1aS1zYW5zLXNlcmlmLFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWZ9LmludHJvanMtaGVscGVyTnVtYmVyTGF5ZXJ7Zm9udC1mYW1pbHk6XFxcIkhlbHZldGljYSBOZXVlXFxcIixJbnRlcix1aS1zYW5zLXNlcmlmLFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzllOWU5ZTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHh9LmludHJvanMtYXJyb3d7Ym9yZGVyOjVweCBzb2xpZCB0cmFuc3BhcmVudDtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlfS5pbnRyb2pzLWFycm93LnRvcHt0b3A6LTEwcHg7bGVmdDoxMHB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy50b3AtcmlnaHR7dG9wOi0xMHB4O3JpZ2h0OjEwcHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LnRvcC1taWRkbGV7dG9wOi0xMHB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LnJpZ2h0e3JpZ2h0Oi0xMHB4O3RvcDoxMHB4O2JvcmRlci1sZWZ0LWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cucmlnaHQtYm90dG9te2JvdHRvbToxMHB4O3JpZ2h0Oi0xMHB4O2JvcmRlci1sZWZ0LWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cuYm90dG9te2JvdHRvbTotMTBweDtsZWZ0OjEwcHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmJvdHRvbS1yaWdodHtib3R0b206LTEwcHg7cmlnaHQ6MTBweDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cuYm90dG9tLW1pZGRsZXtib3R0b206LTEwcHg7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cubGVmdHtsZWZ0Oi0xMHB4O3RvcDoxMHB4O2JvcmRlci1yaWdodC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmxlZnQtYm90dG9te2xlZnQ6LTEwcHg7Ym90dG9tOjEwcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LmludHJvanMtdG9vbHRpcHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6dmlzaWJsZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7bWluLXdpZHRoOjI1MHB4O21heC13aWR0aDozMDBweDtib3JkZXItcmFkaXVzOjVweDtib3gtc2hhZG93OjAgM3B4IDMwcHggcmdiYSgzMywzMywzMywuMyk7dHJhbnNpdGlvbjpvcGFjaXR5IC4xcyBlYXNlLW91dH0uaW50cm9qcy10b29sdGlwdGV4dHtwYWRkaW5nOjIwcHh9LmludHJvanMtZG9udFNob3dBZ2FpbntwYWRkaW5nLWxlZnQ6MjBweDtwYWRkaW5nLXJpZ2h0OjIwcHh9LmludHJvanMtZG9udFNob3dBZ2FpbiBpbnB1dHtwYWRkaW5nOjA7bWFyZ2luOjA7bWFyZ2luLWJvdHRvbToycHg7ZGlzcGxheTppbmxpbmU7d2lkdGg6MTBweDtoZWlnaHQ6MTBweH0uaW50cm9qcy1kb250U2hvd0FnYWluIGxhYmVse2ZvbnQtc2l6ZToxNHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW46MCAwIDAgNXB4O3BhZGRpbmc6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzYxNjE2MTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uaW50cm9qcy10b29sdGlwLXRpdGxle2ZvbnQtc2l6ZToxOHB4O3dpZHRoOjkwJTttaW4taGVpZ2h0OjEuNWVtO21hcmdpbjowO3BhZGRpbmc6MDtmb250LXdlaWdodDo3MDA7bGluZS1oZWlnaHQ6MS41fS5pbnRyb2pzLXRvb2x0aXAtaGVhZGVye3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweDtwYWRkaW5nLXRvcDoxMHB4O21pbi1oZWlnaHQ6MS41ZW19LmludHJvanMtdG9vbHRpcGJ1dHRvbnN7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UwZTBlMDtwYWRkaW5nOjEwcHg7dGV4dC1hbGlnbjpyaWdodDt3aGl0ZS1zcGFjZTpub3dyYXB9LmludHJvanMtdG9vbHRpcGJ1dHRvbnM6YWZ0ZXJ7Y29udGVudDpcXFwiXFxcIjt2aXNpYmlsaXR5OmhpZGRlbjtkaXNwbGF5OmJsb2NrO2hlaWdodDowO2NsZWFyOmJvdGh9LmludHJvanMtYnV0dG9ue2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZTtwYWRkaW5nOi41cmVtIDFyZW07Ym9yZGVyOjFweCBzb2xpZCAjYmRiZGJkO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93OjFweCAxcHggMCAjZmZmO2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiM0MjQyNDI7d2hpdGUtc3BhY2U6bm93cmFwO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MDtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7Ym9yZGVyLXJhZGl1czouMmVtO3pvb206MTtkaXNwbGF5OmlubGluZX0uaW50cm9qcy1idXR0b246aG92ZXJ7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlci1jb2xvcjojOWU5ZTllO2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5pbnRyb2pzLWJ1dHRvbjpmb2N1c3tvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZWVlO2JveC1zaGFkb3c6MCAwIDAgLjJyZW0gcmdiYSgxNTgsMTU4LDE1OCwuNSk7Ym9yZGVyOjFweCBzb2xpZCAjNjE2MTYxO2NvbG9yOiMyMTIxMjF9LmludHJvanMtYnV0dG9uOmFjdGl2ZXtvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1jb2xvcjojOWU5ZTllO2NvbG9yOiMyMTIxMjF9LmludHJvanMtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye3BhZGRpbmc6MDtib3JkZXI6MH0uaW50cm9qcy1za2lwYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NDVweDtoZWlnaHQ6NDVweDtsaW5lLWhlaWdodDo0NXB4O2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOjIycHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lfS5pbnRyb2pzLXNraXBidXR0b246Zm9jdXMsLmludHJvanMtc2tpcGJ1dHRvbjpob3Zlcntjb2xvcjojMjEyMTIxO291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50cm9qcy1wcmV2YnV0dG9ue2Zsb2F0OmxlZnR9LmludHJvanMtbmV4dGJ1dHRvbntmbG9hdDpyaWdodH0uaW50cm9qcy1kaXNhYmxlZHtjb2xvcjojOWU5ZTllO2JvcmRlci1jb2xvcjojYmRiZGJkO2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7YmFja2dyb3VuZC1pbWFnZTpub25lO3RleHQtZGVjb3JhdGlvbjpub25lfS5pbnRyb2pzLWRpc2FibGVkOmZvY3VzLC5pbnRyb2pzLWRpc2FibGVkOmhvdmVye2NvbG9yOiM5ZTllOWU7Ym9yZGVyLWNvbG9yOiNiZGJkYmQ7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtaGlkZGVue2Rpc3BsYXk6bm9uZX0uaW50cm9qcy1idWxsZXRze3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjEwcHg7cGFkZGluZy1ib3R0b206MTBweH0uaW50cm9qcy1idWxsZXRzIHVse2JveC1zaXppbmc6Y29udGVudC1ib3g7Y2xlYXI6Ym90aDttYXJnaW46MCBhdXRvIDA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5pbnRyb2pzLWJ1bGxldHMgdWwgbGl7Ym94LXNpemluZzpjb250ZW50LWJveDtsaXN0LXN0eWxlOm5vbmU7ZmxvYXQ6bGVmdDttYXJnaW46MCAycHh9LmludHJvanMtYnVsbGV0cyB1bCBsaSBhe3RyYW5zaXRpb246d2lkdGggLjFzIGVhc2UtaW47Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JhY2tncm91bmQ6I2NjYztib3JkZXItcmFkaXVzOjEwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmludHJvanMtYnVsbGV0cyB1bCBsaSBhOmZvY3VzLC5pbnRyb2pzLWJ1bGxldHMgdWwgbGkgYTpob3Zlcnt3aWR0aDoxNXB4O2JhY2tncm91bmQ6Izk5OTt0ZXh0LWRlY29yYXRpb246bm9uZTtvdXRsaW5lOjB9LmludHJvanMtYnVsbGV0cyB1bCBsaSBhLmFjdGl2ZXt3aWR0aDoxNXB4O2JhY2tncm91bmQ6Izk5OX0uaW50cm9qcy1wcm9ncmVzc3tib3gtc2l6aW5nOmNvbnRlbnQtYm94O292ZXJmbG93OmhpZGRlbjtoZWlnaHQ6MTBweDttYXJnaW46MTBweDtib3JkZXItcmFkaXVzOjRweDtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTB9LmludHJvanMtcHJvZ3Jlc3NiYXJ7Ym94LXNpemluZzpjb250ZW50LWJveDtmbG9hdDpsZWZ0O3dpZHRoOjAlO2hlaWdodDoxMDAlO2ZvbnQtc2l6ZToxMHB4O2xpbmUtaGVpZ2h0OjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojMDhjfS5pbnRyb2pzRmxvYXRpbmdFbGVtZW50e3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDowO3dpZHRoOjA7bGVmdDo1MCU7dG9wOjUwJX0uaW50cm9qcy1maXhlZFRvb2x0aXB7cG9zaXRpb246Zml4ZWR9LmludHJvanMtaGludHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQ6MCAwO3dpZHRoOjIwcHg7aGVpZ2h0OjE1cHg7Y3Vyc29yOnBvaW50ZXJ9LmludHJvanMtaGludDpmb2N1c3tib3JkZXI6MDtvdXRsaW5lOjB9LmludHJvanMtaGludDpob3Zlcj4uaW50cm9qcy1oaW50LXB1bHNle2JhY2tncm91bmQtY29sb3I6cmdiYSg2MCw2MCw2MCwuNTcpfS5pbnRyb2pzLWhpZGVoaW50e2Rpc3BsYXk6bm9uZX0uaW50cm9qcy1maXhlZGhpbnR7cG9zaXRpb246Zml4ZWR9QGtleWZyYW1lcyBpbnRyb2pzcHVsc2V7MCV7dHJhbnNmb3JtOnNjYWxlKC45NSk7Ym94LXNoYWRvdzowIDAgMCAwIHJnYmEoMCwwLDAsLjcpfTcwJXt0cmFuc2Zvcm06c2NhbGUoMSk7Ym94LXNoYWRvdzowIDAgMCAxMHB4IHRyYW5zcGFyZW50fTEwMCV7dHJhbnNmb3JtOnNjYWxlKC45NSk7Ym94LXNoYWRvdzowIDAgMCAwIHRyYW5zcGFyZW50fX0uaW50cm9qcy1oaW50LXB1bHNle2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtib3JkZXItcmFkaXVzOjMwcHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEzNiwxMzYsMTM2LC4yNCk7ei1pbmRleDoxMDtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2l0aW9uOmFsbCAuMnMgZWFzZS1vdXQ7YW5pbWF0aW9uOmludHJvanNwdWxzZSAycyBpbmZpbml0ZX0uaW50cm9qcy1oaW50LW5vLWFuaW0gLmludHJvanMtaGludC1wdWxzZXthbmltYXRpb246bm9uZX0uaW50cm9qcy1oaW50LWRvdHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JhY2tncm91bmQ6MCAwO2JvcmRlci1yYWRpdXM6NjBweDtoZWlnaHQ6NTBweDt3aWR0aDo1MHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMThweDtsZWZ0Oi0xOHB4O3otaW5kZXg6MTtvcGFjaXR5OjB9XCIsXCIuaW50cm9qcy1vdmVybGF5e3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Y29udGVudC1ib3g7ei1pbmRleDo5OTk5OTk7b3BhY2l0eTowO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLW91dH0uaW50cm9qcy1zaG93RWxlbWVudHt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50fXRyLmludHJvanMtc2hvd0VsZW1lbnQ+dGR7ei1pbmRleDo5OTk5OTk5IWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZX10ci5pbnRyb2pzLXNob3dFbGVtZW50PnRoe3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmV9LmludHJvanMtZGlzYWJsZUludGVyYWN0aW9ue3otaW5kZXg6OTk5OTk5OTkhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6I2ZmZjtvcGFjaXR5OjB9LmludHJvanMtcmVsYXRpdmVQb3NpdGlvbntwb3NpdGlvbjpyZWxhdGl2ZX0uaW50cm9qcy1oZWxwZXJMYXllcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTk5OTk5ODtib3JkZXItcmFkaXVzOjRweDt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZS1vdXR9LmludHJvanMtaGVscGVyTGF5ZXIgKntib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5pbnRyb2pzLWhlbHBlckxheWVyIDpiZWZvcmV7Ym94LXNpemluZzpjb250ZW50LWJveH0uaW50cm9qcy1oZWxwZXJMYXllciA6YWZ0ZXJ7Ym94LXNpemluZzpjb250ZW50LWJveH0uaW50cm9qcy10b29sdGlwUmVmZXJlbmNlTGF5ZXJ7Zm9udC1mYW1pbHk6XFxcIkhlbHZldGljYSBOZXVlXFxcIixJbnRlcix1aS1zYW5zLXNlcmlmLFxcXCJBcHBsZSBDb2xvciBFbW9qaVxcXCIsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjt6LWluZGV4OjEwMDAwMDAwMDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLW91dH0uaW50cm9qcy10b29sdGlwUmVmZXJlbmNlTGF5ZXIgKntmb250LWZhbWlseTpcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLEludGVyLHVpLXNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZn0uaW50cm9qcy1oZWxwZXJOdW1iZXJMYXllcntmb250LWZhbWlseTpcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLEludGVyLHVpLXNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojOWU5ZTllO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOjEwcHg7cGFkZGluZy1ib3R0b206MTBweH0uaW50cm9qcy1hcnJvd3tib3JkZXI6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGV9LmludHJvanMtYXJyb3cudG9we3RvcDotMTBweDtsZWZ0OjEwcHg7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LnRvcC1yaWdodHt0b3A6LTEwcHg7cmlnaHQ6MTBweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cudG9wLW1pZGRsZXt0b3A6LTEwcHg7bGVmdDo1MCU7bWFyZ2luLWxlZnQ6LTVweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cucmlnaHR7cmlnaHQ6LTEwcHg7dG9wOjEwcHg7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5yaWdodC1ib3R0b217Ym90dG9tOjEwcHg7cmlnaHQ6LTEwcHg7Ym9yZGVyLWxlZnQtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5ib3R0b217Ym90dG9tOi0xMHB4O2xlZnQ6MTBweDtib3JkZXItdG9wLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cuYm90dG9tLXJpZ2h0e2JvdHRvbTotMTBweDtyaWdodDoxMHB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5ib3R0b20tbWlkZGxle2JvdHRvbTotMTBweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5sZWZ0e2xlZnQ6LTEwcHg7dG9wOjEwcHg7Ym9yZGVyLXJpZ2h0LWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cubGVmdC1ib3R0b217bGVmdDotMTBweDtib3R0b206MTBweDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn0uaW50cm9qcy10b29sdGlwe2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7dmlzaWJpbGl0eTp2aXNpYmxlO2JhY2tncm91bmQtY29sb3I6I2ZmZjttaW4td2lkdGg6MjUwcHg7bWF4LXdpZHRoOjMwMHB4O2JvcmRlci1yYWRpdXM6NXB4O2JveC1zaGFkb3c6MCAzcHggMzBweCByZ2JhKDMzLDMzLDMzLC4zKTt0cmFuc2l0aW9uOm9wYWNpdHkgLjFzIGVhc2Utb3V0fS5pbnRyb2pzLXRvb2x0aXB0ZXh0e3BhZGRpbmc6MjBweH0uaW50cm9qcy1kb250U2hvd0FnYWlue3BhZGRpbmctbGVmdDoyMHB4O3BhZGRpbmctcmlnaHQ6MjBweH0uaW50cm9qcy1kb250U2hvd0FnYWluIGlucHV0e3BhZGRpbmc6MDttYXJnaW46MDttYXJnaW4tYm90dG9tOjJweDtkaXNwbGF5OmlubGluZTt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fS5pbnRyb2pzLWRvbnRTaG93QWdhaW4gbGFiZWx7Zm9udC1zaXplOjE0cHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6NDAwO21hcmdpbjowIDAgMCA1cHg7cGFkZGluZzowO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjE2MTYxOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5pbnRyb2pzLXRvb2x0aXAtdGl0bGV7Zm9udC1zaXplOjE4cHg7d2lkdGg6OTAlO21pbi1oZWlnaHQ6MS41ZW07bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjV9LmludHJvanMtdG9vbHRpcC1oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctdG9wOjEwcHg7bWluLWhlaWdodDoxLjVlbX0uaW50cm9qcy10b29sdGlwYnV0dG9uc3tib3JkZXItdG9wOjFweCBzb2xpZCAjZTBlMGUwO3BhZGRpbmc6MTBweDt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uaW50cm9qcy10b29sdGlwYnV0dG9uczphZnRlcntjb250ZW50OlxcXCJcXFwiO3Zpc2liaWxpdHk6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7Y2xlYXI6Ym90aH0uaW50cm9qcy1idXR0b257Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlO3BhZGRpbmc6LjVyZW0gMXJlbTtib3JkZXI6MXB4IHNvbGlkICNiZGJkYmQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6MXB4IDFweCAwICNmZmY7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzQyNDI0Mjt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtib3JkZXItcmFkaXVzOi4yZW07em9vbToxO2Rpc3BsYXk6aW5saW5lfS5pbnRyb2pzLWJ1dHRvbjpob3ZlcntvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9LmludHJvanMtYnV0dG9uOmZvY3Vze291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDE1OCwxNTgsMTU4LC41KTtib3JkZXI6MXB4IHNvbGlkICM2MTYxNjE7Y29sb3I6IzIxMjEyMX0uaW50cm9qcy1idXR0b246YWN0aXZle291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7Y29sb3I6IzIxMjEyMX0uaW50cm9qcy1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlcjowfS5pbnRyb2pzLXNraXBidXR0b257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo0NXB4O2hlaWdodDo0NXB4O2xpbmUtaGVpZ2h0OjQ1cHg7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MjJweDtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtc2tpcGJ1dHRvbjpmb2N1cywuaW50cm9qcy1za2lwYnV0dG9uOmhvdmVye2NvbG9yOiMyMTIxMjE7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lfS5pbnRyb2pzLXByZXZidXR0b257ZmxvYXQ6bGVmdH0uaW50cm9qcy1uZXh0YnV0dG9ue2Zsb2F0OnJpZ2h0fS5pbnRyb2pzLWRpc2FibGVke2NvbG9yOiM5ZTllOWU7Ym9yZGVyLWNvbG9yOiNiZGJkYmQ7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtZGlzYWJsZWQ6Zm9jdXMsLmludHJvanMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6IzllOWU5ZTtib3JkZXItY29sb3I6I2JkYmRiZDtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O2JhY2tncm91bmQtaW1hZ2U6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50cm9qcy1oaWRkZW57ZGlzcGxheTpub25lfS5pbnRyb2pzLWJ1bGxldHN7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5pbnRyb2pzLWJ1bGxldHMgdWx7Ym94LXNpemluZzpjb250ZW50LWJveDtjbGVhcjpib3RoO21hcmdpbjowIGF1dG8gMDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmludHJvanMtYnVsbGV0cyB1bCBsaXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O21hcmdpbjowIDJweH0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGF7dHJhbnNpdGlvbjp3aWR0aCAuMXMgZWFzZS1pbjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NnB4O2hlaWdodDo2cHg7YmFja2dyb3VuZDojY2NjO2JvcmRlci1yYWRpdXM6MTBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGE6Zm9jdXMsLmludHJvanMtYnVsbGV0cyB1bCBsaSBhOmhvdmVye3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5O3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MH0uaW50cm9qcy1idWxsZXRzIHVsIGxpIGEuYWN0aXZle3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5fS5pbnRyb2pzLXByb2dyZXNze2JveC1zaXppbmc6Y29udGVudC1ib3g7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMHB4O21hcmdpbjoxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6I2UwZTBlMH0uaW50cm9qcy1wcm9ncmVzc2Jhcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Zsb2F0OmxlZnQ7d2lkdGg6MCU7aGVpZ2h0OjEwMCU7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwOGN9LmludHJvanNGbG9hdGluZ0VsZW1lbnR7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0OjUwJTt0b3A6NTAlfS5pbnRyb2pzLWZpeGVkVG9vbHRpcHtwb3NpdGlvbjpmaXhlZH0uaW50cm9qcy1oaW50e2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDowIDA7d2lkdGg6MjBweDtoZWlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcn0uaW50cm9qcy1oaW50OmZvY3Vze2JvcmRlcjowO291dGxpbmU6MH0uaW50cm9qcy1oaW50OmhvdmVyPi5pbnRyb2pzLWhpbnQtcHVsc2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDYwLDYwLDYwLC41Nyl9LmludHJvanMtaGlkZWhpbnR7ZGlzcGxheTpub25lfS5pbnRyb2pzLWZpeGVkaGludHtwb3NpdGlvbjpmaXhlZH1Aa2V5ZnJhbWVzIGludHJvanNwdWxzZXswJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuNyl9NzAle3RyYW5zZm9ybTpzY2FsZSgxKTtib3gtc2hhZG93OjAgMCAwIDEwcHggdHJhbnNwYXJlbnR9MTAwJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgdHJhbnNwYXJlbnR9fS5pbnRyb2pzLWhpbnQtcHVsc2V7Ym94LXNpemluZzpjb250ZW50LWJveDt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2JvcmRlci1yYWRpdXM6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTM2LDEzNiwxMzYsLjI0KTt6LWluZGV4OjEwO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLW91dDthbmltYXRpb246aW50cm9qc3B1bHNlIDJzIGluZmluaXRlfS5pbnRyb2pzLWhpbnQtbm8tYW5pbSAuaW50cm9qcy1oaW50LXB1bHNle2FuaW1hdGlvbjpub25lfS5pbnRyb2pzLWhpbnQtZG90e2JveC1zaXppbmc6Y29udGVudC1ib3g7YmFja2dyb3VuZDowIDA7Ym9yZGVyLXJhZGl1czo2MHB4O2hlaWdodDo1MHB4O3dpZHRoOjUwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xOHB4O2xlZnQ6LTE4cHg7ei1pbmRleDoxO29wYWNpdHk6MH1cXG4vKiMgc291cmNlTWFwcGluZ1VSTD1pbnRyb2pzLmNzcy5tYXAgKi9cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css":
/*!********************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css ***!
\********************************************************************************************************************************************************************************************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js\");\n/* harmony import */ var _node_modules_next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_next_dist_build_webpack_loaders_css_loader_src_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"*, ::before, ::after {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}\\n\\n::backdrop {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: ;\\n}/*\\n! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com\\n*//*\\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\\n*/\\n\\n*,\\n::before,\\n::after {\\n box-sizing: border-box; /* 1 */\\n border-width: 0; /* 2 */\\n border-style: solid; /* 2 */\\n border-color: #e5e7eb; /* 2 */\\n}\\n\\n::before,\\n::after {\\n --tw-content: '';\\n}\\n\\n/*\\n1. Use a consistent sensible line-height in all browsers.\\n2. Prevent adjustments of font size after orientation changes in iOS.\\n3. Use a more readable tab size.\\n4. Use the user's configured `sans` font-family by default.\\n5. Use the user's configured `sans` font-feature-settings by default.\\n6. Use the user's configured `sans` font-variation-settings by default.\\n7. Disable tap highlights on iOS\\n*/\\n\\nhtml,\\n:host {\\n line-height: 1.5; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n -moz-tab-size: 4; /* 3 */\\n -o-tab-size: 4;\\n tab-size: 4; /* 3 */\\n font-family: ui-sans-serif, system-ui, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\"; /* 4 */\\n font-feature-settings: normal; /* 5 */\\n font-variation-settings: normal; /* 6 */\\n -webkit-tap-highlight-color: transparent; /* 7 */\\n}\\n\\n/*\\n1. Remove the margin in all browsers.\\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\\n*/\\n\\nbody {\\n margin: 0; /* 1 */\\n line-height: inherit; /* 2 */\\n}\\n\\n/*\\n1. Add the correct height in Firefox.\\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\\n3. Ensure horizontal rules are visible by default.\\n*/\\n\\nhr {\\n height: 0; /* 1 */\\n color: inherit; /* 2 */\\n border-top-width: 1px; /* 3 */\\n}\\n\\n/*\\nAdd the correct text decoration in Chrome, Edge, and Safari.\\n*/\\n\\nabbr:where([title]) {\\n -webkit-text-decoration: underline dotted;\\n text-decoration: underline dotted;\\n}\\n\\n/*\\nRemove the default font size and weight for headings.\\n*/\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n font-size: inherit;\\n font-weight: inherit;\\n}\\n\\n/*\\nReset links to optimize for opt-in styling instead of opt-out.\\n*/\\n\\na {\\n color: inherit;\\n text-decoration: inherit;\\n}\\n\\n/*\\nAdd the correct font weight in Edge and Safari.\\n*/\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/*\\n1. Use the user's configured `mono` font-family by default.\\n2. Use the user's configured `mono` font-feature-settings by default.\\n3. Use the user's configured `mono` font-variation-settings by default.\\n4. Correct the odd `em` font sizing in all browsers.\\n*/\\n\\ncode,\\nkbd,\\nsamp,\\npre {\\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace; /* 1 */\\n font-feature-settings: normal; /* 2 */\\n font-variation-settings: normal; /* 3 */\\n font-size: 1em; /* 4 */\\n}\\n\\n/*\\nAdd the correct font size in all browsers.\\n*/\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/*\\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\\n*/\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/*\\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\\n3. Remove gaps between table borders by default.\\n*/\\n\\ntable {\\n text-indent: 0; /* 1 */\\n border-color: inherit; /* 2 */\\n border-collapse: collapse; /* 3 */\\n}\\n\\n/*\\n1. Change the font styles in all browsers.\\n2. Remove the margin in Firefox and Safari.\\n3. Remove default padding in all browsers.\\n*/\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-feature-settings: inherit; /* 1 */\\n font-variation-settings: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n font-weight: inherit; /* 1 */\\n line-height: inherit; /* 1 */\\n letter-spacing: inherit; /* 1 */\\n color: inherit; /* 1 */\\n margin: 0; /* 2 */\\n padding: 0; /* 3 */\\n}\\n\\n/*\\nRemove the inheritance of text transform in Edge and Firefox.\\n*/\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Remove default button styles.\\n*/\\n\\nbutton,\\ninput:where([type='button']),\\ninput:where([type='reset']),\\ninput:where([type='submit']) {\\n -webkit-appearance: button; /* 1 */\\n background-color: transparent; /* 2 */\\n background-image: none; /* 2 */\\n}\\n\\n/*\\nUse the modern Firefox focus style for all focusable elements.\\n*/\\n\\n:-moz-focusring {\\n outline: auto;\\n}\\n\\n/*\\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\\n*/\\n\\n:-moz-ui-invalid {\\n box-shadow: none;\\n}\\n\\n/*\\nAdd the correct vertical alignment in Chrome and Firefox.\\n*/\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/*\\nCorrect the cursor style of increment and decrement buttons in Safari.\\n*/\\n\\n::-webkit-inner-spin-button,\\n::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/*\\n1. Correct the odd appearance in Chrome and Safari.\\n2. Correct the outline style in Safari.\\n*/\\n\\n[type='search'] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n\\n/*\\nRemove the inner padding in Chrome and Safari on macOS.\\n*/\\n\\n::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/*\\n1. Correct the inability to style clickable types in iOS and Safari.\\n2. Change font properties to `inherit` in Safari.\\n*/\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n\\n/*\\nAdd the correct display in Chrome and Safari.\\n*/\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/*\\nRemoves the default spacing and border for appropriate elements.\\n*/\\n\\nblockquote,\\ndl,\\ndd,\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6,\\nhr,\\nfigure,\\np,\\npre {\\n margin: 0;\\n}\\n\\nfieldset {\\n margin: 0;\\n padding: 0;\\n}\\n\\nlegend {\\n padding: 0;\\n}\\n\\nol,\\nul,\\nmenu {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n}\\n\\n/*\\nReset default styling for dialogs.\\n*/\\ndialog {\\n padding: 0;\\n}\\n\\n/*\\nPrevent resizing textareas horizontally by default.\\n*/\\n\\ntextarea {\\n resize: vertical;\\n}\\n\\n/*\\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\\n2. Set the default placeholder color to the user's configured gray 400 color.\\n*/\\n\\ninput::-moz-placeholder, textarea::-moz-placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\n\\ninput::placeholder,\\ntextarea::placeholder {\\n opacity: 1; /* 1 */\\n color: #9ca3af; /* 2 */\\n}\\n\\n/*\\nSet the default cursor for buttons.\\n*/\\n\\nbutton,\\n[role=\\\"button\\\"] {\\n cursor: pointer;\\n}\\n\\n/*\\nMake sure disabled buttons don't get the pointer cursor.\\n*/\\n:disabled {\\n cursor: default;\\n}\\n\\n/*\\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\\n This can trigger a poorly considered lint error in some tools but is included by design.\\n*/\\n\\nimg,\\nsvg,\\nvideo,\\ncanvas,\\naudio,\\niframe,\\nembed,\\nobject {\\n display: block; /* 1 */\\n vertical-align: middle; /* 2 */\\n}\\n\\n/*\\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\\n*/\\n\\nimg,\\nvideo {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n/* Make elements with the HTML hidden attribute stay hidden by default */\\n[hidden]:where(:not([hidden=\\\"until-found\\\"])) {\\n display: none;\\n}\\n\\n[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n background-color: #fff;\\n border-color: #6b7280;\\n border-width: 1px;\\n border-radius: 0px;\\n padding-top: 0.5rem;\\n padding-right: 0.75rem;\\n padding-bottom: 0.5rem;\\n padding-left: 0.75rem;\\n font-size: 1rem;\\n line-height: 1.5rem;\\n --tw-shadow: 0 0 #0000;\\n}\\n\\n[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: #2563eb;\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n border-color: #2563eb;\\n}\\n\\ninput::-moz-placeholder, textarea::-moz-placeholder {\\n color: #6b7280;\\n opacity: 1;\\n}\\n\\ninput::placeholder,textarea::placeholder {\\n color: #6b7280;\\n opacity: 1;\\n}\\n\\n::-webkit-datetime-edit-fields-wrapper {\\n padding: 0;\\n}\\n\\n::-webkit-date-and-time-value {\\n min-height: 1.5em;\\n text-align: inherit;\\n}\\n\\n::-webkit-datetime-edit {\\n display: inline-flex;\\n}\\n\\n::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field {\\n padding-top: 0;\\n padding-bottom: 0;\\n}\\n\\nselect {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\\\");\\n background-position: right 0.5rem center;\\n background-repeat: no-repeat;\\n background-size: 1.5em 1.5em;\\n padding-right: 2.5rem;\\n -webkit-print-color-adjust: exact;\\n color-adjust: exact;\\n print-color-adjust: exact;\\n}\\n\\n[multiple],[size]:where(select:not([size=\\\"1\\\"])) {\\n background-image: initial;\\n background-position: initial;\\n background-repeat: unset;\\n background-size: initial;\\n padding-right: 0.75rem;\\n -webkit-print-color-adjust: unset;\\n color-adjust: unset;\\n print-color-adjust: unset;\\n}\\n\\n[type='checkbox'],[type='radio'] {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n padding: 0;\\n -webkit-print-color-adjust: exact;\\n color-adjust: exact;\\n print-color-adjust: exact;\\n display: inline-block;\\n vertical-align: middle;\\n background-origin: border-box;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n flex-shrink: 0;\\n height: 1rem;\\n width: 1rem;\\n color: #2563eb;\\n background-color: #fff;\\n border-color: #6b7280;\\n border-width: 1px;\\n --tw-shadow: 0 0 #0000;\\n}\\n\\n[type='checkbox'] {\\n border-radius: 0px;\\n}\\n\\n[type='radio'] {\\n border-radius: 100%;\\n}\\n\\n[type='checkbox']:focus,[type='radio']:focus {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\\n --tw-ring-offset-width: 2px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: #2563eb;\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\\n}\\n\\n[type='checkbox']:checked,[type='radio']:checked {\\n border-color: transparent;\\n background-color: currentColor;\\n background-size: 100% 100%;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n[type='checkbox']:checked {\\n background-image: url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\\\");\\n}\\n\\n@media (forced-colors: active) {\\n\\n [type='checkbox']:checked {\\n -webkit-appearance: auto;\\n -moz-appearance: auto;\\n appearance: auto;\\n }\\n}\\n\\n[type='radio']:checked {\\n background-image: url(\\\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\\\");\\n}\\n\\n@media (forced-colors: active) {\\n\\n [type='radio']:checked {\\n -webkit-appearance: auto;\\n -moz-appearance: auto;\\n appearance: auto;\\n }\\n}\\n\\n[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus {\\n border-color: transparent;\\n background-color: currentColor;\\n}\\n\\n[type='checkbox']:indeterminate {\\n background-image: url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\\\");\\n border-color: transparent;\\n background-color: currentColor;\\n background-size: 100% 100%;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n\\n@media (forced-colors: active) {\\n\\n [type='checkbox']:indeterminate {\\n -webkit-appearance: auto;\\n -moz-appearance: auto;\\n appearance: auto;\\n }\\n}\\n\\n[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus {\\n border-color: transparent;\\n background-color: currentColor;\\n}\\n\\n[type='file'] {\\n background: unset;\\n border-color: inherit;\\n border-width: 0;\\n border-radius: 0;\\n padding: 0;\\n font-size: unset;\\n line-height: inherit;\\n}\\n\\n[type='file']:focus {\\n outline: 1px solid ButtonText;\\n outline: 1px auto -webkit-focus-ring-color;\\n}\\n progress {\\n height: 0.75rem;\\n overflow: hidden;\\n border-radius: 9999px;\\n}\\n\\n progress::-webkit-progress-bar {\\n --tw-bg-opacity: 1;\\n background-color: rgb(191 219 254 / var(--tw-bg-opacity, 1));\\n}\\n\\n progress::-webkit-progress-value {\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n\\n progress::-moz-progress-bar {\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n\\n progress::-ms-fill {\\n border-width: 0px;\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n html {\\n scrollbar-width: thin;\\n scrollbar-color: rgb(156, 163, 175) rgb(249, 250, 251);\\n }\\n\\n body::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n }\\n\\n body::-webkit-scrollbar-track {\\n --tw-bg-opacity: 1;\\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\\n}\\n\\n body::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n --tw-bg-opacity: 1;\\n background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1));\\n}\\n\\n body::-webkit-scrollbar-thumb:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(107 114 128 / var(--tw-bg-opacity, 1));\\n}\\n table {\\n width: 100%;\\n}\\n\\n thead {\\n display: none;\\n}\\n\\n @media (min-width: 1024px) {\\n\\n thead {\\n display: table-header-group;\\n }\\n}\\n\\n tr {\\n position: relative;\\n display: block;\\n max-width: 100%;\\n border-bottom-width: 4px;\\n --tw-border-opacity: 1;\\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));\\n}\\n\\n tr:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(30 41 59 / var(--tw-border-opacity, 1));\\n}\\n\\n @media (min-width: 1024px) {\\n\\n tr {\\n display: table-row;\\n border-bottom-width: 0px;\\n }\\n}\\n\\n tr:last-child {\\n border-bottom-width: 0px;\\n}\\n\\n @media (min-width: 1024px) {\\n\\n td:not(:first-child) {\\n border-left-width: 1px;\\n border-top-width: 0px;\\n border-right-width: 0px;\\n border-bottom-width: 0px;\\n --tw-border-opacity: 1;\\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));\\n }\\n\\n td:not(:first-child):is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(51 65 85 / var(--tw-border-opacity, 1));\\n }\\n}\\n\\n th {\\n border-bottom-width: 1px;\\n}\\n\\n @media (min-width: 1024px) {\\n\\n th {\\n padding: 0.75rem;\\n text-align: left;\\n }\\n}\\n\\n th.sortable {\\n cursor: pointer;\\n }\\n\\n th.sortable:hover:after {\\n transition: all 1s;\\n position: absolute;\\n\\n content: '↕';\\n\\n margin-left: 1rem;\\n }\\n\\n th.sortable.asc:hover:after {\\n content: '↑';\\n }\\n th.sortable.desc:hover:after {\\n content: '↓';\\n }\\n\\n td {\\n display: flex;\\n justify-content: space-between;\\n border-bottom-width: 1px;\\n --tw-border-opacity: 1;\\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n padding-left: 1rem;\\n padding-right: 1rem;\\n text-align: right;\\n vertical-align: top;\\n}\\n\\n td:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(30 41 59 / var(--tw-border-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n @media (min-width: 1024px) {\\n\\n td {\\n display: table-cell;\\n border-bottom-width: 0px;\\n padding: 0.75rem;\\n text-align: left;\\n vertical-align: middle;\\n }\\n}\\n\\n td:last-child {\\n border-bottom-width: 0px;\\n}\\n\\n @media (min-width: 1024px) {\\n\\n tbody tr:hover,\\n tbody tr:nth-child(odd):hover {\\n background-color: rgb(247 247 252 / 0.7);\\n }\\n}\\n\\n tbody tr:nth-child(even):is(.dark *) {\\n background-color: rgb(247 247 252 / 0.7);\\n}\\n\\n @media (min-width: 1024px) {\\n\\n tbody tr:nth-child(even) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(247 247 252 / var(--tw-bg-opacity, 1));\\n }\\n}\\n\\n td:before {\\n content: attr(data-label);\\n padding-right: 0.75rem;\\n text-align: left;\\n font-weight: 600;\\n }\\n\\n @media (min-width: 1024px) {\\n\\n td:before {\\n display: none;\\n }\\n}\\n\\n tbody tr td {\\n font-size: 0.875rem;\\n line-height: 1.25rem;\\n font-weight: 400;\\n --tw-text-opacity: 1;\\n color: rgb(20 20 42 / var(--tw-text-opacity, 1));\\n}\\n\\n tbody tr td:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n .datagrid--table,\\n .MuiDataGrid-root {\\n border-radius: 0.25rem !important;\\n border-style: none !important;\\n}\\n\\n .datagrid--header {\\n text-transform: uppercase !important;\\n}\\n\\n .datagrid--header:is(.dark *),\\n .datagrid--header .MuiIconButton-root:is(.dark *),\\n .datagrid--cell:is(.dark *),\\n .datagrid--cell .MuiIconButton-root:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n .datagrid--cell .MuiDataGrid-booleanCell:is(.dark *) {\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n\\n .datagrid--cell .MuiIconButton-root:hover:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(44 47 54 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n .datagrid--row:nth-child(even) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)) !important;\\n}\\n\\n .datagrid--row:nth-child(odd):is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(19 22 24 / var(--tw-bg-opacity, 1)) !important;\\n}\\n\\n .datagrid--row:nth-child(even):is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(27 29 34 / var(--tw-bg-opacity, 1)) !important;\\n}\\n\\n .datagrid--table .MuiTablePagination-root:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n\\n .datagrid--table .MuiTablePagination-root .MuiButtonBase-root:disabled:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(44 47 54 / var(--tw-text-opacity, 1));\\n}\\n\\n .datagrid--table .MuiTablePagination-root .MuiButtonBase-root:hover:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(44 47 54 / var(--tw-bg-opacity, 1));\\n}\\n\\n .MuiButton-colorInherit {\\n --tw-text-opacity: 1 !important;\\n color: rgb(37 99 235 / var(--tw-text-opacity, 1)) !important;\\n}\\n\\n .theme-green .MuiButton-colorInherit {\\n --tw-text-opacity: 1;\\n color: rgb(20 20 42 / var(--tw-text-opacity, 1));\\n}\\n\\n .MuiButton-colorInherit:is(.dark *) {\\n --tw-text-opacity: 1 !important;\\n color: rgb(44 47 54 / var(--tw-text-opacity, 1)) !important;\\n}\\n.container {\\n width: 100%;\\n}\\n@media (min-width: 640px) {\\n\\n .container {\\n max-width: 640px;\\n }\\n}\\n@media (min-width: 768px) {\\n\\n .container {\\n max-width: 768px;\\n }\\n}\\n@media (min-width: 1024px) {\\n\\n .container {\\n max-width: 1024px;\\n }\\n}\\n@media (min-width: 1280px) {\\n\\n .container {\\n max-width: 1280px;\\n }\\n}\\n@media (min-width: 1536px) {\\n\\n .container {\\n max-width: 1536px;\\n }\\n}\\n.prose {\\n color: var(--tw-prose-body);\\n max-width: 65ch;\\n}\\n.prose :where(p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n}\\n.prose :where([class~=\\\"lead\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-lead);\\n font-size: 1.25em;\\n line-height: 1.6;\\n margin-top: 1.2em;\\n margin-bottom: 1.2em;\\n}\\n.prose :where(a):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-links);\\n text-decoration: underline;\\n font-weight: 500;\\n}\\n.prose :where(strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-bold);\\n font-weight: 600;\\n}\\n.prose :where(a strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(blockquote strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(thead th strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: decimal;\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(ol[type=\\\"A\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-alpha;\\n}\\n.prose :where(ol[type=\\\"a\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-alpha;\\n}\\n.prose :where(ol[type=\\\"A\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-alpha;\\n}\\n.prose :where(ol[type=\\\"a\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-alpha;\\n}\\n.prose :where(ol[type=\\\"I\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-roman;\\n}\\n.prose :where(ol[type=\\\"i\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-roman;\\n}\\n.prose :where(ol[type=\\\"I\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: upper-roman;\\n}\\n.prose :where(ol[type=\\\"i\\\" s]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: lower-roman;\\n}\\n.prose :where(ol[type=\\\"1\\\"]):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: decimal;\\n}\\n.prose :where(ul):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n list-style-type: disc;\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::marker {\\n font-weight: 400;\\n color: var(--tw-prose-counters);\\n}\\n.prose :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::marker {\\n color: var(--tw-prose-bullets);\\n}\\n.prose :where(dt):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n margin-top: 1.25em;\\n}\\n.prose :where(hr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-color: var(--tw-prose-hr);\\n border-top-width: 1px;\\n margin-top: 3em;\\n margin-bottom: 3em;\\n}\\n.prose :where(blockquote):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 500;\\n font-style: italic;\\n color: var(--tw-prose-quotes);\\n border-inline-start-width: 0.25rem;\\n border-inline-start-color: var(--tw-prose-quote-borders);\\n quotes: \\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\";\\n margin-top: 1.6em;\\n margin-bottom: 1.6em;\\n padding-inline-start: 1em;\\n}\\n.prose :where(blockquote p:first-of-type):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: open-quote;\\n}\\n.prose :where(blockquote p:last-of-type):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: close-quote;\\n}\\n.prose :where(h1):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 800;\\n font-size: 2.25em;\\n margin-top: 0;\\n margin-bottom: 0.8888889em;\\n line-height: 1.1111111;\\n}\\n.prose :where(h1 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 900;\\n color: inherit;\\n}\\n.prose :where(h2):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 700;\\n font-size: 1.5em;\\n margin-top: 2em;\\n margin-bottom: 1em;\\n line-height: 1.3333333;\\n}\\n.prose :where(h2 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 800;\\n color: inherit;\\n}\\n.prose :where(h3):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n font-size: 1.25em;\\n margin-top: 1.6em;\\n margin-bottom: 0.6em;\\n line-height: 1.6;\\n}\\n.prose :where(h3 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 700;\\n color: inherit;\\n}\\n.prose :where(h4):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n margin-top: 1.5em;\\n margin-bottom: 0.5em;\\n line-height: 1.5;\\n}\\n.prose :where(h4 strong):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 700;\\n color: inherit;\\n}\\n.prose :where(img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(picture):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n display: block;\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(video):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(kbd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n font-weight: 500;\\n font-family: inherit;\\n color: var(--tw-prose-kbd);\\n box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);\\n font-size: 0.875em;\\n border-radius: 0.3125rem;\\n padding-top: 0.1875em;\\n padding-inline-end: 0.375em;\\n padding-bottom: 0.1875em;\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-code);\\n font-weight: 600;\\n font-size: 0.875em;\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: \\\"`\\\";\\n}\\n.prose :where(code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: \\\"`\\\";\\n}\\n.prose :where(a code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(h1 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(h2 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n font-size: 0.875em;\\n}\\n.prose :where(h3 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n font-size: 0.9em;\\n}\\n.prose :where(h4 code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(blockquote code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(thead th code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: inherit;\\n}\\n.prose :where(pre):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-pre-code);\\n background-color: var(--tw-prose-pre-bg);\\n overflow-x: auto;\\n font-weight: 400;\\n font-size: 0.875em;\\n line-height: 1.7142857;\\n margin-top: 1.7142857em;\\n margin-bottom: 1.7142857em;\\n border-radius: 0.375rem;\\n padding-top: 0.8571429em;\\n padding-inline-end: 1.1428571em;\\n padding-bottom: 0.8571429em;\\n padding-inline-start: 1.1428571em;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n background-color: transparent;\\n border-width: 0;\\n border-radius: 0;\\n padding: 0;\\n font-weight: inherit;\\n color: inherit;\\n font-size: inherit;\\n font-family: inherit;\\n line-height: inherit;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::before {\\n content: none;\\n}\\n.prose :where(pre code):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *))::after {\\n content: none;\\n}\\n.prose :where(table):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n width: 100%;\\n table-layout: auto;\\n margin-top: 2em;\\n margin-bottom: 2em;\\n font-size: 0.875em;\\n line-height: 1.7142857;\\n}\\n.prose :where(thead):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 1px;\\n border-bottom-color: var(--tw-prose-th-borders);\\n}\\n.prose :where(thead th):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-headings);\\n font-weight: 600;\\n vertical-align: bottom;\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose :where(tbody tr):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 1px;\\n border-bottom-color: var(--tw-prose-td-borders);\\n}\\n.prose :where(tbody tr:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-bottom-width: 0;\\n}\\n.prose :where(tbody td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n vertical-align: baseline;\\n}\\n.prose :where(tfoot):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n border-top-width: 1px;\\n border-top-color: var(--tw-prose-th-borders);\\n}\\n.prose :where(tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n vertical-align: top;\\n}\\n.prose :where(th, td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n text-align: start;\\n}\\n.prose :where(figure > *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose :where(figcaption):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n color: var(--tw-prose-captions);\\n font-size: 0.875em;\\n line-height: 1.4285714;\\n margin-top: 0.8571429em;\\n}\\n.prose {\\n --tw-prose-body: #374151;\\n --tw-prose-headings: #111827;\\n --tw-prose-lead: #4b5563;\\n --tw-prose-links: #111827;\\n --tw-prose-bold: #111827;\\n --tw-prose-counters: #6b7280;\\n --tw-prose-bullets: #d1d5db;\\n --tw-prose-hr: #e5e7eb;\\n --tw-prose-quotes: #111827;\\n --tw-prose-quote-borders: #e5e7eb;\\n --tw-prose-captions: #6b7280;\\n --tw-prose-kbd: #111827;\\n --tw-prose-kbd-shadows: 17 24 39;\\n --tw-prose-code: #111827;\\n --tw-prose-pre-code: #e5e7eb;\\n --tw-prose-pre-bg: #1f2937;\\n --tw-prose-th-borders: #d1d5db;\\n --tw-prose-td-borders: #e5e7eb;\\n --tw-prose-invert-body: #d1d5db;\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: #9ca3af;\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: #9ca3af;\\n --tw-prose-invert-bullets: #4b5563;\\n --tw-prose-invert-hr: #374151;\\n --tw-prose-invert-quotes: #f3f4f6;\\n --tw-prose-invert-quote-borders: #374151;\\n --tw-prose-invert-captions: #9ca3af;\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: 255 255 255;\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: #d1d5db;\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: #4b5563;\\n --tw-prose-invert-td-borders: #374151;\\n font-size: 1rem;\\n line-height: 1.75;\\n}\\n.prose :where(picture > img):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n margin-bottom: 0;\\n}\\n.prose :where(li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n margin-bottom: 0.5em;\\n}\\n.prose :where(ol > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(ul > li):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0.375em;\\n}\\n.prose :where(.prose > ul > li p):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.75em;\\n margin-bottom: 0.75em;\\n}\\n.prose :where(.prose > ul > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose :where(.prose > ul > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose :where(.prose > ol > li > p:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n}\\n.prose :where(.prose > ol > li > p:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 1.25em;\\n}\\n.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.75em;\\n margin-bottom: 0.75em;\\n}\\n.prose :where(dl):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 1.25em;\\n margin-bottom: 1.25em;\\n}\\n.prose :where(dd):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0.5em;\\n padding-inline-start: 1.625em;\\n}\\n.prose :where(hr + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h2 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h3 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(h4 + *):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(thead th:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose :where(thead th:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose :where(tbody td, tfoot td):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-top: 0.5714286em;\\n padding-inline-end: 0.5714286em;\\n padding-bottom: 0.5714286em;\\n padding-inline-start: 0.5714286em;\\n}\\n.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-start: 0;\\n}\\n.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n padding-inline-end: 0;\\n}\\n.prose :where(figure):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 2em;\\n margin-bottom: 2em;\\n}\\n.prose :where(.prose > :first-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-top: 0;\\n}\\n.prose :where(.prose > :last-child):not(:where([class~=\\\"not-prose\\\"],[class~=\\\"not-prose\\\"] *)) {\\n margin-bottom: 0;\\n}\\n.prose-slate {\\n --tw-prose-body: #334155;\\n --tw-prose-headings: #0f172a;\\n --tw-prose-lead: #475569;\\n --tw-prose-links: #0f172a;\\n --tw-prose-bold: #0f172a;\\n --tw-prose-counters: #64748b;\\n --tw-prose-bullets: #cbd5e1;\\n --tw-prose-hr: #e2e8f0;\\n --tw-prose-quotes: #0f172a;\\n --tw-prose-quote-borders: #e2e8f0;\\n --tw-prose-captions: #64748b;\\n --tw-prose-kbd: #0f172a;\\n --tw-prose-kbd-shadows: 15 23 42;\\n --tw-prose-code: #0f172a;\\n --tw-prose-pre-code: #e2e8f0;\\n --tw-prose-pre-bg: #1e293b;\\n --tw-prose-th-borders: #cbd5e1;\\n --tw-prose-td-borders: #e2e8f0;\\n --tw-prose-invert-body: #cbd5e1;\\n --tw-prose-invert-headings: #fff;\\n --tw-prose-invert-lead: #94a3b8;\\n --tw-prose-invert-links: #fff;\\n --tw-prose-invert-bold: #fff;\\n --tw-prose-invert-counters: #94a3b8;\\n --tw-prose-invert-bullets: #475569;\\n --tw-prose-invert-hr: #334155;\\n --tw-prose-invert-quotes: #f1f5f9;\\n --tw-prose-invert-quote-borders: #334155;\\n --tw-prose-invert-captions: #94a3b8;\\n --tw-prose-invert-kbd: #fff;\\n --tw-prose-invert-kbd-shadows: 255 255 255;\\n --tw-prose-invert-code: #fff;\\n --tw-prose-invert-pre-code: #cbd5e1;\\n --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);\\n --tw-prose-invert-th-borders: #475569;\\n --tw-prose-invert-td-borders: #334155;\\n}\\n.checkbox,\\n .radio,\\n .switch {\\n position: relative;\\n display: inline-flex;\\n cursor: pointer;\\n align-items: center;\\n}\\n.checkbox input[type='checkbox'],\\n .radio input[type='radio'],\\n .switch input[type='checkbox'] {\\n position: absolute;\\n left: 0px;\\n z-index: -1;\\n opacity: 0;\\n}\\n.checkbox input[type='checkbox'] + .check,\\n .radio input[type='radio'] + .check,\\n .switch input[type='checkbox'] + .check {\\n border-width: 1px;\\n --tw-border-opacity: 1;\\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));\\n transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 200ms;\\n}\\n.checkbox input[type='checkbox'] + .check:is(.dark *),\\n .radio input[type='radio'] + .check:is(.dark *),\\n .switch input[type='checkbox'] + .check:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(30 41 59 / var(--tw-bg-opacity, 1));\\n}\\n.checkbox input[type='checkbox']:focus + .check,\\n .radio input[type='radio']:focus + .check,\\n .switch input[type='checkbox']:focus + .check {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(29 78 216 / var(--tw-ring-opacity, 1));\\n}\\n.checkbox input[type='checkbox'] + .check,\\n .radio input[type='radio'] + .check {\\n display: block;\\n height: 1.25rem;\\n width: 1.25rem;\\n}\\n.checkbox input[type='checkbox'] + .check {\\n border-radius: 0.25rem;\\n}\\n.switch input[type='checkbox'] + .check {\\n display: flex;\\n height: 1.5rem;\\n width: 3rem;\\n flex-shrink: 0;\\n align-items: center;\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n padding: 0.125rem;\\n}\\n.radio input[type='radio'] + .check,\\n .switch input[type='checkbox'] + .check,\\n .switch input[type='checkbox'] + .check:before {\\n border-radius: 9999px;\\n}\\n.checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n border-width: 4px;\\n background-position: center;\\n background-repeat: no-repeat;\\n}\\n.checkbox input[type='checkbox']:checked + .check {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3Cpath style='fill:%23fff' d='M 0.04038059,0.6267767 0.14644661,0.52071068 0.42928932,0.80355339 0.3232233,0.90961941 z M 0.21715729,0.80355339 0.85355339,0.16715729 0.95961941,0.2732233 0.3232233,0.90961941 z'%3E%3C/path%3E%3C/svg%3E\\\");\\n }\\n.radio input[type='radio']:checked + .check {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z' /%3E%3C/svg%3E\\\");\\n }\\n.switch input[type='checkbox']:checked + .check,\\n .checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n --tw-bg-opacity: 1;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));\\n}\\n.theme-pink .switch input[type='checkbox']:checked + .check,.theme-pink \\n .checkbox input[type='checkbox']:checked + .check,.theme-pink \\n .radio input[type='radio']:checked + .check {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .switch input[type='checkbox']:checked + .check,.theme-green \\n .checkbox input[type='checkbox']:checked + .check,.theme-green \\n .radio input[type='radio']:checked + .check {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.switch input[type='checkbox'] + .check:before {\\n content: '';\\n display: block;\\n height: 1.25rem;\\n width: 1.25rem;\\n border-width: 1px;\\n --tw-border-opacity: 1;\\n border-color: rgb(55 65 81 / var(--tw-border-opacity, 1));\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n }\\n.switch input[type='checkbox']:checked + .check:before {\\n transform: translate3d(110%, 0, 0);\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n }\\n.pointer-events-none {\\n pointer-events: none;\\n}\\n.static {\\n position: static;\\n}\\n.fixed {\\n position: fixed;\\n}\\n.absolute {\\n position: absolute;\\n}\\n.relative {\\n position: relative;\\n}\\n.inset-0 {\\n inset: 0px;\\n}\\n.inset-x-0 {\\n left: 0px;\\n right: 0px;\\n}\\n.-left-60 {\\n left: -15rem;\\n}\\n.bottom-2 {\\n bottom: 0.5rem;\\n}\\n.left-0 {\\n left: 0px;\\n}\\n.right-0 {\\n right: 0px;\\n}\\n.top-0 {\\n top: 0px;\\n}\\n.top-14 {\\n top: 3.5rem;\\n}\\n.-z-1 {\\n z-index: -1;\\n}\\n.z-0 {\\n z-index: 0;\\n}\\n.z-10 {\\n z-index: 10;\\n}\\n.z-20 {\\n z-index: 20;\\n}\\n.z-30 {\\n z-index: 30;\\n}\\n.z-40 {\\n z-index: 40;\\n}\\n.z-50 {\\n z-index: 50;\\n}\\n.order-first {\\n order: -9999;\\n}\\n.order-last {\\n order: 9999;\\n}\\n.col-span-1 {\\n grid-column: span 1 / span 1;\\n}\\n.col-span-2 {\\n grid-column: span 2 / span 2;\\n}\\n.col-span-full {\\n grid-column: 1 / -1;\\n}\\n.m-4 {\\n margin: 1rem;\\n}\\n.-mx-6 {\\n margin-left: -1.5rem;\\n margin-right: -1.5rem;\\n}\\n.-my-6 {\\n margin-top: -1.5rem;\\n margin-bottom: -1.5rem;\\n}\\n.mx-0 {\\n margin-left: 0px;\\n margin-right: 0px;\\n}\\n.mx-3 {\\n margin-left: 0.75rem;\\n margin-right: 0.75rem;\\n}\\n.mx-4 {\\n margin-left: 1rem;\\n margin-right: 1rem;\\n}\\n.mx-auto {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.my-2 {\\n margin-top: 0.5rem;\\n margin-bottom: 0.5rem;\\n}\\n.my-4 {\\n margin-top: 1rem;\\n margin-bottom: 1rem;\\n}\\n.my-40 {\\n margin-top: 10rem;\\n margin-bottom: 10rem;\\n}\\n.my-6 {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem;\\n}\\n.-mb-3 {\\n margin-bottom: -0.75rem;\\n}\\n.-mb-6 {\\n margin-bottom: -1.5rem;\\n}\\n.-mt-6 {\\n margin-top: -1.5rem;\\n}\\n.mb-10 {\\n margin-bottom: 2.5rem;\\n}\\n.mb-12 {\\n margin-bottom: 3rem;\\n}\\n.mb-16 {\\n margin-bottom: 4rem;\\n}\\n.mb-2 {\\n margin-bottom: 0.5rem;\\n}\\n.mb-24 {\\n margin-bottom: 6rem;\\n}\\n.mb-3 {\\n margin-bottom: 0.75rem;\\n}\\n.mb-4 {\\n margin-bottom: 1rem;\\n}\\n.mb-6 {\\n margin-bottom: 1.5rem;\\n}\\n.mb-8 {\\n margin-bottom: 2rem;\\n}\\n.me-4 {\\n margin-inline-end: 1rem;\\n}\\n.ml-2 {\\n margin-left: 0.5rem;\\n}\\n.ml-4 {\\n margin-left: 1rem;\\n}\\n.ml-60 {\\n margin-left: 15rem;\\n}\\n.ml-auto {\\n margin-left: auto;\\n}\\n.mr-2 {\\n margin-right: 0.5rem;\\n}\\n.mr-3 {\\n margin-right: 0.75rem;\\n}\\n.mr-4 {\\n margin-right: 1rem;\\n}\\n.mr-5 {\\n margin-right: 1.25rem;\\n}\\n.mr-6 {\\n margin-right: 1.5rem;\\n}\\n.mr-8 {\\n margin-right: 2rem;\\n}\\n.ms-auto {\\n margin-inline-start: auto;\\n}\\n.mt-1 {\\n margin-top: 0.25rem;\\n}\\n.mt-2 {\\n margin-top: 0.5rem;\\n}\\n.mt-3 {\\n margin-top: 0.75rem;\\n}\\n.mt-4 {\\n margin-top: 1rem;\\n}\\n.mt-6 {\\n margin-top: 1.5rem;\\n}\\n.mt-8 {\\n margin-top: 2rem;\\n}\\n.mt-auto {\\n margin-top: auto;\\n}\\n.line-clamp-1 {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 1;\\n}\\n.line-clamp-2 {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 2;\\n}\\n.line-clamp-4 {\\n overflow: hidden;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 4;\\n}\\n.block {\\n display: block;\\n}\\n.inline-block {\\n display: inline-block;\\n}\\n.flex {\\n display: flex;\\n}\\n.inline-flex {\\n display: inline-flex;\\n}\\n.table {\\n display: table;\\n}\\n.grid {\\n display: grid;\\n}\\n.hidden {\\n display: none;\\n}\\n.h-10 {\\n height: 2.5rem;\\n}\\n.h-12 {\\n height: 3rem;\\n}\\n.h-14 {\\n height: 3.5rem;\\n}\\n.h-16 {\\n height: 4rem;\\n}\\n.h-2 {\\n height: 0.5rem;\\n}\\n.h-2\\\\/3 {\\n height: 66.666667%;\\n}\\n.h-20 {\\n height: 5rem;\\n}\\n.h-24 {\\n height: 6rem;\\n}\\n.h-40 {\\n height: 10rem;\\n}\\n.h-48 {\\n height: 12rem;\\n}\\n.h-5 {\\n height: 1.25rem;\\n}\\n.h-6 {\\n height: 1.5rem;\\n}\\n.h-64 {\\n height: 16rem;\\n}\\n.h-8 {\\n height: 2rem;\\n}\\n.h-80 {\\n height: 20rem;\\n}\\n.h-96 {\\n height: 24rem;\\n}\\n.h-\\\\[600px\\\\] {\\n height: 600px;\\n}\\n.h-auto {\\n height: auto;\\n}\\n.h-fit {\\n height: -moz-fit-content;\\n height: fit-content;\\n}\\n.h-full {\\n height: 100%;\\n}\\n.h-screen {\\n height: 100vh;\\n}\\n.max-h-0 {\\n max-height: 0px;\\n}\\n.max-h-96 {\\n max-height: 24rem;\\n}\\n.max-h-\\\\[400px\\\\] {\\n max-height: 400px;\\n}\\n.max-h-full {\\n max-height: 100%;\\n}\\n.max-h-modal {\\n max-height: calc(100vh - 160px);\\n}\\n.max-h-screen-menu {\\n max-height: calc(100vh - 3.5rem);\\n}\\n.min-h-\\\\[400px\\\\] {\\n min-height: 400px;\\n}\\n.min-h-screen {\\n min-height: 100vh;\\n}\\n.w-1\\\\/2 {\\n width: 50%;\\n}\\n.w-1\\\\/3 {\\n width: 33.333333%;\\n}\\n.w-1\\\\/4 {\\n width: 25%;\\n}\\n.w-10 {\\n width: 2.5rem;\\n}\\n.w-11\\\\/12 {\\n width: 91.666667%;\\n}\\n.w-12 {\\n width: 3rem;\\n}\\n.w-16 {\\n width: 4rem;\\n}\\n.w-2 {\\n width: 0.5rem;\\n}\\n.w-2\\\\/3 {\\n width: 66.666667%;\\n}\\n.w-2\\\\/5 {\\n width: 40%;\\n}\\n.w-20 {\\n width: 5rem;\\n}\\n.w-24 {\\n width: 6rem;\\n}\\n.w-40 {\\n width: 10rem;\\n}\\n.w-5 {\\n width: 1.25rem;\\n}\\n.w-5\\\\/6 {\\n width: 83.333333%;\\n}\\n.w-6 {\\n width: 1.5rem;\\n}\\n.w-60 {\\n width: 15rem;\\n}\\n.w-72 {\\n width: 18rem;\\n}\\n.w-8 {\\n width: 2rem;\\n}\\n.w-80 {\\n width: 20rem;\\n}\\n.w-auto {\\n width: auto;\\n}\\n.w-full {\\n width: 100%;\\n}\\n.w-screen {\\n width: 100vw;\\n}\\n.max-w-full {\\n max-width: 100%;\\n}\\n.max-w-lg {\\n max-width: 32rem;\\n}\\n.max-w-none {\\n max-width: none;\\n}\\n.max-w-screen-md {\\n max-width: 768px;\\n}\\n.flex-1 {\\n flex: 1 1 0%;\\n}\\n.flex-none {\\n flex: none;\\n}\\n.flex-shrink-0 {\\n flex-shrink: 0;\\n}\\n.flex-grow {\\n flex-grow: 1;\\n}\\n.flex-grow-0 {\\n flex-grow: 0;\\n}\\n.grow {\\n flex-grow: 1;\\n}\\n.-translate-x-1\\\\/4 {\\n --tw-translate-x: -25%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.translate-x-1\\\\/4 {\\n --tw-translate-x: 25%;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.scale-90 {\\n --tw-scale-x: .9;\\n --tw-scale-y: .9;\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n.transform {\\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\\n}\\n@keyframes spin {\\n\\n to {\\n transform: rotate(360deg);\\n }\\n}\\n.animate-spin {\\n animation: spin 1s linear infinite;\\n}\\n.cursor-grab {\\n cursor: grab;\\n}\\n.cursor-grabbing {\\n cursor: grabbing;\\n}\\n.cursor-not-allowed {\\n cursor: not-allowed;\\n}\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n.auto-cols-min {\\n grid-auto-columns: min-content;\\n}\\n.grid-flow-col {\\n grid-auto-flow: column;\\n}\\n.grid-flow-dense {\\n grid-auto-flow: dense;\\n}\\n.grid-cols-1 {\\n grid-template-columns: repeat(1, minmax(0, 1fr));\\n}\\n.grid-cols-6 {\\n grid-template-columns: repeat(6, minmax(0, 1fr));\\n}\\n.grid-rows-1 {\\n grid-template-rows: repeat(1, minmax(0, 1fr));\\n}\\n.flex-row {\\n flex-direction: row;\\n}\\n.flex-row-reverse {\\n flex-direction: row-reverse;\\n}\\n.flex-col {\\n flex-direction: column;\\n}\\n.flex-wrap {\\n flex-wrap: wrap;\\n}\\n.flex-nowrap {\\n flex-wrap: nowrap;\\n}\\n.items-start {\\n align-items: flex-start;\\n}\\n.items-center {\\n align-items: center;\\n}\\n.items-stretch {\\n align-items: stretch;\\n}\\n.justify-start {\\n justify-content: flex-start;\\n}\\n.justify-end {\\n justify-content: flex-end;\\n}\\n.justify-center {\\n justify-content: center;\\n}\\n.justify-between {\\n justify-content: space-between;\\n}\\n.justify-around {\\n justify-content: space-around;\\n}\\n.gap-12 {\\n gap: 3rem;\\n}\\n.gap-3 {\\n gap: 0.75rem;\\n}\\n.gap-4 {\\n gap: 1rem;\\n}\\n.gap-6 {\\n gap: 1.5rem;\\n}\\n.gap-8 {\\n gap: 2rem;\\n}\\n.gap-x-2 {\\n -moz-column-gap: 0.5rem;\\n column-gap: 0.5rem;\\n}\\n.gap-x-3 {\\n -moz-column-gap: 0.75rem;\\n column-gap: 0.75rem;\\n}\\n.gap-x-4 {\\n -moz-column-gap: 1rem;\\n column-gap: 1rem;\\n}\\n.gap-x-6 {\\n -moz-column-gap: 1.5rem;\\n column-gap: 1.5rem;\\n}\\n.gap-y-8 {\\n row-gap: 2rem;\\n}\\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\\n}\\n.space-y-12 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(3rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(3rem * var(--tw-space-y-reverse));\\n}\\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\\n}\\n.space-y-3 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));\\n}\\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\\n}\\n.space-y-6 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));\\n}\\n.space-y-8 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(2rem * var(--tw-space-y-reverse));\\n}\\n.divide-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-x-reverse: 0;\\n border-right-width: calc(2px * var(--tw-divide-x-reverse));\\n border-left-width: calc(2px * calc(1 - var(--tw-divide-x-reverse)));\\n}\\n.divide-y > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-y-reverse: 0;\\n border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\\n border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\\n}\\n.divide-stone-300 > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-opacity: 1;\\n border-color: rgb(214 211 209 / var(--tw-divide-opacity, 1));\\n}\\n.self-center {\\n align-self: center;\\n}\\n.overflow-hidden {\\n overflow: hidden;\\n}\\n.overflow-x-auto {\\n overflow-x: auto;\\n}\\n.overflow-y-auto {\\n overflow-y: auto;\\n}\\n.overflow-x-hidden {\\n overflow-x: hidden;\\n}\\n.overflow-y-hidden {\\n overflow-y: hidden;\\n}\\n.truncate {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n.text-ellipsis {\\n text-overflow: ellipsis;\\n}\\n.whitespace-nowrap {\\n white-space: nowrap;\\n}\\n.rounded {\\n border-radius: 0.25rem;\\n}\\n.rounded-3xl {\\n border-radius: 2rem;\\n}\\n.rounded-full {\\n border-radius: 9999px;\\n}\\n.rounded-lg {\\n border-radius: 0.5rem;\\n}\\n.rounded-md {\\n border-radius: 0.375rem;\\n}\\n.rounded-none {\\n border-radius: 0px;\\n}\\n.rounded-sm {\\n border-radius: 0.125rem;\\n}\\n.rounded-xl {\\n border-radius: 0.75rem;\\n}\\n.rounded-l {\\n border-top-left-radius: 0.25rem;\\n border-bottom-left-radius: 0.25rem;\\n}\\n.rounded-l-2xl {\\n border-top-left-radius: 1rem;\\n border-bottom-left-radius: 1rem;\\n}\\n.rounded-l-lg {\\n border-top-left-radius: 0.5rem;\\n border-bottom-left-radius: 0.5rem;\\n}\\n.rounded-l-md {\\n border-top-left-radius: 0.375rem;\\n border-bottom-left-radius: 0.375rem;\\n}\\n.rounded-l-sm {\\n border-top-left-radius: 0.125rem;\\n border-bottom-left-radius: 0.125rem;\\n}\\n.rounded-l-xl {\\n border-top-left-radius: 0.75rem;\\n border-bottom-left-radius: 0.75rem;\\n}\\n.rounded-r {\\n border-top-right-radius: 0.25rem;\\n border-bottom-right-radius: 0.25rem;\\n}\\n.rounded-r-2xl {\\n border-top-right-radius: 1rem;\\n border-bottom-right-radius: 1rem;\\n}\\n.rounded-r-3xl {\\n border-top-right-radius: 2rem;\\n border-bottom-right-radius: 2rem;\\n}\\n.rounded-r-lg {\\n border-top-right-radius: 0.5rem;\\n border-bottom-right-radius: 0.5rem;\\n}\\n.rounded-r-none {\\n border-top-right-radius: 0px;\\n border-bottom-right-radius: 0px;\\n}\\n.border {\\n border-width: 1px;\\n}\\n.border-0 {\\n border-width: 0px;\\n}\\n.border-2 {\\n border-width: 2px;\\n}\\n.border-4 {\\n border-width: 4px;\\n}\\n.border-b {\\n border-bottom-width: 1px;\\n}\\n.border-b-0 {\\n border-bottom-width: 0px;\\n}\\n.border-b-2 {\\n border-bottom-width: 2px;\\n}\\n.border-t {\\n border-top-width: 1px;\\n}\\n.border-solid {\\n border-style: solid;\\n}\\n.border-dashed {\\n border-style: dashed;\\n}\\n.border-blue-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));\\n}\\n.border-blue-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n}\\n.border-blue-700 {\\n --tw-border-opacity: 1;\\n border-color: rgb(29 78 216 / var(--tw-border-opacity, 1));\\n}\\n.border-dark-700 {\\n --tw-border-opacity: 1;\\n border-color: rgb(44 47 54 / var(--tw-border-opacity, 1));\\n}\\n.border-emerald-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(16 185 129 / var(--tw-border-opacity, 1));\\n}\\n.border-emerald-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(5 150 105 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-100 {\\n --tw-border-opacity: 1;\\n border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-300 {\\n --tw-border-opacity: 1;\\n border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-300\\\\/10 {\\n border-color: rgb(209 213 219 / 0.1);\\n}\\n.border-gray-400 {\\n --tw-border-opacity: 1;\\n border-color: rgb(156 163 175 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-800 {\\n --tw-border-opacity: 1;\\n border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-900 {\\n --tw-border-opacity: 1;\\n border-color: rgb(17 24 39 / var(--tw-border-opacity, 1));\\n}\\n.border-gray-900\\\\/5 {\\n border-color: rgb(17 24 39 / 0.05);\\n}\\n.border-neutral-900\\\\/10 {\\n border-color: rgb(23 23 23 / 0.1);\\n}\\n.border-pavitra-400 {\\n --tw-border-opacity: 1;\\n border-color: rgb(239 240 246 / var(--tw-border-opacity, 1));\\n}\\n.border-pavitra-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(160 163 189 / var(--tw-border-opacity, 1));\\n}\\n.border-pavitra-900 {\\n --tw-border-opacity: 1;\\n border-color: rgb(20 20 42 / var(--tw-border-opacity, 1));\\n}\\n.border-pavitra-blue {\\n --tw-border-opacity: 1;\\n border-color: rgb(1 98 253 / var(--tw-border-opacity, 1));\\n}\\n.border-red-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\\n}\\n.border-red-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(220 38 38 / var(--tw-border-opacity, 1));\\n}\\n.border-stone-300 {\\n --tw-border-opacity: 1;\\n border-color: rgb(214 211 209 / var(--tw-border-opacity, 1));\\n}\\n.border-white {\\n --tw-border-opacity: 1;\\n border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.border-yellow-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(234 179 8 / var(--tw-border-opacity, 1));\\n}\\n.border-yellow-600 {\\n --tw-border-opacity: 1;\\n border-color: rgb(202 138 4 / var(--tw-border-opacity, 1));\\n}\\n.border-t-transparent {\\n border-top-color: transparent;\\n}\\n.bg-black {\\n --tw-bg-opacity: 1;\\n background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));\\n}\\n.bg-blue-300\\\\/20 {\\n background-color: rgb(147 197 253 / 0.2);\\n}\\n.bg-blue-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));\\n}\\n.bg-blue-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));\\n}\\n.bg-blue-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1));\\n}\\n.bg-emerald-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));\\n}\\n.bg-emerald-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(5 150 105 / var(--tw-bg-opacity, 1));\\n}\\n.bg-emerald-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(4 120 87 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-100\\\\/70 {\\n background-color: rgb(243 244 246 / 0.7);\\n}\\n.bg-gray-100\\\\/75 {\\n background-color: rgb(243 244 246 / 0.75);\\n}\\n.bg-gray-200 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-700\\\\/50 {\\n background-color: rgb(55 65 81 / 0.5);\\n}\\n.bg-gray-800 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\\n}\\n.bg-gray-900 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\\n}\\n.bg-red-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));\\n}\\n.bg-slate-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));\\n}\\n.bg-transparent {\\n background-color: transparent;\\n}\\n.bg-violet-50\\\\/50 {\\n background-color: rgb(245 243 255 / 0.5);\\n}\\n.bg-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-500 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));\\n}\\n.bg-yellow-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(161 98 7 / var(--tw-bg-opacity, 1));\\n}\\n.bg-opacity-25 {\\n --tw-bg-opacity: 0.25;\\n}\\n.bg-gradient-to-b {\\n background-image: linear-gradient(to bottom, var(--tw-gradient-stops));\\n}\\n.bg-gradient-to-tr {\\n background-image: linear-gradient(to top right, var(--tw-gradient-stops));\\n}\\n.from-blue-700 {\\n --tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-dark-700 {\\n --tw-gradient-from: #2C2F36 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(44 47 54 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-gray-700 {\\n --tw-gradient-from: #374151 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-pink-400 {\\n --tw-gradient-from: #f472b6 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(244 114 182 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-purple-400 {\\n --tw-gradient-from: #c084fc var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(192 132 252 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.from-white {\\n --tw-gradient-from: #fff var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.via-dark-900 {\\n --tw-gradient-to: rgb(19 22 24 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #131618 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.via-gray-100 {\\n --tw-gradient-to: rgb(243 244 246 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #f3f4f6 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.via-gray-900 {\\n --tw-gradient-to: rgb(17 24 39 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #111827 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.via-pink-500 {\\n --tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #ec4899 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.via-red-500 {\\n --tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #ef4444 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.to-dark-800 {\\n --tw-gradient-to: #21242A var(--tw-gradient-to-position);\\n}\\n.to-gray-700 {\\n --tw-gradient-to: #374151 var(--tw-gradient-to-position);\\n}\\n.to-red-500 {\\n --tw-gradient-to: #ef4444 var(--tw-gradient-to-position);\\n}\\n.to-transparent {\\n --tw-gradient-to: transparent var(--tw-gradient-to-position);\\n}\\n.to-white {\\n --tw-gradient-to: #fff var(--tw-gradient-to-position);\\n}\\n.to-yellow-500 {\\n --tw-gradient-to: #eab308 var(--tw-gradient-to-position);\\n}\\n.bg-cover {\\n background-size: cover;\\n}\\n.bg-center {\\n background-position: center;\\n}\\n.object-cover {\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n.object-center {\\n -o-object-position: center;\\n object-position: center;\\n}\\n.p-1 {\\n padding: 0.25rem;\\n}\\n.p-12 {\\n padding: 3rem;\\n}\\n.p-16 {\\n padding: 4rem;\\n}\\n.p-2 {\\n padding: 0.5rem;\\n}\\n.p-3 {\\n padding: 0.75rem;\\n}\\n.p-4 {\\n padding: 1rem;\\n}\\n.p-6 {\\n padding: 1.5rem;\\n}\\n.p-8 {\\n padding: 2rem;\\n}\\n.px-0 {\\n padding-left: 0px;\\n padding-right: 0px;\\n}\\n.px-1 {\\n padding-left: 0.25rem;\\n padding-right: 0.25rem;\\n}\\n.px-2 {\\n padding-left: 0.5rem;\\n padding-right: 0.5rem;\\n}\\n.px-3 {\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n}\\n.px-4 {\\n padding-left: 1rem;\\n padding-right: 1rem;\\n}\\n.px-6 {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n}\\n.py-1 {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem;\\n}\\n.py-1\\\\.5 {\\n padding-top: 0.375rem;\\n padding-bottom: 0.375rem;\\n}\\n.py-2 {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n}\\n.py-24 {\\n padding-top: 6rem;\\n padding-bottom: 6rem;\\n}\\n.py-3 {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n}\\n.py-4 {\\n padding-top: 1rem;\\n padding-bottom: 1rem;\\n}\\n.py-6 {\\n padding-top: 1.5rem;\\n padding-bottom: 1.5rem;\\n}\\n.py-8 {\\n padding-top: 2rem;\\n padding-bottom: 2rem;\\n}\\n.pb-14 {\\n padding-bottom: 3.5rem;\\n}\\n.pb-2 {\\n padding-bottom: 0.5rem;\\n}\\n.pb-24 {\\n padding-bottom: 6rem;\\n}\\n.pb-6 {\\n padding-bottom: 1.5rem;\\n}\\n.pb-8 {\\n padding-bottom: 2rem;\\n}\\n.pl-10 {\\n padding-left: 2.5rem;\\n}\\n.pl-2 {\\n padding-left: 0.5rem;\\n}\\n.pr-12 {\\n padding-right: 3rem;\\n}\\n.pt-14 {\\n padding-top: 3.5rem;\\n}\\n.pt-4 {\\n padding-top: 1rem;\\n}\\n.pt-5 {\\n padding-top: 1.25rem;\\n}\\n.pt-6 {\\n padding-top: 1.5rem;\\n}\\n.text-left {\\n text-align: left;\\n}\\n.text-center {\\n text-align: center;\\n}\\n.text-2xl {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n}\\n.text-3xl {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n}\\n.text-4xl {\\n font-size: 2.25rem;\\n line-height: 2.5rem;\\n}\\n.text-5xl {\\n font-size: 3rem;\\n line-height: 1;\\n}\\n.text-7xl {\\n font-size: 4.5rem;\\n line-height: 1;\\n}\\n.text-\\\\[10px\\\\] {\\n font-size: 10px;\\n}\\n.text-\\\\[8px\\\\] {\\n font-size: 8px;\\n}\\n.text-base {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n}\\n.text-lg {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n}\\n.text-sm {\\n font-size: 0.875rem;\\n line-height: 1.25rem;\\n}\\n.text-xl {\\n font-size: 1.25rem;\\n line-height: 1.75rem;\\n}\\n.text-xs {\\n font-size: 0.75rem;\\n line-height: 1rem;\\n}\\n.font-black {\\n font-weight: 900;\\n}\\n.font-bold {\\n font-weight: 700;\\n}\\n.font-light {\\n font-weight: 300;\\n}\\n.font-medium {\\n font-weight: 500;\\n}\\n.font-normal {\\n font-weight: 400;\\n}\\n.font-semibold {\\n font-weight: 600;\\n}\\n.uppercase {\\n text-transform: uppercase;\\n}\\n.capitalize {\\n text-transform: capitalize;\\n}\\n.italic {\\n font-style: italic;\\n}\\n.leading-6 {\\n line-height: 1.5rem;\\n}\\n.leading-9 {\\n line-height: 2.25rem;\\n}\\n.leading-tight {\\n line-height: 1.25;\\n}\\n.text-black {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n}\\n.text-blue-500 {\\n --tw-text-opacity: 1;\\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\\n}\\n.text-blue-600 {\\n --tw-text-opacity: 1;\\n color: rgb(37 99 235 / var(--tw-text-opacity, 1));\\n}\\n.text-blue-700 {\\n --tw-text-opacity: 1;\\n color: rgb(29 78 216 / var(--tw-text-opacity, 1));\\n}\\n.text-emerald-500 {\\n --tw-text-opacity: 1;\\n color: rgb(16 185 129 / var(--tw-text-opacity, 1));\\n}\\n.text-emerald-600 {\\n --tw-text-opacity: 1;\\n color: rgb(5 150 105 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-100 {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-300 {\\n --tw-text-opacity: 1;\\n color: rgb(209 213 219 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-500 {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity, 1));\\n}\\n.text-gray-700 {\\n --tw-text-opacity: 1;\\n color: rgb(55 65 81 / var(--tw-text-opacity, 1));\\n}\\n.text-green-500 {\\n --tw-text-opacity: 1;\\n color: rgb(34 197 94 / var(--tw-text-opacity, 1));\\n}\\n.text-green-text {\\n --tw-text-opacity: 1;\\n color: rgb(69 178 107 / var(--tw-text-opacity, 1));\\n}\\n.text-pavitra-600 {\\n --tw-text-opacity: 1;\\n color: rgb(160 163 189 / var(--tw-text-opacity, 1));\\n}\\n.text-pavitra-900 {\\n --tw-text-opacity: 1;\\n color: rgb(20 20 42 / var(--tw-text-opacity, 1));\\n}\\n.text-pavitra-blue {\\n --tw-text-opacity: 1;\\n color: rgb(1 98 253 / var(--tw-text-opacity, 1));\\n}\\n.text-red-400 {\\n --tw-text-opacity: 1;\\n color: rgb(248 113 113 / var(--tw-text-opacity, 1));\\n}\\n.text-red-500 {\\n --tw-text-opacity: 1;\\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\\n}\\n.text-red-600 {\\n --tw-text-opacity: 1;\\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\\n}\\n.text-white {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.text-yellow-500 {\\n --tw-text-opacity: 1;\\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\\n}\\n.text-yellow-600 {\\n --tw-text-opacity: 1;\\n color: rgb(202 138 4 / var(--tw-text-opacity, 1));\\n}\\n.underline {\\n -webkit-text-decoration-line: underline;\\n text-decoration-line: underline;\\n}\\n.placeholder-white::-moz-placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-placeholder-opacity, 1));\\n}\\n.placeholder-white::placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-placeholder-opacity, 1));\\n}\\n.opacity-0 {\\n opacity: 0;\\n}\\n.opacity-100 {\\n opacity: 1;\\n}\\n.opacity-25 {\\n opacity: 0.25;\\n}\\n.opacity-50 {\\n opacity: 0.5;\\n}\\n.opacity-60 {\\n opacity: 0.6;\\n}\\n.opacity-70 {\\n opacity: 0.7;\\n}\\n.opacity-90 {\\n opacity: 0.9;\\n}\\n.shadow {\\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.shadow-2xl {\\n --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.shadow-lg {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.shadow-md {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.shadow-none {\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.outline-none {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n.outline {\\n outline-style: solid;\\n}\\n.ring {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-1 {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.ring-blue-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1));\\n}\\n.ring-emerald-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(110 231 183 / var(--tw-ring-opacity, 1));\\n}\\n.ring-gray-200 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(229 231 235 / var(--tw-ring-opacity, 1));\\n}\\n.ring-gray-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity, 1));\\n}\\n.ring-gray-900\\\\/10 {\\n --tw-ring-color: rgb(17 24 39 / 0.1);\\n}\\n.ring-red-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(252 165 165 / var(--tw-ring-opacity, 1));\\n}\\n.ring-yellow-300 {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(253 224 71 / var(--tw-ring-opacity, 1));\\n}\\n.blur-lg {\\n --tw-blur: blur(16px);\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.filter {\\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\\n}\\n.transition-all {\\n transition-property: all;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-colors {\\n transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-position {\\n transition-property: right, left, top, bottom, margin, padding;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-shadow {\\n transition-property: box-shadow;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.transition-transform {\\n transition-property: transform;\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n transition-duration: 150ms;\\n}\\n.duration-150 {\\n transition-duration: 150ms;\\n}\\n.duration-500 {\\n transition-duration: 500ms;\\n}\\n.ease-in-out {\\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\\n}\\n.aside-scrollbars-\\\\[slate\\\\] {\\n scrollbar-width: thin;\\n scrollbar-color: #475569 #0f172a;\\n}\\n.aside-scrollbars-\\\\[slate\\\\]::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n.aside-scrollbars-\\\\[slate\\\\]::-webkit-scrollbar-track {\\n background-color: #0f172a;\\n}\\n.aside-scrollbars-\\\\[slate\\\\]::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n background-color: #475569;\\n}\\n.aside-scrollbars-gray {\\n scrollbar-width: thin;\\n scrollbar-color: #4b5563 #111827;\\n}\\n.aside-scrollbars-gray::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n.aside-scrollbars-gray::-webkit-scrollbar-track {\\n background-color: #111827;\\n}\\n.aside-scrollbars-gray::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n background-color: #4b5563;\\n}\\n.aside-scrollbars-light {\\n scrollbar-width: thin;\\n scrollbar-color: #d1d5db #f3f4f6;\\n}\\n.aside-scrollbars-light::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n.aside-scrollbars-light::-webkit-scrollbar-track {\\n background-color: #f3f4f6;\\n}\\n.aside-scrollbars-light::-webkit-scrollbar-thumb {\\n border-radius: 0.25rem;\\n background-color: #d1d5db;\\n}\\n.dark-scrollbars-compat {\\n scrollbar-color: rgb(71, 85, 105) rgb(30, 41, 59);\\n }\\n.dark-scrollbars::-webkit-scrollbar-track {\\n --tw-bg-opacity: 1;\\n background-color: rgb(30 41 59 / var(--tw-bg-opacity, 1));\\n}\\n.dark-scrollbars::-webkit-scrollbar-thumb {\\n --tw-bg-opacity: 1;\\n background-color: rgb(71 85 105 / var(--tw-bg-opacity, 1));\\n}\\n.dark-scrollbars::-webkit-scrollbar-thumb:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(100 116 139 / var(--tw-bg-opacity, 1));\\n}\\n.introjs-overlay{position:absolute;box-sizing:content-box;z-index:999999;opacity:0;transition:all .3s ease-out}\\n.introjs-showElement{z-index:9999999!important}\\ntr.introjs-showElement>td{z-index:9999999!important;position:relative}\\ntr.introjs-showElement>th{z-index:9999999!important;position:relative}\\n.introjs-disableInteraction{z-index:99999999!important;position:absolute;background-color:#fff;opacity:0}\\n.introjs-relativePosition{position:relative}\\n.introjs-helperLayer{box-sizing:content-box;position:absolute;z-index:9999998;border-radius:4px;transition:all .3s ease-out}\\n.introjs-helperLayer *{box-sizing:content-box}\\n.introjs-helperLayer :before{box-sizing:content-box}\\n.introjs-helperLayer :after{box-sizing:content-box}\\n.introjs-tooltipReferenceLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;box-sizing:content-box;position:absolute;visibility:hidden;z-index:100000000;background-color:transparent;transition:all .3s ease-out}\\n.introjs-tooltipReferenceLayer *{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif}\\n.introjs-helperNumberLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;color:#9e9e9e;text-align:center;padding-top:10px;padding-bottom:10px}\\n.introjs-arrow{border:5px solid transparent;content:\\\"\\\";position:absolute}\\n.introjs-arrow.top{top:-10px;left:10px;border-bottom-color:#fff}\\n.introjs-arrow.top-right{top:-10px;right:10px;border-bottom-color:#fff}\\n.introjs-arrow.top-middle{top:-10px;left:50%;margin-left:-5px;border-bottom-color:#fff}\\n.introjs-arrow.right{right:-10px;top:10px;border-left-color:#fff}\\n.introjs-arrow.right-bottom{bottom:10px;right:-10px;border-left-color:#fff}\\n.introjs-arrow.bottom{bottom:-10px;left:10px;border-top-color:#fff}\\n.introjs-arrow.bottom-right{bottom:-10px;right:10px;border-top-color:#fff}\\n.introjs-arrow.bottom-middle{bottom:-10px;left:50%;margin-left:-5px;border-top-color:#fff}\\n.introjs-arrow.left{left:-10px;top:10px;border-right-color:#fff}\\n.introjs-arrow.left-bottom{left:-10px;bottom:10px;border-right-color:#fff}\\n.introjs-tooltip{box-sizing:content-box;position:absolute;visibility:visible;background-color:#fff;min-width:250px;max-width:300px;border-radius:5px;box-shadow:0 3px 30px rgba(33,33,33,.3);transition:opacity .1s ease-out}\\n.introjs-tooltiptext{padding:20px}\\n.introjs-dontShowAgain{padding-left:20px;padding-right:20px}\\n.introjs-dontShowAgain input{padding:0;margin:0;margin-bottom:2px;display:inline;width:10px;height:10px}\\n.introjs-dontShowAgain label{font-size:14px;display:inline-block;font-weight:400;margin:0 0 0 5px;padding:0;background-color:#fff;color:#616161;-webkit-user-select:none;-moz-user-select:none;user-select:none}\\n.introjs-tooltip-title{font-size:18px;width:90%;min-height:1.5em;margin:0;padding:0;font-weight:700;line-height:1.5}\\n.introjs-tooltip-header{position:relative;padding-left:20px;padding-right:20px;padding-top:10px;min-height:1.5em}\\n.introjs-tooltipbuttons{border-top:1px solid #e0e0e0;padding:10px;text-align:right;white-space:nowrap}\\n.introjs-tooltipbuttons:after{content:\\\"\\\";visibility:hidden;display:block;height:0;clear:both}\\n.introjs-button{box-sizing:content-box;position:relative;overflow:visible;padding:.5rem 1rem;border:1px solid #bdbdbd;text-decoration:none;text-shadow:1px 1px 0 #fff;font-size:14px;color:#424242;white-space:nowrap;cursor:pointer;outline:0;background-color:#f4f4f4;border-radius:.2em;zoom:1;display:inline}\\n.introjs-button:hover{outline:0;text-decoration:none;border-color:#9e9e9e;background-color:#e0e0e0;color:#212121}\\n.introjs-button:focus{outline:0;text-decoration:none;background-color:#eee;box-shadow:0 0 0 .2rem rgba(158,158,158,.5);border:1px solid #616161;color:#212121}\\n.introjs-button:active{outline:0;text-decoration:none;background-color:#e0e0e0;border-color:#9e9e9e;color:#212121}\\n.introjs-button::-moz-focus-inner{padding:0;border:0}\\n.introjs-skipbutton{position:absolute;top:0;right:0;display:inline-block;width:45px;height:45px;line-height:45px;color:#616161;font-size:22px;cursor:pointer;font-weight:700;text-align:center;text-decoration:none}\\n.introjs-skipbutton:focus,.introjs-skipbutton:hover{color:#212121;outline:0;text-decoration:none}\\n.introjs-prevbutton{float:left}\\n.introjs-nextbutton{float:right}\\n.introjs-disabled{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}\\n.introjs-disabled:focus,.introjs-disabled:hover{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}\\n.introjs-hidden{display:none}\\n.introjs-bullets{text-align:center;padding-top:10px;padding-bottom:10px}\\n.introjs-bullets ul{box-sizing:content-box;clear:both;margin:0 auto 0;padding:0;display:inline-block}\\n.introjs-bullets ul li{box-sizing:content-box;list-style:none;float:left;margin:0 2px}\\n.introjs-bullets ul li a{transition:width .1s ease-in;box-sizing:content-box;display:block;width:6px;height:6px;background:#ccc;border-radius:10px;text-decoration:none;cursor:pointer}\\n.introjs-bullets ul li a:focus,.introjs-bullets ul li a:hover{width:15px;background:#999;text-decoration:none;outline:0}\\n.introjs-bullets ul li a.active{width:15px;background:#999}\\n.introjs-progress{box-sizing:content-box;overflow:hidden;height:10px;margin:10px;border-radius:4px;background-color:#e0e0e0}\\n.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;font-size:10px;line-height:10px;text-align:center;background-color:#08c}\\n.introjsFloatingElement{position:absolute;height:0;width:0;left:50%;top:50%}\\n.introjs-fixedTooltip{position:fixed}\\n.introjs-hint{box-sizing:content-box;position:absolute;background:0 0;width:20px;height:15px;cursor:pointer}\\n.introjs-hint:focus{border:0;outline:0}\\n.introjs-hint:hover>.introjs-hint-pulse{background-color:rgba(60,60,60,.57)}\\n.introjs-hidehint{display:none}\\n.introjs-fixedhint{position:fixed}\\n@keyframes introjspulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(0,0,0,.7)}70%{transform:scale(1);box-shadow:0 0 0 10px transparent}100%{transform:scale(.95);box-shadow:0 0 0 0 transparent}}\\n.introjs-hint-pulse{box-sizing:content-box;width:15px;height:15px;border-radius:30px;background-color:rgba(136,136,136,.24);z-index:10;position:absolute;transition:all .2s ease-out;animation:introjspulse 2s infinite}\\n.introjs-hint-no-anim .introjs-hint-pulse{animation:none}\\n.introjs-hint-dot{box-sizing:content-box;background:0 0;border-radius:60px;height:50px;width:50px;position:absolute;top:-18px;left:-18px;z-index:1;opacity:0}\\n.helper-container {\\n right: 0;\\n top: 70px;\\n transform: translateX(100%);\\n}\\n.helper-container .tab {\\n top: 0;\\n left: 0;\\n transform: translateX(-100%);\\n }\\n.helper-container .tab:hover {\\n cursor: pointer;\\n --tw-bg-opacity: 1;\\n background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));\\n}\\n.helper-container.open {\\n transform: translateX(0);\\n}\\n.react-datepicker-wrapper,\\n.react-datepicker-popper {\\n z-index: 10 !important;\\n}\\n.rbc-event {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.theme-pink .rbc-event {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .rbc-event {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.rbc-show-more {\\n background-color: transparent !important;\\n}\\n.rbc-show-more:is(.dark *) {\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.rbc-btn-group button:is(.dark *) {\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.rbc-btn-group button:hover {\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.rbc-btn-group button:hover:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(44 47 54 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.rbc-btn-group button.rbc-active {\\n --tw-text-opacity: 1 !important;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1)) !important;\\n}\\n.rbc-btn-group button.rbc-active:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.rbc-btn-group button:focus:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.rbc-day-bg.rbc-off-range-bg:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.rbc-current-time-indicator {\\n height: 0.25rem !important;\\n}\\n.rbc-today:is(.dark *) {\\n background-color: rgb(156 163 175 / 0.4) !important;\\n}\\n.rbc-day-bg.rbc-selected-cell:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(203 213 225 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__control:is(.dark *) {\\n --tw-border-opacity: 1 !important;\\n border-color: rgb(44 47 54 / var(--tw-border-opacity, 1)) !important;\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__single-value:is(.dark *) {\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.react-select__menu:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(44 47 54 / var(--tw-border-opacity, 1));\\n}\\n.react-select__menu-list:is(.dark *) {\\n border-radius: 0.25rem !important;\\n --tw-border-opacity: 1 !important;\\n border-color: rgb(44 47 54 / var(--tw-border-opacity, 1)) !important;\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__option {\\n cursor: pointer !important;\\n}\\n.react-select__option:hover {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__option:hover:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(44 47 54 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__option--is-focused:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1)) !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.react-select__option--is-focused:is(.dark *):hover {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(44 47 54 / var(--tw-bg-opacity, 1)) !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.react-select__option--is-selected:is(.dark *),\\n.react-select__option--is-selected:hover:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.react-select__multi-value__remove:is(.dark *) {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(156 163 175 / var(--tw-bg-opacity, 1)) !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.react-select__multi-value__remove:is(.dark *):hover {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(252 165 165 / var(--tw-bg-opacity, 1)) !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(220 38 38 / var(--tw-text-opacity, 1)) !important;\\n}\\n.theme-pink .app-sidebar {\\n --tw-bg-opacity: 1;\\n background-color: rgb(20 20 42 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.theme-pink .app-sidebar .menu-title,\\n .theme-pink .app-sidebar .menu-item-icon,\\n .theme-pink .app-sidebar .menu-item-link {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.theme-pink .app-sidebar-brand {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.theme-pink .bg-blue-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-pink .border-blue-700 {\\n --tw-border-opacity: 1;\\n border-color: rgb(190 24 93 / var(--tw-border-opacity, 1));\\n}\\n.theme-pink .checkbox input[type='checkbox']:checked + .check,\\n .theme-pink .radio input[type='radio']:checked + .check {\\n --tw-border-opacity: 1;\\n border-color: rgb(78 75 102 / var(--tw-border-opacity, 1));\\n}\\n.theme-pink .helper-container .tab {\\n --tw-bg-opacity: 1;\\n background-color: rgb(20 20 42 / var(--tw-bg-opacity, 1));\\n}\\n.theme-pink .focus\\\\:ring:focus {\\n --tw-ring-color: #14142a;\\n }\\n.theme-pink .checkbox input[type='checkbox']:focus + .check,\\n .theme-pink .radio input[type='radio']:focus + .check,\\n .theme-pink .switch input[type='checkbox']:focus + .check {\\n --tw-ring-color: #14142a;\\n }\\n.theme-green .app-sidebar {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.theme-green .app-sidebar .menu-title,\\n .theme-green .app-sidebar .menu-item-icon,\\n .theme-green .app-sidebar .menu-item-link {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.theme-green .app-sidebar-brand {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .bg-blue-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .border-blue-700 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(110 113 145 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .hover\\\\:bg-blue-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(110 113 145 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .text-blue-600 {\\n --tw-text-opacity: 1;\\n color: rgb(20 20 42 / var(--tw-text-opacity, 1));\\n}\\n.theme-green .checkbox input[type='checkbox']:checked + .check,\\n .theme-green .radio input[type='radio']:checked + .check {\\n --tw-border-opacity: 1;\\n border-color: rgb(78 75 102 / var(--tw-border-opacity, 1));\\n}\\n.theme-green .helper-container .tab {\\n --tw-bg-opacity: 1;\\n background-color: rgb(110 113 145 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .focus\\\\:ring:focus {\\n --tw-ring-color: #4e4b66;\\n }\\n.theme-green .checkbox input[type='checkbox']:focus + .check,\\n .theme-green .radio input[type='radio']:focus + .check,\\n .theme-green .switch input[type='checkbox']:focus + .check {\\n --tw-ring-color: #4e4b66;\\n }\\n.theme-green .text-blue-500 {\\n --tw-text-opacity: 1;\\n color: rgb(78 75 102 / var(--tw-text-opacity, 1));\\n}\\n.theme-green .hover\\\\:text-blue-600:hover {\\n --tw-text-opacity: 1;\\n color: rgb(78 75 102 / var(--tw-text-opacity, 1));\\n}\\n.theme-green .active\\\\:text-blue-700:active {\\n --tw-text-opacity: 1;\\n color: rgb(78 75 102 / var(--tw-text-opacity, 1));\\n}\\n.introjs-tooltip {\\n min-width: 400px !important;\\n max-width: 480px !important;\\n padding: 0.5rem !important;\\n}\\n.good-img {\\n margin-top: -24rem !important;\\n}\\n.end-img {\\n margin-top: -18rem !important;\\n}\\n.introjs-button {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)) !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important;\\n}\\n.theme-pink .introjs-button {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .introjs-button {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.introjs-button {\\n text-shadow: none !important;\\n}\\n.introjs-bullets ul li a.active {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1)) !important;\\n}\\n.theme-pink .introjs-bullets ul li a.active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.theme-green .introjs-bullets ul li a.active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(78 75 102 / var(--tw-bg-opacity, 1));\\n}\\n.introjs-prevbutton {\\n border-width: 1px !important;\\n --tw-border-opacity: 1 !important;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1)) !important;\\n background-color: transparent !important;\\n --tw-text-opacity: 1 !important;\\n color: rgb(37 99 235 / var(--tw-text-opacity, 1)) !important;\\n}\\n.theme-green .introjs-prevbutton {\\n --tw-text-opacity: 1;\\n color: rgb(20 20 42 / var(--tw-text-opacity, 1));\\n}\\n.before\\\\:hidden::before {\\n content: var(--tw-content);\\n display: none;\\n}\\n.last\\\\:mb-0:last-child {\\n margin-bottom: 0px;\\n}\\n.last\\\\:mr-0:last-child {\\n margin-right: 0px;\\n}\\n.last\\\\:border-none:last-child {\\n border-style: none;\\n}\\n.hover\\\\:border-blue-700:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(29 78 216 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:border-emerald-700:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(4 120 87 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:border-red-700:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(185 28 28 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:border-yellow-700:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(161 98 7 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:bg-blue-600:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-blue-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 78 216 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-emerald-600:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(5 150 105 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-emerald-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(4 120 87 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-100:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-100\\\\/70:hover {\\n background-color: rgb(243 244 246 / 0.7);\\n}\\n.hover\\\\:bg-gray-200:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-gray-800:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-red-600:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-red-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-yellow-600:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:bg-yellow-700:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(161 98 7 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:text-black:hover {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-blue-500:hover {\\n --tw-text-opacity: 1;\\n color: rgb(59 130 246 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-gray-100:hover {\\n --tw-text-opacity: 1;\\n color: rgb(243 244 246 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:text-white:hover {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:shadow-lg:hover {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n}\\n.focus\\\\:border-blue-600:focus {\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n}\\n.focus\\\\:outline-none:focus {\\n outline: 2px solid transparent;\\n outline-offset: 2px;\\n}\\n.focus\\\\:ring:focus {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.focus\\\\:ring-0:focus {\\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\\n}\\n.focus\\\\:ring-blue-600:focus {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:divide-dark-700:is(.dark *) > :not([hidden]) ~ :not([hidden]) {\\n --tw-divide-opacity: 1;\\n border-color: rgb(44 47 54 / var(--tw-divide-opacity, 1));\\n}\\n.dark\\\\:border-blue-500:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-dark-700:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(44 47 54 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-dark-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(33 36 42 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-dark-900:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(19 22 24 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-gray-600:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-pavitra-blue:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(1 98 253 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-red-500:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(239 68 68 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-slate-100:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(241 245 249 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-slate-700:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(51 65 85 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-slate-800:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(30 41 59 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-white:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:border-yellow-500:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(234 179 8 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:bg-dark-800:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-dark-900:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(19 22 24 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-dark-900\\\\/70:is(.dark *) {\\n background-color: rgb(19 22 24 / 0.7);\\n}\\n.dark\\\\:bg-gray-700:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-pavitra-blue:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(1 98 253 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-red-500:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-red-600:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-slate-100:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-slate-700:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(51 65 85 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-slate-800:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(30 41 59 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-slate-800\\\\/50:is(.dark *) {\\n background-color: rgb(30 41 59 / 0.5);\\n}\\n.dark\\\\:bg-white:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-yellow-500:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:bg-yellow-600:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:from-dark-700:is(.dark *) {\\n --tw-gradient-from: #2C2F36 var(--tw-gradient-from-position);\\n --tw-gradient-to: rgb(44 47 54 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);\\n}\\n.dark\\\\:via-dark-900:is(.dark *) {\\n --tw-gradient-to: rgb(19 22 24 / 0) var(--tw-gradient-to-position);\\n --tw-gradient-stops: var(--tw-gradient-from), #131618 var(--tw-gradient-via-position), var(--tw-gradient-to);\\n}\\n.dark\\\\:to-dark-700:is(.dark *) {\\n --tw-gradient-to: #2C2F36 var(--tw-gradient-to-position);\\n}\\n.dark\\\\:text-black:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-dark-500:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(203 213 225 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-dark-600:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-gray-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-pavitra-blue:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(1 98 253 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-red-500:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(239 68 68 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-red-600:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(220 38 38 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-slate-100:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(241 245 249 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-slate-400:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(148 163 184 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-white:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:text-yellow-500:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(234 179 8 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:placeholder-dark-600:is(.dark *)::-moz-placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));\\n}\\n.dark\\\\:placeholder-dark-600:is(.dark *)::placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));\\n}\\n.dark\\\\:placeholder-gray-400:is(.dark *)::-moz-placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));\\n}\\n.dark\\\\:placeholder-gray-400:is(.dark *)::placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));\\n}\\n.dark\\\\:ring-dark-500:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(203 213 225 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-gray-400:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-gray-500:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-pavitra-blue:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(1 98 253 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-red-700:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(185 28 28 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:ring-yellow-700:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(161 98 7 / var(--tw-ring-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:border-gray-500:hover:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(107 114 128 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:border-pavitra-blue:is(.dark *):hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(1 98 253 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:border-pavitra-blue\\\\/80:is(.dark *):hover {\\n border-color: rgb(1 98 253 / 0.8);\\n}\\n.hover\\\\:dark\\\\:border-red-600:is(.dark *):hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(220 38 38 / var(--tw-border-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:border-yellow-600:is(.dark *):hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(202 138 4 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:bg-dark-800:hover:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:bg-gray-600:hover:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-dark-800:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(33 36 42 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-pavitra-blue:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(1 98 253 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-pavitra-blue\\\\/80:is(.dark *):hover {\\n background-color: rgb(1 98 253 / 0.8);\\n}\\n.hover\\\\:dark\\\\:bg-red-600:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-slate-100:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-slate-700:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(51 65 85 / var(--tw-bg-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:bg-yellow-600:is(.dark *):hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(202 138 4 / var(--tw-bg-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-slate-400:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(148 163 184 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:hover\\\\:text-white:hover:is(.dark *) {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:text-black:is(.dark *):hover {\\n --tw-text-opacity: 1;\\n color: rgb(0 0 0 / var(--tw-text-opacity, 1));\\n}\\n.hover\\\\:dark\\\\:text-white:is(.dark *):hover {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:border-blue-600:focus:is(.dark *) {\\n --tw-border-opacity: 1;\\n border-color: rgb(37 99 235 / var(--tw-border-opacity, 1));\\n}\\n.dark\\\\:focus\\\\:ring-blue-600:focus:is(.dark *) {\\n --tw-ring-opacity: 1;\\n --tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1));\\n}\\n@media (min-width: 640px) {\\n\\n .sm\\\\:mb-6 {\\n margin-bottom: 1.5rem;\\n }\\n\\n .sm\\\\:mb-8 {\\n margin-bottom: 2rem;\\n }\\n\\n .sm\\\\:mt-6 {\\n margin-top: 1.5rem;\\n }\\n\\n .sm\\\\:h-16 {\\n height: 4rem;\\n }\\n\\n .sm\\\\:h-60 {\\n height: 15rem;\\n }\\n\\n .sm\\\\:h-auto {\\n height: auto;\\n }\\n\\n .sm\\\\:h-full {\\n height: 100%;\\n }\\n\\n .sm\\\\:max-h-96 {\\n max-height: 24rem;\\n }\\n\\n .sm\\\\:w-1\\\\/2 {\\n width: 50%;\\n }\\n\\n .sm\\\\:w-16 {\\n width: 4rem;\\n }\\n\\n .sm\\\\:grid-cols-2 {\\n grid-template-columns: repeat(2, minmax(0, 1fr));\\n }\\n\\n .sm\\\\:grid-cols-3 {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n }\\n\\n .sm\\\\:gap-6 {\\n gap: 1.5rem;\\n }\\n\\n .sm\\\\:p-6 {\\n padding: 1.5rem;\\n }\\n\\n .sm\\\\:p-8 {\\n padding: 2rem;\\n }\\n\\n .sm\\\\:px-6 {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n }\\n\\n .sm\\\\:text-2xl {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n }\\n\\n .sm\\\\:text-3xl {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n }\\n\\n .sm\\\\:text-5xl {\\n font-size: 3rem;\\n line-height: 1;\\n }\\n\\n .sm\\\\:text-\\\\[8px\\\\] {\\n font-size: 8px;\\n }\\n\\n .sm\\\\:text-base {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .sm\\\\:text-lg {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n }\\n\\n .sm\\\\:text-xl {\\n font-size: 1.25rem;\\n line-height: 1.75rem;\\n }\\n}\\n@media (min-width: 768px) {\\n\\n .md\\\\:absolute {\\n position: absolute;\\n }\\n\\n .md\\\\:right-0 {\\n right: 0px;\\n }\\n\\n .md\\\\:top-0 {\\n top: 0px;\\n }\\n\\n .md\\\\:mb-0 {\\n margin-bottom: 0px;\\n }\\n\\n .md\\\\:mb-10 {\\n margin-bottom: 2.5rem;\\n }\\n\\n .md\\\\:mb-8 {\\n margin-bottom: 2rem;\\n }\\n\\n .md\\\\:mr-2 {\\n margin-right: 0.5rem;\\n }\\n\\n .md\\\\:mt-0 {\\n margin-top: 0px;\\n }\\n\\n .md\\\\:mt-8 {\\n margin-top: 2rem;\\n }\\n\\n .md\\\\:block {\\n display: block;\\n }\\n\\n .md\\\\:flex {\\n display: flex;\\n }\\n\\n .md\\\\:inline-flex {\\n display: inline-flex;\\n }\\n\\n .md\\\\:h-44 {\\n height: 11rem;\\n }\\n\\n .md\\\\:h-5 {\\n height: 1.25rem;\\n }\\n\\n .md\\\\:h-6 {\\n height: 1.5rem;\\n }\\n\\n .md\\\\:h-96 {\\n height: 24rem;\\n }\\n\\n .md\\\\:w-1\\\\/2 {\\n width: 50%;\\n }\\n\\n .md\\\\:w-1\\\\/3 {\\n width: 33.333333%;\\n }\\n\\n .md\\\\:w-1\\\\/4 {\\n width: 25%;\\n }\\n\\n .md\\\\:w-10\\\\/12 {\\n width: 83.333333%;\\n }\\n\\n .md\\\\:w-2\\\\/3 {\\n width: 66.666667%;\\n }\\n\\n .md\\\\:w-3\\\\/5 {\\n width: 60%;\\n }\\n\\n .md\\\\:w-5 {\\n width: 1.25rem;\\n }\\n\\n .md\\\\:w-5\\\\/12 {\\n width: 41.666667%;\\n }\\n\\n .md\\\\:w-6\\\\/12 {\\n width: 50%;\\n }\\n\\n .md\\\\:w-7\\\\/12 {\\n width: 58.333333%;\\n }\\n\\n .md\\\\:w-auto {\\n width: auto;\\n }\\n\\n .md\\\\:w-full {\\n width: 100%;\\n }\\n\\n .md\\\\:grid-cols-2 {\\n grid-template-columns: repeat(2, minmax(0, 1fr));\\n }\\n\\n .md\\\\:grid-cols-3 {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n }\\n\\n .md\\\\:flex-row {\\n flex-direction: row;\\n }\\n\\n .md\\\\:justify-start {\\n justify-content: flex-start;\\n }\\n\\n .md\\\\:gap-16 {\\n gap: 4rem;\\n }\\n\\n .md\\\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(1rem * var(--tw-space-x-reverse));\\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\\n }\\n\\n .md\\\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\\n }\\n\\n .md\\\\:rounded-b-none {\\n border-bottom-right-radius: 0px;\\n border-bottom-left-radius: 0px;\\n }\\n\\n .md\\\\:p-0 {\\n padding: 0px;\\n }\\n\\n .md\\\\:p-12 {\\n padding: 3rem;\\n }\\n\\n .md\\\\:p-16 {\\n padding: 4rem;\\n }\\n\\n .md\\\\:p-24 {\\n padding: 6rem;\\n }\\n\\n .md\\\\:p-8 {\\n padding: 2rem;\\n }\\n\\n .md\\\\:px-0 {\\n padding-left: 0px;\\n padding-right: 0px;\\n }\\n\\n .md\\\\:py-0 {\\n padding-top: 0px;\\n padding-bottom: 0px;\\n }\\n\\n .md\\\\:py-2 {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n }\\n\\n .md\\\\:py-3 {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem;\\n }\\n\\n .md\\\\:text-left {\\n text-align: left;\\n }\\n\\n .md\\\\:text-2xl {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n }\\n\\n .md\\\\:text-3xl {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n }\\n\\n .md\\\\:text-4xl {\\n font-size: 2.25rem;\\n line-height: 2.5rem;\\n }\\n\\n .md\\\\:text-7xl {\\n font-size: 4.5rem;\\n line-height: 1;\\n }\\n\\n .md\\\\:text-lg {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n }\\n\\n .md\\\\:text-xl {\\n font-size: 1.25rem;\\n line-height: 1.75rem;\\n }\\n}\\n@media (min-width: 1024px) {\\n\\n .lg\\\\:static {\\n position: static;\\n }\\n\\n .lg\\\\:absolute {\\n position: absolute;\\n }\\n\\n .lg\\\\:left-0 {\\n left: 0px;\\n }\\n\\n .lg\\\\:top-full {\\n top: 100%;\\n }\\n\\n .lg\\\\:z-20 {\\n z-index: 20;\\n }\\n\\n .lg\\\\:order-first {\\n order: -9999;\\n }\\n\\n .lg\\\\:order-last {\\n order: 9999;\\n }\\n\\n .lg\\\\:col-span-1 {\\n grid-column: span 1 / span 1;\\n }\\n\\n .lg\\\\:mx-12 {\\n margin-left: 3rem;\\n margin-right: 3rem;\\n }\\n\\n .lg\\\\:mx-auto {\\n margin-left: auto;\\n margin-right: auto;\\n }\\n\\n .lg\\\\:my-0\\\\.5 {\\n margin-top: 0.125rem;\\n margin-bottom: 0.125rem;\\n }\\n\\n .lg\\\\:mb-0 {\\n margin-bottom: 0px;\\n }\\n\\n .lg\\\\:mb-10 {\\n margin-bottom: 2.5rem;\\n }\\n\\n .lg\\\\:mb-14 {\\n margin-bottom: 3.5rem;\\n }\\n\\n .lg\\\\:mb-8 {\\n margin-bottom: 2rem;\\n }\\n\\n .lg\\\\:ml-0 {\\n margin-left: 0px;\\n }\\n\\n .lg\\\\:ml-16 {\\n margin-left: 4rem;\\n }\\n\\n .lg\\\\:mr-6 {\\n margin-right: 1.5rem;\\n }\\n\\n .lg\\\\:mt-0 {\\n margin-top: 0px;\\n }\\n\\n .lg\\\\:mt-6 {\\n margin-top: 1.5rem;\\n }\\n\\n .lg\\\\:block {\\n display: block;\\n }\\n\\n .lg\\\\:inline-block {\\n display: inline-block;\\n }\\n\\n .lg\\\\:flex {\\n display: flex;\\n }\\n\\n .lg\\\\:inline-flex {\\n display: inline-flex;\\n }\\n\\n .lg\\\\:grid {\\n display: grid;\\n }\\n\\n .lg\\\\:hidden {\\n display: none;\\n }\\n\\n .lg\\\\:h-6 {\\n height: 1.5rem;\\n }\\n\\n .lg\\\\:h-screen {\\n height: 100vh;\\n }\\n\\n .lg\\\\:w-1 {\\n width: 0.25rem;\\n }\\n\\n .lg\\\\:w-1\\\\/3 {\\n width: 33.333333%;\\n }\\n\\n .lg\\\\:w-16 {\\n width: 4rem;\\n }\\n\\n .lg\\\\:w-2\\\\/3 {\\n width: 66.666667%;\\n }\\n\\n .lg\\\\:w-2\\\\/5 {\\n width: 40%;\\n }\\n\\n .lg\\\\:w-32 {\\n width: 8rem;\\n }\\n\\n .lg\\\\:w-6 {\\n width: 1.5rem;\\n }\\n\\n .lg\\\\:w-6\\\\/12 {\\n width: 50%;\\n }\\n\\n .lg\\\\:w-auto {\\n width: auto;\\n }\\n\\n .lg\\\\:w-full {\\n width: 100%;\\n }\\n\\n .lg\\\\:min-w-full {\\n min-width: 100%;\\n }\\n\\n .lg\\\\:max-w-2xl {\\n max-width: 42rem;\\n }\\n\\n .lg\\\\:grid-cols-3 {\\n grid-template-columns: repeat(3, minmax(0, 1fr));\\n }\\n\\n .lg\\\\:grid-cols-4 {\\n grid-template-columns: repeat(4, minmax(0, 1fr));\\n }\\n\\n .lg\\\\:flex-row {\\n flex-direction: row;\\n }\\n\\n .lg\\\\:items-stretch {\\n align-items: stretch;\\n }\\n\\n .lg\\\\:justify-end {\\n justify-content: flex-end;\\n }\\n\\n .lg\\\\:justify-center {\\n justify-content: center;\\n }\\n\\n .lg\\\\:gap-16 {\\n gap: 4rem;\\n }\\n\\n .lg\\\\:space-x-4 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(1rem * var(--tw-space-x-reverse));\\n margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));\\n }\\n\\n .lg\\\\:space-x-6 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(1.5rem * var(--tw-space-x-reverse));\\n margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)));\\n }\\n\\n .lg\\\\:space-y-0 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-y-reverse: 0;\\n margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));\\n margin-bottom: calc(0px * var(--tw-space-y-reverse));\\n }\\n\\n .lg\\\\:overflow-visible {\\n overflow: visible;\\n }\\n\\n .lg\\\\:rounded-2xl {\\n border-radius: 1rem;\\n }\\n\\n .lg\\\\:rounded-lg {\\n border-radius: 0.5rem;\\n }\\n\\n .lg\\\\:border {\\n border-width: 1px;\\n }\\n\\n .lg\\\\:bg-transparent {\\n background-color: transparent;\\n }\\n\\n .lg\\\\:bg-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));\\n }\\n\\n .lg\\\\:p-0 {\\n padding: 0px;\\n }\\n\\n .lg\\\\:p-24 {\\n padding: 6rem;\\n }\\n\\n .lg\\\\:p-8 {\\n padding: 2rem;\\n }\\n\\n .lg\\\\:px-0 {\\n padding-left: 0px;\\n padding-right: 0px;\\n }\\n\\n .lg\\\\:px-12 {\\n padding-left: 3rem;\\n padding-right: 3rem;\\n }\\n\\n .lg\\\\:px-3 {\\n padding-left: 0.75rem;\\n padding-right: 0.75rem;\\n }\\n\\n .lg\\\\:px-6 {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem;\\n }\\n\\n .lg\\\\:py-10 {\\n padding-top: 2.5rem;\\n padding-bottom: 2.5rem;\\n }\\n\\n .lg\\\\:py-2 {\\n padding-top: 0.5rem;\\n padding-bottom: 0.5rem;\\n }\\n\\n .lg\\\\:py-24 {\\n padding-top: 6rem;\\n padding-bottom: 6rem;\\n }\\n\\n .lg\\\\:pl-2 {\\n padding-left: 0.5rem;\\n }\\n\\n .lg\\\\:pl-6 {\\n padding-left: 1.5rem;\\n }\\n\\n .lg\\\\:text-left {\\n text-align: left;\\n }\\n\\n .lg\\\\:text-2xl {\\n font-size: 1.5rem;\\n line-height: 2rem;\\n }\\n\\n .lg\\\\:text-3xl {\\n font-size: 1.875rem;\\n line-height: 2.25rem;\\n }\\n\\n .lg\\\\:text-6xl {\\n font-size: 3.75rem;\\n line-height: 1;\\n }\\n\\n .lg\\\\:text-base {\\n font-size: 1rem;\\n line-height: 1.5rem;\\n }\\n\\n .lg\\\\:text-lg {\\n font-size: 1.125rem;\\n line-height: 1.75rem;\\n }\\n\\n .lg\\\\:font-bold {\\n font-weight: 700;\\n }\\n\\n .lg\\\\:shadow-lg {\\n --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n }\\n\\n .lg\\\\:shadow-none {\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\\n }\\n\\n .lg\\\\:dark\\\\:bg-dark-900:is(.dark *) {\\n --tw-bg-opacity: 1;\\n background-color: rgb(19 22 24 / var(--tw-bg-opacity, 1));\\n }\\n\\n .lg\\\\:dark\\\\:bg-transparent:is(.dark *) {\\n background-color: transparent;\\n }\\n}\\n@media (min-width: 1280px) {\\n\\n .xl\\\\:mx-auto {\\n margin-left: auto;\\n margin-right: auto;\\n }\\n\\n .xl\\\\:flex {\\n display: flex;\\n }\\n\\n .xl\\\\:hidden {\\n display: none;\\n }\\n\\n .xl\\\\:w-4\\\\/12 {\\n width: 33.333333%;\\n }\\n\\n .xl\\\\:max-w-full {\\n max-width: 100%;\\n }\\n\\n .xl\\\\:gap-10 {\\n gap: 2.5rem;\\n }\\n\\n .xl\\\\:gap-x-8 {\\n -moz-column-gap: 2rem;\\n column-gap: 2rem;\\n }\\n\\n .xl\\\\:p-8 {\\n padding: 2rem;\\n }\\n\\n .xl\\\\:pl-0 {\\n padding-left: 0px;\\n }\\n\\n .xl\\\\:pl-60 {\\n padding-left: 15rem;\\n }\\n\\n .xl\\\\:text-center {\\n text-align: center;\\n }\\n}\\n@media (min-width: 1536px) {\\n\\n .\\\\32xl\\\\:mx-20 {\\n margin-left: 5rem;\\n margin-right: 5rem;\\n }\\n\\n .\\\\32xl\\\\:grid-cols-4 {\\n grid-template-columns: repeat(4, minmax(0, 1fr));\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/css/tailwind/_base.css\",\"webpack://src/css/tailwind/_components.css\",\"webpack://src/css/_checkbox-radio-switch.css\",\"webpack://src/css/tailwind/_utilities.css\",\"webpack://src/css/_scrollbars.css\",\"webpack://node_modules/intro.js/%3Cinput%20css%202%3E\",\"webpack://src/css/_helper.css\",\"webpack://src/css/_calendar.css\",\"webpack://src/css/_select-dropdown.css\",\"webpack://src/css/_theme.css\",\"webpack://src/css/main.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@tailwind base;\\n\",\"@tailwind components;\\n\",\"@layer components {\\n .checkbox,\\n .radio,\\n .switch {\\n @apply inline-flex items-center cursor-pointer relative;\\n }\\n\\n .checkbox input[type='checkbox'],\\n .radio input[type='radio'],\\n .switch input[type='checkbox'] {\\n @apply absolute left-0 opacity-0 -z-1;\\n }\\n\\n .checkbox input[type='checkbox'] + .check,\\n .radio input[type='radio'] + .check,\\n .switch input[type='checkbox'] + .check {\\n @apply border-gray-700 border transition-colors duration-200 dark:bg-slate-800;\\n }\\n\\n .checkbox input[type='checkbox']:focus + .check,\\n .radio input[type='radio']:focus + .check,\\n .switch input[type='checkbox']:focus + .check {\\n @apply ring ring-blue-700;\\n }\\n\\n .checkbox input[type='checkbox'] + .check,\\n .radio input[type='radio'] + .check {\\n @apply block w-5 h-5;\\n }\\n\\n .checkbox input[type='checkbox'] + .check {\\n @apply rounded;\\n }\\n\\n .switch input[type='checkbox'] + .check {\\n @apply flex items-center shrink-0 w-12 h-6 p-0.5 bg-gray-200;\\n }\\n\\n .radio input[type='radio'] + .check,\\n .switch input[type='checkbox'] + .check,\\n .switch input[type='checkbox'] + .check:before {\\n @apply rounded-full;\\n }\\n\\n .checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n @apply bg-no-repeat bg-center border-4;\\n }\\n\\n .checkbox input[type='checkbox']:checked + .check {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3Cpath style='fill:%23fff' d='M 0.04038059,0.6267767 0.14644661,0.52071068 0.42928932,0.80355339 0.3232233,0.90961941 z M 0.21715729,0.80355339 0.85355339,0.16715729 0.95961941,0.2732233 0.3232233,0.90961941 z'%3E%3C/path%3E%3C/svg%3E\\\");\\n }\\n\\n .radio input[type='radio']:checked + .check {\\n background-image: url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z' /%3E%3C/svg%3E\\\");\\n }\\n\\n .switch input[type='checkbox']:checked + .check,\\n .checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n @apply bg-blue-600 border-blue-600;\\n }\\n\\n .switch input[type='checkbox'] + .check:before {\\n content: '';\\n @apply block w-5 h-5 bg-white border border-gray-700;\\n }\\n\\n .switch input[type='checkbox']:checked + .check:before {\\n transform: translate3d(110%, 0, 0);\\n @apply border-blue-600;\\n }\\n}\\n\",\"@tailwind utilities;\\n\",\"@layer base {\\n html {\\n scrollbar-width: thin;\\n scrollbar-color: rgb(156, 163, 175) rgb(249, 250, 251);\\n }\\n\\n body::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n }\\n\\n body::-webkit-scrollbar-track {\\n @apply bg-gray-50;\\n }\\n\\n body::-webkit-scrollbar-thumb {\\n @apply bg-gray-400 rounded;\\n }\\n\\n body::-webkit-scrollbar-thumb:hover {\\n @apply bg-gray-500;\\n }\\n}\\n\\n@layer utilities {\\n .dark-scrollbars-compat {\\n scrollbar-color: rgb(71, 85, 105) rgb(30, 41, 59);\\n }\\n\\n .dark-scrollbars::-webkit-scrollbar-track {\\n @apply bg-slate-800;\\n }\\n\\n .dark-scrollbars::-webkit-scrollbar-thumb {\\n @apply bg-slate-600;\\n }\\n\\n .dark-scrollbars::-webkit-scrollbar-thumb:hover {\\n @apply bg-slate-500;\\n }\\n}\\n\",\".introjs-overlay{position:absolute;box-sizing:content-box;z-index:999999;opacity:0;transition:all .3s ease-out}.introjs-showElement{z-index:9999999!important}tr.introjs-showElement>td{z-index:9999999!important;position:relative}tr.introjs-showElement>th{z-index:9999999!important;position:relative}.introjs-disableInteraction{z-index:99999999!important;position:absolute;background-color:#fff;opacity:0}.introjs-relativePosition{position:relative}.introjs-helperLayer{box-sizing:content-box;position:absolute;z-index:9999998;border-radius:4px;transition:all .3s ease-out}.introjs-helperLayer *{box-sizing:content-box}.introjs-helperLayer :before{box-sizing:content-box}.introjs-helperLayer :after{box-sizing:content-box}.introjs-tooltipReferenceLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;box-sizing:content-box;position:absolute;visibility:hidden;z-index:100000000;background-color:transparent;transition:all .3s ease-out}.introjs-tooltipReferenceLayer *{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif}.introjs-helperNumberLayer{font-family:\\\"Helvetica Neue\\\",Inter,ui-sans-serif,\\\"Apple Color Emoji\\\",Helvetica,Arial,sans-serif;color:#9e9e9e;text-align:center;padding-top:10px;padding-bottom:10px}.introjs-arrow{border:5px solid transparent;content:\\\"\\\";position:absolute}.introjs-arrow.top{top:-10px;left:10px;border-bottom-color:#fff}.introjs-arrow.top-right{top:-10px;right:10px;border-bottom-color:#fff}.introjs-arrow.top-middle{top:-10px;left:50%;margin-left:-5px;border-bottom-color:#fff}.introjs-arrow.right{right:-10px;top:10px;border-left-color:#fff}.introjs-arrow.right-bottom{bottom:10px;right:-10px;border-left-color:#fff}.introjs-arrow.bottom{bottom:-10px;left:10px;border-top-color:#fff}.introjs-arrow.bottom-right{bottom:-10px;right:10px;border-top-color:#fff}.introjs-arrow.bottom-middle{bottom:-10px;left:50%;margin-left:-5px;border-top-color:#fff}.introjs-arrow.left{left:-10px;top:10px;border-right-color:#fff}.introjs-arrow.left-bottom{left:-10px;bottom:10px;border-right-color:#fff}.introjs-tooltip{box-sizing:content-box;position:absolute;visibility:visible;background-color:#fff;min-width:250px;max-width:300px;border-radius:5px;box-shadow:0 3px 30px rgba(33,33,33,.3);transition:opacity .1s ease-out}.introjs-tooltiptext{padding:20px}.introjs-dontShowAgain{padding-left:20px;padding-right:20px}.introjs-dontShowAgain input{padding:0;margin:0;margin-bottom:2px;display:inline;width:10px;height:10px}.introjs-dontShowAgain label{font-size:14px;display:inline-block;font-weight:400;margin:0 0 0 5px;padding:0;background-color:#fff;color:#616161;-webkit-user-select:none;user-select:none}.introjs-tooltip-title{font-size:18px;width:90%;min-height:1.5em;margin:0;padding:0;font-weight:700;line-height:1.5}.introjs-tooltip-header{position:relative;padding-left:20px;padding-right:20px;padding-top:10px;min-height:1.5em}.introjs-tooltipbuttons{border-top:1px solid #e0e0e0;padding:10px;text-align:right;white-space:nowrap}.introjs-tooltipbuttons:after{content:\\\"\\\";visibility:hidden;display:block;height:0;clear:both}.introjs-button{box-sizing:content-box;position:relative;overflow:visible;padding:.5rem 1rem;border:1px solid #bdbdbd;text-decoration:none;text-shadow:1px 1px 0 #fff;font-size:14px;color:#424242;white-space:nowrap;cursor:pointer;outline:0;background-color:#f4f4f4;border-radius:.2em;zoom:1;display:inline}.introjs-button:hover{outline:0;text-decoration:none;border-color:#9e9e9e;background-color:#e0e0e0;color:#212121}.introjs-button:focus{outline:0;text-decoration:none;background-color:#eee;box-shadow:0 0 0 .2rem rgba(158,158,158,.5);border:1px solid #616161;color:#212121}.introjs-button:active{outline:0;text-decoration:none;background-color:#e0e0e0;border-color:#9e9e9e;color:#212121}.introjs-button::-moz-focus-inner{padding:0;border:0}.introjs-skipbutton{position:absolute;top:0;right:0;display:inline-block;width:45px;height:45px;line-height:45px;color:#616161;font-size:22px;cursor:pointer;font-weight:700;text-align:center;text-decoration:none}.introjs-skipbutton:focus,.introjs-skipbutton:hover{color:#212121;outline:0;text-decoration:none}.introjs-prevbutton{float:left}.introjs-nextbutton{float:right}.introjs-disabled{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-disabled:focus,.introjs-disabled:hover{color:#9e9e9e;border-color:#bdbdbd;box-shadow:none;cursor:default;background-color:#f4f4f4;background-image:none;text-decoration:none}.introjs-hidden{display:none}.introjs-bullets{text-align:center;padding-top:10px;padding-bottom:10px}.introjs-bullets ul{box-sizing:content-box;clear:both;margin:0 auto 0;padding:0;display:inline-block}.introjs-bullets ul li{box-sizing:content-box;list-style:none;float:left;margin:0 2px}.introjs-bullets ul li a{transition:width .1s ease-in;box-sizing:content-box;display:block;width:6px;height:6px;background:#ccc;border-radius:10px;text-decoration:none;cursor:pointer}.introjs-bullets ul li a:focus,.introjs-bullets ul li a:hover{width:15px;background:#999;text-decoration:none;outline:0}.introjs-bullets ul li a.active{width:15px;background:#999}.introjs-progress{box-sizing:content-box;overflow:hidden;height:10px;margin:10px;border-radius:4px;background-color:#e0e0e0}.introjs-progressbar{box-sizing:content-box;float:left;width:0%;height:100%;font-size:10px;line-height:10px;text-align:center;background-color:#08c}.introjsFloatingElement{position:absolute;height:0;width:0;left:50%;top:50%}.introjs-fixedTooltip{position:fixed}.introjs-hint{box-sizing:content-box;position:absolute;background:0 0;width:20px;height:15px;cursor:pointer}.introjs-hint:focus{border:0;outline:0}.introjs-hint:hover>.introjs-hint-pulse{background-color:rgba(60,60,60,.57)}.introjs-hidehint{display:none}.introjs-fixedhint{position:fixed}@keyframes introjspulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(0,0,0,.7)}70%{transform:scale(1);box-shadow:0 0 0 10px transparent}100%{transform:scale(.95);box-shadow:0 0 0 0 transparent}}.introjs-hint-pulse{box-sizing:content-box;width:15px;height:15px;border-radius:30px;background-color:rgba(136,136,136,.24);z-index:10;position:absolute;transition:all .2s ease-out;animation:introjspulse 2s infinite}.introjs-hint-no-anim .introjs-hint-pulse{animation:none}.introjs-hint-dot{box-sizing:content-box;background:0 0;border-radius:60px;height:50px;width:50px;position:absolute;top:-18px;left:-18px;z-index:1;opacity:0}\",\".helper-container {\\n right: 0;\\n top: 70px;\\n transform: translateX(100%);\\n\\n .tab {\\n top: 0;\\n left: 0;\\n transform: translateX(-100%);\\n }\\n\\n .tab:hover {\\n @apply bg-gray-900 cursor-pointer;\\n }\\n}\\n\\n.helper-container.open {\\n transform: translateX(0);\\n}\\n\\n.react-datepicker-wrapper,\\n.react-datepicker-popper {\\n z-index: 10 !important;\\n}\\n\",\".rbc-event {\\n @apply bg-blue-600 !important;\\n}\\n\\n.rbc-show-more {\\n @apply dark:text-white bg-transparent !important;\\n}\\n\\n.rbc-btn-group button {\\n @apply dark:text-white !important;\\n}\\n\\n.rbc-btn-group button:hover {\\n @apply text-white dark:bg-dark-700 !important;\\n}\\n\\n.rbc-btn-group button.rbc-active {\\n @apply text-black dark:bg-blue-600 !important;\\n}\\n\\n.rbc-btn-group button:focus {\\n @apply dark:bg-blue-600 !important;\\n}\\n\\n.rbc-day-bg.rbc-off-range-bg {\\n @apply dark:bg-dark-800 !important;\\n}\\n.rbc-current-time-indicator {\\n @apply h-1 !important;\\n}\\n.rbc-today {\\n @apply dark:bg-dark-600/40 !important;\\n}\\n\\n.rbc-day-bg.rbc-selected-cell {\\n @apply dark:bg-dark-500 !important;\\n}\\n\",\".react-select__control {\\n @apply dark:bg-dark-800 dark:border-dark-700 !important;\\n}\\n\\n.react-select__single-value {\\n @apply dark:text-white !important;\\n}\\n\\n.react-select__menu {\\n @apply dark:border-dark-700;\\n}\\n\\n.react-select__menu-list {\\n @apply dark:bg-dark-800 dark:border-dark-700 dark:rounded !important;\\n}\\n\\n.react-select__option {\\n @apply cursor-pointer hover:bg-gray-200 dark:hover:bg-dark-700 !important;\\n}\\n\\n.react-select__option--is-focused {\\n @apply dark:bg-dark-800 dark:text-white hover:dark:bg-dark-700 hover:dark:text-white !important;\\n}\\n\\n.react-select__option--is-selected,\\n.react-select__option--is-selected:hover {\\n @apply dark:bg-dark-600 !important;\\n}\\n\\n.react-select__multi-value__remove {\\n @apply dark:bg-dark-600 dark:text-white hover:dark:bg-red-300 hover:dark:text-red-600 !important;\\n}\\n\",\".theme-pink {\\n .app-sidebar {\\n @apply bg-pavitra-900 text-white;\\n\\n .menu-title,\\n .menu-item-icon,\\n .menu-item-link {\\n @apply text-white;\\n }\\n }\\n\\n .app-sidebar-brand {\\n @apply bg-white;\\n }\\n\\n .bg-blue-600 {\\n @apply bg-pavitra-800;\\n }\\n\\n .border-blue-700 {\\n @apply border-pink-700;\\n }\\n\\n .checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n @apply border-pavitra-800;\\n }\\n\\n .helper-container .tab {\\n @apply bg-pavitra-900;\\n }\\n\\n .focus\\\\:ring:focus {\\n --tw-ring-color: #14142a;\\n }\\n\\n .checkbox input[type='checkbox']:focus + .check,\\n .radio input[type='radio']:focus + .check,\\n .switch input[type='checkbox']:focus + .check {\\n --tw-ring-color: #14142a;\\n }\\n}\\n\\n.theme-green {\\n .app-sidebar {\\n @apply bg-pavitra-800 text-white;\\n\\n .menu-title,\\n .menu-item-icon,\\n .menu-item-link {\\n @apply text-white;\\n }\\n }\\n\\n .app-sidebar-brand {\\n @apply bg-white;\\n }\\n\\n .bg-blue-600 {\\n @apply bg-pavitra-800;\\n }\\n\\n .border-blue-700 {\\n @apply bg-pavitra-700;\\n }\\n\\n .hover\\\\:bg-blue-700:hover {\\n @apply bg-pavitra-700;\\n }\\n\\n .text-blue-600 {\\n @apply text-pavitra-900;\\n }\\n\\n .checkbox input[type='checkbox']:checked + .check,\\n .radio input[type='radio']:checked + .check {\\n @apply border-pavitra-800;\\n }\\n\\n .helper-container .tab {\\n @apply bg-pavitra-700;\\n }\\n\\n .focus\\\\:ring:focus {\\n --tw-ring-color: #4e4b66;\\n }\\n\\n .checkbox input[type='checkbox']:focus + .check,\\n .radio input[type='radio']:focus + .check,\\n .switch input[type='checkbox']:focus + .check {\\n --tw-ring-color: #4e4b66;\\n }\\n\\n .text-blue-500 {\\n @apply text-pavitra-800;\\n }\\n\\n .hover\\\\:text-blue-600:hover {\\n @apply text-pavitra-800;\\n }\\n\\n .active\\\\:text-blue-700:active {\\n @apply text-pavitra-800;\\n }\\n}\\n\",\"@import 'tailwind/_base.css';\\n@import 'tailwind/_components.css';\\n@import 'tailwind/_utilities.css';\\n@import 'intro.js/introjs.css';\\n@import '_checkbox-radio-switch.css';\\n@import '_progress.css';\\n@import '_scrollbars.css';\\n@import '_table.css';\\n@import '_helper.css';\\n@import '_calendar.css';\\n@import '_select-dropdown.css';\\n@import '_theme.css';\\n@import '_rich-text.css';\\n\\n.introjs-tooltip {\\n @apply min-w-[400px] max-w-[480px] p-2 !important;\\n}\\n\\n.good-img {\\n @apply -mt-96 !important;\\n}\\n.end-img {\\n @apply -mt-72 !important;\\n}\\n.introjs-button {\\n @apply bg-blue-600 text-white !important;\\n text-shadow: none !important;\\n}\\n.introjs-bullets ul li a.active {\\n @apply bg-blue-600 !important;\\n}\\n.introjs-prevbutton {\\n @apply bg-transparent border border-blue-600 text-blue-600 !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9jc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxNF0udXNlWzFdIS4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzddLm9uZU9mWzE0XS51c2VbMl0hLi9zcmMvY3NzL21haW4uY3NzIiwibWFwcGluZ3MiOiI7OztBQUFBO0FBQzJIO0FBQzNILDhCQUE4QixrSEFBMkI7QUFDekQ7QUFDQSxnRUFBZ0UsNkJBQTZCLDZCQUE2Qix3QkFBd0Isd0JBQXdCLG1CQUFtQixtQkFBbUIsbUJBQW1CLG9CQUFvQixvQkFBb0Isa0JBQWtCLGtCQUFrQix1QkFBdUIsMkNBQTJDLG1DQUFtQyxrQ0FBa0MsaUNBQWlDLG9CQUFvQix5QkFBeUIsMkJBQTJCLDRCQUE0Qiw2QkFBNkIsdUJBQXVCLGdDQUFnQyxpQ0FBaUMsMkNBQTJDLHVDQUF1QyxnQ0FBZ0MsMkJBQTJCLG1DQUFtQyxpQkFBaUIsdUJBQXVCLHFCQUFxQixzQkFBc0IsdUJBQXVCLG1CQUFtQixxQkFBcUIsa0JBQWtCLHdCQUF3QiwwQkFBMEIsZ0NBQWdDLDhCQUE4QiwrQkFBK0IsZ0NBQWdDLDRCQUE0Qiw2QkFBNkIsOEJBQThCLDJCQUEyQix5QkFBeUIsMkJBQTJCLDBCQUEwQiwwQkFBMEIsR0FBRyxnQkFBZ0IsNkJBQTZCLDZCQUE2Qix3QkFBd0Isd0JBQXdCLG1CQUFtQixtQkFBbUIsbUJBQW1CLG9CQUFvQixvQkFBb0Isa0JBQWtCLGtCQUFrQix1QkFBdUIsMkNBQTJDLG1DQUFtQyxrQ0FBa0MsaUNBQWlDLG9CQUFvQix5QkFBeUIsMkJBQTJCLDRCQUE0Qiw2QkFBNkIsdUJBQXVCLGdDQUFnQyxpQ0FBaUMsMkNBQTJDLHVDQUF1QyxnQ0FBZ0MsMkJBQTJCLG1DQUFtQyxp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QVcsV0FBVyxNQUFNLE1BQU0sTUFBTSxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sTUFBTSxLQUFLLFVBQVUsV0FBVyxNQUFNLE1BQU0sTUFBTSxNQUFNLFdBQVcsTUFBTSxTQUFTLE1BQU0sUUFBUSxxQkFBcUIscUJBQXFCLHFCQUFxQixvQkFBb0IsTUFBTSxNQUFNLE1BQU0sS0FBSyxVQUFVLE1BQU0sTUFBTSxNQUFNLE1BQU0sVUFBVSxVQUFVLFdBQVcsV0FBVyxNQUFNLEtBQUssVUFBVSxNQUFNLEtBQUssVUFBVSxNQUFNLFFBQVEsTUFBTSxLQUFLLG9CQUFvQixxQkFBcUIscUJBQXFCLE1BQU0sUUFBUSxNQUFNLFNBQVMscUJBQXFCLHFCQUFxQixxQkFBcUIsb0JBQW9CLHFCQUFxQixxQkFBcUIscUJBQXFCLG9CQUFvQixvQkFBb0Isb0JBQW9CLE1BQU0sTUFBTSxNQUFNLE1BQU0sV0FBVyxNQUFNLE9BQU8sTUFBTSxRQUFRLHFCQUFxQixxQkFBcUIscUJBQXFCLE1BQU0sTUFBTSxNQUFNLEtBQUssVUFBVSxNQUFNLE1BQU0sTUFBTSxLQUFLLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxXQUFXLE1BQU0sTUFBTSxNQUFNLE1BQU0sVUFBVSxNQUFNLE9BQU8sTUFBTSxLQUFLLHFCQUFxQixxQkFBcUIsTUFBTSxNQUFNLE1BQU0sS0FBSyxXQUFXLE1BQU0sT0FBTyxNQUFNLEtBQUsscUJBQXFCLG9CQUFvQixNQUFNLE1BQU0sTUFBTSxLQUFLLFdBQVcsTUFBTSxNQUFNLE1BQU0saUJBQWlCLFVBQVUsTUFBTSxLQUFLLFVBQVUsVUFBVSxNQUFNLEtBQUssVUFBVSxNQUFNLE9BQU8sV0FBVyxVQUFVLFVBQVUsTUFBTSxNQUFNLEtBQUssS0FBSyxVQUFVLE1BQU0sTUFBTSxNQUFNLEtBQUssV0FBVyxNQUFNLE9BQU8sTUFBTSxLQUFLLG9CQUFvQixvQkFBb0IsTUFBTSxNQUFNLG9CQUFvQixvQkFBb0IsTUFBTSxNQUFNLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxLQUFLLEtBQUssVUFBVSxNQUFNLFFBQVEsTUFBTSxZQUFZLG9CQUFvQixxQkFBcUIsTUFBTSxNQUFNLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxXQUFXLEtBQUssVUFBVSxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLE1BQU0sS0FBSyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLE1BQU0sS0FBSyxVQUFVLEtBQUssTUFBTSxLQUFLLFVBQVUsS0FBSyxNQUFNLEtBQUssS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxLQUFLLE1BQU0sS0FBSyxVQUFVLEtBQUssTUFBTSxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxVQUFVLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxNQUFNLEtBQUssS0FBSyxNQUFNLEtBQUssS0FBSyxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxNQUFNLE1BQU0sS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLE1BQU0sS0FBSyxXQUFXLE1BQU0sTUFBTSxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsTUFBTSxNQUFNLEtBQUssV0FBVyxXQUFXLEtBQUssS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLEtBQUssV0FBVyxXQUFXLE1BQU0sS0FBSyxVQUFVLFVBQVUsTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxLQUFLLEtBQUssS0FBSyxNQUFNLEtBQUssS0FBSyxNQUFNLE1BQU0sS0FBSyxLQUFLLEtBQUssTUFBTSxLQUFLLFdBQVcsVUFBVSxVQUFVLFdBQVcsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxNQUFNLEtBQUssV0FBVyxLQUFLLEtBQUssTUFBTSxLQUFLLEtBQUssTUFBTSxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLE1BQU0sTUFBTSxLQUFLLFdBQVcsS0FBSyxLQUFLLE1BQU0sS0FBSyxVQUFVLE1BQU0sS0FBSyxXQUFXLFlBQVksV0FBVyxXQUFXLE1BQU0sS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssTUFBTSxLQUFLLEtBQUssTUFBTSxNQUFNLE1BQU0sS0FBSyxLQUFLLE1BQU0sS0FBSyxLQUFLLE1BQU0sTUFBTSxLQUFLLFdBQVcsS0FBSyxLQUFLLE1BQU0sS0FBSyxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sTUFBTSxLQUFLLEtBQUssS0FBSyxNQUFNLEtBQUssV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxNQUFNLFdBQVcsS0FBSyxNQUFNLEtBQUssS0FBSyxNQUFNLFFBQVEsV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssTUFBTSxLQUFLLFdBQVcsS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLE1BQU0sS0FBSyxXQUFXLEtBQUssS0FBSyxLQUFLLEtBQUssTUFBTSxPQUFPLEtBQUssS0FBSyxNQUFNLEtBQUssT0FBTyxLQUFLLEtBQUssTUFBTSxLQUFLLE9BQU8sS0FBSyxLQUFLLE1BQU0sS0FBSyxPQUFPLEtBQUssS0FBSyxNQUFNLEtBQUssT0FBTyxLQUFLLEtBQUssTUFBTSxLQUFLLE1BQU0sWUFBWSxZQUFZLEtBQUssTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNLFdBQVcsWUFBWSxNQUFNLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxZQUFZLGFBQWEsWUFBWSxhQUFhLFlBQVksYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFdBQVcsYUFBYSxZQUFZLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sV0FBVyxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxZQUFZLE1BQU0sTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxRQUFRLFlBQVksYUFBYSxZQUFZLE1BQU0sTUFBTSxRQUFRLFlBQVksWUFBWSxZQUFZLE1BQU0sTUFBTSxRQUFRLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLFFBQVEsWUFBWSxNQUFNLE1BQU0sUUFBUSxZQUFZLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxPQUFPLFdBQVcsWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLEtBQUssS0FBSyxXQUFXLFlBQVksWUFBWSxZQUFZLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxRQUFRLEtBQUssTUFBTSxPQUFPLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sT0FBTyxZQUFZLGFBQWEsYUFBYSxNQUFNLE1BQU0sUUFBUSxZQUFZLE1BQU0sTUFBTSxRQUFRLFlBQVksTUFBTSxNQUFNLE1BQU0sVUFBVSxXQUFXLFlBQVksWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsTUFBTSxLQUFLLFlBQVksYUFBYSxhQUFhLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxPQUFPLEtBQUssS0FBSyxNQUFNLEtBQUssTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLGFBQWEsS0FBSyxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsS0FBSyxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsS0FBSyxNQUFNLFdBQVcsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sT0FBTyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0saUVBQWlFLG1CQUFtQiwrQkFBK0IsK0JBQStCLHFEQUFxRCxtQkFBbUIsaUVBQWlFLG1CQUFtQixtQkFBbUIsbUJBQW1CLDJGQUEyRixtQkFBbUIsaUVBQWlFLHVDQUF1Qyx1Q0FBdUMsdUNBQXVDLG1EQUFtRCx1Q0FBdUMsdUNBQXVDLHVDQUF1Qyx1Q0FBdUMsbURBQW1ELHVDQUF1Qyx1Q0FBdUMsK0dBQStHLGlCQUFpQiwrQkFBK0IscUVBQXFFLHNIQUFzSCwrRUFBK0UsbUVBQW1FLHFEQUFxRCwyREFBMkQsMkxBQTJMLCtEQUErRCwyRUFBMkUsK0RBQStELDJCQUEyQixtSkFBbUosdUNBQXVDLGlCQUFpQixpQkFBaUIscUZBQXFGLHFGQUFxRixpQkFBaUIsMkNBQTJDLDZEQUE2RCxpREFBaUQseUdBQXlHLGlEQUFpRCwyQkFBMkIseUVBQXlFLCtGQUErRiwyREFBMkQsaUJBQWlCLHFFQUFxRSwyQkFBMkIsbUJBQW1CLGlCQUFpQixpQkFBaUIsbUdBQW1HLDZHQUE2RyxpQkFBaUIsaUhBQWlILE9BQU8sVUFBVSxVQUFVLFlBQVksTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLE1BQU0sS0FBSyxXQUFXLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLEtBQUssTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE9BQU8sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksYUFBYSxhQUFhLE1BQU0sTUFBTSxPQUFPLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLE9BQU8sWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLFFBQVEsWUFBWSxNQUFNLE1BQU0sTUFBTSxXQUFXLEtBQUssS0FBSyxLQUFLLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sT0FBTyxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE9BQU8sWUFBWSxNQUFNLEtBQUssWUFBWSxhQUFhLGFBQWEsTUFBTSxNQUFNLFFBQVEsWUFBWSxNQUFNLE1BQU0sTUFBTSxXQUFXLEtBQUssS0FBSyxLQUFLLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE9BQU8sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxPQUFPLFlBQVksTUFBTSxLQUFLLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxPQUFPLFlBQVksYUFBYSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLGFBQWEsYUFBYSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLEtBQUssWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE9BQU8sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxhQUFhLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLGFBQWEsTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxLQUFLLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sS0FBSyxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sTUFBTSxZQUFZLE1BQU0sTUFBTSxNQUFNLFlBQVksTUFBTSxNQUFNLE1BQU0sWUFBWSxNQUFNLE1BQU0sT0FBTyxLQUFLLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFdBQVcsTUFBTSxPQUFPLE1BQU0sS0FBSyxPQUFPLE1BQU0sV0FBVyxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxNQUFNLEtBQUssT0FBTyxLQUFLLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLFlBQVksYUFBYSxNQUFNLE9BQU8sTUFBTSxZQUFZLGFBQWEsTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sTUFBTSxLQUFLLE9BQU8sS0FBSyxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxZQUFZLGFBQWEsTUFBTSxPQUFPLE1BQU0sWUFBWSxhQUFhLE1BQU0sT0FBTyxNQUFNLFlBQVksYUFBYSxNQUFNLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLEtBQUssT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sWUFBWSxNQUFNLE9BQU8sTUFBTSxZQUFZLE1BQU0sT0FBTyxNQUFNLFlBQVksTUFBTSxPQUFPLE1BQU0sS0FBSyxPQUFPLE1BQU0sS0FBSyxPQUFPLE1B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LG9CQUFvQiw0QkFBNEIsS0FBSyx3QkFBd0IsNkJBQTZCLEtBQUsseUdBQXlHLGdDQUFnQyxLQUFLLDhCQUE4Qiw0QkFBNEIsS0FBSywyQkFBMkIsK0JBQStCLEtBQUssdUpBQXVKLCtCQUErQixLQUFLLEdBQUcsa0JBQWtCLGtCQUFrQix1Q0FBdUMsaUVBQWlFLDBCQUEwQixPQUFPLEtBQUssMEJBQTBCLHNCQUFzQixLQUFLLG9CQUFvQiw0QkFBNEIsS0FBSyx3QkFBd0IsNEJBQTRCLEtBQUssa0NBQWtDLDRCQUE0QixLQUFLLHNCQUFzQiw4QkFBOEIsS0FBSyx5R0FBeUcsZ0NBQWdDLEtBQUssOEJBQThCLDRCQUE0QixLQUFLLDJCQUEyQiwrQkFBK0IsS0FBSyx1SkFBdUosK0JBQStCLEtBQUssc0JBQXNCLDhCQUE4QixLQUFLLG9DQUFvQyw4QkFBOEIsS0FBSyxzQ0FBc0MsOEJBQThCLEtBQUssR0FBRyxrQ0FBa0MscUNBQXFDLG9DQUFvQyxpQ0FBaUMsdUNBQXVDLDBCQUEwQiw0QkFBNEIsdUJBQXVCLHdCQUF3QiwwQkFBMEIsaUNBQWlDLHVCQUF1QiwyQkFBMkIsc0JBQXNCLHNEQUFzRCxHQUFHLGVBQWUsNkJBQTZCLEdBQUcsWUFBWSw2QkFBNkIsR0FBRyxtQkFBbUIsOENBQThDLGlDQUFpQyxHQUFHLG1DQUFtQyxtQ0FBbUMsR0FBRyx1QkFBdUIsMEVBQTBFLEdBQUcscUJBQXFCO0FBQ3YzcEs7QUFDQSwrREFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvY3NzL21haW4uY3NzPzNhNGYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyh0cnVlKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIiosIDo6YmVmb3JlLCA6OmFmdGVyIHtcXG4gIC0tdHctYm9yZGVyLXNwYWNpbmcteDogMDtcXG4gIC0tdHctYm9yZGVyLXNwYWNpbmcteTogMDtcXG4gIC0tdHctdHJhbnNsYXRlLXg6IDA7XFxuICAtLXR3LXRyYW5zbGF0ZS15OiAwO1xcbiAgLS10dy1yb3RhdGU6IDA7XFxuICAtLXR3LXNrZXcteDogMDtcXG4gIC0tdHctc2tldy15OiAwO1xcbiAgLS10dy1zY2FsZS14OiAxO1xcbiAgLS10dy1zY2FsZS15OiAxO1xcbiAgLS10dy1wYW4teDogIDtcXG4gIC0tdHctcGFuLXk6ICA7XFxuICAtLXR3LXBpbmNoLXpvb206ICA7XFxuICAtLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6IHByb3hpbWl0eTtcXG4gIC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogIDtcXG4gIC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiAgO1xcbiAgLS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogIDtcXG4gIC0tdHctb3JkaW5hbDogIDtcXG4gIC0tdHctc2xhc2hlZC16ZXJvOiAgO1xcbiAgLS10dy1udW1lcmljLWZpZ3VyZTogIDtcXG4gIC0tdHctbnVtZXJpYy1zcGFjaW5nOiAgO1xcbiAgLS10dy1udW1lcmljLWZyYWN0aW9uOiAgO1xcbiAgLS10dy1yaW5nLWluc2V0OiAgO1xcbiAgLS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4O1xcbiAgLS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDU5IDEzMCAyNDYgLyAwLjUpO1xcbiAgLS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IDAgMCAjMDAwMDtcXG4gIC0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDtcXG4gIC0tdHctc2hhZG93OiAwIDAgIzAwMDA7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDAgIzAwMDA7XFxuICAtLXR3LWJsdXI6ICA7XFxuICAtLXR3LWJyaWdodG5lc3M6ICA7XFxuICAtLXR3LWNvbnRyYXN0OiAgO1xcbiAgLS10dy1ncmF5c2NhbGU6ICA7XFxuICAtLXR3LWh1ZS1yb3RhdGU6ICA7XFxuICAtLXR3LWludmVydDogIDtcXG4gIC0tdHctc2F0dXJhdGU6ICA7XFxuICAtLXR3LXNlcGlhOiAgO1xcbiAgLS10dy1kcm9wLXNoYWRvdzogIDtcXG4gIC0tdHctYmFja2Ryb3AtYmx1cjogIDtcXG4gIC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogIDtcXG4gIC0tdHctYmFja2Ryb3AtY29udHJhc3Q6ICA7XFxuICAtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogIDtcXG4gIC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogIDtcXG4gIC0tdHctYmFja2Ryb3AtaW52ZXJ0OiAgO1xcbiAgLS10dy1iYWNrZHJvcC1vcGFjaXR5OiAgO1xcbiAgLS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogIDtcXG4gIC0tdHctYmFja2Ryb3Atc2VwaWE6ICA7XFxuICAtLXR3LWNvbnRhaW4tc2l6ZTogIDtcXG4gIC0tdHctY29udGFpbi1sYXlvdXQ6ICA7XFxuICAtLXR3LWNvbnRhaW4tcGFpbnQ6ICA7XFxuICAtLXR3LWNvbnRhaW4tc3R5bGU6ICA7XFxufVxcblxcbjo6YmFja2Ryb3Age1xcbiAgLS10dy1ib3JkZXItc3BhY2luZy14OiAwO1xcbiAgLS10dy1ib3JkZXItc3BhY2luZy15OiAwO1xcbiAgLS10dy10cmFuc2xhdGUteDogMDtcXG4gIC0tdHctdHJhbnNsYXRlLXk6IDA7XFxuICAtLXR3LXJvdGF0ZTogMDtcXG4gIC0tdHctc2tldy14OiAwO1xcbiAgLS10dy1za2V3LXk6IDA7XFxuICAtLXR3LXNjYWxlLXg6IDE7XFxuICAtLXR3LXNjYWxlLXk6IDE7XFxuICAtLXR3LXBhbi14OiAgO1xcbiAgLS10dy1wYW4teTogIDtcXG4gIC0tdHctcGluY2gtem9vbTogIDtcXG4gIC0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5O1xcbiAgLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiAgO1xcbiAgLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246ICA7XFxuICAtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiAgO1xcbiAgLS10dy1vcmRpbmFsOiAgO1xcbiAgLS10dy1zbGFzaGVkLXplcm86ICA7XFxuICAtLXR3LW51bWVyaWMtZmlndXJlOiAgO1xcbiAgLS10dy1udW1lcmljLXNwYWNpbmc6ICA7XFxuICAtLXR3LW51bWVyaWMtZnJhY3Rpb246ICA7XFxuICAtLXR3LXJpbmctaW5zZXQ6ICA7XFxuICAtLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7XFxuICAtLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiAjZmZmO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIDAuNSk7XFxuICAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwO1xcbiAgLS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwO1xcbiAgLS10dy1zaGFkb3c6IDAgMCAjMDAwMDtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDtcXG4gIC0tdHctYmx1cjogIDtcXG4gIC0tdHctYnJpZ2h0bmVzczogIDtcXG4gIC0tdHctY29udHJhc3Q6ICA7XFxuICAtLXR3LWdyYXlzY2FsZTogIDtcXG4gIC0tdHctaHVlLXJvdGF0ZTogIDtcXG4gIC0tdHctaW52ZXJ0OiAgO1xcbiAgLS10dy1zYXR1cmF0ZTogIDtcXG4gIC0tdHctc2VwaWE6ICA7XFxuICAtLXR3LWRyb3Atc2hhZG93OiAgO1xcbiAgLS10dy1iYWNrZHJvcC1ibHVyOiAgO1xcbiAgLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiAgO1xcbiAgLS10dy1iYWNrZHJvcC1jb250cmFzdDogIDtcXG4gIC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiAgO1xcbiAgLS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiAgO1xcbiAgLS10dy1iYWNrZHJvcC1pbnZlcnQ6ICA7XFxuICAtLXR3LWJhY2tkcm9wLW9wYWNpdHk6ICA7XFxuICAtLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiAgO1xcbiAgLS10dy1iYWNrZHJvcC1zZXBpYTogIDtcXG4gIC0tdHctY29udGFpbi1zaXplOiAgO1xcbiAgLS10dy1jb250YWluLWxheW91dDogIDtcXG4gIC0tdHctY29udGFpbi1wYWludDogIDtcXG4gIC0tdHctY29udGFpbi1zdHlsZTogIDtcXG59LypcXG4hIHRhaWx3aW5kY3NzIHYzLjQuMTcgfCBNSVQgTGljZW5zZSB8IGh0dHBzOi8vdGFpbHdpbmRjc3MuY29tXFxuKi8vKlxcbjEuIFByZXZlbnQgcGFkZGluZyBhbmQgYm9yZGVyIGZyb20gYWZmZWN0aW5nIGVsZW1lbnQgd2lkdGguIChodHRwczovL2dpdGh1Yi5jb20vbW96ZGV2cy9jc3NyZW1lZHkvaXNzdWVzLzQpXFxuMi4gQWxsb3cgYWRkaW5nIGEgYm9yZGVyIHRvIGFuIGVsZW1lbnQgYnkganVzdCBhZGRpbmcgYSBib3JkZXItd2lkdGguIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRjc3MvdGFpbHdpbmRjc3MvcHVsbC8xMTYpXFxuKi9cXG5cXG4qLFxcbjo6YmVmb3JlLFxcbjo6YWZ0ZXIge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xcbiAgYm9yZGVyLXdpZHRoOiAwOyAvKiAyICovXFxuICBib3JkZXItc3R5bGU6IHNvbGlkOyAvKiAyICovXFxuICBib3JkZXItY29sb3I6ICNlNWU3ZWI7IC8qIDIgKi9cXG59XFxuXFxuOjpiZWZvcmUsXFxuOjphZnRlciB7XFxuICAtLXR3LWNvbnRlbnQ6ICcnO1xcbn1cXG5cXG4vKlxcbjEuIFVzZSBhIGNvbnNpc3RlbnQgc2Vuc2libGUgbGluZS1oZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxcbjIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxcbjMuIFVzZSBhIG1vcmUgcmVhZGFibGUgdGFiIHNpemUuXFxuNC4gVXNlIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBgc2Fuc2AgZm9udC1mYW1pbHkgYnkgZGVmYXVsdC5cXG41LiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBzYW5zYCBmb250LWZlYXR1cmUtc2V0dGluZ3MgYnkgZGVmYXVsdC5cXG42LiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBzYW5zYCBmb250LXZhcmlhdGlvbi1zZXR0aW5ncyBieSBkZWZhdWx0LlxcbjcuIERpc2FibGUgdGFwIGhpZ2hsaWdodHMgb24gaU9TXFxuKi9cXG5cXG5odG1sLFxcbjpob3N0IHtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7IC8qIDEgKi9cXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xcbiAgLW1vei10YWItc2l6ZTogNDsgLyogMyAqL1xcbiAgLW8tdGFiLXNpemU6IDQ7XFxuICAgICB0YWItc2l6ZTogNDsgLyogMyAqL1xcbiAgZm9udC1mYW1pbHk6IHVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIFN5bWJvbFxcXCIsIFxcXCJOb3RvIENvbG9yIEVtb2ppXFxcIjsgLyogNCAqL1xcbiAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBub3JtYWw7IC8qIDUgKi9cXG4gIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBub3JtYWw7IC8qIDYgKi9cXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIDcgKi9cXG59XFxuXFxuLypcXG4xLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXFxuMi4gSW5oZXJpdCBsaW5lLWhlaWdodCBmcm9tIGBodG1sYCBzbyB1c2VycyBjYW4gc2V0IHRoZW0gYXMgYSBjbGFzcyBkaXJlY3RseSBvbiB0aGUgYGh0bWxgIGVsZW1lbnQuXFxuKi9cXG5cXG5ib2R5IHtcXG4gIG1hcmdpbjogMDsgLyogMSAqL1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IC8qIDIgKi9cXG59XFxuXFxuLypcXG4xLiBBZGQgdGhlIGNvcnJlY3QgaGVpZ2h0IGluIEZpcmVmb3guXFxuMi4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2Ugb2YgYm9yZGVyIGNvbG9yIGluIEZpcmVmb3guIChodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NTUpXFxuMy4gRW5zdXJlIGhvcml6b250YWwgcnVsZXMgYXJlIHZpc2libGUgYnkgZGVmYXVsdC5cXG4qL1xcblxcbmhyIHtcXG4gIGhlaWdodDogMDsgLyogMSAqL1xcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cXG4gIGJvcmRlci10b3Atd2lkdGg6IDFweDsgLyogMyAqL1xcbn1cXG5cXG4vKlxcbkFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxcbiovXFxuXFxuYWJicjp3aGVyZShbdGl0bGVdKSB7XFxuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcXG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xcbn1cXG5cXG4vKlxcblJlbW92ZSB0aGUgZGVmYXVsdCBmb250IHNpemUgYW5kIHdlaWdodCBmb3IgaGVhZGluZ3MuXFxuKi9cXG5cXG5oMSxcXG5oMixcXG5oMyxcXG5oNCxcXG5oNSxcXG5oNiB7XFxuICBmb250LXNpemU6IGluaGVyaXQ7XFxuICBmb250LXdlaWdodDogaW5oZXJpdDtcXG59XFxuXFxuLypcXG5SZXNldCBsaW5rcyB0byBvcHRpbWl6ZSBmb3Igb3B0LWluIHN0eWxpbmcgaW5zdGVhZCBvZiBvcHQtb3V0LlxcbiovXFxuXFxuYSB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcXG59XFxuXFxuLypcXG5BZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gRWRnZSBhbmQgU2FmYXJpLlxcbiovXFxuXFxuYixcXG5zdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcXG59XFxuXFxuLypcXG4xLiBVc2UgdGhlIHVzZXIncyBjb25maWd1cmVkIGBtb25vYCBmb250LWZhbWlseSBieSBkZWZhdWx0LlxcbjIuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtZmVhdHVyZS1zZXR0aW5ncyBieSBkZWZhdWx0LlxcbjMuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYG1vbm9gIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzIGJ5IGRlZmF1bHQuXFxuNC4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxcbiovXFxuXFxuY29kZSxcXG5rYmQsXFxuc2FtcCxcXG5wcmUge1xcbiAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcXFwiTGliZXJhdGlvbiBNb25vXFxcIiwgXFxcIkNvdXJpZXIgTmV3XFxcIiwgbW9ub3NwYWNlOyAvKiAxICovXFxuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IG5vcm1hbDsgLyogMiAqL1xcbiAgZm9udC12YXJpYXRpb24tc2V0dGluZ3M6IG5vcm1hbDsgLyogMyAqL1xcbiAgZm9udC1zaXplOiAxZW07IC8qIDQgKi9cXG59XFxuXFxuLypcXG5BZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cXG4qL1xcblxcbnNtYWxsIHtcXG4gIGZvbnQtc2l6ZTogODAlO1xcbn1cXG5cXG4vKlxcblByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXFxuKi9cXG5cXG5zdWIsXFxuc3VwIHtcXG4gIGZvbnQtc2l6ZTogNzUlO1xcbiAgbGluZS1oZWlnaHQ6IDA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxufVxcblxcbnN1YiB7XFxuICBib3R0b206IC0wLjI1ZW07XFxufVxcblxcbnN1cCB7XFxuICB0b3A6IC0wLjVlbTtcXG59XFxuXFxuLypcXG4xLiBSZW1vdmUgdGV4dCBpbmRlbnRhdGlvbiBmcm9tIHRhYmxlIGNvbnRlbnRzIGluIENocm9tZSBhbmQgU2FmYXJpLiAoaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTk5MDg4LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMjk3KVxcbjIuIENvcnJlY3QgdGFibGUgYm9yZGVyIGNvbG9yIGluaGVyaXRhbmNlIGluIGFsbCBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkzNTcyOSwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTAxNilcXG4zLiBSZW1vdmUgZ2FwcyBiZXR3ZWVuIHRhYmxlIGJvcmRlcnMgYnkgZGVmYXVsdC5cXG4qL1xcblxcbnRhYmxlIHtcXG4gIHRleHQtaW5kZW50OiAwOyAvKiAxICovXFxuICBib3JkZXItY29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IC8qIDMgKi9cXG59XFxuXFxuLypcXG4xLiBDaGFuZ2UgdGhlIGZvbnQgc3R5bGVzIGluIGFsbCBicm93c2Vycy5cXG4yLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXFxuMy4gUmVtb3ZlIGRlZmF1bHQgcGFkZGluZyBpbiBhbGwgYnJvd3NlcnMuXFxuKi9cXG5cXG5idXR0b24sXFxuaW5wdXQsXFxub3B0Z3JvdXAsXFxuc2VsZWN0LFxcbnRleHRhcmVhIHtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0OyAvKiAxICovXFxuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IGluaGVyaXQ7IC8qIDEgKi9cXG4gIGZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiBpbmhlcml0OyAvKiAxICovXFxuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cXG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0OyAvKiAxICovXFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDsgLyogMSAqL1xcbiAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7IC8qIDEgKi9cXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAxICovXFxuICBtYXJnaW46IDA7IC8qIDIgKi9cXG4gIHBhZGRpbmc6IDA7IC8qIDMgKi9cXG59XFxuXFxuLypcXG5SZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UgYW5kIEZpcmVmb3guXFxuKi9cXG5cXG5idXR0b24sXFxuc2VsZWN0IHtcXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xcbn1cXG5cXG4vKlxcbjEuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXFxuMi4gUmVtb3ZlIGRlZmF1bHQgYnV0dG9uIHN0eWxlcy5cXG4qL1xcblxcbmJ1dHRvbixcXG5pbnB1dDp3aGVyZShbdHlwZT0nYnV0dG9uJ10pLFxcbmlucHV0OndoZXJlKFt0eXBlPSdyZXNldCddKSxcXG5pbnB1dDp3aGVyZShbdHlwZT0nc3VibWl0J10pIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMiAqL1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLyogMiAqL1xcbn1cXG5cXG4vKlxcblVzZSB0aGUgbW9kZXJuIEZpcmVmb3ggZm9jdXMgc3R5bGUgZm9yIGFsbCBmb2N1c2FibGUgZWxlbWVudHMuXFxuKi9cXG5cXG46LW1vei1mb2N1c3Jpbmcge1xcbiAgb3V0bGluZTogYXV0bztcXG59XFxuXFxuLypcXG5SZW1vdmUgdGhlIGFkZGl0aW9uYWwgYDppbnZhbGlkYCBzdHlsZXMgaW4gRmlyZWZveC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi9ibG9iLzJmOWVhY2Q5ZDNkOTk1YzkzN2I0MjUxYTU1NTdkOTVkNDk0YzliZTEvbGF5b3V0L3N0eWxlL3Jlcy9mb3Jtcy5jc3MjTDcyOC1MNzM3KVxcbiovXFxuXFxuOi1tb3otdWktaW52YWxpZCB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG5cXG4vKlxcbkFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lIGFuZCBGaXJlZm94LlxcbiovXFxuXFxucHJvZ3Jlc3Mge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG5cXG4vKlxcbkNvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIFNhZmFyaS5cXG4qL1xcblxcbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcXG46Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xcbiAgaGVpZ2h0OiBhdXRvO1xcbn1cXG5cXG4vKlxcbjEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxcbjIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxcbiovXFxuXFxuW3R5cGU9J3NlYXJjaCddIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXFxuICBvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xcbn1cXG5cXG4vKlxcblJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cXG4qL1xcblxcbjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XFxufVxcblxcbi8qXFxuMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cXG4yLiBDaGFuZ2UgZm9udCBwcm9wZXJ0aWVzIHRvIGBpbmhlcml0YCBpbiBTYWZhcmkuXFxuKi9cXG5cXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXFxuICBmb250OiBpbmhlcml0OyAvKiAyICovXFxufVxcblxcbi8qXFxuQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gQ2hyb21lIGFuZCBTYWZhcmkuXFxuKi9cXG5cXG5zdW1tYXJ5IHtcXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcXG59XFxuXFxuLypcXG5SZW1vdmVzIHRoZSBkZWZhdWx0IHNwYWNpbmcgYW5kIGJvcmRlciBmb3IgYXBwcm9wcmlhdGUgZWxlbWVudHMuXFxuKi9cXG5cXG5ibG9ja3F1b3RlLFxcbmRsLFxcbmRkLFxcbmgxLFxcbmgyLFxcbmgzLFxcbmg0LFxcbmg1LFxcbmg2LFxcbmhyLFxcbmZpZ3VyZSxcXG5wLFxcbnByZSB7XFxuICBtYXJnaW46IDA7XFxufVxcblxcbmZpZWxkc2V0IHtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbmxlZ2VuZCB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG5vbCxcXG51bCxcXG5tZW51IHtcXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4vKlxcblJlc2V0IGRlZmF1bHQgc3R5bGluZyBmb3IgZGlhbG9ncy5cXG4qL1xcbmRpYWxvZyB7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG4vKlxcblByZXZlbnQgcmVzaXppbmcgdGV4dGFyZWFzIGhvcml6b250YWxseSBieSBkZWZhdWx0LlxcbiovXFxuXFxudGV4dGFyZWEge1xcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcXG59XFxuXFxuLypcXG4xLiBSZXNldCB0aGUgZGVmYXVsdCBwbGFjZWhvbGRlciBvcGFjaXR5IGluIEZpcmVmb3guIChodHRwczovL2dpdGh1Yi5jb20vdGFpbHdpbmRsYWJzL3RhaWx3aW5kY3NzL2lzc3Vlcy8zMzAwKVxcbjIuIFNldCB0aGUgZGVmYXVsdCBwbGFjZWhvbGRlciBjb2xvciB0byB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgZ3JheSA0MDAgY29sb3IuXFxuKi9cXG5cXG5pbnB1dDo6LW1vei1wbGFjZWhvbGRlciwgdGV4dGFyZWE6Oi1tb3otcGxhY2Vob2xkZXIge1xcbiAgb3BhY2l0eTogMTsgLyogMSAqL1xcbiAgY29sb3I6ICM5Y2EzYWY7IC8qIDIgKi9cXG59XFxuXFxuaW5wdXQ6OnBsYWNlaG9sZGVyLFxcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XFxuICBvcGFjaXR5OiAxOyAvKiAxICovXFxuICBjb2xvcjogIzljYTNhZjsgLyogMiAqL1xcbn1cXG5cXG4vKlxcblNldCB0aGUgZGVmYXVsdCBjdXJzb3IgZm9yIGJ1dHRvbnMuXFxuKi9cXG5cXG5idXR0b24sXFxuW3JvbGU9XFxcImJ1dHRvblxcXCJdIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLypcXG5NYWtlIHN1cmUgZGlzYWJsZWQgYnV0dG9ucyBkb24ndCBnZXQgdGhlIHBvaW50ZXIgY3Vyc29yLlxcbiovXFxuOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG59XFxuXFxuLypcXG4xLiBNYWtlIHJlcGxhY2VkIGVsZW1lbnRzIGBkaXNwbGF5OiBibG9ja2AgYnkgZGVmYXVsdC4gKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTQpXFxuMi4gQWRkIGB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlYCB0byBhbGlnbiByZXBsYWNlZCBlbGVtZW50cyBtb3JlIHNlbnNpYmx5IGJ5IGRlZmF1bHQuIChodHRwczovL2dpdGh1Yi5jb20vamVuc2ltbW9ucy9jc3NyZW1lZHkvaXNzdWVzLzE0I2lzc3VlY29tbWVudC02MzQ5MzQyMTApXFxuICAgVGhpcyBjYW4gdHJpZ2dlciBhIHBvb3JseSBjb25zaWRlcmVkIGxpbnQgZXJyb3IgaW4gc29tZSB0b29scyBidXQgaXMgaW5jbHVkZWQgYnkgZGVzaWduLlxcbiovXFxuXFxuaW1nLFxcbnN2ZyxcXG52aWRlbyxcXG5jYW52YXMsXFxuYXVkaW8sXFxuaWZyYW1lLFxcbmVtYmVkLFxcbm9iamVjdCB7XFxuICBkaXNwbGF5OiBibG9jazsgLyogMSAqL1xcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogMiAqL1xcbn1cXG5cXG4vKlxcbkNvbnN0cmFpbiBpbWFnZXMgYW5kIHZpZGVvcyB0byB0aGUgcGFyZW50IHdpZHRoIGFuZCBwcmVzZXJ2ZSB0aGVpciBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvLiAoaHR0cHM6Ly9naXRodWIuY29tL21vemRldnMvY3NzcmVtZWR5L2lzc3Vlcy8xNClcXG4qL1xcblxcbmltZyxcXG52aWRlbyB7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcblxcbi8qIE1ha2UgZWxlbWVudHMgd2l0aCB0aGUgSFRNTCBoaWRkZW4gYXR0cmlidXRlIHN0YXkgaGlkZGVuIGJ5IGRlZmF1bHQgKi9cXG5baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49XFxcInVudGlsLWZvdW5kXFxcIl0pKSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG5bdHlwZT0ndGV4dCddLGlucHV0OndoZXJlKDpub3QoW3R5cGVdKSksW3R5cGU9J2VtYWlsJ10sW3R5cGU9J3VybCddLFt0eXBlPSdwYXNzd29yZCddLFt0eXBlPSdudW1iZXInXSxbdHlwZT0nZGF0ZSddLFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFt0eXBlPSdtb250aCddLFt0eXBlPSdzZWFyY2gnXSxbdHlwZT0ndGVsJ10sW3R5cGU9J3RpbWUnXSxbdHlwZT0nd2VlayddLFttdWx0aXBsZV0sdGV4dGFyZWEsc2VsZWN0IHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcXG4gICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XFxuICBib3JkZXItY29sb3I6ICM2YjcyODA7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG4gIGJvcmRlci1yYWRpdXM6IDBweDtcXG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcXG4gIHBhZGRpbmctbGVmdDogMC43NXJlbTtcXG4gIGZvbnQtc2l6ZTogMXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxuICAtLXR3LXNoYWRvdzogMCAwICMwMDAwO1xcbn1cXG5cXG5bdHlwZT0ndGV4dCddOmZvY3VzLCBpbnB1dDp3aGVyZSg6bm90KFt0eXBlXSkpOmZvY3VzLCBbdHlwZT0nZW1haWwnXTpmb2N1cywgW3R5cGU9J3VybCddOmZvY3VzLCBbdHlwZT0ncGFzc3dvcmQnXTpmb2N1cywgW3R5cGU9J251bWJlciddOmZvY3VzLCBbdHlwZT0nZGF0ZSddOmZvY3VzLCBbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXTpmb2N1cywgW3R5cGU9J21vbnRoJ106Zm9jdXMsIFt0eXBlPSdzZWFyY2gnXTpmb2N1cywgW3R5cGU9J3RlbCddOmZvY3VzLCBbdHlwZT0ndGltZSddOmZvY3VzLCBbdHlwZT0nd2VlayddOmZvY3VzLCBbbXVsdGlwbGVdOmZvY3VzLCB0ZXh0YXJlYTpmb2N1cywgc2VsZWN0OmZvY3VzIHtcXG4gIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XFxuICAtLXR3LXJpbmctaW5zZXQ6IHZhcigtLXR3LWVtcHR5LC8qISovIC8qISovKTtcXG4gIC0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDBweDtcXG4gIC0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7XFxuICAtLXR3LXJpbmctY29sb3I6ICMyNTYzZWI7XFxuICAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTtcXG4gIC0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIGJvcmRlci1jb2xvcjogIzI1NjNlYjtcXG59XFxuXFxuaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIsIHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIGNvbG9yOiAjNmI3MjgwO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuXFxuaW5wdXQ6OnBsYWNlaG9sZGVyLHRleHRhcmVhOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogIzZiNzI4MDtcXG4gIG9wYWNpdHk6IDE7XFxufVxcblxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVyIHtcXG4gIHBhZGRpbmc6IDA7XFxufVxcblxcbjo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVlIHtcXG4gIG1pbi1oZWlnaHQ6IDEuNWVtO1xcbiAgdGV4dC1hbGlnbjogaW5oZXJpdDtcXG59XFxuXFxuOjotd2Via2l0LWRhdGV0aW1lLWVkaXQge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxufVxcblxcbjo6LXdlYmtpdC1kYXRldGltZS1lZGl0LDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtZGF5LWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWhvdXItZmllbGQsOjotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRlLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taWxsaXNlY29uZC1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tZXJpZGllbS1maWVsZCB7XFxuICBwYWRkaW5nLXRvcDogMDtcXG4gIHBhZGRpbmctYm90dG9tOiAwO1xcbn1cXG5cXG5zZWxlY3Qge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nbm9uZScgdmlld0JveD0nMCAwIDIwIDIwJyUzZSUzY3BhdGggc3Ryb2tlPSclMjM2YjcyODAnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPScxLjUnIGQ9J002IDhsNCA0IDQtNCcvJTNlJTNjL3N2ZyUzZVxcXCIpO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC41cmVtIGNlbnRlcjtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEuNWVtIDEuNWVtO1xcbiAgcGFkZGluZy1yaWdodDogMi41cmVtO1xcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xcbiAgICAgY29sb3ItYWRqdXN0OiBleGFjdDtcXG4gICAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcXG59XFxuXFxuW211bHRpcGxlXSxbc2l6ZV06d2hlcmUoc2VsZWN0Om5vdChbc2l6ZT1cXFwiMVxcXCJdKSkge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogaW5pdGlhbDtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGluaXRpYWw7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogdW5zZXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IGluaXRpYWw7XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IHVuc2V0O1xcbiAgICAgY29sb3ItYWRqdXN0OiB1bnNldDtcXG4gICAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiB1bnNldDtcXG59XFxuXFxuW3R5cGU9J2NoZWNrYm94J10sW3R5cGU9J3JhZGlvJ10ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xcbiAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xcbiAgcGFkZGluZzogMDtcXG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcXG4gICAgIGNvbG9yLWFkanVzdDogZXhhY3Q7XFxuICAgICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgYmFja2dyb3VuZC1vcmlnaW46IGJvcmRlci1ib3g7XFxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xcbiAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBmbGV4LXNocmluazogMDtcXG4gIGhlaWdodDogMXJlbTtcXG4gIHdpZHRoOiAxcmVtO1xcbiAgY29sb3I6ICMyNTYzZWI7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcbiAgYm9yZGVyLWNvbG9yOiAjNmI3MjgwO1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LXNoYWRvdzogMCAwICMwMDAwO1xcbn1cXG5cXG5bdHlwZT0nY2hlY2tib3gnXSB7XFxuICBib3JkZXItcmFkaXVzOiAwcHg7XFxufVxcblxcblt0eXBlPSdyYWRpbyddIHtcXG4gIGJvcmRlci1yYWRpdXM6IDEwMCU7XFxufVxcblxcblt0eXBlPSdjaGVja2JveCddOmZvY3VzLFt0eXBlPSdyYWRpbyddOmZvY3VzIHtcXG4gIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIG91dGxpbmUtb2Zmc2V0OiAycHg7XFxuICAtLXR3LXJpbmctaW5zZXQ6IHZhcigtLXR3LWVtcHR5LC8qISovIC8qISovKTtcXG4gIC0tdHctcmluZy1vZmZzZXQtd2lkdGg6IDJweDtcXG4gIC0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7XFxuICAtLXR3LXJpbmctY29sb3I6ICMyNTYzZWI7XFxuICAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTtcXG4gIC0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KTtcXG59XFxuXFxuW3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCxbdHlwZT0ncmFkaW8nXTpjaGVja2VkIHtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxufVxcblxcblt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHZpZXdCb3g9JzAgMCAxNiAxNicgZmlsbD0nd2hpdGUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM2UlM2NwYXRoIGQ9J00xMi4yMDcgNC43OTNhMSAxIDAgMDEwIDEuNDE0bC01IDVhMSAxIDAgMDEtMS40MTQgMGwtMi0yYTEgMSAwIDAxMS40MTQtMS40MTRMNi41IDkuMDg2bDQuMjkzLTQuMjkzYTEgMSAwIDAxMS40MTQgMHonLyUzZSUzYy9zdmclM2VcXFwiKTtcXG59XFxuXFxuQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpICB7XFxuXFxuICBbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkIHtcXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBhdXRvO1xcbiAgICAgICAtbW96LWFwcGVhcmFuY2U6IGF1dG87XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogYXV0bztcXG4gIH1cXG59XFxuXFxuW3R5cGU9J3JhZGlvJ106Y2hlY2tlZCB7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2Nzdmcgdmlld0JveD0nMCAwIDE2IDE2JyBmaWxsPSd3aGl0ZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzZSUzY2NpcmNsZSBjeD0nOCcgY3k9JzgnIHI9JzMnLyUzZSUzYy9zdmclM2VcXFwiKTtcXG59XFxuXFxuQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpICB7XFxuXFxuICBbdHlwZT0ncmFkaW8nXTpjaGVja2VkIHtcXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBhdXRvO1xcbiAgICAgICAtbW96LWFwcGVhcmFuY2U6IGF1dG87XFxuICAgICAgICAgICAgYXBwZWFyYW5jZTogYXV0bztcXG4gIH1cXG59XFxuXFxuW3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZDpob3ZlcixbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkOmZvY3VzLFt0eXBlPSdyYWRpbyddOmNoZWNrZWQ6aG92ZXIsW3R5cGU9J3JhZGlvJ106Y2hlY2tlZDpmb2N1cyB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xcbn1cXG5cXG5bdHlwZT0nY2hlY2tib3gnXTppbmRldGVybWluYXRlIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9J25vbmUnIHZpZXdCb3g9JzAgMCAxNiAxNiclM2UlM2NwYXRoIHN0cm9rZT0nd2hpdGUnIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA4aDgnLyUzZSUzYy9zdmclM2VcXFwiKTtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtcXG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxufVxcblxcbkBtZWRpYSAoZm9yY2VkLWNvbG9yczogYWN0aXZlKSAge1xcblxcbiAgW3R5cGU9J2NoZWNrYm94J106aW5kZXRlcm1pbmF0ZSB7XFxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYXV0bztcXG4gICAgICAgLW1vei1hcHBlYXJhbmNlOiBhdXRvO1xcbiAgICAgICAgICAgIGFwcGVhcmFuY2U6IGF1dG87XFxuICB9XFxufVxcblxcblt0eXBlPSdjaGVja2JveCddOmluZGV0ZXJtaW5hdGU6aG92ZXIsW3R5cGU9J2NoZWNrYm94J106aW5kZXRlcm1pbmF0ZTpmb2N1cyB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xcbn1cXG5cXG5bdHlwZT0nZmlsZSddIHtcXG4gIGJhY2tncm91bmQ6IHVuc2V0O1xcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0O1xcbiAgYm9yZGVyLXdpZHRoOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmb250LXNpemU6IHVuc2V0O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxufVxcblxcblt0eXBlPSdmaWxlJ106Zm9jdXMge1xcbiAgb3V0bGluZTogMXB4IHNvbGlkIEJ1dHRvblRleHQ7XFxuICBvdXRsaW5lOiAxcHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XFxufVxcbiAgcHJvZ3Jlc3Mge1xcbiAgaGVpZ2h0OiAwLjc1cmVtO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG59XFxuXFxuICBwcm9ncmVzczo6LXdlYmtpdC1wcm9ncmVzcy1iYXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5MSAyMTkgMjU0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIHByb2dyZXNzOjotd2Via2l0LXByb2dyZXNzLXZhbHVlIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIHByb2dyZXNzOjotbW96LXByb2dyZXNzLWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuXFxuICBwcm9ncmVzczo6LW1zLWZpbGwge1xcbiAgYm9yZGVyLXdpZHRoOiAwcHg7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuICBodG1sIHtcXG4gICAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgICBzY3JvbGxiYXItY29sb3I6IHJnYigxNTYsIDE2MywgMTc1KSByZ2IoMjQ5LCAyNTAsIDI1MSk7XFxuICB9XFxuXFxuICBib2R5Ojotd2Via2l0LXNjcm9sbGJhciB7XFxuICAgIHdpZHRoOiA4cHg7XFxuICAgIGhlaWdodDogOHB4O1xcbiAgfVxcblxcbiAgYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0OSAyNTAgMjUxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIGJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU2IDE2MyAxNzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcblxcbiAgYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwNyAxMTQgMTI4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4gIHRhYmxlIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5cXG4gIHRoZWFkIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgdGhlYWQge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XFxuICB9XFxufVxcblxcbiAgdHIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiA0cHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjQzIDI0NCAyNDYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIHRyOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigzMCA0MSA1OSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgdHIge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDtcXG4gIH1cXG59XFxuXFxuICB0cjpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDtcXG59XFxuXFxuICBAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XFxuXFxuICB0ZDpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XFxuICAgIGJvcmRlci10b3Atd2lkdGg6IDBweDtcXG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwcHg7XFxuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDtcXG4gICAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoMjQzIDI0NCAyNDYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbiAgfVxcblxcbiAgdGQ6bm90KDpmaXJzdC1jaGlsZCk6aXMoLmRhcmsgKikge1xcbiAgICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgICBib3JkZXItY29sb3I6IHJnYig1MSA2NSA4NSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxuICB9XFxufVxcblxcbiAgdGgge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xcbn1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG5cXG4gIHRoIHtcXG4gICAgcGFkZGluZzogMC43NXJlbTtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIH1cXG59XFxuXFxuICB0aC5zb3J0YWJsZSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gIH1cXG5cXG4gIHRoLnNvcnRhYmxlOmhvdmVyOmFmdGVyIHtcXG4gICAgdHJhbnNpdGlvbjogYWxsIDFzO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuXFxuICAgIGNvbnRlbnQ6ICfihpUnO1xcblxcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcXG4gIH1cXG5cXG4gIHRoLnNvcnRhYmxlLmFzYzpob3ZlcjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICfihpEnO1xcbiAgfVxcbiAgdGguc29ydGFibGUuZGVzYzpob3ZlcjphZnRlciB7XFxuICAgIGNvbnRlbnQ6ICfihpMnO1xcbiAgfVxcblxcbiAgdGQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigyNDMgMjQ0IDI0NiAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxuICBwYWRkaW5nLXRvcDogMC43NXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtO1xcbiAgcGFkZGluZy1sZWZ0OiAxcmVtO1xcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcXG59XFxuXFxuICB0ZDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMzAgNDEgNTkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgdGQge1xcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xcbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7XFxuICAgIHBhZGRpbmc6IDAuNzVyZW07XFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICB9XFxufVxcblxcbiAgdGQ6bGFzdC1jaGlsZCB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7XFxufVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgdGJvZHkgdHI6aG92ZXIsXFxuICB0Ym9keSB0cjpudGgtY2hpbGQob2RkKTpob3ZlciB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcgMjQ3IDI1MiAvIDAuNyk7XFxuICB9XFxufVxcblxcbiAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pOmlzKC5kYXJrICopIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDcgMjQ3IDI1MiAvIDAuNyk7XFxufVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgdGJvZHkgdHI6bnRoLWNoaWxkKGV2ZW4pIHtcXG4gICAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ3IDI0NyAyNTIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxuICB9XFxufVxcblxcbiAgdGQ6YmVmb3JlIHtcXG4gICAgY29udGVudDogYXR0cihkYXRhLWxhYmVsKTtcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG5cXG4gIHRkOmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbiAgdGJvZHkgdHIgdGQge1xcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyMCAyMCA0MiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIHRib2R5IHRyIHRkOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIC5kYXRhZ3JpZC0tdGFibGUsXFxuICAuTXVpRGF0YUdyaWQtcm9vdCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuICAuZGF0YWdyaWQtLWhlYWRlciB7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7XFxufVxcblxcbiAgLmRhdGFncmlkLS1oZWFkZXI6aXMoLmRhcmsgKiksXFxuICAuZGF0YWdyaWQtLWhlYWRlciAuTXVpSWNvbkJ1dHRvbi1yb290OmlzKC5kYXJrICopLFxcbiAgLmRhdGFncmlkLS1jZWxsOmlzKC5kYXJrICopLFxcbiAgLmRhdGFncmlkLS1jZWxsIC5NdWlJY29uQnV0dG9uLXJvb3Q6aXMoLmRhcmsgKikge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcblxcbiAgLmRhdGFncmlkLS1jZWxsIC5NdWlEYXRhR3JpZC1ib29sZWFuQ2VsbDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcblxcbiAgLmRhdGFncmlkLS1jZWxsIC5NdWlJY29uQnV0dG9uLXJvb3Q6aG92ZXI6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ0IDQ3IDU0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcblxcbiAgLmRhdGFncmlkLS1yb3c6bnRoLWNoaWxkKGV2ZW4pIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MyAyNDQgMjQ2IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcblxcbiAgLmRhdGFncmlkLS1yb3c6bnRoLWNoaWxkKG9kZCk6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkgMjIgMjQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuXFxuICAuZGF0YWdyaWQtLXJvdzpudGgtY2hpbGQoZXZlbik6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjcgMjkgMzQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuXFxuICAuZGF0YWdyaWQtLXRhYmxlIC5NdWlUYWJsZVBhZ2luYXRpb24tcm9vdDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuXFxuICAuZGF0YWdyaWQtLXRhYmxlIC5NdWlUYWJsZVBhZ2luYXRpb24tcm9vdCAuTXVpQnV0dG9uQmFzZS1yb290OmRpc2FibGVkOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIC5kYXRhZ3JpZC0tdGFibGUgLk11aVRhYmxlUGFnaW5hdGlvbi1yb290IC5NdWlCdXR0b25CYXNlLXJvb3Q6aG92ZXI6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ0IDQ3IDU0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIC5NdWlCdXR0b24tY29sb3JJbmhlcml0IHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogcmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcblxcbiAgLnRoZW1lLWdyZWVuIC5NdWlCdXR0b24tY29sb3JJbmhlcml0IHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyMCAyMCA0MiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG5cXG4gIC5NdWlCdXR0b24tY29sb3JJbmhlcml0OmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogcmdiKDQ0IDQ3IDU0IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLmNvbnRhaW5lciB7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDY0MHB4KSB7XFxuXFxuICAuY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiA2NDBweDtcXG4gIH1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuXFxuICAuY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiA3NjhweDtcXG4gIH1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgLmNvbnRhaW5lciB7XFxuICAgIG1heC13aWR0aDogMTAyNHB4O1xcbiAgfVxcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuXFxuICAuY29udGFpbmVyIHtcXG4gICAgbWF4LXdpZHRoOiAxMjgwcHg7XFxuICB9XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxNTM2cHgpIHtcXG5cXG4gIC5jb250YWluZXIge1xcbiAgICBtYXgtd2lkdGg6IDE1MzZweDtcXG4gIH1cXG59XFxuLnByb3NlIHtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1ib2R5KTtcXG4gIG1heC13aWR0aDogNjVjaDtcXG59XFxuLnByb3NlIDp3aGVyZShwKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tdG9wOiAxLjI1ZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjI1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoW2NsYXNzfj1cXFwibGVhZFxcXCJdKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtbGVhZCk7XFxuICBmb250LXNpemU6IDEuMjVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjY7XFxuICBtYXJnaW4tdG9wOiAxLjJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuMmVtO1xcbn1cXG4ucHJvc2UgOndoZXJlKGEpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1saW5rcyk7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcbi5wcm9zZSA6d2hlcmUoc3Ryb25nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtYm9sZCk7XFxuICBmb250LXdlaWdodDogNjAwO1xcbn1cXG4ucHJvc2UgOndoZXJlKGEgc3Ryb25nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuLnByb3NlIDp3aGVyZShibG9ja3F1b3RlIHN0cm9uZyk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUodGhlYWQgdGggc3Ryb25nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuLnByb3NlIDp3aGVyZShvbCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsO1xcbiAgbWFyZ2luLXRvcDogMS4yNWVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS4yNWVtO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEuNjI1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUob2xbdHlwZT1cXFwiQVxcXCJdKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IHVwcGVyLWFscGhhO1xcbn1cXG4ucHJvc2UgOndoZXJlKG9sW3R5cGU9XFxcImFcXFwiXSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbGlzdC1zdHlsZS10eXBlOiBsb3dlci1hbHBoYTtcXG59XFxuLnByb3NlIDp3aGVyZShvbFt0eXBlPVxcXCJBXFxcIiBzXSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbGlzdC1zdHlsZS10eXBlOiB1cHBlci1hbHBoYTtcXG59XFxuLnByb3NlIDp3aGVyZShvbFt0eXBlPVxcXCJhXFxcIiBzXSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbGlzdC1zdHlsZS10eXBlOiBsb3dlci1hbHBoYTtcXG59XFxuLnByb3NlIDp3aGVyZShvbFt0eXBlPVxcXCJJXFxcIl0pOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGxpc3Qtc3R5bGUtdHlwZTogdXBwZXItcm9tYW47XFxufVxcbi5wcm9zZSA6d2hlcmUob2xbdHlwZT1cXFwiaVxcXCJdKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLXJvbWFuO1xcbn1cXG4ucHJvc2UgOndoZXJlKG9sW3R5cGU9XFxcIklcXFwiIHNdKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IHVwcGVyLXJvbWFuO1xcbn1cXG4ucHJvc2UgOndoZXJlKG9sW3R5cGU9XFxcImlcXFwiIHNdKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLXJvbWFuO1xcbn1cXG4ucHJvc2UgOndoZXJlKG9sW3R5cGU9XFxcIjFcXFwiXSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbGlzdC1zdHlsZS10eXBlOiBkZWNpbWFsO1xcbn1cXG4ucHJvc2UgOndoZXJlKHVsKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XFxuICBtYXJnaW4tdG9wOiAxLjI1ZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjI1ZW07XFxuICBwYWRkaW5nLWlubGluZS1zdGFydDogMS42MjVlbTtcXG59XFxuLnByb3NlIDp3aGVyZShvbCA+IGxpKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKTo6bWFya2VyIHtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtY291bnRlcnMpO1xcbn1cXG4ucHJvc2UgOndoZXJlKHVsID4gbGkpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpOjptYXJrZXIge1xcbiAgY29sb3I6IHZhcigtLXR3LXByb3NlLWJ1bGxldHMpO1xcbn1cXG4ucHJvc2UgOndoZXJlKGR0KTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtaGVhZGluZ3MpO1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIG1hcmdpbi10b3A6IDEuMjVlbTtcXG59XFxuLnByb3NlIDp3aGVyZShocik6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS10dy1wcm9zZS1ocik7XFxuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XFxuICBtYXJnaW4tdG9wOiAzZW07XFxuICBtYXJnaW4tYm90dG9tOiAzZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoYmxvY2txdW90ZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1xdW90ZXMpO1xcbiAgYm9yZGVyLWlubGluZS1zdGFydC13aWR0aDogMC4yNXJlbTtcXG4gIGJvcmRlci1pbmxpbmUtc3RhcnQtY29sb3I6IHZhcigtLXR3LXByb3NlLXF1b3RlLWJvcmRlcnMpO1xcbiAgcXVvdGVzOiBcXFwiXFxcXDIwMUNcXFwiXFxcIlxcXFwyMDFEXFxcIlxcXCJcXFxcMjAxOFxcXCJcXFwiXFxcXDIwMTlcXFwiO1xcbiAgbWFyZ2luLXRvcDogMS42ZW07XFxuICBtYXJnaW4tYm90dG9tOiAxLjZlbTtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAxZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoYmxvY2txdW90ZSBwOmZpcnN0LW9mLXR5cGUpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpOjpiZWZvcmUge1xcbiAgY29udGVudDogb3Blbi1xdW90ZTtcXG59XFxuLnByb3NlIDp3aGVyZShibG9ja3F1b3RlIHA6bGFzdC1vZi10eXBlKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKTo6YWZ0ZXIge1xcbiAgY29udGVudDogY2xvc2UtcXVvdGU7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDEpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1oZWFkaW5ncyk7XFxuICBmb250LXdlaWdodDogODAwO1xcbiAgZm9udC1zaXplOiAyLjI1ZW07XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMC44ODg4ODg5ZW07XFxuICBsaW5lLWhlaWdodDogMS4xMTExMTExO1xcbn1cXG4ucHJvc2UgOndoZXJlKGgxIHN0cm9uZyk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgZm9udC13ZWlnaHQ6IDkwMDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG4ucHJvc2UgOndoZXJlKGgyKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtaGVhZGluZ3MpO1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gIGZvbnQtc2l6ZTogMS41ZW07XFxuICBtYXJnaW4tdG9wOiAyZW07XFxuICBtYXJnaW4tYm90dG9tOiAxZW07XFxuICBsaW5lLWhlaWdodDogMS4zMzMzMzMzO1xcbn1cXG4ucHJvc2UgOndoZXJlKGgyIHN0cm9uZyk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgZm9udC13ZWlnaHQ6IDgwMDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG4ucHJvc2UgOndoZXJlKGgzKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtaGVhZGluZ3MpO1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGZvbnQtc2l6ZTogMS4yNWVtO1xcbiAgbWFyZ2luLXRvcDogMS42ZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjZlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjY7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDMgc3Ryb25nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1oZWFkaW5ncyk7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgbWFyZ2luLXRvcDogMS41ZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDQgc3Ryb25nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUoaW1nKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tdG9wOiAyZW07XFxuICBtYXJnaW4tYm90dG9tOiAyZW07XFxufVxcbi5wcm9zZSA6d2hlcmUocGljdHVyZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBtYXJnaW4tdG9wOiAyZW07XFxuICBtYXJnaW4tYm90dG9tOiAyZW07XFxufVxcbi5wcm9zZSA6d2hlcmUodmlkZW8pOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDJlbTtcXG59XFxuLnByb3NlIDp3aGVyZShrYmQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1rYmQpO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHJnYih2YXIoLS10dy1wcm9zZS1rYmQtc2hhZG93cykgLyAxMCUpLCAwIDNweCAwIHJnYih2YXIoLS10dy1wcm9zZS1rYmQtc2hhZG93cykgLyAxMCUpO1xcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgYm9yZGVyLXJhZGl1czogMC4zMTI1cmVtO1xcbiAgcGFkZGluZy10b3A6IDAuMTg3NWVtO1xcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjM3NWVtO1xcbiAgcGFkZGluZy1ib3R0b206IDAuMTg3NWVtO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuMzc1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IHZhcigtLXR3LXByb3NlLWNvZGUpO1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gIGZvbnQtc2l6ZTogMC44NzVlbTtcXG59XFxuLnByb3NlIDp3aGVyZShjb2RlKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKTo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJgXFxcIjtcXG59XFxuLnByb3NlIDp3aGVyZShjb2RlKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKTo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcImBcXFwiO1xcbn1cXG4ucHJvc2UgOndoZXJlKGEgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDEgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDIgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDAuODc1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoaDMgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICBmb250LXNpemU6IDAuOWVtO1xcbn1cXG4ucHJvc2UgOndoZXJlKGg0IGNvZGUpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG4ucHJvc2UgOndoZXJlKGJsb2NrcXVvdGUgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUodGhlYWQgdGggY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IGluaGVyaXQ7XFxufVxcbi5wcm9zZSA6d2hlcmUocHJlKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBjb2xvcjogdmFyKC0tdHctcHJvc2UtcHJlLWNvZGUpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdHctcHJvc2UtcHJlLWJnKTtcXG4gIG92ZXJmbG93LXg6IGF1dG87XFxuICBmb250LXdlaWdodDogNDAwO1xcbiAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzE0Mjg1NztcXG4gIG1hcmdpbi10b3A6IDEuNzE0Mjg1N2VtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS43MTQyODU3ZW07XFxuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcXG4gIHBhZGRpbmctdG9wOiAwLjg1NzE0MjllbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS4xNDI4NTcxZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC44NTcxNDI5ZW07XFxuICBwYWRkaW5nLWlubGluZS1zdGFydDogMS4xNDI4NTcxZW07XFxufVxcbi5wcm9zZSA6d2hlcmUocHJlIGNvZGUpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXdpZHRoOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmb250LXdlaWdodDogaW5oZXJpdDtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG59XFxuLnByb3NlIDp3aGVyZShwcmUgY29kZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSk6OmJlZm9yZSB7XFxuICBjb250ZW50OiBub25lO1xcbn1cXG4ucHJvc2UgOndoZXJlKHByZSBjb2RlKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKTo6YWZ0ZXIge1xcbiAgY29udGVudDogbm9uZTtcXG59XFxuLnByb3NlIDp3aGVyZSh0YWJsZSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgd2lkdGg6IDEwMCU7XFxuICB0YWJsZS1sYXlvdXQ6IGF1dG87XFxuICBtYXJnaW4tdG9wOiAyZW07XFxuICBtYXJnaW4tYm90dG9tOiAyZW07XFxuICBmb250LXNpemU6IDAuODc1ZW07XFxuICBsaW5lLWhlaWdodDogMS43MTQyODU3O1xcbn1cXG4ucHJvc2UgOndoZXJlKHRoZWFkKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XFxuICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS10dy1wcm9zZS10aC1ib3JkZXJzKTtcXG59XFxuLnByb3NlIDp3aGVyZSh0aGVhZCB0aCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgY29sb3I6IHZhcigtLXR3LXByb3NlLWhlYWRpbmdzKTtcXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjU3MTQyODZlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjU3MTQyODZlbTtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwLjU3MTQyODZlbTtcXG59XFxuLnByb3NlIDp3aGVyZSh0Ym9keSB0cik6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tdHctcHJvc2UtdGQtYm9yZGVycyk7XFxufVxcbi5wcm9zZSA6d2hlcmUodGJvZHkgdHI6bGFzdC1jaGlsZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcXG59XFxuLnByb3NlIDp3aGVyZSh0Ym9keSB0ZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xcbn1cXG4ucHJvc2UgOndoZXJlKHRmb290KTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XFxuICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS10dy1wcm9zZS10aC1ib3JkZXJzKTtcXG59XFxuLnByb3NlIDp3aGVyZSh0Zm9vdCB0ZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcXG59XFxuLnByb3NlIDp3aGVyZSh0aCwgdGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbn1cXG4ucHJvc2UgOndoZXJlKGZpZ3VyZSA+ICopOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAwO1xcbn1cXG4ucHJvc2UgOndoZXJlKGZpZ2NhcHRpb24pOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIGNvbG9yOiB2YXIoLS10dy1wcm9zZS1jYXB0aW9ucyk7XFxuICBmb250LXNpemU6IDAuODc1ZW07XFxuICBsaW5lLWhlaWdodDogMS40Mjg1NzE0O1xcbiAgbWFyZ2luLXRvcDogMC44NTcxNDI5ZW07XFxufVxcbi5wcm9zZSB7XFxuICAtLXR3LXByb3NlLWJvZHk6ICMzNzQxNTE7XFxuICAtLXR3LXByb3NlLWhlYWRpbmdzOiAjMTExODI3O1xcbiAgLS10dy1wcm9zZS1sZWFkOiAjNGI1NTYzO1xcbiAgLS10dy1wcm9zZS1saW5rczogIzExMTgyNztcXG4gIC0tdHctcHJvc2UtYm9sZDogIzExMTgyNztcXG4gIC0tdHctcHJvc2UtY291bnRlcnM6ICM2YjcyODA7XFxuICAtLXR3LXByb3NlLWJ1bGxldHM6ICNkMWQ1ZGI7XFxuICAtLXR3LXByb3NlLWhyOiAjZTVlN2ViO1xcbiAgLS10dy1wcm9zZS1xdW90ZXM6ICMxMTE4Mjc7XFxuICAtLXR3LXByb3NlLXF1b3RlLWJvcmRlcnM6ICNlNWU3ZWI7XFxuICAtLXR3LXByb3NlLWNhcHRpb25zOiAjNmI3MjgwO1xcbiAgLS10dy1wcm9zZS1rYmQ6ICMxMTE4Mjc7XFxuICAtLXR3LXByb3NlLWtiZC1zaGFkb3dzOiAxNyAyNCAzOTtcXG4gIC0tdHctcHJvc2UtY29kZTogIzExMTgyNztcXG4gIC0tdHctcHJvc2UtcHJlLWNvZGU6ICNlNWU3ZWI7XFxuICAtLXR3LXByb3NlLXByZS1iZzogIzFmMjkzNztcXG4gIC0tdHctcHJvc2UtdGgtYm9yZGVyczogI2QxZDVkYjtcXG4gIC0tdHctcHJvc2UtdGQtYm9yZGVyczogI2U1ZTdlYjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJvZHk6ICNkMWQ1ZGI7XFxuICAtLXR3LXByb3NlLWludmVydC1oZWFkaW5nczogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWxlYWQ6ICM5Y2EzYWY7XFxuICAtLXR3LXByb3NlLWludmVydC1saW5rczogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJvbGQ6ICNmZmY7XFxuICAtLXR3LXByb3NlLWludmVydC1jb3VudGVyczogIzljYTNhZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJ1bGxldHM6ICM0YjU1NjM7XFxuICAtLXR3LXByb3NlLWludmVydC1ocjogIzM3NDE1MTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXF1b3RlczogI2YzZjRmNjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXF1b3RlLWJvcmRlcnM6ICMzNzQxNTE7XFxuICAtLXR3LXByb3NlLWludmVydC1jYXB0aW9uczogIzljYTNhZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWtiZDogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWtiZC1zaGFkb3dzOiAyNTUgMjU1IDI1NTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWNvZGU6ICNmZmY7XFxuICAtLXR3LXByb3NlLWludmVydC1wcmUtY29kZTogI2QxZDVkYjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXByZS1iZzogcmdiKDAgMCAwIC8gNTAlKTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXRoLWJvcmRlcnM6ICM0YjU1NjM7XFxuICAtLXR3LXByb3NlLWludmVydC10ZC1ib3JkZXJzOiAjMzc0MTUxO1xcbiAgZm9udC1zaXplOiAxcmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzU7XFxufVxcbi5wcm9zZSA6d2hlcmUocGljdHVyZSA+IGltZyk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcbi5wcm9zZSA6d2hlcmUobGkpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUob2wgPiBsaSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuMzc1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUodWwgPiBsaSk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuMzc1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoLnByb3NlID4gdWwgPiBsaSBwKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tdG9wOiAwLjc1ZW07XFxuICBtYXJnaW4tYm90dG9tOiAwLjc1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoLnByb3NlID4gdWwgPiBsaSA+IHA6Zmlyc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDEuMjVlbTtcXG59XFxuLnByb3NlIDp3aGVyZSgucHJvc2UgPiB1bCA+IGxpID4gcDpsYXN0LWNoaWxkKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tYm90dG9tOiAxLjI1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUoLnByb3NlID4gb2wgPiBsaSA+IHA6Zmlyc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDEuMjVlbTtcXG59XFxuLnByb3NlIDp3aGVyZSgucHJvc2UgPiBvbCA+IGxpID4gcDpsYXN0LWNoaWxkKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tYm90dG9tOiAxLjI1ZW07XFxufVxcbi5wcm9zZSA6d2hlcmUodWwgdWwsIHVsIG9sLCBvbCB1bCwgb2wgb2wpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDAuNzVlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuNzVlbTtcXG59XFxuLnByb3NlIDp3aGVyZShkbCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbWFyZ2luLXRvcDogMS4yNWVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMS4yNWVtO1xcbn1cXG4ucHJvc2UgOndoZXJlKGRkKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tdG9wOiAwLjVlbTtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAxLjYyNWVtO1xcbn1cXG4ucHJvc2UgOndoZXJlKGhyICsgKik6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbWFyZ2luLXRvcDogMDtcXG59XFxuLnByb3NlIDp3aGVyZShoMiArICopOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5wcm9zZSA6d2hlcmUoaDMgKyAqKTpub3QoOndoZXJlKFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdLFtjbGFzc349XFxcIm5vdC1wcm9zZVxcXCJdICopKSB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbn1cXG4ucHJvc2UgOndoZXJlKGg0ICsgKik6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgbWFyZ2luLXRvcDogMDtcXG59XFxuLnByb3NlIDp3aGVyZSh0aGVhZCB0aDpmaXJzdC1jaGlsZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XFxufVxcbi5wcm9zZSA6d2hlcmUodGhlYWQgdGg6bGFzdC1jaGlsZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAwO1xcbn1cXG4ucHJvc2UgOndoZXJlKHRib2R5IHRkLCB0Zm9vdCB0ZCk6bm90KDp3aGVyZShbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSxbY2xhc3N+PVxcXCJub3QtcHJvc2VcXFwiXSAqKSkge1xcbiAgcGFkZGluZy10b3A6IDAuNTcxNDI4NmVtO1xcbiAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjU3MTQyODZlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjU3MTQyODZlbTtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwLjU3MTQyODZlbTtcXG59XFxuLnByb3NlIDp3aGVyZSh0Ym9keSB0ZDpmaXJzdC1jaGlsZCwgdGZvb3QgdGQ6Zmlyc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAwO1xcbn1cXG4ucHJvc2UgOndoZXJlKHRib2R5IHRkOmxhc3QtY2hpbGQsIHRmb290IHRkOmxhc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMDtcXG59XFxuLnByb3NlIDp3aGVyZShmaWd1cmUpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDJlbTtcXG59XFxuLnByb3NlIDp3aGVyZSgucHJvc2UgPiA6Zmlyc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5wcm9zZSA6d2hlcmUoLnByb3NlID4gOmxhc3QtY2hpbGQpOm5vdCg6d2hlcmUoW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0sW2NsYXNzfj1cXFwibm90LXByb3NlXFxcIl0gKikpIHtcXG4gIG1hcmdpbi1ib3R0b206IDA7XFxufVxcbi5wcm9zZS1zbGF0ZSB7XFxuICAtLXR3LXByb3NlLWJvZHk6ICMzMzQxNTU7XFxuICAtLXR3LXByb3NlLWhlYWRpbmdzOiAjMGYxNzJhO1xcbiAgLS10dy1wcm9zZS1sZWFkOiAjNDc1NTY5O1xcbiAgLS10dy1wcm9zZS1saW5rczogIzBmMTcyYTtcXG4gIC0tdHctcHJvc2UtYm9sZDogIzBmMTcyYTtcXG4gIC0tdHctcHJvc2UtY291bnRlcnM6ICM2NDc0OGI7XFxuICAtLXR3LXByb3NlLWJ1bGxldHM6ICNjYmQ1ZTE7XFxuICAtLXR3LXByb3NlLWhyOiAjZTJlOGYwO1xcbiAgLS10dy1wcm9zZS1xdW90ZXM6ICMwZjE3MmE7XFxuICAtLXR3LXByb3NlLXF1b3RlLWJvcmRlcnM6ICNlMmU4ZjA7XFxuICAtLXR3LXByb3NlLWNhcHRpb25zOiAjNjQ3NDhiO1xcbiAgLS10dy1wcm9zZS1rYmQ6ICMwZjE3MmE7XFxuICAtLXR3LXByb3NlLWtiZC1zaGFkb3dzOiAxNSAyMyA0MjtcXG4gIC0tdHctcHJvc2UtY29kZTogIzBmMTcyYTtcXG4gIC0tdHctcHJvc2UtcHJlLWNvZGU6ICNlMmU4ZjA7XFxuICAtLXR3LXByb3NlLXByZS1iZzogIzFlMjkzYjtcXG4gIC0tdHctcHJvc2UtdGgtYm9yZGVyczogI2NiZDVlMTtcXG4gIC0tdHctcHJvc2UtdGQtYm9yZGVyczogI2UyZThmMDtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJvZHk6ICNjYmQ1ZTE7XFxuICAtLXR3LXByb3NlLWludmVydC1oZWFkaW5nczogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWxlYWQ6ICM5NGEzYjg7XFxuICAtLXR3LXByb3NlLWludmVydC1saW5rczogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJvbGQ6ICNmZmY7XFxuICAtLXR3LXByb3NlLWludmVydC1jb3VudGVyczogIzk0YTNiODtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWJ1bGxldHM6ICM0NzU1Njk7XFxuICAtLXR3LXByb3NlLWludmVydC1ocjogIzMzNDE1NTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXF1b3RlczogI2YxZjVmOTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXF1b3RlLWJvcmRlcnM6ICMzMzQxNTU7XFxuICAtLXR3LXByb3NlLWludmVydC1jYXB0aW9uczogIzk0YTNiODtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWtiZDogI2ZmZjtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWtiZC1zaGFkb3dzOiAyNTUgMjU1IDI1NTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LWNvZGU6ICNmZmY7XFxuICAtLXR3LXByb3NlLWludmVydC1wcmUtY29kZTogI2NiZDVlMTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXByZS1iZzogcmdiKDAgMCAwIC8gNTAlKTtcXG4gIC0tdHctcHJvc2UtaW52ZXJ0LXRoLWJvcmRlcnM6ICM0NzU1Njk7XFxuICAtLXR3LXByb3NlLWludmVydC10ZC1ib3JkZXJzOiAjMzM0MTU1O1xcbn1cXG4uY2hlY2tib3gsXFxuICAucmFkaW8sXFxuICAuc3dpdGNoIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10sXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXSxcXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBsZWZ0OiAwcHg7XFxuICB6LWluZGV4OiAtMTtcXG4gIG9wYWNpdHk6IDA7XFxufVxcbi5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrLFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ10gKyAuY2hlY2ssXFxuICAuc3dpdGNoIGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2sge1xcbiAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoNTUgNjUgODEgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogY29sb3IsIGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgZmlsbCwgc3Ryb2tlLCAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIHRleHQtZGVjb3JhdGlvbi1jb2xvciwgZmlsbCwgc3Ryb2tlO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogY29sb3IsIGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvciwgdGV4dC1kZWNvcmF0aW9uLWNvbG9yLCBmaWxsLCBzdHJva2UsIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAyMDBtcztcXG59XFxuLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2s6aXMoLmRhcmsgKiksXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXSArIC5jaGVjazppcyguZGFyayAqKSxcXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXSArIC5jaGVjazppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzAgNDEgNTkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmZvY3VzICsgLmNoZWNrLFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ106Zm9jdXMgKyAuY2hlY2ssXFxuICAuc3dpdGNoIGlucHV0W3R5cGU9J2NoZWNrYm94J106Zm9jdXMgKyAuY2hlY2sge1xcbiAgLS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7XFxuICAtLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKTtcXG4gIC0tdHctcmluZy1vcGFjaXR5OiAxO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoMjkgNzggMjE2IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrLFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ10gKyAuY2hlY2sge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBoZWlnaHQ6IDEuMjVyZW07XFxuICB3aWR0aDogMS4yNXJlbTtcXG59XFxuLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2sge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG59XFxuLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBoZWlnaHQ6IDEuNXJlbTtcXG4gIHdpZHRoOiAzcmVtO1xcbiAgZmxleC1zaHJpbms6IDA7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbiAgcGFkZGluZzogMC4xMjVyZW07XFxufVxcbi5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrOmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XFxufVxcbi5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2ssXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgLmNoZWNrIHtcXG4gIGJvcmRlci13aWR0aDogNHB4O1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG59XFxuLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxIDEnJTNFJTNDcGF0aCBzdHlsZT0nZmlsbDolMjNmZmYnIGQ9J00gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6JyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVxcXCIpO1xcbiAgfVxcbi5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyAuY2hlY2sge1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjQgMjQnJTNFJTNDcGF0aCBmaWxsPSclMjNmZmYnIGQ9J00xMiwyQTEwLDEwIDAgMCwwIDIsMTJBMTAsMTAgMCAwLDAgMTIsMjJBMTAsMTAgMCAwLDAgMjIsMTJBMTAsMTAgMCAwLDAgMTIsMlonIC8lM0UlM0Mvc3ZnJTNFXFxcIik7XFxuICB9XFxuLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2ssXFxuICAuY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLmNoZWNrLFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi50aGVtZS1waW5rIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLmNoZWNrLC50aGVtZS1waW5rIFxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjaywudGhlbWUtcGluayBcXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyAuY2hlY2sge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLmNoZWNrLC50aGVtZS1ncmVlbiBcXG4gIC5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2ssLnRoZW1lLWdyZWVuIFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzggNzUgMTAyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uc3dpdGNoIGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2s6YmVmb3JlIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBoZWlnaHQ6IDEuMjVyZW07XFxuICAgIHdpZHRoOiAxLjI1cmVtO1xcbiAgICBib3JkZXItd2lkdGg6IDFweDtcXG4gICAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoNTUgNjUgODEgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbiAgICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG4gIH1cXG4uc3dpdGNoIGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjazpiZWZvcmUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDExMCUsIDAsIDApO1xcbiAgICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgICBib3JkZXItY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbiAgfVxcbi5wb2ludGVyLWV2ZW50cy1ub25lIHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4uc3RhdGljIHtcXG4gIHBvc2l0aW9uOiBzdGF0aWM7XFxufVxcbi5maXhlZCB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxufVxcbi5hYnNvbHV0ZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5yZWxhdGl2ZSB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5pbnNldC0wIHtcXG4gIGluc2V0OiAwcHg7XFxufVxcbi5pbnNldC14LTAge1xcbiAgbGVmdDogMHB4O1xcbiAgcmlnaHQ6IDBweDtcXG59XFxuLi1sZWZ0LTYwIHtcXG4gIGxlZnQ6IC0xNXJlbTtcXG59XFxuLmJvdHRvbS0yIHtcXG4gIGJvdHRvbTogMC41cmVtO1xcbn1cXG4ubGVmdC0wIHtcXG4gIGxlZnQ6IDBweDtcXG59XFxuLnJpZ2h0LTAge1xcbiAgcmlnaHQ6IDBweDtcXG59XFxuLnRvcC0wIHtcXG4gIHRvcDogMHB4O1xcbn1cXG4udG9wLTE0IHtcXG4gIHRvcDogMy41cmVtO1xcbn1cXG4uLXotMSB7XFxuICB6LWluZGV4OiAtMTtcXG59XFxuLnotMCB7XFxuICB6LWluZGV4OiAwO1xcbn1cXG4uei0xMCB7XFxuICB6LWluZGV4OiAxMDtcXG59XFxuLnotMjAge1xcbiAgei1pbmRleDogMjA7XFxufVxcbi56LTMwIHtcXG4gIHotaW5kZXg6IDMwO1xcbn1cXG4uei00MCB7XFxuICB6LWluZGV4OiA0MDtcXG59XFxuLnotNTAge1xcbiAgei1pbmRleDogNTA7XFxufVxcbi5vcmRlci1maXJzdCB7XFxuICBvcmRlcjogLTk5OTk7XFxufVxcbi5vcmRlci1sYXN0IHtcXG4gIG9yZGVyOiA5OTk5O1xcbn1cXG4uY29sLXNwYW4tMSB7XFxuICBncmlkLWNvbHVtbjogc3BhbiAxIC8gc3BhbiAxO1xcbn1cXG4uY29sLXNwYW4tMiB7XFxuICBncmlkLWNvbHVtbjogc3BhbiAyIC8gc3BhbiAyO1xcbn1cXG4uY29sLXNwYW4tZnVsbCB7XFxuICBncmlkLWNvbHVtbjogMSAvIC0xO1xcbn1cXG4ubS00IHtcXG4gIG1hcmdpbjogMXJlbTtcXG59XFxuLi1teC02IHtcXG4gIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xcbn1cXG4uLW15LTYge1xcbiAgbWFyZ2luLXRvcDogLTEuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IC0xLjVyZW07XFxufVxcbi5teC0wIHtcXG4gIG1hcmdpbi1sZWZ0OiAwcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDBweDtcXG59XFxuLm14LTMge1xcbiAgbWFyZ2luLWxlZnQ6IDAuNzVyZW07XFxuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XFxufVxcbi5teC00IHtcXG4gIG1hcmdpbi1sZWZ0OiAxcmVtO1xcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xcbn1cXG4ubXgtYXV0byB7XFxuICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIG1hcmdpbi1yaWdodDogYXV0bztcXG59XFxuLm15LTIge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ubXktNCB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG59XFxuLm15LTQwIHtcXG4gIG1hcmdpbi10b3A6IDEwcmVtO1xcbiAgbWFyZ2luLWJvdHRvbTogMTByZW07XFxufVxcbi5teS02IHtcXG4gIG1hcmdpbi10b3A6IDEuNXJlbTtcXG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcXG59XFxuLi1tYi0zIHtcXG4gIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtO1xcbn1cXG4uLW1iLTYge1xcbiAgbWFyZ2luLWJvdHRvbTogLTEuNXJlbTtcXG59XFxuLi1tdC02IHtcXG4gIG1hcmdpbi10b3A6IC0xLjVyZW07XFxufVxcbi5tYi0xMCB7XFxuICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxufVxcbi5tYi0xMiB7XFxuICBtYXJnaW4tYm90dG9tOiAzcmVtO1xcbn1cXG4ubWItMTYge1xcbiAgbWFyZ2luLWJvdHRvbTogNHJlbTtcXG59XFxuLm1iLTIge1xcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ubWItMjQge1xcbiAgbWFyZ2luLWJvdHRvbTogNnJlbTtcXG59XFxuLm1iLTMge1xcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLm1iLTQge1xcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcXG59XFxuLm1iLTYge1xcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xcbn1cXG4ubWItOCB7XFxuICBtYXJnaW4tYm90dG9tOiAycmVtO1xcbn1cXG4ubWUtNCB7XFxuICBtYXJnaW4taW5saW5lLWVuZDogMXJlbTtcXG59XFxuLm1sLTIge1xcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcXG59XFxuLm1sLTQge1xcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XFxufVxcbi5tbC02MCB7XFxuICBtYXJnaW4tbGVmdDogMTVyZW07XFxufVxcbi5tbC1hdXRvIHtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG4ubXItMiB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcXG59XFxuLm1yLTMge1xcbiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xcbn1cXG4ubXItNCB7XFxuICBtYXJnaW4tcmlnaHQ6IDFyZW07XFxufVxcbi5tci01IHtcXG4gIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcXG59XFxuLm1yLTYge1xcbiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW07XFxufVxcbi5tci04IHtcXG4gIG1hcmdpbi1yaWdodDogMnJlbTtcXG59XFxuLm1zLWF1dG8ge1xcbiAgbWFyZ2luLWlubGluZS1zdGFydDogYXV0bztcXG59XFxuLm10LTEge1xcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcXG59XFxuLm10LTIge1xcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xcbn1cXG4ubXQtMyB7XFxuICBtYXJnaW4tdG9wOiAwLjc1cmVtO1xcbn1cXG4ubXQtNCB7XFxuICBtYXJnaW4tdG9wOiAxcmVtO1xcbn1cXG4ubXQtNiB7XFxuICBtYXJnaW4tdG9wOiAxLjVyZW07XFxufVxcbi5tdC04IHtcXG4gIG1hcmdpbi10b3A6IDJyZW07XFxufVxcbi5tdC1hdXRvIHtcXG4gIG1hcmdpbi10b3A6IGF1dG87XFxufVxcbi5saW5lLWNsYW1wLTEge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcXG4gIC13ZWJraXQtbGluZS1jbGFtcDogMTtcXG59XFxuLmxpbmUtY2xhbXAtMiB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xcbn1cXG4ubGluZS1jbGFtcC00IHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XFxuICAtd2Via2l0LWxpbmUtY2xhbXA6IDQ7XFxufVxcbi5ibG9jayB7XFxuICBkaXNwbGF5OiBibG9jaztcXG59XFxuLmlubGluZS1ibG9jayB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5mbGV4IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi5pbmxpbmUtZmxleCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuLnRhYmxlIHtcXG4gIGRpc3BsYXk6IHRhYmxlO1xcbn1cXG4uZ3JpZCB7XFxuICBkaXNwbGF5OiBncmlkO1xcbn1cXG4uaGlkZGVuIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5oLTEwIHtcXG4gIGhlaWdodDogMi41cmVtO1xcbn1cXG4uaC0xMiB7XFxuICBoZWlnaHQ6IDNyZW07XFxufVxcbi5oLTE0IHtcXG4gIGhlaWdodDogMy41cmVtO1xcbn1cXG4uaC0xNiB7XFxuICBoZWlnaHQ6IDRyZW07XFxufVxcbi5oLTIge1xcbiAgaGVpZ2h0OiAwLjVyZW07XFxufVxcbi5oLTJcXFxcLzMge1xcbiAgaGVpZ2h0OiA2Ni42NjY2NjclO1xcbn1cXG4uaC0yMCB7XFxuICBoZWlnaHQ6IDVyZW07XFxufVxcbi5oLTI0IHtcXG4gIGhlaWdodDogNnJlbTtcXG59XFxuLmgtNDAge1xcbiAgaGVpZ2h0OiAxMHJlbTtcXG59XFxuLmgtNDgge1xcbiAgaGVpZ2h0OiAxMnJlbTtcXG59XFxuLmgtNSB7XFxuICBoZWlnaHQ6IDEuMjVyZW07XFxufVxcbi5oLTYge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxufVxcbi5oLTY0IHtcXG4gIGhlaWdodDogMTZyZW07XFxufVxcbi5oLTgge1xcbiAgaGVpZ2h0OiAycmVtO1xcbn1cXG4uaC04MCB7XFxuICBoZWlnaHQ6IDIwcmVtO1xcbn1cXG4uaC05NiB7XFxuICBoZWlnaHQ6IDI0cmVtO1xcbn1cXG4uaC1cXFxcWzYwMHB4XFxcXF0ge1xcbiAgaGVpZ2h0OiA2MDBweDtcXG59XFxuLmgtYXV0byB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi5oLWZpdCB7XFxuICBoZWlnaHQ6IC1tb3otZml0LWNvbnRlbnQ7XFxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xcbn1cXG4uaC1mdWxsIHtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmgtc2NyZWVuIHtcXG4gIGhlaWdodDogMTAwdmg7XFxufVxcbi5tYXgtaC0wIHtcXG4gIG1heC1oZWlnaHQ6IDBweDtcXG59XFxuLm1heC1oLTk2IHtcXG4gIG1heC1oZWlnaHQ6IDI0cmVtO1xcbn1cXG4ubWF4LWgtXFxcXFs0MDBweFxcXFxdIHtcXG4gIG1heC1oZWlnaHQ6IDQwMHB4O1xcbn1cXG4ubWF4LWgtZnVsbCB7XFxuICBtYXgtaGVpZ2h0OiAxMDAlO1xcbn1cXG4ubWF4LWgtbW9kYWwge1xcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDE2MHB4KTtcXG59XFxuLm1heC1oLXNjcmVlbi1tZW51IHtcXG4gIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAzLjVyZW0pO1xcbn1cXG4ubWluLWgtXFxcXFs0MDBweFxcXFxdIHtcXG4gIG1pbi1oZWlnaHQ6IDQwMHB4O1xcbn1cXG4ubWluLWgtc2NyZWVuIHtcXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xcbn1cXG4udy0xXFxcXC8yIHtcXG4gIHdpZHRoOiA1MCU7XFxufVxcbi53LTFcXFxcLzMge1xcbiAgd2lkdGg6IDMzLjMzMzMzMyU7XFxufVxcbi53LTFcXFxcLzQge1xcbiAgd2lkdGg6IDI1JTtcXG59XFxuLnctMTAge1xcbiAgd2lkdGg6IDIuNXJlbTtcXG59XFxuLnctMTFcXFxcLzEyIHtcXG4gIHdpZHRoOiA5MS42NjY2NjclO1xcbn1cXG4udy0xMiB7XFxuICB3aWR0aDogM3JlbTtcXG59XFxuLnctMTYge1xcbiAgd2lkdGg6IDRyZW07XFxufVxcbi53LTIge1xcbiAgd2lkdGg6IDAuNXJlbTtcXG59XFxuLnctMlxcXFwvMyB7XFxuICB3aWR0aDogNjYuNjY2NjY3JTtcXG59XFxuLnctMlxcXFwvNSB7XFxuICB3aWR0aDogNDAlO1xcbn1cXG4udy0yMCB7XFxuICB3aWR0aDogNXJlbTtcXG59XFxuLnctMjQge1xcbiAgd2lkdGg6IDZyZW07XFxufVxcbi53LTQwIHtcXG4gIHdpZHRoOiAxMHJlbTtcXG59XFxuLnctNSB7XFxuICB3aWR0aDogMS4yNXJlbTtcXG59XFxuLnctNVxcXFwvNiB7XFxuICB3aWR0aDogODMuMzMzMzMzJTtcXG59XFxuLnctNiB7XFxuICB3aWR0aDogMS41cmVtO1xcbn1cXG4udy02MCB7XFxuICB3aWR0aDogMTVyZW07XFxufVxcbi53LTcyIHtcXG4gIHdpZHRoOiAxOHJlbTtcXG59XFxuLnctOCB7XFxuICB3aWR0aDogMnJlbTtcXG59XFxuLnctODAge1xcbiAgd2lkdGg6IDIwcmVtO1xcbn1cXG4udy1hdXRvIHtcXG4gIHdpZHRoOiBhdXRvO1xcbn1cXG4udy1mdWxsIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4udy1zY3JlZW4ge1xcbiAgd2lkdGg6IDEwMHZ3O1xcbn1cXG4ubWF4LXctZnVsbCB7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxufVxcbi5tYXgtdy1sZyB7XFxuICBtYXgtd2lkdGg6IDMycmVtO1xcbn1cXG4ubWF4LXctbm9uZSB7XFxuICBtYXgtd2lkdGg6IG5vbmU7XFxufVxcbi5tYXgtdy1zY3JlZW4tbWQge1xcbiAgbWF4LXdpZHRoOiA3NjhweDtcXG59XFxuLmZsZXgtMSB7XFxuICBmbGV4OiAxIDEgMCU7XFxufVxcbi5mbGV4LW5vbmUge1xcbiAgZmxleDogbm9uZTtcXG59XFxuLmZsZXgtc2hyaW5rLTAge1xcbiAgZmxleC1zaHJpbms6IDA7XFxufVxcbi5mbGV4LWdyb3cge1xcbiAgZmxleC1ncm93OiAxO1xcbn1cXG4uZmxleC1ncm93LTAge1xcbiAgZmxleC1ncm93OiAwO1xcbn1cXG4uZ3JvdyB7XFxuICBmbGV4LWdyb3c6IDE7XFxufVxcbi4tdHJhbnNsYXRlLXgtMVxcXFwvNCB7XFxuICAtLXR3LXRyYW5zbGF0ZS14OiAtMjUlO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLCB2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSk7XFxufVxcbi50cmFuc2xhdGUteC0xXFxcXC80IHtcXG4gIC0tdHctdHJhbnNsYXRlLXg6IDI1JTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSwgdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpO1xcbn1cXG4uc2NhbGUtOTAge1xcbiAgLS10dy1zY2FsZS14OiAuOTtcXG4gIC0tdHctc2NhbGUteTogLjk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG59XFxuLnRyYW5zZm9ybSB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksIHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKTtcXG59XFxuQGtleWZyYW1lcyBzcGluIHtcXG5cXG4gIHRvIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuLmFuaW1hdGUtc3BpbiB7XFxuICBhbmltYXRpb246IHNwaW4gMXMgbGluZWFyIGluZmluaXRlO1xcbn1cXG4uY3Vyc29yLWdyYWIge1xcbiAgY3Vyc29yOiBncmFiO1xcbn1cXG4uY3Vyc29yLWdyYWJiaW5nIHtcXG4gIGN1cnNvcjogZ3JhYmJpbmc7XFxufVxcbi5jdXJzb3Itbm90LWFsbG93ZWQge1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuLmN1cnNvci1wb2ludGVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLmF1dG8tY29scy1taW4ge1xcbiAgZ3JpZC1hdXRvLWNvbHVtbnM6IG1pbi1jb250ZW50O1xcbn1cXG4uZ3JpZC1mbG93LWNvbCB7XFxuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbn1cXG4uZ3JpZC1mbG93LWRlbnNlIHtcXG4gIGdyaWQtYXV0by1mbG93OiBkZW5zZTtcXG59XFxuLmdyaWQtY29scy0xIHtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIG1pbm1heCgwLCAxZnIpKTtcXG59XFxuLmdyaWQtY29scy02IHtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIG1pbm1heCgwLCAxZnIpKTtcXG59XFxuLmdyaWQtcm93cy0xIHtcXG4gIGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KDEsIG1pbm1heCgwLCAxZnIpKTtcXG59XFxuLmZsZXgtcm93IHtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XFxufVxcbi5mbGV4LXJvdy1yZXZlcnNlIHtcXG4gIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcXG59XFxuLmZsZXgtY29sIHtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5mbGV4LXdyYXAge1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbn1cXG4uZmxleC1ub3dyYXAge1xcbiAgZmxleC13cmFwOiBub3dyYXA7XFxufVxcbi5pdGVtcy1zdGFydCB7XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG59XFxuLml0ZW1zLWNlbnRlciB7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uaXRlbXMtc3RyZXRjaCB7XFxuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcXG59XFxuLmp1c3RpZnktc3RhcnQge1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbn1cXG4uanVzdGlmeS1lbmQge1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmp1c3RpZnktY2VudGVyIHtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG4uanVzdGlmeS1iZXR3ZWVuIHtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG59XFxuLmp1c3RpZnktYXJvdW5kIHtcXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xcbn1cXG4uZ2FwLTEyIHtcXG4gIGdhcDogM3JlbTtcXG59XFxuLmdhcC0zIHtcXG4gIGdhcDogMC43NXJlbTtcXG59XFxuLmdhcC00IHtcXG4gIGdhcDogMXJlbTtcXG59XFxuLmdhcC02IHtcXG4gIGdhcDogMS41cmVtO1xcbn1cXG4uZ2FwLTgge1xcbiAgZ2FwOiAycmVtO1xcbn1cXG4uZ2FwLXgtMiB7XFxuICAtbW96LWNvbHVtbi1nYXA6IDAuNXJlbTtcXG4gICAgICAgY29sdW1uLWdhcDogMC41cmVtO1xcbn1cXG4uZ2FwLXgtMyB7XFxuICAtbW96LWNvbHVtbi1nYXA6IDAuNzVyZW07XFxuICAgICAgIGNvbHVtbi1nYXA6IDAuNzVyZW07XFxufVxcbi5nYXAteC00IHtcXG4gIC1tb3otY29sdW1uLWdhcDogMXJlbTtcXG4gICAgICAgY29sdW1uLWdhcDogMXJlbTtcXG59XFxuLmdhcC14LTYge1xcbiAgLW1vei1jb2x1bW4tZ2FwOiAxLjVyZW07XFxuICAgICAgIGNvbHVtbi1nYXA6IDEuNXJlbTtcXG59XFxuLmdhcC15LTgge1xcbiAgcm93LWdhcDogMnJlbTtcXG59XFxuLnNwYWNlLXgtMiA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tcmlnaHQ6IGNhbGMoMC41cmVtICogdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSk7XFxuICBtYXJnaW4tbGVmdDogY2FsYygwLjVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKSk7XFxufVxcbi5zcGFjZS15LTEyID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXktcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi10b3A6IGNhbGMoM3JlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTtcXG4gIG1hcmdpbi1ib3R0b206IGNhbGMoM3JlbSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO1xcbn1cXG4uc3BhY2UteS0yID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LXNwYWNlLXktcmV2ZXJzZTogMDtcXG4gIG1hcmdpbi10b3A6IGNhbGMoMC41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygwLjVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG59XFxuLnNwYWNlLXktMyA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDAuNzVyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7XFxuICBtYXJnaW4tYm90dG9tOiBjYWxjKDAuNzVyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG59XFxuLnNwYWNlLXktNCA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDFyZW0gKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSk7XFxuICBtYXJnaW4tYm90dG9tOiBjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG59XFxuLnNwYWNlLXktNiA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICBtYXJnaW4tdG9wOiBjYWxjKDEuNXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTtcXG4gIG1hcmdpbi1ib3R0b206IGNhbGMoMS41cmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7XFxufVxcbi5zcGFjZS15LTggPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctc3BhY2UteS1yZXZlcnNlOiAwO1xcbiAgbWFyZ2luLXRvcDogY2FsYygycmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgbWFyZ2luLWJvdHRvbTogY2FsYygycmVtICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7XFxufVxcbi5kaXZpZGUteC0yID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LWRpdmlkZS14LXJldmVyc2U6IDA7XFxuICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMnB4ICogdmFyKC0tdHctZGl2aWRlLXgtcmV2ZXJzZSkpO1xcbiAgYm9yZGVyLWxlZnQtd2lkdGg6IGNhbGMoMnB4ICogY2FsYygxIC0gdmFyKC0tdHctZGl2aWRlLXgtcmV2ZXJzZSkpKTtcXG59XFxuLmRpdmlkZS15ID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAtLXR3LWRpdmlkZS15LXJldmVyc2U6IDA7XFxuICBib3JkZXItdG9wLXdpZHRoOiBjYWxjKDFweCAqIGNhbGMoMSAtIHZhcigtLXR3LWRpdmlkZS15LXJldmVyc2UpKSk7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiBjYWxjKDFweCAqIHZhcigtLXR3LWRpdmlkZS15LXJldmVyc2UpKTtcXG59XFxuLmRpdmlkZS1zdG9uZS0zMDAgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctZGl2aWRlLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigyMTQgMjExIDIwOSAvIHZhcigtLXR3LWRpdmlkZS1vcGFjaXR5LCAxKSk7XFxufVxcbi5zZWxmLWNlbnRlciB7XFxuICBhbGlnbi1zZWxmOiBjZW50ZXI7XFxufVxcbi5vdmVyZmxvdy1oaWRkZW4ge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLm92ZXJmbG93LXgtYXV0byB7XFxuICBvdmVyZmxvdy14OiBhdXRvO1xcbn1cXG4ub3ZlcmZsb3cteS1hdXRvIHtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5vdmVyZmxvdy14LWhpZGRlbiB7XFxuICBvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcbi5vdmVyZmxvdy15LWhpZGRlbiB7XFxuICBvdmVyZmxvdy15OiBoaWRkZW47XFxufVxcbi50cnVuY2F0ZSB7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbn1cXG4udGV4dC1lbGxpcHNpcyB7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuLndoaXRlc3BhY2Utbm93cmFwIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcbi5yb3VuZGVkIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxufVxcbi5yb3VuZGVkLTN4bCB7XFxuICBib3JkZXItcmFkaXVzOiAycmVtO1xcbn1cXG4ucm91bmRlZC1mdWxsIHtcXG4gIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcXG59XFxuLnJvdW5kZWQtbGcge1xcbiAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xcbn1cXG4ucm91bmRlZC1tZCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcXG59XFxuLnJvdW5kZWQtbm9uZSB7XFxuICBib3JkZXItcmFkaXVzOiAwcHg7XFxufVxcbi5yb3VuZGVkLXNtIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMTI1cmVtO1xcbn1cXG4ucm91bmRlZC14bCB7XFxuICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xcbn1cXG4ucm91bmRlZC1sIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xcbn1cXG4ucm91bmRlZC1sLTJ4bCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxcmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMXJlbTtcXG59XFxuLnJvdW5kZWQtbC1sZyB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjVyZW07XFxufVxcbi5yb3VuZGVkLWwtbWQge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zNzVyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjM3NXJlbTtcXG59XFxuLnJvdW5kZWQtbC1zbSB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjEyNXJlbTtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMTI1cmVtO1xcbn1cXG4ucm91bmRlZC1sLXhsIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuNzVyZW07XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjc1cmVtO1xcbn1cXG4ucm91bmRlZC1yIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XFxufVxcbi5yb3VuZGVkLXItMnhsIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxcmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDFyZW07XFxufVxcbi5yb3VuZGVkLXItM3hsIHtcXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAycmVtO1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJyZW07XFxufVxcbi5yb3VuZGVkLXItbGcge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuNXJlbTtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjVyZW07XFxufVxcbi5yb3VuZGVkLXItbm9uZSB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDBweDtcXG59XFxuLmJvcmRlciB7XFxuICBib3JkZXItd2lkdGg6IDFweDtcXG59XFxuLmJvcmRlci0wIHtcXG4gIGJvcmRlci13aWR0aDogMHB4O1xcbn1cXG4uYm9yZGVyLTIge1xcbiAgYm9yZGVyLXdpZHRoOiAycHg7XFxufVxcbi5ib3JkZXItNCB7XFxuICBib3JkZXItd2lkdGg6IDRweDtcXG59XFxuLmJvcmRlci1iIHtcXG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcXG59XFxuLmJvcmRlci1iLTAge1xcbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4O1xcbn1cXG4uYm9yZGVyLWItMiB7XFxuICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XFxufVxcbi5ib3JkZXItdCB7XFxuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XFxufVxcbi5ib3JkZXItc29saWQge1xcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcXG59XFxuLmJvcmRlci1kYXNoZWQge1xcbiAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XFxufVxcbi5ib3JkZXItYmx1ZS01MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDU5IDEzMCAyNDYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWJsdWUtNjAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWJsdWUtNzAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigyOSA3OCAyMTYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWRhcmstNzAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXItZW1lcmFsZC01MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDE2IDE4NSAxMjkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWVtZXJhbGQtNjAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig1IDE1MCAxMDUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWdyYXktMTAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigyNDMgMjQ0IDI0NiAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXItZ3JheS0yMDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci1ncmF5LTMwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjA5IDIxMyAyMTkgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWdyYXktMzAwXFxcXC8xMCB7XFxuICBib3JkZXItY29sb3I6IHJnYigyMDkgMjEzIDIxOSAvIDAuMSk7XFxufVxcbi5ib3JkZXItZ3JheS00MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci1ncmF5LTgwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMzEgNDEgNTUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLWdyYXktOTAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigxNyAyNCAzOSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXItZ3JheS05MDBcXFxcLzUge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMTcgMjQgMzkgLyAwLjA1KTtcXG59XFxuLmJvcmRlci1uZXV0cmFsLTkwMFxcXFwvMTAge1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjMgMjMgMjMgLyAwLjEpO1xcbn1cXG4uYm9yZGVyLXBhdml0cmEtNDAwIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigyMzkgMjQwIDI0NiAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXItcGF2aXRyYS02MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDE2MCAxNjMgMTg5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci1wYXZpdHJhLTkwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjAgMjAgNDIgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLXBhdml0cmEtYmx1ZSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMSA5OCAyNTMgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLXJlZC01MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDIzOSA2OCA2OCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXItcmVkLTYwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjIwIDM4IDM4IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci1zdG9uZS0zMDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDIxNCAyMTEgMjA5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci13aGl0ZSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uYm9yZGVyLXllbGxvdy01MDAge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDIzNCAxNzkgOCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ib3JkZXIteWVsbG93LTYwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjAyIDEzOCA0IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmJvcmRlci10LXRyYW5zcGFyZW50IHtcXG4gIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uYmctYmxhY2sge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMCAwIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctYmx1ZS0zMDBcXFxcLzIwIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNDcgMTk3IDI1MyAvIDAuMik7XFxufVxcbi5iZy1ibHVlLTUwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmJnLWJsdWUtNjAwIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5iZy1ibHVlLTcwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjkgNzggMjE2IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctZW1lcmFsZC01MDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE2IDE4NSAxMjkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5iZy1lbWVyYWxkLTYwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNSAxNTAgMTA1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctZW1lcmFsZC03MDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQgMTIwIDg3IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctZ3JheS0xMDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MyAyNDQgMjQ2IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctZ3JheS0xMDBcXFxcLzcwIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDMgMjQ0IDI0NiAvIDAuNyk7XFxufVxcbi5iZy1ncmF5LTEwMFxcXFwvNzUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MyAyNDQgMjQ2IC8gMC43NSk7XFxufVxcbi5iZy1ncmF5LTIwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI5IDIzMSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5iZy1ncmF5LTUwIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDkgMjUwIDI1MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmJnLWdyYXktNzAwIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1NSA2NSA4MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmJnLWdyYXktNzAwXFxcXC81MCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTUgNjUgODEgLyAwLjUpO1xcbn1cXG4uYmctZ3JheS04MDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMxIDQxIDU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctZ3JheS05MDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3IDI0IDM5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctcmVkLTUwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM5IDY4IDY4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctcmVkLTYwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjIwIDM4IDM4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctcmVkLTcwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTg1IDI4IDI4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmctc2xhdGUtMTAwIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEgMjQ1IDI0OSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmJnLXRyYW5zcGFyZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4uYmctdmlvbGV0LTUwXFxcXC81MCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1IDI0MyAyNTUgLyAwLjUpO1xcbn1cXG4uYmctd2hpdGUge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmcteWVsbG93LTUwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM0IDE3OSA4IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmcteWVsbG93LTYwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAyIDEzOCA0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmcteWVsbG93LTcwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTYxIDk4IDcgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5iZy1vcGFjaXR5LTI1IHtcXG4gIC0tdHctYmctb3BhY2l0eTogMC4yNTtcXG59XFxuLmJnLWdyYWRpZW50LXRvLWIge1xcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKTtcXG59XFxuLmJnLWdyYWRpZW50LXRvLXRyIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AgcmlnaHQsIHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSk7XFxufVxcbi5mcm9tLWJsdWUtNzAwIHtcXG4gIC0tdHctZ3JhZGllbnQtZnJvbTogIzFkNGVkOCB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHJnYigyOSA3OCAyMTYgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4uZnJvbS1kYXJrLTcwMCB7XFxuICAtLXR3LWdyYWRpZW50LWZyb206ICMyQzJGMzYgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXRvOiByZ2IoNDQgNDcgNTQgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4uZnJvbS1ncmF5LTcwMCB7XFxuICAtLXR3LWdyYWRpZW50LWZyb206ICMzNzQxNTEgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXRvOiByZ2IoNTUgNjUgODEgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4uZnJvbS1waW5rLTQwMCB7XFxuICAtLXR3LWdyYWRpZW50LWZyb206ICNmNDcyYjYgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXRvOiByZ2IoMjQ0IDExNCAxODIgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4uZnJvbS1wdXJwbGUtNDAwIHtcXG4gIC0tdHctZ3JhZGllbnQtZnJvbTogI2MwODRmYyB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHJnYigxOTIgMTMyIDI1MiAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byk7XFxufVxcbi5mcm9tLXdoaXRlIHtcXG4gIC0tdHctZ3JhZGllbnQtZnJvbTogI2ZmZiB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHJnYigyNTUgMjU1IDI1NSAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byk7XFxufVxcbi52aWEtZGFyay05MDAge1xcbiAgLS10dy1ncmFkaWVudC10bzogcmdiKDE5IDIyIDI0IC8gMCkgIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCAjMTMxNjE4IHZhcigtLXR3LWdyYWRpZW50LXZpYS1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LXRvKTtcXG59XFxuLnZpYS1ncmF5LTEwMCB7XFxuICAtLXR3LWdyYWRpZW50LXRvOiByZ2IoMjQzIDI0NCAyNDYgLyAwKSAgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xcbiAgLS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksICNmM2Y0ZjYgdmFyKC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4udmlhLWdyYXktOTAwIHtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHJnYigxNyAyNCAzOSAvIDApICB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgIzExMTgyNyB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byk7XFxufVxcbi52aWEtcGluay01MDAge1xcbiAgLS10dy1ncmFkaWVudC10bzogcmdiKDIzNiA3MiAxNTMgLyAwKSAgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xcbiAgLS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksICNlYzQ4OTkgdmFyKC0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uKSwgdmFyKC0tdHctZ3JhZGllbnQtdG8pO1xcbn1cXG4udmlhLXJlZC01MDAge1xcbiAgLS10dy1ncmFkaWVudC10bzogcmdiKDIzOSA2OCA2OCAvIDApICB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7XFxuICAtLXR3LWdyYWRpZW50LXN0b3BzOiB2YXIoLS10dy1ncmFkaWVudC1mcm9tKSwgI2VmNDQ0NCB2YXIoLS10dy1ncmFkaWVudC12aWEtcG9zaXRpb24pLCB2YXIoLS10dy1ncmFkaWVudC10byk7XFxufVxcbi50by1kYXJrLTgwMCB7XFxuICAtLXR3LWdyYWRpZW50LXRvOiAjMjEyNDJBIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG59XFxuLnRvLWdyYXktNzAwIHtcXG4gIC0tdHctZ3JhZGllbnQtdG86ICMzNzQxNTEgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xcbn1cXG4udG8tcmVkLTUwMCB7XFxuICAtLXR3LWdyYWRpZW50LXRvOiAjZWY0NDQ0IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG59XFxuLnRvLXRyYW5zcGFyZW50IHtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHRyYW5zcGFyZW50IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG59XFxuLnRvLXdoaXRlIHtcXG4gIC0tdHctZ3JhZGllbnQtdG86ICNmZmYgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xcbn1cXG4udG8teWVsbG93LTUwMCB7XFxuICAtLXR3LWdyYWRpZW50LXRvOiAjZWFiMzA4IHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG59XFxuLmJnLWNvdmVyIHtcXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XFxufVxcbi5iZy1jZW50ZXIge1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbn1cXG4ub2JqZWN0LWNvdmVyIHtcXG4gIC1vLW9iamVjdC1maXQ6IGNvdmVyO1xcbiAgICAgb2JqZWN0LWZpdDogY292ZXI7XFxufVxcbi5vYmplY3QtY2VudGVyIHtcXG4gIC1vLW9iamVjdC1wb3NpdGlvbjogY2VudGVyO1xcbiAgICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XFxufVxcbi5wLTEge1xcbiAgcGFkZGluZzogMC4yNXJlbTtcXG59XFxuLnAtMTIge1xcbiAgcGFkZGluZzogM3JlbTtcXG59XFxuLnAtMTYge1xcbiAgcGFkZGluZzogNHJlbTtcXG59XFxuLnAtMiB7XFxuICBwYWRkaW5nOiAwLjVyZW07XFxufVxcbi5wLTMge1xcbiAgcGFkZGluZzogMC43NXJlbTtcXG59XFxuLnAtNCB7XFxuICBwYWRkaW5nOiAxcmVtO1xcbn1cXG4ucC02IHtcXG4gIHBhZGRpbmc6IDEuNXJlbTtcXG59XFxuLnAtOCB7XFxuICBwYWRkaW5nOiAycmVtO1xcbn1cXG4ucHgtMCB7XFxuICBwYWRkaW5nLWxlZnQ6IDBweDtcXG4gIHBhZGRpbmctcmlnaHQ6IDBweDtcXG59XFxuLnB4LTEge1xcbiAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcXG59XFxuLnB4LTIge1xcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XFxufVxcbi5weC0zIHtcXG4gIHBhZGRpbmctbGVmdDogMC43NXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XFxufVxcbi5weC00IHtcXG4gIHBhZGRpbmctbGVmdDogMXJlbTtcXG4gIHBhZGRpbmctcmlnaHQ6IDFyZW07XFxufVxcbi5weC02IHtcXG4gIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgcGFkZGluZy1yaWdodDogMS41cmVtO1xcbn1cXG4ucHktMSB7XFxuICBwYWRkaW5nLXRvcDogMC4yNXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xcbn1cXG4ucHktMVxcXFwuNSB7XFxuICBwYWRkaW5nLXRvcDogMC4zNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07XFxufVxcbi5weS0yIHtcXG4gIHBhZGRpbmctdG9wOiAwLjVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ucHktMjQge1xcbiAgcGFkZGluZy10b3A6IDZyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogNnJlbTtcXG59XFxuLnB5LTMge1xcbiAgcGFkZGluZy10b3A6IDAuNzVyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG59XFxuLnB5LTQge1xcbiAgcGFkZGluZy10b3A6IDFyZW07XFxuICBwYWRkaW5nLWJvdHRvbTogMXJlbTtcXG59XFxuLnB5LTYge1xcbiAgcGFkZGluZy10b3A6IDEuNXJlbTtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XFxufVxcbi5weS04IHtcXG4gIHBhZGRpbmctdG9wOiAycmVtO1xcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XFxufVxcbi5wYi0xNCB7XFxuICBwYWRkaW5nLWJvdHRvbTogMy41cmVtO1xcbn1cXG4ucGItMiB7XFxuICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xcbn1cXG4ucGItMjQge1xcbiAgcGFkZGluZy1ib3R0b206IDZyZW07XFxufVxcbi5wYi02IHtcXG4gIHBhZGRpbmctYm90dG9tOiAxLjVyZW07XFxufVxcbi5wYi04IHtcXG4gIHBhZGRpbmctYm90dG9tOiAycmVtO1xcbn1cXG4ucGwtMTAge1xcbiAgcGFkZGluZy1sZWZ0OiAyLjVyZW07XFxufVxcbi5wbC0yIHtcXG4gIHBhZGRpbmctbGVmdDogMC41cmVtO1xcbn1cXG4ucHItMTIge1xcbiAgcGFkZGluZy1yaWdodDogM3JlbTtcXG59XFxuLnB0LTE0IHtcXG4gIHBhZGRpbmctdG9wOiAzLjVyZW07XFxufVxcbi5wdC00IHtcXG4gIHBhZGRpbmctdG9wOiAxcmVtO1xcbn1cXG4ucHQtNSB7XFxuICBwYWRkaW5nLXRvcDogMS4yNXJlbTtcXG59XFxuLnB0LTYge1xcbiAgcGFkZGluZy10b3A6IDEuNXJlbTtcXG59XFxuLnRleHQtbGVmdCB7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbn1cXG4udGV4dC1jZW50ZXIge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4udGV4dC0yeGwge1xcbiAgZm9udC1zaXplOiAxLjVyZW07XFxuICBsaW5lLWhlaWdodDogMnJlbTtcXG59XFxuLnRleHQtM3hsIHtcXG4gIGZvbnQtc2l6ZTogMS44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxuLnRleHQtNHhsIHtcXG4gIGZvbnQtc2l6ZTogMi4yNXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAyLjVyZW07XFxufVxcbi50ZXh0LTV4bCB7XFxuICBmb250LXNpemU6IDNyZW07XFxuICBsaW5lLWhlaWdodDogMTtcXG59XFxuLnRleHQtN3hsIHtcXG4gIGZvbnQtc2l6ZTogNC41cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxufVxcbi50ZXh0LVxcXFxbMTBweFxcXFxdIHtcXG4gIGZvbnQtc2l6ZTogMTBweDtcXG59XFxuLnRleHQtXFxcXFs4cHhcXFxcXSB7XFxuICBmb250LXNpemU6IDhweDtcXG59XFxuLnRleHQtYmFzZSB7XFxuICBmb250LXNpemU6IDFyZW07XFxuICBsaW5lLWhlaWdodDogMS41cmVtO1xcbn1cXG4udGV4dC1sZyB7XFxuICBmb250LXNpemU6IDEuMTI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbi50ZXh0LXNtIHtcXG4gIGZvbnQtc2l6ZTogMC44NzVyZW07XFxuICBsaW5lLWhlaWdodDogMS4yNXJlbTtcXG59XFxuLnRleHQteGwge1xcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxufVxcbi50ZXh0LXhzIHtcXG4gIGZvbnQtc2l6ZTogMC43NXJlbTtcXG4gIGxpbmUtaGVpZ2h0OiAxcmVtO1xcbn1cXG4uZm9udC1ibGFjayB7XFxuICBmb250LXdlaWdodDogOTAwO1xcbn1cXG4uZm9udC1ib2xkIHtcXG4gIGZvbnQtd2VpZ2h0OiA3MDA7XFxufVxcbi5mb250LWxpZ2h0IHtcXG4gIGZvbnQtd2VpZ2h0OiAzMDA7XFxufVxcbi5mb250LW1lZGl1bSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbn1cXG4uZm9udC1ub3JtYWwge1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuLmZvbnQtc2VtaWJvbGQge1xcbiAgZm9udC13ZWlnaHQ6IDYwMDtcXG59XFxuLnVwcGVyY2FzZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xcbn1cXG4uY2FwaXRhbGl6ZSB7XFxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcXG59XFxuLml0YWxpYyB7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7XFxufVxcbi5sZWFkaW5nLTYge1xcbiAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcXG59XFxuLmxlYWRpbmctOSB7XFxuICBsaW5lLWhlaWdodDogMi4yNXJlbTtcXG59XFxuLmxlYWRpbmctdGlnaHQge1xcbiAgbGluZS1oZWlnaHQ6IDEuMjU7XFxufVxcbi50ZXh0LWJsYWNrIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigwIDAgMCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC1ibHVlLTUwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC1ibHVlLTYwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi50ZXh0LWJsdWUtNzAwIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyOSA3OCAyMTYgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtZW1lcmFsZC01MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDE2IDE4NSAxMjkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtZW1lcmFsZC02MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDUgMTUwIDEwNSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC1ncmF5LTEwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjQzIDI0NCAyNDYgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtZ3JheS0zMDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi50ZXh0LWdyYXktNTAwIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigxMDcgMTE0IDEyOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC1ncmF5LTcwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoNTUgNjUgODEgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtZ3JlZW4tNTAwIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigzNCAxOTcgOTQgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtZ3JlZW4tdGV4dCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoNjkgMTc4IDEwNyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC1wYXZpdHJhLTYwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMTYwIDE2MyAxODkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtcGF2aXRyYS05MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIwIDIwIDQyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi50ZXh0LXBhdml0cmEtYmx1ZSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMSA5OCAyNTMgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtcmVkLTQwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjQ4IDExMyAxMTMgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQtcmVkLTUwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjM5IDY4IDY4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi50ZXh0LXJlZC02MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIyMCAzOCAzOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGV4dC13aGl0ZSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRleHQteWVsbG93LTUwMCB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjM0IDE3OSA4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi50ZXh0LXllbGxvdy02MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIwMiAxMzggNCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udW5kZXJsaW5lIHtcXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcXG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uLWxpbmU6IHVuZGVybGluZTtcXG59XFxuLnBsYWNlaG9sZGVyLXdoaXRlOjotbW96LXBsYWNlaG9sZGVyIHtcXG4gIC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy1wbGFjZWhvbGRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5wbGFjZWhvbGRlci13aGl0ZTo6cGxhY2Vob2xkZXIge1xcbiAgLS10dy1wbGFjZWhvbGRlci1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXBsYWNlaG9sZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLm9wYWNpdHktMCB7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4ub3BhY2l0eS0xMDAge1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLm9wYWNpdHktMjUge1xcbiAgb3BhY2l0eTogMC4yNTtcXG59XFxuLm9wYWNpdHktNTAge1xcbiAgb3BhY2l0eTogMC41O1xcbn1cXG4ub3BhY2l0eS02MCB7XFxuICBvcGFjaXR5OiAwLjY7XFxufVxcbi5vcGFjaXR5LTcwIHtcXG4gIG9wYWNpdHk6IDAuNztcXG59XFxuLm9wYWNpdHktOTAge1xcbiAgb3BhY2l0eTogMC45O1xcbn1cXG4uc2hhZG93IHtcXG4gIC0tdHctc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCAxcHggMnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxufVxcbi5zaGFkb3ctMnhsIHtcXG4gIC0tdHctc2hhZG93OiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAwLjI1KTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMjVweCA1MHB4IC0xMnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbn1cXG4uc2hhZG93LWxnIHtcXG4gIC0tdHctc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDEwcHggMTVweCAtM3B4IHZhcigtLXR3LXNoYWRvdy1jb2xvciksIDAgNHB4IDZweCAtNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1zaGFkb3cpO1xcbn1cXG4uc2hhZG93LW1kIHtcXG4gIC0tdHctc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMCA0cHggNnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCAycHggNHB4IC0ycHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxufVxcbi5zaGFkb3ctbm9uZSB7XFxuICAtLXR3LXNoYWRvdzogMCAwICMwMDAwO1xcbiAgLS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwO1xcbiAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG59XFxuLm91dGxpbmUtbm9uZSB7XFxuICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBvdXRsaW5lLW9mZnNldDogMnB4O1xcbn1cXG4ub3V0bGluZSB7XFxuICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcXG59XFxuLnJpbmcge1xcbiAgLS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7XFxuICAtLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKTtcXG59XFxuLnJpbmctMSB7XFxuICAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTtcXG4gIC0tdHctcmluZy1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93LCAwIDAgIzAwMDApO1xcbn1cXG4ucmluZy1ibHVlLTMwMCB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDE0NyAxOTcgMjUzIC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5yaW5nLWVtZXJhbGQtMzAwIHtcXG4gIC0tdHctcmluZy1vcGFjaXR5OiAxO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoMTEwIDIzMSAxODMgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKTtcXG59XFxuLnJpbmctZ3JheS0yMDAge1xcbiAgLS10dy1yaW5nLW9wYWNpdHk6IDE7XFxuICAtLXR3LXJpbmctY29sb3I6IHJnYigyMjkgMjMxIDIzNSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpO1xcbn1cXG4ucmluZy1ncmF5LTMwMCB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDIwOSAyMTMgMjE5IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5yaW5nLWdyYXktOTAwXFxcXC8xMCB7XFxuICAtLXR3LXJpbmctY29sb3I6IHJnYigxNyAyNCAzOSAvIDAuMSk7XFxufVxcbi5yaW5nLXJlZC0zMDAge1xcbiAgLS10dy1yaW5nLW9wYWNpdHk6IDE7XFxuICAtLXR3LXJpbmctY29sb3I6IHJnYigyNTIgMTY1IDE2NSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpO1xcbn1cXG4ucmluZy15ZWxsb3ctMzAwIHtcXG4gIC0tdHctcmluZy1vcGFjaXR5OiAxO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoMjUzIDIyNCA3MSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uYmx1ci1sZyB7XFxuICAtLXR3LWJsdXI6IGJsdXIoMTZweCk7XFxuICBmaWx0ZXI6IHZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyk7XFxufVxcbi5maWx0ZXIge1xcbiAgZmlsdGVyOiB2YXIoLS10dy1ibHVyKSB2YXIoLS10dy1icmlnaHRuZXNzKSB2YXIoLS10dy1jb250cmFzdCkgdmFyKC0tdHctZ3JheXNjYWxlKSB2YXIoLS10dy1odWUtcm90YXRlKSB2YXIoLS10dy1pbnZlcnQpIHZhcigtLXR3LXNhdHVyYXRlKSB2YXIoLS10dy1zZXBpYSkgdmFyKC0tdHctZHJvcC1zaGFkb3cpO1xcbn1cXG4udHJhbnNpdGlvbi1hbGwge1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcXG59XFxuLnRyYW5zaXRpb24tY29sb3JzIHtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIGZpbGwsIHN0cm9rZSwgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I7XFxuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLCB0ZXh0LWRlY29yYXRpb24tY29sb3IsIGZpbGwsIHN0cm9rZTtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXItY29sb3IsIHRleHQtZGVjb3JhdGlvbi1jb2xvciwgZmlsbCwgc3Ryb2tlLCAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMTUwbXM7XFxufVxcbi50cmFuc2l0aW9uLXBvc2l0aW9uIHtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHJpZ2h0LCBsZWZ0LCB0b3AsIGJvdHRvbSwgbWFyZ2luLCBwYWRkaW5nO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcXG59XFxuLnRyYW5zaXRpb24tc2hhZG93IHtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGJveC1zaGFkb3c7XFxuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDE1MG1zO1xcbn1cXG4udHJhbnNpdGlvbi10cmFuc2Zvcm0ge1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcXG59XFxuLmR1cmF0aW9uLTE1MCB7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAxNTBtcztcXG59XFxuLmR1cmF0aW9uLTUwMCB7XFxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiA1MDBtcztcXG59XFxuLmVhc2UtaW4tb3V0IHtcXG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xcbn1cXG4uYXNpZGUtc2Nyb2xsYmFycy1cXFxcW3NsYXRlXFxcXF0ge1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgc2Nyb2xsYmFyLWNvbG9yOiAjNDc1NTY5ICMwZjE3MmE7XFxufVxcbi5hc2lkZS1zY3JvbGxiYXJzLVxcXFxbc2xhdGVcXFxcXTo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDhweDtcXG4gIGhlaWdodDogOHB4O1xcbn1cXG4uYXNpZGUtc2Nyb2xsYmFycy1cXFxcW3NsYXRlXFxcXF06Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gIGJhY2tncm91bmQtY29sb3I6ICMwZjE3MmE7XFxufVxcbi5hc2lkZS1zY3JvbGxiYXJzLVxcXFxbc2xhdGVcXFxcXTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0NzU1Njk7XFxufVxcbi5hc2lkZS1zY3JvbGxiYXJzLWdyYXkge1xcbiAgc2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xcbiAgc2Nyb2xsYmFyLWNvbG9yOiAjNGI1NTYzICMxMTE4Mjc7XFxufVxcbi5hc2lkZS1zY3JvbGxiYXJzLWdyYXk6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gIHdpZHRoOiA4cHg7XFxuICBoZWlnaHQ6IDhweDtcXG59XFxuLmFzaWRlLXNjcm9sbGJhcnMtZ3JheTo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogIzExMTgyNztcXG59XFxuLmFzaWRlLXNjcm9sbGJhcnMtZ3JheTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcXG4gIGJhY2tncm91bmQtY29sb3I6ICM0YjU1NjM7XFxufVxcbi5hc2lkZS1zY3JvbGxiYXJzLWxpZ2h0IHtcXG4gIHNjcm9sbGJhci13aWR0aDogdGhpbjtcXG4gIHNjcm9sbGJhci1jb2xvcjogI2QxZDVkYiAjZjNmNGY2O1xcbn1cXG4uYXNpZGUtc2Nyb2xsYmFycy1saWdodDo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgd2lkdGg6IDhweDtcXG4gIGhlaWdodDogOHB4O1xcbn1cXG4uYXNpZGUtc2Nyb2xsYmFycy1saWdodDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNjtcXG59XFxuLmFzaWRlLXNjcm9sbGJhcnMtbGlnaHQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFkNWRiO1xcbn1cXG4uZGFyay1zY3JvbGxiYXJzLWNvbXBhdCB7XFxuICAgIHNjcm9sbGJhci1jb2xvcjogcmdiKDcxLCA4NSwgMTA1KSByZ2IoMzAsIDQxLCA1OSk7XFxuICB9XFxuLmRhcmstc2Nyb2xsYmFyczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMwIDQxIDU5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFyay1zY3JvbGxiYXJzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzEgODUgMTA1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFyay1zY3JvbGxiYXJzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAwIDExNiAxMzkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5pbnRyb2pzLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpjb250ZW50LWJveDt6LWluZGV4Ojk5OTk5OTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fVxcbi5pbnRyb2pzLXNob3dFbGVtZW50e3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnR9XFxudHIuaW50cm9qcy1zaG93RWxlbWVudD50ZHt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfVxcbnRyLmludHJvanMtc2hvd0VsZW1lbnQ+dGh7ei1pbmRleDo5OTk5OTk5IWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZX1cXG4uaW50cm9qcy1kaXNhYmxlSW50ZXJhY3Rpb257ei1pbmRleDo5OTk5OTk5OSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO29wYWNpdHk6MH1cXG4uaW50cm9qcy1yZWxhdGl2ZVBvc2l0aW9ue3Bvc2l0aW9uOnJlbGF0aXZlfVxcbi5pbnRyb2pzLWhlbHBlckxheWVye2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5OTk4O2JvcmRlci1yYWRpdXM6NHB4O3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLW91dH1cXG4uaW50cm9qcy1oZWxwZXJMYXllciAqe2JveC1zaXppbmc6Y29udGVudC1ib3h9XFxuLmludHJvanMtaGVscGVyTGF5ZXIgOmJlZm9yZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxcbi5pbnRyb2pzLWhlbHBlckxheWVyIDphZnRlcntib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxcbi5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllcntmb250LWZhbWlseTpcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLEludGVyLHVpLXNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MTAwMDAwMDAwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fVxcbi5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllciAqe2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfVxcbi5pbnRyb2pzLWhlbHBlck51bWJlckxheWVye2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiM5ZTllOWU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fVxcbi5pbnRyb2pzLWFycm93e2JvcmRlcjo1cHggc29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDpcXFwiXFxcIjtwb3NpdGlvbjphYnNvbHV0ZX1cXG4uaW50cm9qcy1hcnJvdy50b3B7dG9wOi0xMHB4O2xlZnQ6MTBweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9XFxuLmludHJvanMtYXJyb3cudG9wLXJpZ2h0e3RvcDotMTBweDtyaWdodDoxMHB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn1cXG4uaW50cm9qcy1hcnJvdy50b3AtbWlkZGxle3RvcDotMTBweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn1cXG4uaW50cm9qcy1hcnJvdy5yaWdodHtyaWdodDotMTBweDt0b3A6MTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfVxcbi5pbnRyb2pzLWFycm93LnJpZ2h0LWJvdHRvbXtib3R0b206MTBweDtyaWdodDotMTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfVxcbi5pbnRyb2pzLWFycm93LmJvdHRvbXtib3R0b206LTEwcHg7bGVmdDoxMHB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn1cXG4uaW50cm9qcy1hcnJvdy5ib3R0b20tcmlnaHR7Ym90dG9tOi0xMHB4O3JpZ2h0OjEwcHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfVxcbi5pbnRyb2pzLWFycm93LmJvdHRvbS1taWRkbGV7Ym90dG9tOi0xMHB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfVxcbi5pbnRyb2pzLWFycm93LmxlZnR7bGVmdDotMTBweDt0b3A6MTBweDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn1cXG4uaW50cm9qcy1hcnJvdy5sZWZ0LWJvdHRvbXtsZWZ0Oi0xMHB4O2JvdHRvbToxMHB4O2JvcmRlci1yaWdodC1jb2xvcjojZmZmfVxcbi5pbnRyb2pzLXRvb2x0aXB7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OnZpc2libGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO21pbi13aWR0aDoyNTBweDttYXgtd2lkdGg6MzAwcHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym94LXNoYWRvdzowIDNweCAzMHB4IHJnYmEoMzMsMzMsMzMsLjMpO3RyYW5zaXRpb246b3BhY2l0eSAuMXMgZWFzZS1vdXR9XFxuLmludHJvanMtdG9vbHRpcHRleHR7cGFkZGluZzoyMHB4fVxcbi5pbnRyb2pzLWRvbnRTaG93QWdhaW57cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4fVxcbi5pbnRyb2pzLWRvbnRTaG93QWdhaW4gaW5wdXR7cGFkZGluZzowO21hcmdpbjowO21hcmdpbi1ib3R0b206MnB4O2Rpc3BsYXk6aW5saW5lO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHh9XFxuLmludHJvanMtZG9udFNob3dBZ2FpbiBsYWJlbHtmb250LXNpemU6MTRweDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDo0MDA7bWFyZ2luOjAgMCAwIDVweDtwYWRkaW5nOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2MTYxNjE7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfVxcbi5pbnRyb2pzLXRvb2x0aXAtdGl0bGV7Zm9udC1zaXplOjE4cHg7d2lkdGg6OTAlO21pbi1oZWlnaHQ6MS41ZW07bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjV9XFxuLmludHJvanMtdG9vbHRpcC1oZWFkZXJ7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4O3BhZGRpbmctdG9wOjEwcHg7bWluLWhlaWdodDoxLjVlbX1cXG4uaW50cm9qcy10b29sdGlwYnV0dG9uc3tib3JkZXItdG9wOjFweCBzb2xpZCAjZTBlMGUwO3BhZGRpbmc6MTBweDt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH1cXG4uaW50cm9qcy10b29sdGlwYnV0dG9uczphZnRlcntjb250ZW50OlxcXCJcXFwiO3Zpc2liaWxpdHk6aGlkZGVuO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjA7Y2xlYXI6Ym90aH1cXG4uaW50cm9qcy1idXR0b257Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzp2aXNpYmxlO3BhZGRpbmc6LjVyZW0gMXJlbTtib3JkZXI6MXB4IHNvbGlkICNiZGJkYmQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1zaGFkb3c6MXB4IDFweCAwICNmZmY7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzQyNDI0Mjt3aGl0ZS1zcGFjZTpub3dyYXA7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTowO2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtib3JkZXItcmFkaXVzOi4yZW07em9vbToxO2Rpc3BsYXk6aW5saW5lfVxcbi5pbnRyb2pzLWJ1dHRvbjpob3ZlcntvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9XFxuLmludHJvanMtYnV0dG9uOmZvY3Vze291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWU7Ym94LXNoYWRvdzowIDAgMCAuMnJlbSByZ2JhKDE1OCwxNTgsMTU4LC41KTtib3JkZXI6MXB4IHNvbGlkICM2MTYxNjE7Y29sb3I6IzIxMjEyMX1cXG4uaW50cm9qcy1idXR0b246YWN0aXZle291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Ym9yZGVyLWNvbG9yOiM5ZTllOWU7Y29sb3I6IzIxMjEyMX1cXG4uaW50cm9qcy1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlcjowfVxcbi5pbnRyb2pzLXNraXBidXR0b257cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDo0NXB4O2hlaWdodDo0NXB4O2xpbmUtaGVpZ2h0OjQ1cHg7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MjJweDtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo3MDA7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9XFxuLmludHJvanMtc2tpcGJ1dHRvbjpmb2N1cywuaW50cm9qcy1za2lwYnV0dG9uOmhvdmVye2NvbG9yOiMyMTIxMjE7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lfVxcbi5pbnRyb2pzLXByZXZidXR0b257ZmxvYXQ6bGVmdH1cXG4uaW50cm9qcy1uZXh0YnV0dG9ue2Zsb2F0OnJpZ2h0fVxcbi5pbnRyb2pzLWRpc2FibGVke2NvbG9yOiM5ZTllOWU7Ym9yZGVyLWNvbG9yOiNiZGJkYmQ7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0O2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9XFxuLmludHJvanMtZGlzYWJsZWQ6Zm9jdXMsLmludHJvanMtZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6IzllOWU5ZTtib3JkZXItY29sb3I6I2JkYmRiZDtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O2JhY2tncm91bmQtaW1hZ2U6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX1cXG4uaW50cm9qcy1oaWRkZW57ZGlzcGxheTpub25lfVxcbi5pbnRyb2pzLWJ1bGxldHN7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fVxcbi5pbnRyb2pzLWJ1bGxldHMgdWx7Ym94LXNpemluZzpjb250ZW50LWJveDtjbGVhcjpib3RoO21hcmdpbjowIGF1dG8gMDtwYWRkaW5nOjA7ZGlzcGxheTppbmxpbmUtYmxvY2t9XFxuLmludHJvanMtYnVsbGV0cyB1bCBsaXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O21hcmdpbjowIDJweH1cXG4uaW50cm9qcy1idWxsZXRzIHVsIGxpIGF7dHJhbnNpdGlvbjp3aWR0aCAuMXMgZWFzZS1pbjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6NnB4O2hlaWdodDo2cHg7YmFja2dyb3VuZDojY2NjO2JvcmRlci1yYWRpdXM6MTBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn1cXG4uaW50cm9qcy1idWxsZXRzIHVsIGxpIGE6Zm9jdXMsLmludHJvanMtYnVsbGV0cyB1bCBsaSBhOmhvdmVye3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5O3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MH1cXG4uaW50cm9qcy1idWxsZXRzIHVsIGxpIGEuYWN0aXZle3dpZHRoOjE1cHg7YmFja2dyb3VuZDojOTk5fVxcbi5pbnRyb2pzLXByb2dyZXNze2JveC1zaXppbmc6Y29udGVudC1ib3g7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDoxMHB4O21hcmdpbjoxMHB4O2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6I2UwZTBlMH1cXG4uaW50cm9qcy1wcm9ncmVzc2Jhcntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Zsb2F0OmxlZnQ7d2lkdGg6MCU7aGVpZ2h0OjEwMCU7Zm9udC1zaXplOjEwcHg7bGluZS1oZWlnaHQ6MTBweDt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwOGN9XFxuLmludHJvanNGbG9hdGluZ0VsZW1lbnR7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjA7d2lkdGg6MDtsZWZ0OjUwJTt0b3A6NTAlfVxcbi5pbnRyb2pzLWZpeGVkVG9vbHRpcHtwb3NpdGlvbjpmaXhlZH1cXG4uaW50cm9qcy1oaW50e2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDowIDA7d2lkdGg6MjBweDtoZWlnaHQ6MTVweDtjdXJzb3I6cG9pbnRlcn1cXG4uaW50cm9qcy1oaW50OmZvY3Vze2JvcmRlcjowO291dGxpbmU6MH1cXG4uaW50cm9qcy1oaW50OmhvdmVyPi5pbnRyb2pzLWhpbnQtcHVsc2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDYwLDYwLDYwLC41Nyl9XFxuLmludHJvanMtaGlkZWhpbnR7ZGlzcGxheTpub25lfVxcbi5pbnRyb2pzLWZpeGVkaGludHtwb3NpdGlvbjpmaXhlZH1cXG5Aa2V5ZnJhbWVzIGludHJvanNwdWxzZXswJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgcmdiYSgwLDAsMCwuNyl9NzAle3RyYW5zZm9ybTpzY2FsZSgxKTtib3gtc2hhZG93OjAgMCAwIDEwcHggdHJhbnNwYXJlbnR9MTAwJXt0cmFuc2Zvcm06c2NhbGUoLjk1KTtib3gtc2hhZG93OjAgMCAwIDAgdHJhbnNwYXJlbnR9fVxcbi5pbnRyb2pzLWhpbnQtcHVsc2V7Ym94LXNpemluZzpjb250ZW50LWJveDt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2JvcmRlci1yYWRpdXM6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTM2LDEzNiwxMzYsLjI0KTt6LWluZGV4OjEwO3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zaXRpb246YWxsIC4ycyBlYXNlLW91dDthbmltYXRpb246aW50cm9qc3B1bHNlIDJzIGluZmluaXRlfVxcbi5pbnRyb2pzLWhpbnQtbm8tYW5pbSAuaW50cm9qcy1oaW50LXB1bHNle2FuaW1hdGlvbjpub25lfVxcbi5pbnRyb2pzLWhpbnQtZG90e2JveC1zaXppbmc6Y29udGVudC1ib3g7YmFja2dyb3VuZDowIDA7Ym9yZGVyLXJhZGl1czo2MHB4O2hlaWdodDo1MHB4O3dpZHRoOjUwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xOHB4O2xlZnQ6LTE4cHg7ei1pbmRleDoxO29wYWNpdHk6MH1cXG4uaGVscGVyLWNvbnRhaW5lciB7XFxuICByaWdodDogMDtcXG4gIHRvcDogNzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG59XFxuLmhlbHBlci1jb250YWluZXIgLnRhYiB7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXG4gIH1cXG4uaGVscGVyLWNvbnRhaW5lciAudGFiOmhvdmVyIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNyAyNCAzOSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhlbHBlci1jb250YWluZXIub3BlbiB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxufVxcbi5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIsXFxuLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyIHtcXG4gIHotaW5kZXg6IDEwICFpbXBvcnRhbnQ7XFxufVxcbi5yYmMtZXZlbnQge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi50aGVtZS1waW5rIC5yYmMtZXZlbnQge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5yYmMtZXZlbnQge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnJiYy1zaG93LW1vcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuLnJiYy1zaG93LW1vcmU6aXMoLmRhcmsgKikge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWJ0bi1ncm91cCBidXR0b246aXMoLmRhcmsgKikge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWJ0bi1ncm91cCBidXR0b246aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWJ0bi1ncm91cCBidXR0b246aG92ZXI6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDQgNDcgNTQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLnJiYy1idG4tZ3JvdXAgYnV0dG9uLnJiYy1hY3RpdmUge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMCAwIDAgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWJ0bi1ncm91cCBidXR0b24ucmJjLWFjdGl2ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLnJiYy1idG4tZ3JvdXAgYnV0dG9uOmZvY3VzOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWRheS1iZy5yYmMtb2ZmLXJhbmdlLWJnOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMzIDM2IDQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yYmMtY3VycmVudC10aW1lLWluZGljYXRvciB7XFxuICBoZWlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDtcXG59XFxuLnJiYy10b2RheTppcyguZGFyayAqKSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU2IDE2MyAxNzUgLyAwLjQpICFpbXBvcnRhbnQ7XFxufVxcbi5yYmMtZGF5LWJnLnJiYy1zZWxlY3RlZC1jZWxsOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwMyAyMTMgMjI1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yZWFjdC1zZWxlY3RfX2NvbnRyb2w6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoNDQgNDcgNTQgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMyAzNiA0MiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmVhY3Qtc2VsZWN0X19zaW5nbGUtdmFsdWU6aXMoLmRhcmsgKikge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmVhY3Qtc2VsZWN0X19tZW51OmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5yZWFjdC1zZWxlY3RfX21lbnUtbGlzdDppcyguZGFyayAqKSB7XFxuICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBib3JkZXItY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMzIDM2IDQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yZWFjdC1zZWxlY3RfX29wdGlvbiB7XFxuICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcXG59XFxuLnJlYWN0LXNlbGVjdF9fb3B0aW9uOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyOSAyMzEgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yZWFjdC1zZWxlY3RfX29wdGlvbjpob3ZlcjppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmVhY3Qtc2VsZWN0X19vcHRpb24tLWlzLWZvY3VzZWQ6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzMgMzYgNDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLnJlYWN0LXNlbGVjdF9fb3B0aW9uLS1pcy1mb2N1c2VkOmlzKC5kYXJrICopOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ0IDQ3IDU0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yZWFjdC1zZWxlY3RfX29wdGlvbi0taXMtc2VsZWN0ZWQ6aXMoLmRhcmsgKiksXFxuLnJlYWN0LXNlbGVjdF9fb3B0aW9uLS1pcy1zZWxlY3RlZDpob3ZlcjppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTYgMTYzIDE3NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4ucmVhY3Qtc2VsZWN0X19tdWx0aS12YWx1ZV9fcmVtb3ZlOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi5yZWFjdC1zZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmU6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUyIDE2NSAxNjUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBjb2xvcjogcmdiKDIyMCAzOCAzOCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxufVxcbi50aGVtZS1waW5rIC5hcHAtc2lkZWJhciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAgMjAgNDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLXBpbmsgLmFwcC1zaWRlYmFyIC5tZW51LXRpdGxlLFxcbiAgICAudGhlbWUtcGluayAuYXBwLXNpZGViYXIgLm1lbnUtaXRlbS1pY29uLFxcbiAgICAudGhlbWUtcGluayAuYXBwLXNpZGViYXIgLm1lbnUtaXRlbS1saW5rIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtcGluayAuYXBwLXNpZGViYXItYnJhbmQge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSAyNTUgMjU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtcGluayAuYmctYmx1ZS02MDAge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLXBpbmsgLmJvcmRlci1ibHVlLTcwMCB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMTkwIDI0IDkzIC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLXBpbmsgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjayxcXG4gIC50aGVtZS1waW5rIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyAuY2hlY2sge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi50aGVtZS1waW5rIC5oZWxwZXItY29udGFpbmVyIC50YWIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwIDIwIDQyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtcGluayAuZm9jdXNcXFxcOnJpbmc6Zm9jdXMge1xcbiAgICAtLXR3LXJpbmctY29sb3I6ICMxNDE0MmE7XFxuICB9XFxuLnRoZW1lLXBpbmsgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Zm9jdXMgKyAuY2hlY2ssXFxuICAudGhlbWUtcGluayAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpmb2N1cyArIC5jaGVjayxcXG4gIC50aGVtZS1waW5rIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpmb2N1cyArIC5jaGVjayB7XFxuICAgIC0tdHctcmluZy1jb2xvcjogIzE0MTQyYTtcXG4gIH1cXG4udGhlbWUtZ3JlZW4gLmFwcC1zaWRlYmFyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig3OCA3NSAxMDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5hcHAtc2lkZWJhciAubWVudS10aXRsZSxcXG4gICAgLnRoZW1lLWdyZWVuIC5hcHAtc2lkZWJhciAubWVudS1pdGVtLWljb24sXFxuICAgIC50aGVtZS1ncmVlbiAuYXBwLXNpZGViYXIgLm1lbnUtaXRlbS1saW5rIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmFwcC1zaWRlYmFyLWJyYW5kIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5iZy1ibHVlLTYwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzggNzUgMTAyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmJvcmRlci1ibHVlLTcwMCB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTEwIDExMyAxNDUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi50aGVtZS1ncmVlbiAuaG92ZXJcXFxcOmJnLWJsdWUtNzAwOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMTAgMTEzIDE0NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC50ZXh0LWJsdWUtNjAwIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyMCAyMCA0MiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjayxcXG4gIC50aGVtZS1ncmVlbiAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgLmNoZWNrIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig3OCA3NSAxMDIgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmhlbHBlci1jb250YWluZXIgLnRhYiB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTEwIDExMyAxNDUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi50aGVtZS1ncmVlbiAuZm9jdXNcXFxcOnJpbmc6Zm9jdXMge1xcbiAgICAtLXR3LXJpbmctY29sb3I6ICM0ZTRiNjY7XFxuICB9XFxuLnRoZW1lLWdyZWVuIC5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmZvY3VzICsgLmNoZWNrLFxcbiAgLnRoZW1lLWdyZWVuIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmZvY3VzICsgLmNoZWNrLFxcbiAgLnRoZW1lLWdyZWVuIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpmb2N1cyArIC5jaGVjayB7XFxuICAgIC0tdHctcmluZy1jb2xvcjogIzRlNGI2NjtcXG4gIH1cXG4udGhlbWUtZ3JlZW4gLnRleHQtYmx1ZS01MDAge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmhvdmVyXFxcXDp0ZXh0LWJsdWUtNjAwOmhvdmVyIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYig3OCA3NSAxMDIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5hY3RpdmVcXFxcOnRleHQtYmx1ZS03MDA6YWN0aXZlIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYig3OCA3NSAxMDIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmludHJvanMtdG9vbHRpcCB7XFxuICBtaW4td2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7XFxuICBtYXgtd2lkdGg6IDQ4MHB4ICFpbXBvcnRhbnQ7XFxuICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcXG59XFxuLmdvb2QtaW1nIHtcXG4gIG1hcmdpbi10b3A6IC0yNHJlbSAhaW1wb3J0YW50O1xcbn1cXG4uZW5kLWltZyB7XFxuICBtYXJnaW4tdG9wOiAtMThyZW0gIWltcG9ydGFudDtcXG59XFxuLmludHJvanMtYnV0dG9uIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMSAhaW1wb3J0YW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKSAhaW1wb3J0YW50O1xcbn1cXG4udGhlbWUtcGluayAuaW50cm9qcy1idXR0b24ge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc4IDc1IDEwMiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLnRoZW1lLWdyZWVuIC5pbnRyb2pzLWJ1dHRvbiB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzggNzUgMTAyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaW50cm9qcy1idXR0b24ge1xcbiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmludHJvanMtYnVsbGV0cyB1bCBsaSBhLmFjdGl2ZSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLnRoZW1lLXBpbmsgLmludHJvanMtYnVsbGV0cyB1bCBsaSBhLmFjdGl2ZSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzggNzUgMTAyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4udGhlbWUtZ3JlZW4gLmludHJvanMtYnVsbGV0cyB1bCBsaSBhLmFjdGl2ZSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzggNzUgMTAyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaW50cm9qcy1wcmV2YnV0dG9uIHtcXG4gIGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxICFpbXBvcnRhbnQ7XFxuICBib3JkZXItY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpICFpbXBvcnRhbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDEgIWltcG9ydGFudDtcXG4gIGNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSkgIWltcG9ydGFudDtcXG59XFxuLnRoZW1lLWdyZWVuIC5pbnRyb2pzLXByZXZidXR0b24ge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIwIDIwIDQyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5iZWZvcmVcXFxcOmhpZGRlbjo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IHZhcigtLXR3LWNvbnRlbnQpO1xcbiAgZGlzcGxheTogbm9uZTtcXG59XFxuLmxhc3RcXFxcOm1iLTA6bGFzdC1jaGlsZCB7XFxuICBtYXJnaW4tYm90dG9tOiAwcHg7XFxufVxcbi5sYXN0XFxcXDptci0wOmxhc3QtY2hpbGQge1xcbiAgbWFyZ2luLXJpZ2h0OiAwcHg7XFxufVxcbi5sYXN0XFxcXDpib3JkZXItbm9uZTpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcXG59XFxuLmhvdmVyXFxcXDpib3JkZXItYmx1ZS03MDA6aG92ZXIge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDI5IDc4IDIxNiAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6Ym9yZGVyLWVtZXJhbGQtNzAwOmhvdmVyIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig0IDEyMCA4NyAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6Ym9yZGVyLXJlZC03MDA6aG92ZXIge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDE4NSAyOCAyOCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6Ym9yZGVyLXllbGxvdy03MDA6aG92ZXIge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDE2MSA5OCA3IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpiZy1ibHVlLTYwMDpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmJnLWJsdWUtNzAwOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyOSA3OCAyMTYgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6YmctZW1lcmFsZC02MDA6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUgMTUwIDEwNSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpiZy1lbWVyYWxkLTcwMDpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNCAxMjAgODcgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6YmctZ3JheS0xMDA6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MyAyNDQgMjQ2IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmJnLWdyYXktMTAwXFxcXC83MDpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQzIDI0NCAyNDYgLyAwLjcpO1xcbn1cXG4uaG92ZXJcXFxcOmJnLWdyYXktMjAwOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjkgMjMxIDIzNSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpiZy1ncmF5LTcwMDpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTUgNjUgODEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6YmctZ3JheS04MDA6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMxIDQxIDU1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmJnLXJlZC02MDA6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyMCAzOCAzOCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpiZy1yZWQtNzAwOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxODUgMjggMjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6YmcteWVsbG93LTYwMDpob3ZlciB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAyIDEzOCA0IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmJnLXllbGxvdy03MDA6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE2MSA5OCA3IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOnRleHQtYmxhY2s6aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDAgMCAwIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6dGV4dC1ibHVlLTUwMDpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOnRleHQtZ3JheS0xMDA6aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDI0MyAyNDQgMjQ2IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6dGV4dC13aGl0ZTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpzaGFkb3ctbGc6aG92ZXIge1xcbiAgLS10dy1zaGFkb3c6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSwgMCA0cHggNnB4IC00cHggcmdiKDAgMCAwIC8gMC4xKTtcXG4gIC0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxufVxcbi5mb2N1c1xcXFw6Ym9yZGVyLWJsdWUtNjAwOmZvY3VzIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigzNyA5OSAyMzUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZm9jdXNcXFxcOm91dGxpbmUtbm9uZTpmb2N1cyB7XFxuICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICBvdXRsaW5lLW9mZnNldDogMnB4O1xcbn1cXG4uZm9jdXNcXFxcOnJpbmc6Zm9jdXMge1xcbiAgLS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7XFxuICAtLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKTtcXG59XFxuLmZvY3VzXFxcXDpyaW5nLTA6Zm9jdXMge1xcbiAgLS10dy1yaW5nLW9mZnNldC1zaGFkb3c6IHZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSB2YXIoLS10dy1yaW5nLW9mZnNldC1jb2xvcik7XFxuICAtLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDBweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7XFxuICBib3gtc2hhZG93OiB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdywgMCAwICMwMDAwKTtcXG59XFxuLmZvY3VzXFxcXDpyaW5nLWJsdWUtNjAwOmZvY3VzIHtcXG4gIC0tdHctcmluZy1vcGFjaXR5OiAxO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoMzcgOTkgMjM1IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpkaXZpZGUtZGFyay03MDA6aXMoLmRhcmsgKikgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gIC0tdHctZGl2aWRlLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWRpdmlkZS1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpib3JkZXItYmx1ZS01MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDU5IDEzMCAyNDYgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6Ym9yZGVyLWRhcmstNzAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig0NCA0NyA1NCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpib3JkZXItZGFyay04MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDMzIDM2IDQyIC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJvcmRlci1kYXJrLTkwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMTkgMjIgMjQgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6Ym9yZGVyLWdyYXktNjAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYig3NSA4NSA5OSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpib3JkZXItcGF2aXRyYS1ibHVlOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigxIDk4IDI1MyAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpib3JkZXItcmVkLTUwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjM5IDY4IDY4IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJvcmRlci1zbGF0ZS0xMDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDI0MSAyNDUgMjQ5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJvcmRlci1zbGF0ZS03MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDUxIDY1IDg1IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJvcmRlci1zbGF0ZS04MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDMwIDQxIDU5IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJvcmRlci13aGl0ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6Ym9yZGVyLXllbGxvdy01MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDIzNCAxNzkgOCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1kYXJrLTgwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzMgMzYgNDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1kYXJrLTkwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkgMjIgMjQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1kYXJrLTkwMFxcXFwvNzA6aXMoLmRhcmsgKikge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5IDIyIDI0IC8gMC43KTtcXG59XFxuLmRhcmtcXFxcOmJnLWdyYXktNzAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1NSA2NSA4MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJnLXBhdml0cmEtYmx1ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMSA5OCAyNTMgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1yZWQtNTAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzkgNjggNjggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1yZWQtNjAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjAgMzggMzggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1zbGF0ZS0xMDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MSAyNDUgMjQ5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6Ymctc2xhdGUtNzAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1MSA2NSA4NSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmJnLXNsYXRlLTgwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzAgNDEgNTkgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy1zbGF0ZS04MDBcXFxcLzUwOmlzKC5kYXJrICopIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCA0MSA1OSAvIDAuNSk7XFxufVxcbi5kYXJrXFxcXDpiZy13aGl0ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy15ZWxsb3ctNTAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzQgMTc5IDggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpiZy15ZWxsb3ctNjAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDIgMTM4IDQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpmcm9tLWRhcmstNzAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctZ3JhZGllbnQtZnJvbTogIzJDMkYzNiB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtdG86IHJnYig0NCA0NyA1NCAvIDApIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byk7XFxufVxcbi5kYXJrXFxcXDp2aWEtZGFyay05MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ncmFkaWVudC10bzogcmdiKDE5IDIyIDI0IC8gMCkgIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKTtcXG4gIC0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCAjMTMxNjE4IHZhcigtLXR3LWdyYWRpZW50LXZpYS1wb3NpdGlvbiksIHZhcigtLXR3LWdyYWRpZW50LXRvKTtcXG59XFxuLmRhcmtcXFxcOnRvLWRhcmstNzAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctZ3JhZGllbnQtdG86ICMyQzJGMzYgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pO1xcbn1cXG4uZGFya1xcXFw6dGV4dC1ibGFjazppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMCAwIDAgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnRleHQtZGFyay01MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDIwMyAyMTMgMjI1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDp0ZXh0LWRhcmstNjAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigxNTYgMTYzIDE3NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6dGV4dC1ncmF5LTQwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMTU2IDE2MyAxNzUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnRleHQtcGF2aXRyYS1ibHVlOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigxIDk4IDI1MyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6dGV4dC1yZWQtNTAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyMzkgNjggNjggLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnRleHQtcmVkLTYwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjIwIDM4IDM4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDp0ZXh0LXNsYXRlLTEwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjQxIDI0NSAyNDkgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnRleHQtc2xhdGUtNDAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigxNDggMTYzIDE4NCAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6dGV4dC13aGl0ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnRleHQteWVsbG93LTUwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjM0IDE3OSA4IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpwbGFjZWhvbGRlci1kYXJrLTYwMDppcyguZGFyayAqKTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAtLXR3LXBsYWNlaG9sZGVyLW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6cGxhY2Vob2xkZXItZGFyay02MDA6aXMoLmRhcmsgKik6OnBsYWNlaG9sZGVyIHtcXG4gIC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMTU2IDE2MyAxNzUgLyB2YXIoLS10dy1wbGFjZWhvbGRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpwbGFjZWhvbGRlci1ncmF5LTQwMDppcyguZGFyayAqKTo6LW1vei1wbGFjZWhvbGRlciB7XFxuICAtLXR3LXBsYWNlaG9sZGVyLW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDE1NiAxNjMgMTc1IC8gdmFyKC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6cGxhY2Vob2xkZXItZ3JheS00MDA6aXMoLmRhcmsgKik6OnBsYWNlaG9sZGVyIHtcXG4gIC0tdHctcGxhY2Vob2xkZXItb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMTU2IDE2MyAxNzUgLyB2YXIoLS10dy1wbGFjZWhvbGRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpyaW5nLWRhcmstNTAwOmlzKC5kYXJrICopIHtcXG4gIC0tdHctcmluZy1vcGFjaXR5OiAxO1xcbiAgLS10dy1yaW5nLWNvbG9yOiByZ2IoMjAzIDIxMyAyMjUgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnJpbmctZ3JheS00MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1yaW5nLW9wYWNpdHk6IDE7XFxuICAtLXR3LXJpbmctY29sb3I6IHJnYigxNTYgMTYzIDE3NSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uZGFya1xcXFw6cmluZy1ncmF5LTUwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDEwNyAxMTQgMTI4IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpyaW5nLXBhdml0cmEtYmx1ZTppcyguZGFyayAqKSB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDEgOTggMjUzIC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpyaW5nLXJlZC03MDA6aXMoLmRhcmsgKikge1xcbiAgLS10dy1yaW5nLW9wYWNpdHk6IDE7XFxuICAtLXR3LXJpbmctY29sb3I6IHJnYigxODUgMjggMjggLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOnJpbmcteWVsbG93LTcwMDppcyguZGFyayAqKSB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDE2MSA5OCA3IC8gdmFyKC0tdHctcmluZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpob3ZlclxcXFw6Ym9yZGVyLWdyYXktNTAwOmhvdmVyOmlzKC5kYXJrICopIHtcXG4gIC0tdHctYm9yZGVyLW9wYWNpdHk6IDE7XFxuICBib3JkZXItY29sb3I6IHJnYigxMDcgMTE0IDEyOCAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6ZGFya1xcXFw6Ym9yZGVyLXBhdml0cmEtYmx1ZTppcyguZGFyayAqKTpob3ZlciB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMSA5OCAyNTMgLyB2YXIoLS10dy1ib3JkZXItb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmRhcmtcXFxcOmJvcmRlci1wYXZpdHJhLWJsdWVcXFxcLzgwOmlzKC5kYXJrICopOmhvdmVyIHtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDEgOTggMjUzIC8gMC44KTtcXG59XFxuLmhvdmVyXFxcXDpkYXJrXFxcXDpib3JkZXItcmVkLTYwMDppcyguZGFyayAqKTpob3ZlciB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjIwIDM4IDM4IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpkYXJrXFxcXDpib3JkZXIteWVsbG93LTYwMDppcyguZGFyayAqKTpob3ZlciB7XFxuICAtLXR3LWJvcmRlci1vcGFjaXR5OiAxO1xcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjAyIDEzOCA0IC8gdmFyKC0tdHctYm9yZGVyLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmhvdmVyXFxcXDpiZy1kYXJrLTgwMDpob3ZlcjppcyguZGFyayAqKSB7XFxuICAtLXR3LWJnLW9wYWNpdHk6IDE7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzMgMzYgNDIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpob3ZlclxcXFw6YmctZ3JheS02MDA6aG92ZXI6aXMoLmRhcmsgKikge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc1IDg1IDk5IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmRhcmtcXFxcOmJnLWRhcmstODAwOmlzKC5kYXJrICopOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMyAzNiA0MiAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpkYXJrXFxcXDpiZy1wYXZpdHJhLWJsdWU6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEgOTggMjUzIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmRhcmtcXFxcOmJnLXBhdml0cmEtYmx1ZVxcXFwvODA6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEgOTggMjUzIC8gMC44KTtcXG59XFxuLmhvdmVyXFxcXDpkYXJrXFxcXDpiZy1yZWQtNjAwOmlzKC5kYXJrICopOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjAgMzggMzggLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6ZGFya1xcXFw6Ymctc2xhdGUtMTAwOmlzKC5kYXJrICopOmhvdmVyIHtcXG4gIC0tdHctYmctb3BhY2l0eTogMTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDEgMjQ1IDI0OSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmhvdmVyXFxcXDpkYXJrXFxcXDpiZy1zbGF0ZS03MDA6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUxIDY1IDg1IC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmRhcmtcXFxcOmJnLXllbGxvdy02MDA6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwMiAxMzggNCAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmhvdmVyXFxcXDp0ZXh0LXNsYXRlLTQwMDpob3ZlcjppcyguZGFyayAqKSB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMTQ4IDE2MyAxODQgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmhvdmVyXFxcXDp0ZXh0LXdoaXRlOmhvdmVyOmlzKC5kYXJrICopIHtcXG4gIC0tdHctdGV4dC1vcGFjaXR5OiAxO1xcbiAgY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpO1xcbn1cXG4uaG92ZXJcXFxcOmRhcmtcXFxcOnRleHQtYmxhY2s6aXMoLmRhcmsgKik6aG92ZXIge1xcbiAgLS10dy10ZXh0LW9wYWNpdHk6IDE7XFxuICBjb2xvcjogcmdiKDAgMCAwIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSk7XFxufVxcbi5ob3ZlclxcXFw6ZGFya1xcXFw6dGV4dC13aGl0ZTppcyguZGFyayAqKTpob3ZlciB7XFxuICAtLXR3LXRleHQtb3BhY2l0eTogMTtcXG4gIGNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKTtcXG59XFxuLmRhcmtcXFxcOmZvY3VzXFxcXDpib3JkZXItYmx1ZS02MDA6Zm9jdXM6aXMoLmRhcmsgKikge1xcbiAgLS10dy1ib3JkZXItb3BhY2l0eTogMTtcXG4gIGJvcmRlci1jb2xvcjogcmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LWJvcmRlci1vcGFjaXR5LCAxKSk7XFxufVxcbi5kYXJrXFxcXDpmb2N1c1xcXFw6cmluZy1ibHVlLTYwMDpmb2N1czppcyguZGFyayAqKSB7XFxuICAtLXR3LXJpbmctb3BhY2l0eTogMTtcXG4gIC0tdHctcmluZy1jb2xvcjogcmdiKDM3IDk5IDIzNSAvIHZhcigtLXR3LXJpbmctb3BhY2l0eSwgMSkpO1xcbn1cXG5AbWVkaWEgKG1pbi13aWR0aDogNjQwcHgpIHtcXG5cXG4gIC5zbVxcXFw6bWItNiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWItOCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDJyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOm10LTYge1xcbiAgICBtYXJnaW4tdG9wOiAxLjVyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOmgtMTYge1xcbiAgICBoZWlnaHQ6IDRyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOmgtNjAge1xcbiAgICBoZWlnaHQ6IDE1cmVtO1xcbiAgfVxcblxcbiAgLnNtXFxcXDpoLWF1dG8ge1xcbiAgICBoZWlnaHQ6IGF1dG87XFxuICB9XFxuXFxuICAuc21cXFxcOmgtZnVsbCB7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6bWF4LWgtOTYge1xcbiAgICBtYXgtaGVpZ2h0OiAyNHJlbTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0xXFxcXC8yIHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dy0xNiB7XFxuICAgIHdpZHRoOiA0cmVtO1xcbiAgfVxcblxcbiAgLnNtXFxcXDpncmlkLWNvbHMtMiB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6Z3JpZC1jb2xzLTMge1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XFxuICB9XFxuXFxuICAuc21cXFxcOmdhcC02IHtcXG4gICAgZ2FwOiAxLjVyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOnAtNiB7XFxuICAgIHBhZGRpbmc6IDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cC04IHtcXG4gICAgcGFkZGluZzogMnJlbTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6cHgtNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtMnhsIHtcXG4gICAgZm9udC1zaXplOiAxLjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LTN4bCB7XFxuICAgIGZvbnQtc2l6ZTogMS44NzVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAyLjI1cmVtO1xcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LTV4bCB7XFxuICAgIGZvbnQtc2l6ZTogM3JlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDE7XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtXFxcXFs4cHhcXFxcXSB7XFxuICAgIGZvbnQtc2l6ZTogOHB4O1xcbiAgfVxcblxcbiAgLnNtXFxcXDp0ZXh0LWJhc2Uge1xcbiAgICBmb250LXNpemU6IDFyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XFxuICB9XFxuXFxuICAuc21cXFxcOnRleHQtbGcge1xcbiAgICBmb250LXNpemU6IDEuMTI1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG4gIH1cXG5cXG4gIC5zbVxcXFw6dGV4dC14bCB7XFxuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxuICB9XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xcblxcbiAgLm1kXFxcXDphYnNvbHV0ZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cmlnaHQtMCB7XFxuICAgIHJpZ2h0OiAwcHg7XFxuICB9XFxuXFxuICAubWRcXFxcOnRvcC0wIHtcXG4gICAgdG9wOiAwcHg7XFxuICB9XFxuXFxuICAubWRcXFxcOm1iLTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XFxuICB9XFxuXFxuICAubWRcXFxcOm1iLTEwIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi41cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDptYi04IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6bXItMiB7XFxuICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDptdC0wIHtcXG4gICAgbWFyZ2luLXRvcDogMHB4O1xcbiAgfVxcblxcbiAgLm1kXFxcXDptdC04IHtcXG4gICAgbWFyZ2luLXRvcDogMnJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6YmxvY2sge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleCB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICB9XFxuXFxuICAubWRcXFxcOmlubGluZS1mbGV4IHtcXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICB9XFxuXFxuICAubWRcXFxcOmgtNDQge1xcbiAgICBoZWlnaHQ6IDExcmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTUge1xcbiAgICBoZWlnaHQ6IDEuMjVyZW07XFxuICB9XFxuXFxuICAubWRcXFxcOmgtNiB7XFxuICAgIGhlaWdodDogMS41cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDpoLTk2IHtcXG4gICAgaGVpZ2h0OiAyNHJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xXFxcXC8yIHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy0xXFxcXC8zIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzMyU7XFxuICB9XFxuXFxuICAubWRcXFxcOnctMVxcXFwvNCB7XFxuICAgIHdpZHRoOiAyNSU7XFxuICB9XFxuXFxuICAubWRcXFxcOnctMTBcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDgzLjMzMzMzMyU7XFxuICB9XFxuXFxuICAubWRcXFxcOnctMlxcXFwvMyB7XFxuICAgIHdpZHRoOiA2Ni42NjY2NjclO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTNcXFxcLzUge1xcbiAgICB3aWR0aDogNjAlO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTUge1xcbiAgICB3aWR0aDogMS4yNXJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy01XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA0MS42NjY2NjclO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp3LTZcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy03XFxcXC8xMiB7XFxuICAgIHdpZHRoOiA1OC4zMzMzMzMlO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp3LWF1dG8ge1xcbiAgICB3aWR0aDogYXV0bztcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dy1mdWxsIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuXFxuICAubWRcXFxcOmdyaWQtY29scy0yIHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xcbiAgfVxcblxcbiAgLm1kXFxcXDpncmlkLWNvbHMtMyB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6ZmxleC1yb3cge1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgfVxcblxcbiAgLm1kXFxcXDpqdXN0aWZ5LXN0YXJ0IHtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgfVxcblxcbiAgLm1kXFxcXDpnYXAtMTYge1xcbiAgICBnYXA6IDRyZW07XFxuICB9XFxuXFxuICAubWRcXFxcOnNwYWNlLXgtNCA+IDpub3QoW2hpZGRlbl0pIH4gOm5vdChbaGlkZGVuXSkge1xcbiAgICAtLXR3LXNwYWNlLXgtcmV2ZXJzZTogMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiBjYWxjKDFyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMXJlbSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpKTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6c3BhY2UteS0wID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAgIC0tdHctc3BhY2UteS1yZXZlcnNlOiAwO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKDBweCAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKTtcXG4gICAgbWFyZ2luLWJvdHRvbTogY2FsYygwcHggKiB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cm91bmRlZC1iLW5vbmUge1xcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMHB4O1xcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwcHg7XFxuICB9XFxuXFxuICAubWRcXFxcOnAtMCB7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC0xMiB7XFxuICAgIHBhZGRpbmc6IDNyZW07XFxuICB9XFxuXFxuICAubWRcXFxcOnAtMTYge1xcbiAgICBwYWRkaW5nOiA0cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDpwLTI0IHtcXG4gICAgcGFkZGluZzogNnJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cC04IHtcXG4gICAgcGFkZGluZzogMnJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHgtMCB7XFxuICAgIHBhZGRpbmctbGVmdDogMHB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAwcHg7XFxuICB9XFxuXFxuICAubWRcXFxcOnB5LTAge1xcbiAgICBwYWRkaW5nLXRvcDogMHB4O1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMHB4O1xcbiAgfVxcblxcbiAgLm1kXFxcXDpweS0yIHtcXG4gICAgcGFkZGluZy10b3A6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6cHktMyB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjc1cmVtO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC1sZWZ0IHtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC0yeGwge1xcbiAgICBmb250LXNpemU6IDEuNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtM3hsIHtcXG4gICAgZm9udC1zaXplOiAxLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDIuMjVyZW07XFxuICB9XFxuXFxuICAubWRcXFxcOnRleHQtNHhsIHtcXG4gICAgZm9udC1zaXplOiAyLjI1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMi41cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LTd4bCB7XFxuICAgIGZvbnQtc2l6ZTogNC41cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMTtcXG4gIH1cXG5cXG4gIC5tZFxcXFw6dGV4dC1sZyB7XFxuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07XFxuICAgIGxpbmUtaGVpZ2h0OiAxLjc1cmVtO1xcbiAgfVxcblxcbiAgLm1kXFxcXDp0ZXh0LXhsIHtcXG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS43NXJlbTtcXG4gIH1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xcblxcbiAgLmxnXFxcXDpzdGF0aWMge1xcbiAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgfVxcblxcbiAgLmxnXFxcXDphYnNvbHV0ZSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bGVmdC0wIHtcXG4gICAgbGVmdDogMHB4O1xcbiAgfVxcblxcbiAgLmxnXFxcXDp0b3AtZnVsbCB7XFxuICAgIHRvcDogMTAwJTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6ei0yMCB7XFxuICAgIHotaW5kZXg6IDIwO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpvcmRlci1maXJzdCB7XFxuICAgIG9yZGVyOiAtOTk5OTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6b3JkZXItbGFzdCB7XFxuICAgIG9yZGVyOiA5OTk5O1xcbiAgfVxcblxcbiAgLmxnXFxcXDpjb2wtc3Bhbi0xIHtcXG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMSAvIHNwYW4gMTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXgtMTIge1xcbiAgICBtYXJnaW4tbGVmdDogM3JlbTtcXG4gICAgbWFyZ2luLXJpZ2h0OiAzcmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpteC1hdXRvIHtcXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XFxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXktMFxcXFwuNSB7XFxuICAgIG1hcmdpbi10b3A6IDAuMTI1cmVtO1xcbiAgICBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDBweDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWItMTAge1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOm1iLTE0IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMy41cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDptYi04IHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bWwtMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XFxuICB9XFxuXFxuICAubGdcXFxcOm1sLTE2IHtcXG4gICAgbWFyZ2luLWxlZnQ6IDRyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOm1yLTYge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtMCB7XFxuICAgIG1hcmdpbi10b3A6IDBweDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6bXQtNiB7XFxuICAgIG1hcmdpbi10b3A6IDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6YmxvY2sge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aW5saW5lLWJsb2NrIHtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpmbGV4IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aW5saW5lLWZsZXgge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Z3JpZCB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICB9XFxuXFxuICAubGdcXFxcOmhpZGRlbiB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxuXFxuICAubGdcXFxcOmgtNiB7XFxuICAgIGhlaWdodDogMS41cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpoLXNjcmVlbiB7XFxuICAgIGhlaWdodDogMTAwdmg7XFxuICB9XFxuXFxuICAubGdcXFxcOnctMSB7XFxuICAgIHdpZHRoOiAwLjI1cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTFcXFxcLzMge1xcbiAgICB3aWR0aDogMzMuMzMzMzMzJTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0xNiB7XFxuICAgIHdpZHRoOiA0cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTJcXFxcLzMge1xcbiAgICB3aWR0aDogNjYuNjY2NjY3JTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0yXFxcXC81IHtcXG4gICAgd2lkdGg6IDQwJTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy0zMiB7XFxuICAgIHdpZHRoOiA4cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTYge1xcbiAgICB3aWR0aDogMS41cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDp3LTZcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDUwJTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dy1hdXRvIHtcXG4gICAgd2lkdGg6IGF1dG87XFxuICB9XFxuXFxuICAubGdcXFxcOnctZnVsbCB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcblxcbiAgLmxnXFxcXDptaW4tdy1mdWxsIHtcXG4gICAgbWluLXdpZHRoOiAxMDAlO1xcbiAgfVxcblxcbiAgLmxnXFxcXDptYXgtdy0yeGwge1xcbiAgICBtYXgtd2lkdGg6IDQycmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpncmlkLWNvbHMtMyB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Z3JpZC1jb2xzLTQge1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCBtaW5tYXgoMCwgMWZyKSk7XFxuICB9XFxuXFxuICAubGdcXFxcOmZsZXgtcm93IHtcXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6aXRlbXMtc3RyZXRjaCB7XFxuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpqdXN0aWZ5LWVuZCB7XFxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxuICB9XFxuXFxuICAubGdcXFxcOmp1c3RpZnktY2VudGVyIHtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB9XFxuXFxuICAubGdcXFxcOmdhcC0xNiB7XFxuICAgIGdhcDogNHJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c3BhY2UteC00ID4gOm5vdChbaGlkZGVuXSkgfiA6bm90KFtoaWRkZW5dKSB7XFxuICAgIC0tdHctc3BhY2UteC1yZXZlcnNlOiAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMXJlbSAqIHZhcigtLXR3LXNwYWNlLXgtcmV2ZXJzZSkpO1xcbiAgICBtYXJnaW4tbGVmdDogY2FsYygxcmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpzcGFjZS14LTYgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gICAgLS10dy1zcGFjZS14LXJldmVyc2U6IDA7XFxuICAgIG1hcmdpbi1yaWdodDogY2FsYygxLjVyZW0gKiB2YXIoLS10dy1zcGFjZS14LXJldmVyc2UpKTtcXG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMS41cmVtICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteC1yZXZlcnNlKSkpO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpzcGFjZS15LTAgPiA6bm90KFtoaWRkZW5dKSB+IDpub3QoW2hpZGRlbl0pIHtcXG4gICAgLS10dy1zcGFjZS15LXJldmVyc2U6IDA7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoMHB4ICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpO1xcbiAgICBtYXJnaW4tYm90dG9tOiBjYWxjKDBweCAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpvdmVyZmxvdy12aXNpYmxlIHtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICB9XFxuXFxuICAubGdcXFxcOnJvdW5kZWQtMnhsIHtcXG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cm91bmRlZC1sZyB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6Ym9yZGVyIHtcXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XFxuICB9XFxuXFxuICAubGdcXFxcOmJnLXRyYW5zcGFyZW50IHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB9XFxuXFxuICAubGdcXFxcOmJnLXdoaXRlIHtcXG4gICAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxuICB9XFxuXFxuICAubGdcXFxcOnAtMCB7XFxuICAgIHBhZGRpbmc6IDBweDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cC0yNCB7XFxuICAgIHBhZGRpbmc6IDZyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnAtOCB7XFxuICAgIHBhZGRpbmc6IDJyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnB4LTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDBweDtcXG4gICAgcGFkZGluZy1yaWdodDogMHB4O1xcbiAgfVxcblxcbiAgLmxnXFxcXDpweC0xMiB7XFxuICAgIHBhZGRpbmctbGVmdDogM3JlbTtcXG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtMyB7XFxuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbTtcXG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHgtNiB7XFxuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTEwIHtcXG4gICAgcGFkZGluZy10b3A6IDIuNXJlbTtcXG4gICAgcGFkZGluZy1ib3R0b206IDIuNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6cHktMiB7XFxuICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnB5LTI0IHtcXG4gICAgcGFkZGluZy10b3A6IDZyZW07XFxuICAgIHBhZGRpbmctYm90dG9tOiA2cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDpwbC0yIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnBsLTYge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC1sZWZ0IHtcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC0yeGwge1xcbiAgICBmb250LXNpemU6IDEuNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtM3hsIHtcXG4gICAgZm9udC1zaXplOiAxLjg3NXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDIuMjVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOnRleHQtNnhsIHtcXG4gICAgZm9udC1zaXplOiAzLjc1cmVtO1xcbiAgICBsaW5lLWhlaWdodDogMTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6dGV4dC1iYXNlIHtcXG4gICAgZm9udC1zaXplOiAxcmVtO1xcbiAgICBsaW5lLWhlaWdodDogMS41cmVtO1xcbiAgfVxcblxcbiAgLmxnXFxcXDp0ZXh0LWxnIHtcXG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuNzVyZW07XFxuICB9XFxuXFxuICAubGdcXFxcOmZvbnQtYm9sZCB7XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICB9XFxuXFxuICAubGdcXFxcOnNoYWRvdy1sZyB7XFxuICAgIC0tdHctc2hhZG93OiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDAuMSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAgIC0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yKTtcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLCB2YXIoLS10dy1yaW5nLXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctc2hhZG93KTtcXG4gIH1cXG5cXG4gIC5sZ1xcXFw6c2hhZG93LW5vbmUge1xcbiAgICAtLXR3LXNoYWRvdzogMCAwICMwMDAwO1xcbiAgICAtLXR3LXNoYWRvdy1jb2xvcmVkOiAwIDAgIzAwMDA7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdywgMCAwICMwMDAwKSwgdmFyKC0tdHctcmluZy1zaGFkb3csIDAgMCAjMDAwMCksIHZhcigtLXR3LXNoYWRvdyk7XFxuICB9XFxuXFxuICAubGdcXFxcOmRhcmtcXFxcOmJnLWRhcmstOTAwOmlzKC5kYXJrICopIHtcXG4gICAgLS10dy1iZy1vcGFjaXR5OiAxO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkgMjIgMjQgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7XFxuICB9XFxuXFxuICAubGdcXFxcOmRhcmtcXFxcOmJnLXRyYW5zcGFyZW50OmlzKC5kYXJrICopIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB9XFxufVxcbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcXG5cXG4gIC54bFxcXFw6bXgtYXV0byB7XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICB9XFxuXFxuICAueGxcXFxcOmZsZXgge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgfVxcblxcbiAgLnhsXFxcXDpoaWRkZW4ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcblxcbiAgLnhsXFxcXDp3LTRcXFxcLzEyIHtcXG4gICAgd2lkdGg6IDMzLjMzMzMzMyU7XFxuICB9XFxuXFxuICAueGxcXFxcOm1heC13LWZ1bGwge1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICB9XFxuXFxuICAueGxcXFxcOmdhcC0xMCB7XFxuICAgIGdhcDogMi41cmVtO1xcbiAgfVxcblxcbiAgLnhsXFxcXDpnYXAteC04IHtcXG4gICAgLW1vei1jb2x1bW4tZ2FwOiAycmVtO1xcbiAgICAgICAgIGNvbHVtbi1nYXA6IDJyZW07XFxuICB9XFxuXFxuICAueGxcXFxcOnAtOCB7XFxuICAgIHBhZGRpbmc6IDJyZW07XFxuICB9XFxuXFxuICAueGxcXFxcOnBsLTAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDBweDtcXG4gIH1cXG5cXG4gIC54bFxcXFw6cGwtNjAge1xcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cmVtO1xcbiAgfVxcblxcbiAgLnhsXFxcXDp0ZXh0LWNlbnRlciB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG59XFxuQG1lZGlhIChtaW4td2lkdGg6IDE1MzZweCkge1xcblxcbiAgLlxcXFwzMnhsXFxcXDpteC0yMCB7XFxuICAgIG1hcmdpbi1sZWZ0OiA1cmVtO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVyZW07XFxuICB9XFxuXFxuICAuXFxcXDMyeGxcXFxcOmdyaWQtY29scy00IHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xcbiAgfVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vc3JjL2Nzcy90YWlsd2luZC9fYmFzZS5jc3NcIixcIndlYnBhY2s6Ly9zcmMvY3NzL3RhaWx3aW5kL19jb21wb25lbnRzLmNzc1wiLFwid2VicGFjazovL3NyYy9jc3MvX2NoZWNrYm94LXJhZGlvLXN3aXRjaC5jc3NcIixcIndlYnBhY2s6Ly9zcmMvY3NzL3RhaWx3aW5kL191dGlsaXRpZXMuY3NzXCIsXCJ3ZWJwYWNrOi8vc3JjL2Nzcy9fc2Nyb2xsYmFycy5jc3NcIixcIndlYnBhY2s6Ly9ub2RlX21vZHVsZXMvaW50cm8uanMvJTNDaW5wdXQlMjBjc3MlMjAyJTNFXCIsXCJ3ZWJwYWNrOi8vc3JjL2Nzcy9faGVscGVyLmNzc1wiLFwid2VicGFjazovL3NyYy9jc3MvX2NhbGVuZGFyLmNzc1wiLFwid2VicGFjazovL3NyYy9jc3MvX3NlbGVjdC1kcm9wZG93bi5jc3NcIixcIndlYnBhY2s6Ly9zcmMvY3NzL190aGVtZS5jc3NcIixcIndlYnBhY2s6Ly9zcmMvY3NzL21haW4uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQUEsd0JBQWM7RUFBZCx3QkFBYztFQUFkLG1CQUFjO0VBQWQsbUJBQWM7RUFBZCxjQUFjO0VBQWQsY0FBYztFQUFkLGNBQWM7RUFBZCxlQUFjO0VBQWQsZUFBYztFQUFkLGFBQWM7RUFBZCxhQUFjO0VBQWQsa0JBQWM7RUFBZCxzQ0FBYztFQUFkLDhCQUFjO0VBQWQsNkJBQWM7RUFBZCw0QkFBYztFQUFkLGVBQWM7RUFBZCxvQkFBYztFQUFkLHNCQUFjO0VBQWQsdUJBQWM7RUFBZCx3QkFBYztFQUFkLGtCQUFjO0VBQWQsMkJBQWM7RUFBZCw0QkFBYztFQUFkLHNDQUFjO0VBQWQsa0NBQWM7RUFBZCwyQkFBYztFQUFkLHNCQUFjO0VBQWQsOEJBQWM7RUFBZCxZQUFjO0VBQWQsa0JBQWM7RUFBZCxnQkFBYztFQUFkLGlCQUFjO0VBQWQsa0JBQWM7RUFBZCxjQUFjO0VBQWQsZ0JBQWM7RUFBZCxhQUFjO0VBQWQsbUJBQWM7RUFBZCxxQkFBYztFQUFkLDJCQUFjO0VBQWQseUJBQWM7RUFBZCwwQkFBYztFQUFkLDJCQUFjO0VBQWQsdUJBQWM7RUFBZCx3QkFBYztFQUFkLHlCQUFjO0VBQWQsc0JBQWM7RUFBZCxvQkFBYztFQUFkLHNCQUFjO0VBQWQscUJBQWM7RUFBZDtBQUFjOztBQUFkO0VBQUEsd0JBQWM7RUFBZCx3QkFBYztFQUFkLG1CQUFjO0VBQWQsbUJBQWM7RUFBZCxjQUFjO0VBQWQsY0FBYztFQUFkLGNBQWM7RUFBZCxlQUFjO0VBQWQsZUFBYztFQUFkLGFBQWM7RUFBZCxhQUFjO0VBQWQsa0JBQWM7RUFBZCxzQ0FBYztFQUFkLDhCQUFjO0VBQWQsNkJBQWM7RUFBZCw0QkFBYztFQUFkLGVBQWM7RUFBZCxvQkFBYztFQUFkLHNCQUFjO0VBQWQsdUJBQWM7RUFBZCx3QkFBYztFQUFkLGtCQUFjO0VBQWQsMkJBQWM7RUFBZCw0QkFBYztFQUFkLHNDQUFjO0VBQWQsa0NBQWM7RUFBZCwyQkFBYztFQUFkLHNCQUFjO0VBQWQsOEJBQWM7RUFBZCxZQUFjO0VBQWQsa0JBQWM7RUFBZCxnQkFBYztFQUFkLGlCQUFjO0VBQWQsa0JBQWM7RUFBZCxjQUFjO0VBQWQsZ0JBQWM7RUFBZCxhQUFjO0VBQWQsbUJBQWM7RUFBZCxxQkFBYztFQUFkLDJCQUFjO0VBQWQseUJBQWM7RUFBZCwwQkFBYztFQUFkLDJCQUFjO0VBQWQsdUJBQWM7RUFBZCx3QkFBYztFQUFkLHlCQUFjO0VBQWQsc0JBQWM7RUFBZCxvQkFBYztFQUFkLHNCQUFjO0VBQWQscUJBQWM7RUFBZDtBQUFjLENBQWQ7O0NBQWMsQ0FBZDs7O0NBQWM7O0FBQWQ7OztFQUFBLHNCQUFjLEVBQWQsTUFBYztFQUFkLGVBQWMsRUFBZCxNQUFjO0VBQWQsbUJBQWMsRUFBZCxNQUFjO0VBQWQscUJBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0VBQUEsZ0JBQWM7QUFBQTs7QUFBZDs7Ozs7Ozs7Q0FBYzs7QUFBZDs7RUFBQSxnQkFBYyxFQUFkLE1BQWM7RUFBZCw4QkFBYyxFQUFkLE1BQWM7RUFBZCxnQkFBYyxFQUFkLE1BQWM7RUFBZCxjQUFjO0tBQWQsV0FBYyxFQUFkLE1BQWM7RUFBZCwrSEFBYyxFQUFkLE1BQWM7RUFBZCw2QkFBYyxFQUFkLE1BQWM7RUFBZCwrQkFBYyxFQUFkLE1BQWM7RUFBZCx3Q0FBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSxTQUFjLEVBQWQsTUFBYztFQUFkLG9CQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOzs7O0NBQWM7O0FBQWQ7RUFBQSxTQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0VBQWQscUJBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSx5Q0FBYztVQUFkLGlDQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7Ozs7OztFQUFBLGtCQUFjO0VBQWQsb0JBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLGNBQWM7RUFBZCx3QkFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOztFQUFBLG1CQUFjO0FBQUE7O0FBQWQ7Ozs7O0NBQWM7O0FBQWQ7Ozs7RUFBQSwrR0FBYyxFQUFkLE1BQWM7RUFBZCw2QkFBYyxFQUFkLE1BQWM7RUFBZCwrQkFBYyxFQUFkLE1BQWM7RUFBZCxjQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsY0FBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOztFQUFBLGNBQWM7RUFBZCxjQUFjO0VBQWQsa0JBQWM7RUFBZCx3QkFBYztBQUFBOztBQUFkO0VBQUEsZUFBYztBQUFBOztBQUFkO0VBQUEsV0FBYztBQUFBOztBQUFkOzs7O0NBQWM7O0FBQWQ7RUFBQSxjQUFjLEVBQWQsTUFBYztFQUFkLHFCQUFjLEVBQWQsTUFBYztFQUFkLHlCQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOzs7O0NBQWM7O0FBQWQ7Ozs7O0VBQUEsb0JBQWMsRUFBZCxNQUFjO0VBQWQsOEJBQWMsRUFBZCxNQUFjO0VBQWQsZ0NBQWMsRUFBZCxNQUFjO0VBQWQsZUFBYyxFQUFkLE1BQWM7RUFBZCxvQkFBYyxFQUFkLE1BQWM7RUFBZCxvQkFBYyxFQUFkLE1BQWM7RUFBZCx1QkFBYyxFQUFkLE1BQWM7RUFBZCxjQUFjLEVBQWQsTUFBYztFQUFkLFNBQWMsRUFBZCxNQUFjO0VBQWQsVUFBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7RUFBQSxvQkFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDs7OztFQUFBLDBCQUFjLEVBQWQsTUFBYztFQUFkLDZCQUFjLEVBQWQsTUFBYztFQUFkLHNCQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsYUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsZ0JBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLHdCQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0VBQUEsWUFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLDZCQUFjLEVBQWQsTUFBYztFQUFkLG9CQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsd0JBQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSwwQkFBYyxFQUFkLE1BQWM7RUFBZCxhQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsa0JBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7Ozs7Ozs7Ozs7OztFQUFBLFNBQWM7QUFBQTs7QUFBZDtFQUFBLFNBQWM7RUFBZCxVQUFjO0FBQUE7O0FBQWQ7RUFBQSxVQUFjO0FBQUE7O0FBQWQ7OztFQUFBLGdCQUFjO0VBQWQsU0FBYztFQUFkLFVBQWM7QUFBQTs7QUFBZDs7Q0FBYztBQUFkO0VBQUEsVUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsZ0JBQWM7QUFBQTs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSxVQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0VBQUEsVUFBYyxFQUFkLE1BQWM7RUFBZCxjQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOztFQUFBLGVBQWM7QUFBQTs7QUFBZDs7Q0FBYztBQUFkO0VBQUEsZUFBYztBQUFBOztBQUFkOzs7O0NBQWM7O0FBQWQ7Ozs7Ozs7O0VBQUEsY0FBYyxFQUFkLE1BQWM7RUFBZCxzQkFBYyxFQUFkLE1BQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7RUFBQSxlQUFjO0VBQWQsWUFBYztBQUFBOztBQUFkLHdFQUFjO0FBQWQ7RUFBQSxhQUFjO0FBQUE7O0FBQWQ7RUFBQSx3QkFBYztLQUFkLHFCQUFjO1VBQWQsZ0JBQWM7RUFBZCxzQkFBYztFQUFkLHFCQUFjO0VBQWQsaUJBQWM7RUFBZCxrQkFBYztFQUFkLG1CQUFjO0VBQWQsc0JBQWM7RUFBZCxzQkFBYztFQUFkLHFCQUFjO0VBQWQsZUFBYztFQUFkLG1CQUFjO0VBQWQsc0JBQWM7QUFBQTs7QUFBZDtFQUFBLDhCQUFjO0VBQWQsbUJBQWM7RUFBZCw0Q0FBYztFQUFkLDJCQUFjO0VBQWQsNEJBQWM7RUFBZCx3QkFBYztFQUFkLDJHQUFjO0VBQWQseUdBQWM7RUFBZCxpRkFBYztFQUFkO0FBQWM7O0FBQWQ7RUFBQSxjQUFjO0VBQWQ7QUFBYzs7QUFBZDtFQUFBLGNBQWM7RUFBZDtBQUFjOztBQUFkO0VBQUE7QUFBYzs7QUFBZDtFQUFBLGlCQUFjO0VBQWQ7QUFBYzs7QUFBZDtFQUFBO0FBQWM7O0FBQWQ7RUFBQSxjQUFjO0VBQWQ7QUFBYzs7QUFBZDtFQUFBLG1QQUFjO0VBQWQsd0NBQWM7RUFBZCw0QkFBYztFQUFkLDRCQUFjO0VBQWQscUJBQWM7RUFBZCxpQ0FBYztLQUFkLG1CQUFjO1VBQWQ7QUFBYzs7QUFBZDtFQUFBLHlCQUFjO0VBQWQsNEJBQWM7RUFBZCx3QkFBYztFQUFkLHdCQUFjO0VBQWQsc0JBQWM7RUFBZCxpQ0FBYztLQUFkLG1CQUFjO1VBQWQ7QUFBYzs7QUFBZDtFQUFBLHdCQUFjO0tBQWQscUJBQWM7VUFBZCxnQkFBYztFQUFkLFVBQWM7RUFBZCxpQ0FBYztLQUFkLG1CQUFjO1VBQWQseUJBQWM7RUFBZCxxQkFBYztFQUFkLHNCQUFjO0VBQWQsNkJBQWM7RUFBZCx5QkFBYztLQUFkLHNCQUFjO1VBQWQsaUJBQWM7RUFBZCxjQUFjO0VBQWQsWUFBYztFQUFkLFdBQWM7RUFBZCxjQUFjO0VBQWQsc0JBQWM7RUFBZCxxQkFBYztFQUFkLGlCQUFjO0VBQWQ7QUFBYzs7QUFBZDtFQUFBO0FBQWM7O0FBQWQ7RUFBQTtBQUFjOztBQUFkO0VBQUEsOEJBQWM7RUFBZCxtQkFBYztFQUFkLDRDQUFjO0VBQWQsMkJBQWM7RUFBZCw0QkFBYztFQUFkLHdCQUFjO0VBQWQsMkdBQWM7RUFBZCx5R0FBYztFQUFkO0FBQWM7O0FBQWQ7RUFBQSx5QkFBYztFQUFkLDhCQUFjO0VBQWQsMEJBQWM7RUFBZCwyQkFBYztFQUFkO0FBQWM7O0FBQWQ7RUFBQSxzUUFBYztBQUFBOztBQUFkOztFQUFBO0lBQUEsd0JBQWM7T0FBZCxxQkFBYztZQUFkO0VBQWM7QUFBQTs7QUFBZDtFQUFBLG9LQUFjO0FBQUE7O0FBQWQ7O0VBQUE7SUFBQSx3QkFBYztPQUFkLHFCQUFjO1lBQWQ7RUFBYztBQUFBOztBQUFkO0VBQUEseUJBQWM7RUFBZDtBQUFjOztBQUFkO0VBQUEsdU9BQWM7RUFBZCx5QkFBYztFQUFkLDhCQUFjO0VBQWQsMEJBQWM7RUFBZCwyQkFBYztFQUFkLDRCQUFjO0FBQUE7O0FBQWQ7O0VBQUE7SUFBQSx3QkFBYztPQUFkLHFCQUFjO1lBQWQ7RUFBYztBQUFBOztBQUFkO0VBQUEseUJBQWM7RUFBZDtBQUFjOztBQUFkO0VBQUEsaUJBQWM7RUFBZCxxQkFBYztFQUFkLGVBQWM7RUFBZCxnQkFBYztFQUFkLFVBQWM7RUFBZCxnQkFBYztFQUFkO0FBQWM7O0FBQWQ7RUFBQSw2QkFBYztFQUFkO0FBQWM7RUFBZDtFQUFBLGVBQWM7RUFBZCxnQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxrQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxrQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxrQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxpQkFBYztFQUFkLGtCQUFjO0VBQWQ7QUFBYztFQUFkO0lBQUEscUJBQWM7SUFBZCxzREFBYztFQUFBOztFQUFkO0lBQUEsVUFBYztJQUFkLFdBQWM7RUFBQTs7RUFBZDtFQUFBLGtCQUFjO0VBQWQ7QUFBYzs7RUFBZDtFQUFBLHNCQUFjO0VBQWQsa0JBQWM7RUFBZDtBQUFjOztFQUFkO0VBQUEsa0JBQWM7RUFBZDtBQUFjO0VBQWQ7RUFBQTtBQUFjOztFQUFkO0VBQUE7QUFBYzs7RUFBZDs7RUFBQTtJQUFBO0VBQWM7QUFBQTs7RUFBZDtFQUFBLGtCQUFjO0VBQWQsY0FBYztFQUFkLGVBQWM7RUFBZCx3QkFBYztFQUFkLHNCQUFjO0VBQWQ7QUFBYzs7RUFBZDtFQUFBLHNCQUFjO0VBQWQ7QUFBYzs7RUFBZDs7RUFBQTtJQUFBLGtCQUFjO0lBQWQ7RUFBYztBQUFBOztFQUFkO0VBQUE7QUFBYzs7RUFBZDs7RUFBQTtJQUFBLHNCQUFjO0lBQWQscUJBQWM7SUFBZCx1QkFBYztJQUFkLHdCQUFjO0lBQWQsc0JBQWM7SUFBZDtFQUFjOztFQUFkO0lBQUEsc0JBQWM7SUFBZDtFQUFjO0FBQUE7O0VBQWQ7RUFBQTtBQUFjOztFQUFkOztFQUFBO0lBQUEsZ0JBQWM7SUFBZDtFQUFjO0FBQUE7O0VBQWQ7SUFBQSxlQUFjO0VBQUE7O0VBQWQ7SUFBQSxrQkFBYztJQUFkLGtCQUFjOztJQUFkLFlBQWM7O0lBQWQsaUJBQWM7RUFBQTs7RUFBZDtJQUFBLFlBQWM7RUFBQTtFQUFkO0lBQUEsWUFBYztFQUFBOztFQUFkO0VBQUEsYUFBYztFQUFkLDhCQUFjO0VBQWQsd0JBQWM7RUFBZCxzQkFBYztFQUFkLDREQUFjO0VBQWQsb0JBQWM7RUFBZCx1QkFBYztFQUFkLGtCQUFjO0VBQWQsbUJBQWM7RUFBZCxpQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxzQkFBYztFQUFkLHlEQUFjO0VBQWQsb0JBQWM7RUFBZDtBQUFjOztFQUFkOztFQUFBO0lBQUEsbUJBQWM7SUFBZCx3QkFBYztJQUFkLGdCQUFjO0lBQWQsZ0JBQWM7SUFBZDtFQUFjO0FBQUE7O0VBQWQ7RUFBQTtBQUFjOztFQUFkOztFQUFBOztJQUFBO0VBQWM7QUFBQTs7RUFBZDtFQUFBO0FBQWM7O0VBQWQ7O0VBQUE7SUFBQSxrQkFBYztJQUFkO0VBQWM7QUFBQTs7RUFBZDtJQUFBLHlCQUFjO0lBQWQsc0JBQWM7SUFBZCxnQkFBYztJQUFkLGdCQUFjO0VBQUE7O0VBQWQ7O0VBQUE7SUFBQTtFQUFjO0FBQUE7O0VBQWQ7RUFBQSxtQkFBYztFQUFkLG9CQUFjO0VBQWQsZ0JBQWM7RUFBZCxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7O0VBQUEsaUNBQWM7RUFBZDtBQUFjOztFQUFkO0VBQUE7QUFBYzs7RUFBZDs7OztFQUFBLG9CQUFjO0VBQWQ7QUFBYzs7RUFBZDtFQUFBLCtCQUFjO0VBQWQ7QUFBYzs7RUFBZDtFQUFBLGtCQUFjO0VBQWQseURBQWM7RUFBZCxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSw2QkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSw2QkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSw2QkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxrQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSwrQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSxvQkFBYztFQUFkO0FBQWM7O0VBQWQ7RUFBQSwrQkFBYztFQUFkO0FBQWM7QUNBZDtFQUFBO0FBQW9CO0FBQXBCOztFQUFBO0lBQUE7RUFBb0I7QUFBQTtBQUFwQjs7RUFBQTtJQUFBO0VBQW9CO0FBQUE7QUFBcEI7O0VBQUE7SUFBQTtFQUFvQjtBQUFBO0FBQXBCOztFQUFBO0lBQUE7RUFBb0I7QUFBQTtBQUFwQjs7RUFBQTtJQUFBO0VBQW9CO0FBQUE7QUFBcEI7RUFBQSwyQkFBb0I7RUFBcEIsZUFBb0I7QUFBQTtBQUFwQjtFQUFBLGtCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLDJCQUFvQjtFQUFwQixpQkFBb0I7RUFBcEIsZ0JBQW9CO0VBQXBCLGlCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLDRCQUFvQjtFQUFwQiwwQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSwyQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQSx3QkFBb0I7RUFBcEIsa0JBQW9CO0VBQXBCLHFCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBLHFCQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIscUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsZ0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQSwrQkFBb0I7RUFBcEIsZ0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsZ0NBQW9CO0VBQXBCLHFCQUFvQjtFQUFwQixlQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGdCQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsNkJBQW9CO0VBQXBCLGtDQUFvQjtFQUFwQix3REFBb0I7RUFBcEIsb0NBQW9CO0VBQXBCLGlCQUFvQjtFQUFwQixvQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsK0JBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixpQkFBb0I7RUFBcEIsYUFBb0I7RUFBcEIsMEJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsZ0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsK0JBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixnQkFBb0I7RUFBcEIsZUFBb0I7RUFBcEIsa0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsZ0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsK0JBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixpQkFBb0I7RUFBcEIsaUJBQW9CO0VBQXBCLG9CQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGdCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLCtCQUFvQjtFQUFwQixnQkFBb0I7RUFBcEIsaUJBQW9CO0VBQXBCLG9CQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGdCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGVBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsY0FBb0I7RUFBcEIsZUFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxlQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGdCQUFvQjtFQUFwQixvQkFBb0I7RUFBcEIsMEJBQW9CO0VBQXBCLDRHQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsd0JBQW9CO0VBQXBCLHFCQUFvQjtFQUFwQiwyQkFBb0I7RUFBcEIsd0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsMkJBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsY0FBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSxjQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBLCtCQUFvQjtFQUFwQix3Q0FBb0I7RUFBcEIsZ0JBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsc0JBQW9CO0VBQXBCLHVCQUFvQjtFQUFwQiwwQkFBb0I7RUFBcEIsdUJBQW9CO0VBQXBCLHdCQUFvQjtFQUFwQiwrQkFBb0I7RUFBcEIsMkJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsNkJBQW9CO0VBQXBCLGVBQW9CO0VBQXBCLGdCQUFvQjtFQUFwQixVQUFvQjtFQUFwQixvQkFBb0I7RUFBcEIsY0FBb0I7RUFBcEIsa0JBQW9CO0VBQXBCLG9CQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQSxXQUFvQjtFQUFwQixrQkFBb0I7RUFBcEIsZUFBb0I7RUFBcEIsa0JBQW9CO0VBQXBCLGtCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLHdCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLCtCQUFvQjtFQUFwQixnQkFBb0I7RUFBcEIsc0JBQW9CO0VBQXBCLCtCQUFvQjtFQUFwQiwyQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSx3QkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEscUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBLGFBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsK0JBQW9CO0VBQXBCLGtCQUFvQjtFQUFwQixzQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQSx3QkFBb0I7RUFBcEIsNEJBQW9CO0VBQXBCLHdCQUFvQjtFQUFwQix5QkFBb0I7RUFBcEIsd0JBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQiwyQkFBb0I7RUFBcEIsc0JBQW9CO0VBQXBCLDBCQUFvQjtFQUFwQixpQ0FBb0I7RUFBcEIsNEJBQW9CO0VBQXBCLHVCQUFvQjtFQUFwQixnQ0FBb0I7RUFBcEIsd0JBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQiwwQkFBb0I7RUFBcEIsOEJBQW9CO0VBQXBCLDhCQUFvQjtFQUFwQiwrQkFBb0I7RUFBcEIsZ0NBQW9CO0VBQXBCLCtCQUFvQjtFQUFwQiw2QkFBb0I7RUFBcEIsNEJBQW9CO0VBQXBCLG1DQUFvQjtFQUFwQixrQ0FBb0I7RUFBcEIsNkJBQW9CO0VBQXBCLGlDQUFvQjtFQUFwQix3Q0FBb0I7RUFBcEIsbUNBQW9CO0VBQXBCLDJCQUFvQjtFQUFwQiwwQ0FBb0I7RUFBcEIsNEJBQW9CO0VBQXBCLG1DQUFvQjtFQUFwQiwwQ0FBb0I7RUFBcEIscUNBQW9CO0VBQXBCLHFDQUFvQjtFQUFwQixlQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBLGFBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsaUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBLGtCQUFvQjtFQUFwQjtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsa0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsa0JBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUEsaUJBQW9CO0VBQXBCO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUE7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsd0JBQW9CO0VBQXBCLCtCQUFvQjtFQUFwQiwyQkFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsZUFBb0I7RUFBcEI7QUFBb0I7QUFBcEI7RUFBQTtBQUFvQjtBQUFwQjtFQUFBO0FBQW9CO0FBQXBCO0VBQUEsd0JBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQix3QkFBb0I7RUFBcEIseUJBQW9CO0VBQXBCLHdCQUFvQjtFQUFwQiw0QkFBb0I7RUFBcEIsMkJBQW9CO0VBQXBCLHNCQUFvQjtFQUFwQiwwQkFBb0I7RUFBcEIsaUNBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQix1QkFBb0I7RUFBcEIsZ0NBQW9CO0VBQXBCLHdCQUFvQjtFQUFwQiw0QkFBb0I7RUFBcEIsMEJBQW9CO0VBQXBCLDhCQUFvQjtFQUFwQiw4QkFBb0I7RUFBcEIsK0JBQW9CO0VBQXBCLGdDQUFvQjtFQUFwQiwrQkFBb0I7RUFBcEIsNkJBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQixtQ0FBb0I7RUFBcEIsa0NBQW9CO0VBQXBCLDZCQUFvQjtFQUFwQixpQ0FBb0I7RUFBcEIsd0NBQW9CO0VBQXBCLG1DQUFvQjtFQUFwQiwyQkFBb0I7RUFBcEIsMENBQW9CO0VBQXBCLDRCQUFvQjtFQUFwQixtQ0FBb0I7RUFBcEIsMENBQW9CO0VBQXBCLHFDQUFvQjtFQUFwQjtBQUFvQjtBQ0loQjs7O0VBQUEsa0JBQXVEO0VBQXZELG9CQUF1RDtFQUF2RCxlQUF1RDtFQUF2RDtBQUF1RDtBQU12RDs7O0VBQUEsa0JBQXFDO0VBQXJDLFNBQXFDO0VBQXJDLFdBQXFDO0VBQXJDO0FBQXFDO0FBTXJDOzs7RUFBQSxpQkFBOEU7RUFBOUUsc0JBQThFO0VBQTlFLHlEQUE4RTtFQUE5RSx1R0FBOEU7RUFBOUUsK0ZBQThFO0VBQTlFLDhIQUE4RTtFQUE5RSx3REFBOEU7RUFBOUU7QUFBOEU7QUFBOUU7OztFQUFBLGtCQUE4RTtFQUE5RTtBQUE4RTtBQU05RTs7O0VBQUEsMkdBQTBCO0VBQTFCLHlHQUEwQjtFQUExQiw0RkFBMEI7RUFBMUIsb0JBQTBCO0VBQTFCO0FBQTBCO0FBSzFCOztFQUFBLGNBQW9CO0VBQXBCLGVBQW9CO0VBQXBCO0FBQW9CO0FBSXBCO0VBQUE7QUFBYztBQUlkO0VBQUEsYUFBNEQ7RUFBNUQsY0FBNEQ7RUFBNUQsV0FBNEQ7RUFBNUQsY0FBNEQ7RUFBNUQsbUJBQTREO0VBQTVELGtCQUE0RDtFQUE1RCw0REFBNEQ7RUFBNUQ7QUFBNEQ7QUFNNUQ7OztFQUFBO0FBQW1CO0FBS25COztFQUFBLGlCQUFzQztFQUF0QywyQkFBc0M7RUFBdEM7QUFBc0M7QUFHeEM7SUFDRSxxVkFBcVY7RUFDdlY7QUFFQTtJQUNFLGlPQUFpTztFQUNuTztBQUtFOzs7RUFBQSxzQkFBa0M7RUFBbEMsMERBQWtDO0VBQWxDLGtCQUFrQztFQUFsQztBQUFrQztBQUFsQzs7O0VBQUEsa0JBQWtDO0VBQWxDO0FBQWtDO0FBQWxDOzs7RUFBQSxrQkFBa0M7RUFBbEM7QUFBa0M7QUFHcEM7SUFDRSxXQUFXO0lBQ1gsY0FBb0Q7SUFBcEQsZUFBb0Q7SUFBcEQsY0FBb0Q7SUFBcEQsaUJBQW9EO0lBQXBELHNCQUFvRDtJQUFwRCx5REFBb0Q7SUFBcEQsa0JBQW9EO0lBQXBELDREQUFvRDtFQUN0RDtBQUVBO0lBQ0Usa0NBQWtDO0lBQ2xDLHNCQUFzQjtJQUF0QiwwREFBc0I7RUFDeEI7QUN2RUY7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxTQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxnQkFBbUI7RUFBbkIsb0JBQW1CO0VBQW5CLDRCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdCQUFtQjtFQUFuQixvQkFBbUI7RUFBbkIsNEJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CLG9CQUFtQjtFQUFuQiw0QkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHdCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEscUJBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsZ0JBQW1CO0VBQW5CLGdCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5COztFQUFBO0lBQUE7RUFBbUI7QUFBQTtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7T0FBbkI7QUFBbUI7QUFBbkI7RUFBQSx3QkFBbUI7T0FBbkI7QUFBbUI7QUFBbkI7RUFBQSxxQkFBbUI7T0FBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7T0FBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQixzREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsNERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLDhEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiwrREFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx1QkFBbUI7RUFBbkIsNERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsdUJBQW1CO0VBQW5CLDhEQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVCQUFtQjtFQUFuQiw0REFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSx3QkFBbUI7RUFBbkIsMERBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsd0JBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHNCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGdCQUFtQjtFQUFuQix1QkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLCtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDRCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDhCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdDQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdDQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGdDQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDZCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDZCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLCtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDRCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSw0REFBbUI7RUFBbkIsbUVBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsNERBQW1CO0VBQW5CLGtFQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDREQUFtQjtFQUFuQixrRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSw0REFBbUI7RUFBbkIscUVBQW1CO0VBQW5CO0FBQW1CO0FBQW5CO0VBQUEsNERBQW1CO0VBQW5CLHFFQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHlEQUFtQjtFQUFuQixxRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxzRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxxRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxvRUFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsb0JBQW1CO0tBQW5CO0FBQW1CO0FBQW5CO0VBQUEsMEJBQW1CO0tBQW5CO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHFCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7QUFBbkI7RUFBQSxlQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQSxlQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLHVDQUFtQjtVQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDJCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBLDJCQUFtQjtFQUFuQjtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUE7QUFBbUI7QUFBbkI7RUFBQTtBQUFtQjtBQUFuQjtFQUFBO0FBQW1CO0FBQW5CO0VBQUEsMEVBQW1CO0VBQW5CLDhG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QWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsb0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsb0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsb0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsb0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsK0VBa0NBO0VBbENBLG1HQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLHNCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDhCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDJHQWtDQTtFQWxDQSx5R0FrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSwyR0FrQ0E7RUFsQ0EseUdBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsb0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUE7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLGtCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDREQWtDQTtFQWxDQSxrRUFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxtRUFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDJCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDJCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDJCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLDJCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLG9CQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLHNCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBLHNCQWtDQTtFQWxDQTtBQWtDQTtBQWxDQTtFQUFBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsc0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUEsa0JBa0NBO0VBbENBO0FBa0NBO0FBbENBO0VBQUE7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxrQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxvQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxvQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxvQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxvQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxzQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7RUFBQSxvQkFrQ0E7RUFsQ0E7QUFrQ0E7QUFsQ0E7O0VBQUE7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQSxvQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsaUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLG1CQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxlQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQSxlQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxtQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsa0JBa0NBO0lBbENBO0VBa0NBO0FBQUE7QUFsQ0E7O0VBQUE7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQSx1QkFrQ0E7SUFsQ0Esb0RBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLHVCQWtDQTtJQWxDQSwyREFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsK0JBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBLGlCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxnQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsbUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLG9CQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQSxpQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsbUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGtCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxpQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsbUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGtCQWtDQTtJQWxDQTtFQWtDQTtBQUFBO0FBbENBOztFQUFBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUEsaUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGlCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxvQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUEsdUJBa0NBO0lBbENBLG9EQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSx1QkFrQ0E7SUFsQ0Esc0RBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLHVCQWtDQTtJQWxDQSwyREFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUEsa0JBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBLGlCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxrQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEscUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLG9CQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxtQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsbUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGlCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQSxpQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUEsbUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGtCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxlQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxtQkFrQ0E7SUFsQ0E7RUFrQ0E7O0VBbENBO0lBQUE7RUFrQ0E7O0VBbENBO0lBQUEsK0VBa0NBO0lBbENBLG1HQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQSxzQkFrQ0E7SUFsQ0EsOEJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBLGtCQWtDQTtJQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTtBQUFBO0FBbENBOztFQUFBO0lBQUEsaUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBOztFQWxDQTtJQUFBLHFCQWtDQTtTQWxDQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTs7RUFsQ0E7SUFBQTtFQWtDQTtBQUFBO0FBbENBOztFQUFBO0lBQUEsaUJBa0NBO0lBbENBO0VBa0NBOztFQWxDQTtJQUFBO0VBa0NBO0FBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQHRhaWx3aW5kIGJhc2U7XFxuXCIsXCJAdGFpbHdpbmQgY29tcG9uZW50cztcXG5cIixcIkBsYXllciBjb21wb25lbnRzIHtcXG4gIC5jaGVja2JveCxcXG4gIC5yYWRpbyxcXG4gIC5zd2l0Y2gge1xcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlO1xcbiAgfVxcblxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10sXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXSxcXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7XFxuICAgIEBhcHBseSBhYnNvbHV0ZSBsZWZ0LTAgb3BhY2l0eS0wIC16LTE7XFxuICB9XFxuXFxuICAuY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXSArIC5jaGVjayxcXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrIHtcXG4gICAgQGFwcGx5IGJvcmRlci1ncmF5LTcwMCBib3JkZXIgdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMjAwIGRhcms6Ymctc2xhdGUtODAwO1xcbiAgfVxcblxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Zm9jdXMgKyAuY2hlY2ssXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpmb2N1cyArIC5jaGVjayxcXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpmb2N1cyArIC5jaGVjayB7XFxuICAgIEBhcHBseSByaW5nICByaW5nLWJsdWUtNzAwO1xcbiAgfVxcblxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2ssXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXSArIC5jaGVjayB7XFxuICAgIEBhcHBseSBibG9jayB3LTUgaC01O1xcbiAgfVxcblxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10gKyAuY2hlY2sge1xcbiAgICBAYXBwbHkgcm91bmRlZDtcXG4gIH1cXG5cXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXSArIC5jaGVjayB7XFxuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmstMCB3LTEyIGgtNiBwLTAuNSBiZy1ncmF5LTIwMDtcXG4gIH1cXG5cXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrOmJlZm9yZSB7XFxuICAgIEBhcHBseSByb3VuZGVkLWZ1bGw7XFxuICB9XFxuXFxuICAuY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLmNoZWNrLFxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAgIEBhcHBseSBiZy1uby1yZXBlYXQgYmctY2VudGVyIGJvcmRlci00O1xcbiAgfVxcblxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxIDEnJTNFJTNDcGF0aCBzdHlsZT0nZmlsbDolMjNmZmYnIGQ9J00gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6JyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRVxcXCIpO1xcbiAgfVxcblxcbiAgLnJhZGlvIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCArIC5jaGVjayB7XFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmZicgZD0nTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWicgLyUzRSUzQy9zdmclM0VcXFwiKTtcXG4gIH1cXG5cXG4gIC5zd2l0Y2ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkICsgLmNoZWNrLFxcbiAgLmNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIC5jaGVjayxcXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQgKyAuY2hlY2sge1xcbiAgICBAYXBwbHkgYmctYmx1ZS02MDAgYm9yZGVyLWJsdWUtNjAwO1xcbiAgfVxcblxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddICsgLmNoZWNrOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICBAYXBwbHkgYmxvY2sgdy01IGgtNSBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktNzAwO1xcbiAgfVxcblxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2s6YmVmb3JlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMTAlLCAwLCAwKTtcXG4gICAgQGFwcGx5IGJvcmRlci1ibHVlLTYwMDtcXG4gIH1cXG59XFxuXCIsXCJAdGFpbHdpbmQgdXRpbGl0aWVzO1xcblwiLFwiQGxheWVyIGJhc2Uge1xcbiAgaHRtbCB7XFxuICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcXG4gICAgc2Nyb2xsYmFyLWNvbG9yOiByZ2IoMTU2LCAxNjMsIDE3NSkgcmdiKDI0OSwgMjUwLCAyNTEpO1xcbiAgfVxcblxcbiAgYm9keTo6LXdlYmtpdC1zY3JvbGxiYXIge1xcbiAgICB3aWR0aDogOHB4O1xcbiAgICBoZWlnaHQ6IDhweDtcXG4gIH1cXG5cXG4gIGJvZHk6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcXG4gICAgQGFwcGx5IGJnLWdyYXktNTA7XFxuICB9XFxuXFxuICBib2R5Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAgIEBhcHBseSBiZy1ncmF5LTQwMCByb3VuZGVkO1xcbiAgfVxcblxcbiAgYm9keTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xcbiAgICBAYXBwbHkgYmctZ3JheS01MDA7XFxuICB9XFxufVxcblxcbkBsYXllciB1dGlsaXRpZXMge1xcbiAgLmRhcmstc2Nyb2xsYmFycy1jb21wYXQge1xcbiAgICBzY3JvbGxiYXItY29sb3I6IHJnYig3MSwgODUsIDEwNSkgcmdiKDMwLCA0MSwgNTkpO1xcbiAgfVxcblxcbiAgLmRhcmstc2Nyb2xsYmFyczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgICBAYXBwbHkgYmctc2xhdGUtODAwO1xcbiAgfVxcblxcbiAgLmRhcmstc2Nyb2xsYmFyczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgICBAYXBwbHkgYmctc2xhdGUtNjAwO1xcbiAgfVxcblxcbiAgLmRhcmstc2Nyb2xsYmFyczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xcbiAgICBAYXBwbHkgYmctc2xhdGUtNTAwO1xcbiAgfVxcbn1cXG5cIixcIi5pbnRyb2pzLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpjb250ZW50LWJveDt6LWluZGV4Ojk5OTk5OTtvcGFjaXR5OjA7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fS5pbnRyb2pzLXNob3dFbGVtZW50e3otaW5kZXg6OTk5OTk5OSFpbXBvcnRhbnR9dHIuaW50cm9qcy1zaG93RWxlbWVudD50ZHt6LWluZGV4Ojk5OTk5OTkhaW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfXRyLmludHJvanMtc2hvd0VsZW1lbnQ+dGh7ei1pbmRleDo5OTk5OTk5IWltcG9ydGFudDtwb3NpdGlvbjpyZWxhdGl2ZX0uaW50cm9qcy1kaXNhYmxlSW50ZXJhY3Rpb257ei1pbmRleDo5OTk5OTk5OSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO29wYWNpdHk6MH0uaW50cm9qcy1yZWxhdGl2ZVBvc2l0aW9ue3Bvc2l0aW9uOnJlbGF0aXZlfS5pbnRyb2pzLWhlbHBlckxheWVye2JveC1zaXppbmc6Y29udGVudC1ib3g7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5OTk4O2JvcmRlci1yYWRpdXM6NHB4O3RyYW5zaXRpb246YWxsIC4zcyBlYXNlLW91dH0uaW50cm9qcy1oZWxwZXJMYXllciAqe2JveC1zaXppbmc6Y29udGVudC1ib3h9LmludHJvanMtaGVscGVyTGF5ZXIgOmJlZm9yZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5pbnRyb2pzLWhlbHBlckxheWVyIDphZnRlcntib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllcntmb250LWZhbWlseTpcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLEludGVyLHVpLXNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6MTAwMDAwMDAwO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2Utb3V0fS5pbnRyb2pzLXRvb2x0aXBSZWZlcmVuY2VMYXllciAqe2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmfS5pbnRyb2pzLWhlbHBlck51bWJlckxheWVye2ZvbnQtZmFtaWx5OlxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsSW50ZXIsdWktc2Fucy1zZXJpZixcXFwiQXBwbGUgQ29sb3IgRW1vamlcXFwiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiM5ZTllOWU7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MTBweDtwYWRkaW5nLWJvdHRvbToxMHB4fS5pbnRyb2pzLWFycm93e2JvcmRlcjo1cHggc29saWQgdHJhbnNwYXJlbnQ7Y29udGVudDpcXFwiXFxcIjtwb3NpdGlvbjphYnNvbHV0ZX0uaW50cm9qcy1hcnJvdy50b3B7dG9wOi0xMHB4O2xlZnQ6MTBweDtib3JkZXItYm90dG9tLWNvbG9yOiNmZmZ9LmludHJvanMtYXJyb3cudG9wLXJpZ2h0e3RvcDotMTBweDtyaWdodDoxMHB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy50b3AtbWlkZGxle3RvcDotMTBweDtsZWZ0OjUwJTttYXJnaW4tbGVmdDotNXB4O2JvcmRlci1ib3R0b20tY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5yaWdodHtyaWdodDotMTBweDt0b3A6MTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LnJpZ2h0LWJvdHRvbXtib3R0b206MTBweDtyaWdodDotMTBweDtib3JkZXItbGVmdC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmJvdHRvbXtib3R0b206LTEwcHg7bGVmdDoxMHB4O2JvcmRlci10b3AtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5ib3R0b20tcmlnaHR7Ym90dG9tOi0xMHB4O3JpZ2h0OjEwcHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmJvdHRvbS1taWRkbGV7Ym90dG9tOi0xMHB4O2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi01cHg7Ym9yZGVyLXRvcC1jb2xvcjojZmZmfS5pbnRyb2pzLWFycm93LmxlZnR7bGVmdDotMTBweDt0b3A6MTBweDtib3JkZXItcmlnaHQtY29sb3I6I2ZmZn0uaW50cm9qcy1hcnJvdy5sZWZ0LWJvdHRvbXtsZWZ0Oi0xMHB4O2JvdHRvbToxMHB4O2JvcmRlci1yaWdodC1jb2xvcjojZmZmfS5pbnRyb2pzLXRvb2x0aXB7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OnZpc2libGU7YmFja2dyb3VuZC1jb2xvcjojZmZmO21pbi13aWR0aDoyNTBweDttYXgtd2lkdGg6MzAwcHg7Ym9yZGVyLXJhZGl1czo1cHg7Ym94LXNoYWRvdzowIDNweCAzMHB4IHJnYmEoMzMsMzMsMzMsLjMpO3RyYW5zaXRpb246b3BhY2l0eSAuMXMgZWFzZS1vdXR9LmludHJvanMtdG9vbHRpcHRleHR7cGFkZGluZzoyMHB4fS5pbnRyb2pzLWRvbnRTaG93QWdhaW57cGFkZGluZy1sZWZ0OjIwcHg7cGFkZGluZy1yaWdodDoyMHB4fS5pbnRyb2pzLWRvbnRTaG93QWdhaW4gaW5wdXR7cGFkZGluZzowO21hcmdpbjowO21hcmdpbi1ib3R0b206MnB4O2Rpc3BsYXk6aW5saW5lO3dpZHRoOjEwcHg7aGVpZ2h0OjEwcHh9LmludHJvanMtZG9udFNob3dBZ2FpbiBsYWJlbHtmb250LXNpemU6MTRweDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDo0MDA7bWFyZ2luOjAgMCAwIDVweDtwYWRkaW5nOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiM2MTYxNjE7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LmludHJvanMtdG9vbHRpcC10aXRsZXtmb250LXNpemU6MThweDt3aWR0aDo5MCU7bWluLWhlaWdodDoxLjVlbTttYXJnaW46MDtwYWRkaW5nOjA7Zm9udC13ZWlnaHQ6NzAwO2xpbmUtaGVpZ2h0OjEuNX0uaW50cm9qcy10b29sdGlwLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MjBweDtwYWRkaW5nLXJpZ2h0OjIwcHg7cGFkZGluZy10b3A6MTBweDttaW4taGVpZ2h0OjEuNWVtfS5pbnRyb2pzLXRvb2x0aXBidXR0b25ze2JvcmRlci10b3A6MXB4IHNvbGlkICNlMGUwZTA7cGFkZGluZzoxMHB4O3RleHQtYWxpZ246cmlnaHQ7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnRyb2pzLXRvb2x0aXBidXR0b25zOmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7dmlzaWJpbGl0eTpoaWRkZW47ZGlzcGxheTpibG9jaztoZWlnaHQ6MDtjbGVhcjpib3RofS5pbnRyb2pzLWJ1dHRvbntib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OnZpc2libGU7cGFkZGluZzouNXJlbSAxcmVtO2JvcmRlcjoxcHggc29saWQgI2JkYmRiZDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzoxcHggMXB4IDAgI2ZmZjtmb250LXNpemU6MTRweDtjb2xvcjojNDI0MjQyO3doaXRlLXNwYWNlOm5vd3JhcDtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOjA7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O2JvcmRlci1yYWRpdXM6LjJlbTt6b29tOjE7ZGlzcGxheTppbmxpbmV9LmludHJvanMtYnV0dG9uOmhvdmVye291dGxpbmU6MDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItY29sb3I6IzllOWU5ZTtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0uaW50cm9qcy1idXR0b246Zm9jdXN7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2VlZTtib3gtc2hhZG93OjAgMCAwIC4ycmVtIHJnYmEoMTU4LDE1OCwxNTgsLjUpO2JvcmRlcjoxcHggc29saWQgIzYxNjE2MTtjb2xvcjojMjEyMTIxfS5pbnRyb2pzLWJ1dHRvbjphY3RpdmV7b3V0bGluZTowO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItY29sb3I6IzllOWU5ZTtjb2xvcjojMjEyMTIxfS5pbnRyb2pzLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntwYWRkaW5nOjA7Ym9yZGVyOjB9LmludHJvanMtc2tpcGJ1dHRvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDowO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjQ1cHg7aGVpZ2h0OjQ1cHg7bGluZS1oZWlnaHQ6NDVweDtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToyMnB4O2N1cnNvcjpwb2ludGVyO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50cm9qcy1za2lwYnV0dG9uOmZvY3VzLC5pbnRyb2pzLXNraXBidXR0b246aG92ZXJ7Y29sb3I6IzIxMjEyMTtvdXRsaW5lOjA7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmludHJvanMtcHJldmJ1dHRvbntmbG9hdDpsZWZ0fS5pbnRyb2pzLW5leHRidXR0b257ZmxvYXQ6cmlnaHR9LmludHJvanMtZGlzYWJsZWR7Y29sb3I6IzllOWU5ZTtib3JkZXItY29sb3I6I2JkYmRiZDtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHQ7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O2JhY2tncm91bmQtaW1hZ2U6bm9uZTt0ZXh0LWRlY29yYXRpb246bm9uZX0uaW50cm9qcy1kaXNhYmxlZDpmb2N1cywuaW50cm9qcy1kaXNhYmxlZDpob3Zlcntjb2xvcjojOWU5ZTllO2JvcmRlci1jb2xvcjojYmRiZGJkO2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdDtiYWNrZ3JvdW5kLWNvbG9yOiNmNGY0ZjQ7YmFja2dyb3VuZC1pbWFnZTpub25lO3RleHQtZGVjb3JhdGlvbjpub25lfS5pbnRyb2pzLWhpZGRlbntkaXNwbGF5Om5vbmV9LmludHJvanMtYnVsbGV0c3t0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMHB4O3BhZGRpbmctYm90dG9tOjEwcHh9LmludHJvanMtYnVsbGV0cyB1bHtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2NsZWFyOmJvdGg7bWFyZ2luOjAgYXV0byAwO3BhZGRpbmc6MDtkaXNwbGF5OmlubGluZS1ibG9ja30uaW50cm9qcy1idWxsZXRzIHVsIGxpe2JveC1zaXppbmc6Y29udGVudC1ib3g7bGlzdC1zdHlsZTpub25lO2Zsb2F0OmxlZnQ7bWFyZ2luOjAgMnB4fS5pbnRyb2pzLWJ1bGxldHMgdWwgbGkgYXt0cmFuc2l0aW9uOndpZHRoIC4xcyBlYXNlLWluO2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazt3aWR0aDo2cHg7aGVpZ2h0OjZweDtiYWNrZ3JvdW5kOiNjY2M7Ym9yZGVyLXJhZGl1czoxMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS5pbnRyb2pzLWJ1bGxldHMgdWwgbGkgYTpmb2N1cywuaW50cm9qcy1idWxsZXRzIHVsIGxpIGE6aG92ZXJ7d2lkdGg6MTVweDtiYWNrZ3JvdW5kOiM5OTk7dGV4dC1kZWNvcmF0aW9uOm5vbmU7b3V0bGluZTowfS5pbnRyb2pzLWJ1bGxldHMgdWwgbGkgYS5hY3RpdmV7d2lkdGg6MTVweDtiYWNrZ3JvdW5kOiM5OTl9LmludHJvanMtcHJvZ3Jlc3N7Ym94LXNpemluZzpjb250ZW50LWJveDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OjEwcHg7bWFyZ2luOjEwcHg7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwfS5pbnRyb2pzLXByb2dyZXNzYmFye2JveC1zaXppbmc6Y29udGVudC1ib3g7ZmxvYXQ6bGVmdDt3aWR0aDowJTtoZWlnaHQ6MTAwJTtmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMHB4O3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzA4Y30uaW50cm9qc0Zsb2F0aW5nRWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MDt3aWR0aDowO2xlZnQ6NTAlO3RvcDo1MCV9LmludHJvanMtZml4ZWRUb29sdGlwe3Bvc2l0aW9uOmZpeGVkfS5pbnRyb2pzLWhpbnR7Ym94LXNpemluZzpjb250ZW50LWJveDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kOjAgMDt3aWR0aDoyMHB4O2hlaWdodDoxNXB4O2N1cnNvcjpwb2ludGVyfS5pbnRyb2pzLWhpbnQ6Zm9jdXN7Ym9yZGVyOjA7b3V0bGluZTowfS5pbnRyb2pzLWhpbnQ6aG92ZXI+LmludHJvanMtaGludC1wdWxzZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNjAsNjAsNjAsLjU3KX0uaW50cm9qcy1oaWRlaGludHtkaXNwbGF5Om5vbmV9LmludHJvanMtZml4ZWRoaW50e3Bvc2l0aW9uOmZpeGVkfUBrZXlmcmFtZXMgaW50cm9qc3B1bHNlezAle3RyYW5zZm9ybTpzY2FsZSguOTUpO2JveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDAsMCwwLC43KX03MCV7dHJhbnNmb3JtOnNjYWxlKDEpO2JveC1zaGFkb3c6MCAwIDAgMTBweCB0cmFuc3BhcmVudH0xMDAle3RyYW5zZm9ybTpzY2FsZSguOTUpO2JveC1zaGFkb3c6MCAwIDAgMCB0cmFuc3BhcmVudH19LmludHJvanMtaGludC1wdWxzZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHg7Ym9yZGVyLXJhZGl1czozMHB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgxMzYsMTM2LDEzNiwuMjQpO3otaW5kZXg6MTA7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNpdGlvbjphbGwgLjJzIGVhc2Utb3V0O2FuaW1hdGlvbjppbnRyb2pzcHVsc2UgMnMgaW5maW5pdGV9LmludHJvanMtaGludC1uby1hbmltIC5pbnRyb2pzLWhpbnQtcHVsc2V7YW5pbWF0aW9uOm5vbmV9LmludHJvanMtaGludC1kb3R7Ym94LXNpemluZzpjb250ZW50LWJveDtiYWNrZ3JvdW5kOjAgMDtib3JkZXItcmFkaXVzOjYwcHg7aGVpZ2h0OjUwcHg7d2lkdGg6NTBweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTE4cHg7bGVmdDotMThweDt6LWluZGV4OjE7b3BhY2l0eTowfVwiLFwiLmhlbHBlci1jb250YWluZXIge1xcbiAgcmlnaHQ6IDA7XFxuICB0b3A6IDcwcHg7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxuXFxuICAudGFiIHtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcbiAgfVxcblxcbiAgLnRhYjpob3ZlciB7XFxuICAgIEBhcHBseSBiZy1ncmF5LTkwMCBjdXJzb3ItcG9pbnRlcjtcXG4gIH1cXG59XFxuXFxuLmhlbHBlci1jb250YWluZXIub3BlbiB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxufVxcblxcbi5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIsXFxuLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyIHtcXG4gIHotaW5kZXg6IDEwICFpbXBvcnRhbnQ7XFxufVxcblwiLFwiLnJiYy1ldmVudCB7XFxuICBAYXBwbHkgYmctYmx1ZS02MDAgICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yYmMtc2hvdy1tb3JlIHtcXG4gIEBhcHBseSBkYXJrOnRleHQtd2hpdGUgYmctdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcXG59XFxuXFxuLnJiYy1idG4tZ3JvdXAgYnV0dG9uIHtcXG4gIEBhcHBseSBkYXJrOnRleHQtd2hpdGUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJiYy1idG4tZ3JvdXAgYnV0dG9uOmhvdmVyIHtcXG4gIEBhcHBseSB0ZXh0LXdoaXRlIGRhcms6YmctZGFyay03MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJiYy1idG4tZ3JvdXAgYnV0dG9uLnJiYy1hY3RpdmUge1xcbiAgQGFwcGx5IHRleHQtYmxhY2sgZGFyazpiZy1ibHVlLTYwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmJjLWJ0bi1ncm91cCBidXR0b246Zm9jdXMge1xcbiAgQGFwcGx5IGRhcms6YmctYmx1ZS02MDAgIWltcG9ydGFudDtcXG59XFxuXFxuLnJiYy1kYXktYmcucmJjLW9mZi1yYW5nZS1iZyB7XFxuICBAYXBwbHkgZGFyazpiZy1kYXJrLTgwMCAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLWN1cnJlbnQtdGltZS1pbmRpY2F0b3Ige1xcbiAgQGFwcGx5IGgtMSAhaW1wb3J0YW50O1xcbn1cXG4ucmJjLXRvZGF5IHtcXG4gIEBhcHBseSBkYXJrOmJnLWRhcmstNjAwLzQwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yYmMtZGF5LWJnLnJiYy1zZWxlY3RlZC1jZWxsIHtcXG4gIEBhcHBseSBkYXJrOmJnLWRhcmstNTAwICFpbXBvcnRhbnQ7XFxufVxcblwiLFwiLnJlYWN0LXNlbGVjdF9fY29udHJvbCB7XFxuICBAYXBwbHkgZGFyazpiZy1kYXJrLTgwMCBkYXJrOmJvcmRlci1kYXJrLTcwMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVhY3Qtc2VsZWN0X19zaW5nbGUtdmFsdWUge1xcbiAgQGFwcGx5IGRhcms6dGV4dC13aGl0ZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVhY3Qtc2VsZWN0X19tZW51IHtcXG4gIEBhcHBseSBkYXJrOmJvcmRlci1kYXJrLTcwMDtcXG59XFxuXFxuLnJlYWN0LXNlbGVjdF9fbWVudS1saXN0IHtcXG4gIEBhcHBseSBkYXJrOmJnLWRhcmstODAwIGRhcms6Ym9yZGVyLWRhcmstNzAwIGRhcms6cm91bmRlZCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVhY3Qtc2VsZWN0X19vcHRpb24ge1xcbiAgQGFwcGx5IGN1cnNvci1wb2ludGVyIGhvdmVyOmJnLWdyYXktMjAwICBkYXJrOmhvdmVyOmJnLWRhcmstNzAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWFjdC1zZWxlY3RfX29wdGlvbi0taXMtZm9jdXNlZCB7XFxuICBAYXBwbHkgZGFyazpiZy1kYXJrLTgwMCBkYXJrOnRleHQtd2hpdGUgaG92ZXI6ZGFyazpiZy1kYXJrLTcwMCBob3ZlcjpkYXJrOnRleHQtd2hpdGUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LXNlbGVjdF9fb3B0aW9uLS1pcy1zZWxlY3RlZCxcXG4ucmVhY3Qtc2VsZWN0X19vcHRpb24tLWlzLXNlbGVjdGVkOmhvdmVyIHtcXG4gIEBhcHBseSBkYXJrOmJnLWRhcmstNjAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWFjdC1zZWxlY3RfX211bHRpLXZhbHVlX19yZW1vdmUge1xcbiAgQGFwcGx5IGRhcms6YmctZGFyay02MDAgZGFyazp0ZXh0LXdoaXRlIGhvdmVyOmRhcms6YmctcmVkLTMwMCBob3ZlcjpkYXJrOnRleHQtcmVkLTYwMCAhaW1wb3J0YW50O1xcbn1cXG5cIixcIi50aGVtZS1waW5rIHtcXG4gIC5hcHAtc2lkZWJhciB7XFxuICAgIEBhcHBseSBiZy1wYXZpdHJhLTkwMCB0ZXh0LXdoaXRlO1xcblxcbiAgICAubWVudS10aXRsZSxcXG4gICAgLm1lbnUtaXRlbS1pY29uLFxcbiAgICAubWVudS1pdGVtLWxpbmsge1xcbiAgICAgIEBhcHBseSB0ZXh0LXdoaXRlO1xcbiAgICB9XFxuICB9XFxuXFxuICAuYXBwLXNpZGViYXItYnJhbmQge1xcbiAgICBAYXBwbHkgYmctd2hpdGU7XFxuICB9XFxuXFxuICAuYmctYmx1ZS02MDAge1xcbiAgICBAYXBwbHkgYmctcGF2aXRyYS04MDA7XFxuICB9XFxuXFxuICAuYm9yZGVyLWJsdWUtNzAwIHtcXG4gICAgQGFwcGx5IGJvcmRlci1waW5rLTcwMDtcXG4gIH1cXG5cXG4gIC5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2ssXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgLmNoZWNrIHtcXG4gICAgQGFwcGx5IGJvcmRlci1wYXZpdHJhLTgwMDtcXG4gIH1cXG5cXG4gIC5oZWxwZXItY29udGFpbmVyIC50YWIge1xcbiAgICBAYXBwbHkgYmctcGF2aXRyYS05MDA7XFxuICB9XFxuXFxuICAuZm9jdXNcXFxcOnJpbmc6Zm9jdXMge1xcbiAgICAtLXR3LXJpbmctY29sb3I6ICMxNDE0MmE7XFxuICB9XFxuXFxuICAuY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpmb2N1cyArIC5jaGVjayxcXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmZvY3VzICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmZvY3VzICsgLmNoZWNrIHtcXG4gICAgLS10dy1yaW5nLWNvbG9yOiAjMTQxNDJhO1xcbiAgfVxcbn1cXG5cXG4udGhlbWUtZ3JlZW4ge1xcbiAgLmFwcC1zaWRlYmFyIHtcXG4gICAgQGFwcGx5IGJnLXBhdml0cmEtODAwIHRleHQtd2hpdGU7XFxuXFxuICAgIC5tZW51LXRpdGxlLFxcbiAgICAubWVudS1pdGVtLWljb24sXFxuICAgIC5tZW51LWl0ZW0tbGluayB7XFxuICAgICAgQGFwcGx5IHRleHQtd2hpdGU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5hcHAtc2lkZWJhci1icmFuZCB7XFxuICAgIEBhcHBseSBiZy13aGl0ZTtcXG4gIH1cXG5cXG4gIC5iZy1ibHVlLTYwMCB7XFxuICAgIEBhcHBseSBiZy1wYXZpdHJhLTgwMDtcXG4gIH1cXG5cXG4gIC5ib3JkZXItYmx1ZS03MDAge1xcbiAgICBAYXBwbHkgYmctcGF2aXRyYS03MDA7XFxuICB9XFxuXFxuICAuaG92ZXJcXFxcOmJnLWJsdWUtNzAwOmhvdmVyIHtcXG4gICAgQGFwcGx5IGJnLXBhdml0cmEtNzAwO1xcbiAgfVxcblxcbiAgLnRleHQtYmx1ZS02MDAge1xcbiAgICBAYXBwbHkgdGV4dC1wYXZpdHJhLTkwMDtcXG4gIH1cXG5cXG4gIC5jaGVja2JveCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmNoZWNrZWQgKyAuY2hlY2ssXFxuICAucmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgLmNoZWNrIHtcXG4gICAgQGFwcGx5IGJvcmRlci1wYXZpdHJhLTgwMDtcXG4gIH1cXG5cXG4gIC5oZWxwZXItY29udGFpbmVyIC50YWIge1xcbiAgICBAYXBwbHkgYmctcGF2aXRyYS03MDA7XFxuICB9XFxuXFxuICAuZm9jdXNcXFxcOnJpbmc6Zm9jdXMge1xcbiAgICAtLXR3LXJpbmctY29sb3I6ICM0ZTRiNjY7XFxuICB9XFxuXFxuICAuY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpmb2N1cyArIC5jaGVjayxcXG4gIC5yYWRpbyBpbnB1dFt0eXBlPSdyYWRpbyddOmZvY3VzICsgLmNoZWNrLFxcbiAgLnN3aXRjaCBpbnB1dFt0eXBlPSdjaGVja2JveCddOmZvY3VzICsgLmNoZWNrIHtcXG4gICAgLS10dy1yaW5nLWNvbG9yOiAjNGU0YjY2O1xcbiAgfVxcblxcbiAgLnRleHQtYmx1ZS01MDAge1xcbiAgICBAYXBwbHkgdGV4dC1wYXZpdHJhLTgwMDtcXG4gIH1cXG5cXG4gIC5ob3ZlclxcXFw6dGV4dC1ibHVlLTYwMDpob3ZlciB7XFxuICAgIEBhcHBseSB0ZXh0LXBhdml0cmEtODAwO1xcbiAgfVxcblxcbiAgLmFjdGl2ZVxcXFw6dGV4dC1ibHVlLTcwMDphY3RpdmUge1xcbiAgICBAYXBwbHkgdGV4dC1wYXZpdHJhLTgwMDtcXG4gIH1cXG59XFxuXCIsXCJAaW1wb3J0ICd0YWlsd2luZC9fYmFzZS5jc3MnO1xcbkBpbXBvcnQgJ3RhaWx3aW5kL19jb21wb25lbnRzLmNzcyc7XFxuQGltcG9ydCAndGFpbHdpbmQvX3V0aWxpdGllcy5jc3MnO1xcbkBpbXBvcnQgJ2ludHJvLmpzL2ludHJvanMuY3NzJztcXG5AaW1wb3J0ICdfY2hlY2tib3gtcmFkaW8tc3dpdGNoLmNzcyc7XFxuQGltcG9ydCAnX3Byb2dyZXNzLmNzcyc7XFxuQGltcG9ydCAnX3Njcm9sbGJhcnMuY3NzJztcXG5AaW1wb3J0ICdfdGFibGUuY3NzJztcXG5AaW1wb3J0ICdfaGVscGVyLmNzcyc7XFxuQGltcG9ydCAnX2NhbGVuZGFyLmNzcyc7XFxuQGltcG9ydCAnX3NlbGVjdC1kcm9wZG93bi5jc3MnO1xcbkBpbXBvcnQgJ190aGVtZS5jc3MnO1xcbkBpbXBvcnQgJ19yaWNoLXRleHQuY3NzJztcXG5cXG4uaW50cm9qcy10b29sdGlwIHtcXG4gIEBhcHBseSBtaW4tdy1bNDAwcHhdIG1heC13LVs0ODBweF0gcC0yICFpbXBvcnRhbnQ7XFxufVxcblxcbi5nb29kLWltZyB7XFxuICBAYXBwbHkgLW10LTk2ICFpbXBvcnRhbnQ7XFxufVxcbi5lbmQtaW1nIHtcXG4gIEBhcHBseSAtbXQtNzIgIWltcG9ydGFudDtcXG59XFxuLmludHJvanMtYnV0dG9uIHtcXG4gIEBhcHBseSBiZy1ibHVlLTYwMCB0ZXh0LXdoaXRlICAhaW1wb3J0YW50O1xcbiAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmludHJvanMtYnVsbGV0cyB1bCBsaSBhLmFjdGl2ZSB7XFxuICBAYXBwbHkgYmctYmx1ZS02MDAgICFpbXBvcnRhbnQ7XFxufVxcbi5pbnRyb2pzLXByZXZidXR0b24ge1xcbiAgQGFwcGx5IGJnLXRyYW5zcGFyZW50IGJvcmRlciBib3JkZXItYmx1ZS02MDAgdGV4dC1ibHVlLTYwMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js":
/*!************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js ***!
\************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/ // css base code, injected by the css-loader\n// eslint-disable-next-line func-names\n\nmodule.exports = function(useSourceMap) {\n var list = [] // return the list of modules as css string\n ;\n list.toString = function toString() {\n return this.map(function(item) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var content = cssWithMappingToString(item, useSourceMap);\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n return content;\n }).join(\"\");\n } // import a list of modules into the list\n ;\n // eslint-disable-next-line func-names\n // @ts-expect-error TODO: fix type\n list.i = function(modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [\n [\n null,\n modules,\n \"\"\n ]\n ];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for(var i = 0; i < this.length; i++){\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for(var _i = 0; _i < modules.length; _i++){\n var item = [].concat(modules[_i]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n list.push(item);\n }\n };\n return list;\n};\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || \"\" // eslint-disable-next-line prefer-destructuring\n ;\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (useSourceMap && typeof btoa === \"function\") {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function(source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [\n content\n ].concat(sourceURLs).concat([\n sourceMapping\n ]).join(\"\\n\");\n }\n return [\n content\n ].join(\"\\n\");\n} // Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceMappingURL=api.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9jc3MtbG9hZGVyL3NyYy9ydW50aW1lL2FwaS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2E7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELHFCQUFxQjtBQUN6RTtBQUNBO0FBQ0EsU0FBUztBQUNULE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixpQkFBaUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxjQUFjO0FBQ3JFO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvcnVudGltZS9hcGkuanM/Y2E0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qLyAvLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblwidXNlIHN0cmljdFwiO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih1c2VTb3VyY2VNYXApIHtcbiAgICB2YXIgbGlzdCA9IFtdIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgICA7XG4gICAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG4gICAgICAgICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoY29udGVudCwgXCJ9XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0pLmpvaW4oXCJcIik7XG4gICAgfSAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuICAgIDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogZml4IHR5cGVcbiAgICBsaXN0LmkgPSBmdW5jdGlvbihtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgIG1vZHVsZXMgPSBbXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLFxuICAgICAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgICAgICBpZiAoZGVkdXBlKSB7XG4gICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgICAgICAgICAgdmFyIGlkID0gdGhpc1tpXVswXTtcbiAgICAgICAgICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvcih2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKXtcbiAgICAgICAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcbiAgICAgICAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGxpc3Q7XG59O1xuZnVuY3Rpb24gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApIHtcbiAgICB2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgXCJcIiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmdcbiAgICA7XG4gICAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICAgIGlmICghY3NzTWFwcGluZykge1xuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgaWYgKHVzZVNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSB0b0NvbW1lbnQoY3NzTWFwcGluZyk7XG4gICAgICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbihzb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBjb250ZW50XG4gICAgICAgIF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbXG4gICAgICAgICAgICBzb3VyY2VNYXBwaW5nXG4gICAgICAgIF0pLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICAgIGNvbnRlbnRcbiAgICBdLmpvaW4oXCJcXG5cIik7XG59IC8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcbmZ1bmN0aW9uIHRvQ29tbWVudChzb3VyY2VNYXApIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgcmV0dXJuIFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBpLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!":
/*!*******************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app! ***!
\*******************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return __webpack_require__(/*! private-next-pages/_app */ \"./src/pages/_app.tsx\");\n }\n ]);\n if(true) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_app\"])\n });\n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWNsaWVudC1wYWdlcy1sb2FkZXIuanM/YWJzb2x1dGVQYWdlUGF0aD1wcml2YXRlLW5leHQtcGFnZXMlMkZfYXBwJnBhZ2U9JTJGX2FwcCEiLCJtYXBwaW5ncyI6IjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsbUJBQU8sQ0FBQyxxREFBeUI7QUFDaEQ7QUFDQTtBQUNBLE9BQU8sSUFBVTtBQUNqQixNQUFNLFVBQVU7QUFDaEI7QUFDQSxPQUFPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzY3ODIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgKHdpbmRvdy5fX05FWFRfUCA9IHdpbmRvdy5fX05FWFRfUCB8fCBbXSkucHVzaChbXG4gICAgICBcIi9fYXBwXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwicHJpdmF0ZS1uZXh0LXBhZ2VzL19hcHBcIik7XG4gICAgICB9XG4gICAgXSk7XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgd2luZG93Ll9fTkVYVF9QLnB1c2goW1wiL19hcHBcIl0pXG4gICAgICB9KTtcbiAgICB9XG4gICJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!\n"));
/***/ }),
/***/ "./node_modules/intro.js/introjs.css":
/*!*******************************************!*\
!*** ./node_modules/intro.js/introjs.css ***!
\*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var api = __webpack_require__(/*! !../next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !!../next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!../next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./introjs.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = function(element) {\n // By default, style-loader injects CSS into the bottom\n // of <head>. This causes ordering problems between dev\n // and prod. To fix this, we render a <noscript> tag as\n // an anchor for the styles to be placed before. These\n // styles will be applied _before_ <style jsx global>.\n // These elements should always exist. If they do not,\n // this code should fail.\n var anchorElement = document.querySelector(\"#__next_css__DO_NOT_USE__\");\n var parentNode = anchorElement.parentNode// Normally <head>\n ;\n // Each style tag should be placed right before our\n // anchor. By inserting before and not after, we do not\n // need to track the last inserted element.\n parentNode.insertBefore(element, anchorElement);\n };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\nif (true) {\n if (!content.locals || module.hot.invalidate) {\n var isEqualLocals = function isEqualLocals(a, b, isNamedExport) {\n if (!a && b || a && !b) {\n return false;\n }\n let p;\n for(p in a){\n if (isNamedExport && p === \"default\") {\n continue;\n }\n if (a[p] !== b[p]) {\n return false;\n }\n }\n for(p in b){\n if (isNamedExport && p === \"default\") {\n continue;\n }\n if (!a[p]) {\n return false;\n }\n }\n return true;\n};\n var oldLocals = content.locals;\n\n module.hot.accept(\n /*! !!../next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!../next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./introjs.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css\",\n function () {\n content = __webpack_require__(/*! !!../next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!../next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./introjs.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[12].use[2]!./node_modules/intro.js/introjs.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\n if (!isEqualLocals(oldLocals, content.locals)) {\n module.hot.invalidate();\n\n return;\n }\n\n oldLocals = content.locals;\n\n update(content);\n }\n )\n }\n\n module.hot.dispose(function() {\n update();\n });\n}\n\nmodule.exports = content.locals || {};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMvaW50cm9qcy5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsVUFBVSxtQkFBTyxDQUFDLHVNQUEyRjtBQUM3RywwQkFBMEIsbUJBQU8sQ0FBQyxnZUFBdU47O0FBRXpQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7QUFHQSxJQUFJLElBQVU7QUFDZCx5QkFBeUIsVUFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxpQkFBaUI7QUFDckIsTUFBTSxnZUFBdU47QUFDN047QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQyxnZUFBdU47O0FBRWpQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixVQUFVOztBQUUxQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUsVUFBVTtBQUNaO0FBQ0EsR0FBRztBQUNIOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9pbnRyby5qcy9pbnRyb2pzLmNzcz9lNDExIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBhcGkgPSByZXF1aXJlKFwiIS4uL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1zdHlsZS1sb2FkZXIvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIik7XG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbN10ub25lT2ZbMTJdLnVzZVsxXSEuLi9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxMl0udXNlWzJdIS4vaW50cm9qcy5jc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIHN0eWxlLWxvYWRlciBpbmplY3RzIENTUyBpbnRvIHRoZSBib3R0b21cbiAgICAgICAgICAgICAgICAgICAgLy8gb2YgPGhlYWQ+LiBUaGlzIGNhdXNlcyBvcmRlcmluZyBwcm9ibGVtcyBiZXR3ZWVuIGRldlxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgcHJvZC4gVG8gZml4IHRoaXMsIHdlIHJlbmRlciBhIDxub3NjcmlwdD4gdGFnIGFzXG4gICAgICAgICAgICAgICAgICAgIC8vIGFuIGFuY2hvciBmb3IgdGhlIHN0eWxlcyB0byBiZSBwbGFjZWQgYmVmb3JlLiBUaGVzZVxuICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZXMgd2lsbCBiZSBhcHBsaWVkIF9iZWZvcmVfIDxzdHlsZSBqc3ggZ2xvYmFsPi5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgZWxlbWVudHMgc2hvdWxkIGFsd2F5cyBleGlzdC4gSWYgdGhleSBkbyBub3QsXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY29kZSBzaG91bGQgZmFpbC5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI19fbmV4dF9jc3NfX0RPX05PVF9VU0VfX1wiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudE5vZGUgPSBhbmNob3JFbGVtZW50LnBhcmVudE5vZGUvLyBOb3JtYWxseSA8aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgICAgICAvLyBFYWNoIHN0eWxlIHRhZyBzaG91bGQgYmUgcGxhY2VkIHJpZ2h0IGJlZm9yZSBvdXJcbiAgICAgICAgICAgICAgICAgICAgLy8gYW5jaG9yLiBCeSBpbnNlcnRpbmcgYmVmb3JlIGFuZCBub3QgYWZ0ZXIsIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHRyYWNrIHRoZSBsYXN0IGluc2VydGVkIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIGFuY2hvckVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cbmlmIChtb2R1bGUuaG90KSB7XG4gIGlmICghY29udGVudC5sb2NhbHMgfHwgbW9kdWxlLmhvdC5pbnZhbGlkYXRlKSB7XG4gICAgdmFyIGlzRXF1YWxMb2NhbHMgPSBmdW5jdGlvbiBpc0VxdWFsTG9jYWxzKGEsIGIsIGlzTmFtZWRFeHBvcnQpIHtcbiAgICBpZiAoIWEgJiYgYiB8fCBhICYmICFiKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHA7XG4gICAgZm9yKHAgaW4gYSl7XG4gICAgICAgIGlmIChpc05hbWVkRXhwb3J0ICYmIHAgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYVtwXSAhPT0gYltwXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZvcihwIGluIGIpe1xuICAgICAgICBpZiAoaXNOYW1lZEV4cG9ydCAmJiBwID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhW3BdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59O1xuICAgIHZhciBvbGRMb2NhbHMgPSBjb250ZW50LmxvY2FscztcblxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFxuICAgICAgXCIhIS4uL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbN10ub25lT2ZbMTJdLnVzZVsxXSEuLi9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxMl0udXNlWzJdIS4vaW50cm9qcy5jc3NcIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbN10ub25lT2ZbMTJdLnVzZVsxXSEuLi9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxMl0udXNlWzJdIS4vaW50cm9qcy5jc3NcIik7XG5cbiAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghaXNFcXVhbExvY2FscyhvbGRMb2NhbHMsIGNvbnRlbnQubG9jYWxzKSkge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5ob3QuaW52YWxpZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgb2xkTG9jYWxzID0gY29udGVudC5sb2NhbHM7XG5cbiAgICAgICAgICAgICAgdXBkYXRlKGNvbnRlbnQpO1xuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/intro.js/introjs.css\n"));
/***/ }),
/***/ "./src/css/main.css":
/*!**************************!*\
!*** ./src/css/main.css ***!
\**************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var api = __webpack_require__(/*! !../../node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !!../../node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!../../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./main.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = function(element) {\n // By default, style-loader injects CSS into the bottom\n // of <head>. This causes ordering problems between dev\n // and prod. To fix this, we render a <noscript> tag as\n // an anchor for the styles to be placed before. These\n // styles will be applied _before_ <style jsx global>.\n // These elements should always exist. If they do not,\n // this code should fail.\n var anchorElement = document.querySelector(\"#__next_css__DO_NOT_USE__\");\n var parentNode = anchorElement.parentNode// Normally <head>\n ;\n // Each style tag should be placed right before our\n // anchor. By inserting before and not after, we do not\n // need to track the last inserted element.\n parentNode.insertBefore(element, anchorElement);\n };\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\nif (true) {\n if (!content.locals || module.hot.invalidate) {\n var isEqualLocals = function isEqualLocals(a, b, isNamedExport) {\n if (!a && b || a && !b) {\n return false;\n }\n let p;\n for(p in a){\n if (isNamedExport && p === \"default\") {\n continue;\n }\n if (a[p] !== b[p]) {\n return false;\n }\n }\n for(p in b){\n if (isNamedExport && p === \"default\") {\n continue;\n }\n if (!a[p]) {\n return false;\n }\n }\n return true;\n};\n var oldLocals = content.locals;\n\n module.hot.accept(\n /*! !!../../node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!../../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./main.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css\",\n function () {\n content = __webpack_require__(/*! !!../../node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!../../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./main.css */ \"./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[7].oneOf[14].use[2]!./src/css/main.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\n if (!isEqualLocals(oldLocals, content.locals)) {\n module.hot.invalidate();\n\n return;\n }\n\n oldLocals = content.locals;\n\n update(content);\n }\n )\n }\n\n module.hot.dispose(function() {\n update();\n });\n}\n\nmodule.exports = content.locals || {};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY3NzL21haW4uY3NzIiwibWFwcGluZ3MiOiJBQUFBLFVBQVUsbUJBQU8sQ0FBQyx1TkFBMkc7QUFDN0gsMEJBQTBCLG1CQUFPLENBQUMsNGVBQW9QOztBQUV0Ujs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7O0FBR0EsSUFBSSxJQUFVO0FBQ2QseUJBQXlCLFVBQVU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUksaUJBQWlCO0FBQ3JCLE1BQU0sNGVBQW9QO0FBQzFQO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsNGVBQW9QOztBQUU5UTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsVUFBVTs7QUFFMUI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLFVBQVU7QUFDWjtBQUNBLEdBQUc7QUFDSDs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvY3NzL21haW4uY3NzPzkxNjYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1zdHlsZS1sb2FkZXIvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIik7XG4gICAgICAgICAgICB2YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL2Nzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzddLm9uZU9mWzE0XS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvcG9zdGNzcy1sb2FkZXIvc3JjL2luZGV4LmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzddLm9uZU9mWzE0XS51c2VbMl0hLi9tYWluLmNzc1wiKTtcblxuICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29udGVudCA9IFtbbW9kdWxlLmlkLCBjb250ZW50LCAnJ11dO1xuICAgICAgICAgICAgfVxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgc3R5bGUtbG9hZGVyIGluamVjdHMgQ1NTIGludG8gdGhlIGJvdHRvbVxuICAgICAgICAgICAgICAgICAgICAvLyBvZiA8aGVhZD4uIFRoaXMgY2F1c2VzIG9yZGVyaW5nIHByb2JsZW1zIGJldHdlZW4gZGV2XG4gICAgICAgICAgICAgICAgICAgIC8vIGFuZCBwcm9kLiBUbyBmaXggdGhpcywgd2UgcmVuZGVyIGEgPG5vc2NyaXB0PiB0YWcgYXNcbiAgICAgICAgICAgICAgICAgICAgLy8gYW4gYW5jaG9yIGZvciB0aGUgc3R5bGVzIHRvIGJlIHBsYWNlZCBiZWZvcmUuIFRoZXNlXG4gICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlcyB3aWxsIGJlIGFwcGxpZWQgX2JlZm9yZV8gPHN0eWxlIGpzeCBnbG9iYWw+LlxuICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSBlbGVtZW50cyBzaG91bGQgYWx3YXlzIGV4aXN0LiBJZiB0aGV5IGRvIG5vdCxcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBjb2RlIHNob3VsZCBmYWlsLlxuICAgICAgICAgICAgICAgICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjX19uZXh0X2Nzc19fRE9fTk9UX1VTRV9fXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGFuY2hvckVsZW1lbnQucGFyZW50Tm9kZS8vIE5vcm1hbGx5IDxoZWFkPlxuICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgICAgIC8vIEVhY2ggc3R5bGUgdGFnIHNob3VsZCBiZSBwbGFjZWQgcmlnaHQgYmVmb3JlIG91clxuICAgICAgICAgICAgICAgICAgICAvLyBhbmNob3IuIEJ5IGluc2VydGluZyBiZWZvcmUgYW5kIG5vdCBhZnRlciwgd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gdHJhY2sgdGhlIGxhc3QgaW5zZXJ0ZWQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudCwgYW5jaG9yRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgaWYgKCFjb250ZW50LmxvY2FscyB8fCBtb2R1bGUuaG90LmludmFsaWRhdGUpIHtcbiAgICB2YXIgaXNFcXVhbExvY2FscyA9IGZ1bmN0aW9uIGlzRXF1YWxMb2NhbHMoYSwgYiwgaXNOYW1lZEV4cG9ydCkge1xuICAgIGlmICghYSAmJiBiIHx8IGEgJiYgIWIpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgcDtcbiAgICBmb3IocCBpbiBhKXtcbiAgICAgICAgaWYgKGlzTmFtZWRFeHBvcnQgJiYgcCA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhW3BdICE9PSBiW3BdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKHAgaW4gYil7XG4gICAgICAgIGlmIChpc05hbWVkRXhwb3J0ICYmIHAgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFbcF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG4gICAgdmFyIG9sZExvY2FscyA9IGNvbnRlbnQubG9jYWxzO1xuXG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoXG4gICAgICBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvY3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbN10ub25lT2ZbMTRdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9wb3N0Y3NzLWxvYWRlci9zcmMvaW5kZXguanM/P3J1bGVTZXRbMV0ucnVsZXNbN10ub25lT2ZbMTRdLnVzZVsyXSEuL21haW4uY3NzXCIsXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9jc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxNF0udXNlWzFdIS4uLy4uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1s3XS5vbmVPZlsxNF0udXNlWzJdIS4vbWFpbi5jc3NcIik7XG5cbiAgICAgICAgICAgICAgY29udGVudCA9IGNvbnRlbnQuX19lc01vZHVsZSA/IGNvbnRlbnQuZGVmYXVsdCA6IGNvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghaXNFcXVhbExvY2FscyhvbGRMb2NhbHMsIGNvbnRlbnQubG9jYWxzKSkge1xuICAgICAgICAgICAgICAgIG1vZHVsZS5ob3QuaW52YWxpZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgb2xkTG9jYWxzID0gY29udGVudC5sb2NhbHM7XG5cbiAgICAgICAgICAgICAgdXBkYXRlKGNvbnRlbnQpO1xuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbigpIHtcbiAgICB1cGRhdGUoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29udGVudC5sb2NhbHMgfHwge307Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/css/main.css\n"));
/***/ }),
/***/ "./node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js":
/*!************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js ***!
\************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\nconst isOldIE = function isOldIE() {\n let memo;\n return function memorize() {\n if (typeof memo === \"undefined\") {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n return memo;\n };\n}();\nconst getTargetElement = function() {\n const memo = {};\n return function memorize(target) {\n if (typeof memo[target] === \"undefined\") {\n let styleTarget = document.querySelector(target);\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n };\n}();\nconst stylesInDom = [];\nfunction getIndexByIdentifier(identifier) {\n let result = -1;\n for(let i = 0; i < stylesInDom.length; i++){\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n const idCountMap = {};\n const identifiers = [];\n for(let i = 0; i < list.length; i++){\n const item = list[i];\n const id = options.base ? item[0] + options.base : item[0];\n const count = idCountMap[id] || 0;\n const identifier = id + \" \" + count.toString();\n idCountMap[id] = count + 1;\n const index = getIndexByIdentifier(identifier);\n const obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n updater: addStyle(obj, options),\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction insertStyleElement(options) {\n const style = document.createElement(\"style\");\n const attributes = options.attributes || {};\n if (typeof attributes.nonce === \"undefined\") {\n const nonce = // eslint-disable-next-line no-undef\n true ? __webpack_require__.nc : 0;\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n Object.keys(attributes).forEach(function(key) {\n style.setAttribute(key, attributes[key]);\n });\n if (typeof options.insert === \"function\") {\n options.insert(style);\n } else {\n const target = getTargetElement(options.insert || \"head\");\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n }\n return style;\n}\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */ const replaceText = function replaceText() {\n const textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join(\"\\n\");\n };\n}();\nfunction applyToSingletonTag(style, index, remove, obj) {\n const css = remove ? \"\" : obj.media ? \"@media \" + obj.media + \" {\" + obj.css + \"}\" : obj.css;\n // For old IE\n /* istanbul ignore if */ if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n const cssNode = document.createTextNode(css);\n const childNodes = style.childNodes;\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\nfunction applyToTag(style, _options, obj) {\n let css = obj.css;\n const media = obj.media;\n const sourceMap = obj.sourceMap;\n if (media) {\n style.setAttribute(\"media\", media);\n } else {\n style.removeAttribute(\"media\");\n }\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n }\n // For old IE\n /* istanbul ignore if */ if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while(style.firstChild){\n style.removeChild(style.firstChild);\n }\n style.appendChild(document.createTextNode(css));\n }\n}\nlet singleton = null;\nlet singletonCounter = 0;\nfunction addStyle(obj, options) {\n let style;\n let update;\n let remove;\n if (options.singleton) {\n const styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n remove = function() {\n removeStyleElement(style);\n };\n }\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\nmodule.exports = function(list, options) {\n options = options || {};\n // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n if (!options.singleton && typeof options.singleton !== \"boolean\") {\n options.singleton = isOldIE();\n }\n list = list || [];\n let lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n if (Object.prototype.toString.call(newList) !== \"[object Array]\") {\n return;\n }\n for(let i = 0; i < lastIdentifiers.length; i++){\n const identifier = lastIdentifiers[i];\n const index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n const newLastIdentifiers = modulesToDom(newList, options);\n for(let i = 0; i < lastIdentifiers.length; i++){\n const identifier = lastIdentifiers[i];\n const index = getIndexByIdentifier(identifier);\n if (stylesInDom[index].references === 0) {\n stylesInDom[index].updater();\n stylesInDom.splice(index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceMappingURL=injectStylesIntoStyleTag.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LXN0eWxlLWxvYWRlci9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsd0JBQXdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXdDLEdBQUcsc0JBQWlCLEdBQUcsQ0FBSTtBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxxRUFBcUUsZ0JBQWdCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtc3R5bGUtbG9hZGVyL3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzPzI2ZWQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5jb25zdCBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgICBsZXQgbWVtbztcbiAgICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgLy8gVGVzdCBmb3IgSUUgPD0gOSBhcyBwcm9wb3NlZCBieSBCcm93c2VyaGFja3NcbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL2Jyb3dzZXJoYWNrcy5jb20vI2hhY2stZTcxZDg2OTJmNjUzMzQxNzNmZWU3MTVjMjIyY2I4MDVcbiAgICAgICAgICAgIC8vIFRlc3RzIGZvciBleGlzdGVuY2Ugb2Ygc3RhbmRhcmQgZ2xvYmFscyBpcyB0byBhbGxvdyBzdHlsZS1sb2FkZXJcbiAgICAgICAgICAgIC8vIHRvIG9wZXJhdGUgY29ycmVjdGx5IGludG8gbm9uLXN0YW5kYXJkIGVudmlyb25tZW50c1xuICAgICAgICAgICAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL3N0eWxlLWxvYWRlci9pc3N1ZXMvMTc3XG4gICAgICAgICAgICBtZW1vID0gQm9vbGVhbih3aW5kb3cgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuYWxsICYmICF3aW5kb3cuYXRvYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgfTtcbn0oKTtcbmNvbnN0IGdldFRhcmdldEVsZW1lbnQgPSBmdW5jdGlvbigpIHtcbiAgICBjb25zdCBtZW1vID0ge307XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgICAgICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgbGV0IHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICAgICAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgICAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gICAgfTtcbn0oKTtcbmNvbnN0IHN0eWxlc0luRG9tID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gICAgbGV0IHJlc3VsdCA9IC0xO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgaWRDb3VudE1hcCA9IHt9O1xuICAgIGNvbnN0IGlkZW50aWZpZXJzID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspe1xuICAgICAgICBjb25zdCBpdGVtID0gbGlzdFtpXTtcbiAgICAgICAgY29uc3QgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICAgICAgY29uc3QgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gaWQgKyBcIiBcIiArIGNvdW50LnRvU3RyaW5nKCk7XG4gICAgICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgICAgICBjb25zdCBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICAgICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgICAgICAgIHNvdXJjZU1hcDogaXRlbVszXVxuICAgICAgICB9O1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcysrO1xuICAgICAgICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnVwZGF0ZXIob2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgICAgICAgICAgIHVwZGF0ZXI6IGFkZFN0eWxlKG9iaiwgb3B0aW9ucyksXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gb3B0aW9ucy5hdHRyaWJ1dGVzIHx8IHt9O1xuICAgIGlmICh0eXBlb2YgYXR0cmlidXRlcy5ub25jZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBjb25zdCBub25jZSA9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgICB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gICAgICAgIGlmIChub25jZSkge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmluc2VydCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG9wdGlvbnMuaW5zZXJ0KHN0eWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBnZXRUYXJnZXRFbGVtZW50KG9wdGlvbnMuaW5zZXJ0IHx8IFwiaGVhZFwiKTtcbiAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gICAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqLyBjb25zdCByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICAgIGNvbnN0IHRleHRTdG9yZSA9IFtdO1xuICAgIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgICAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCJcXG5cIik7XG4gICAgfTtcbn0oKTtcbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcoc3R5bGUsIGluZGV4LCByZW1vdmUsIG9iaikge1xuICAgIGNvbnN0IGNzcyA9IHJlbW92ZSA/IFwiXCIgOiBvYmoubWVkaWEgPyBcIkBtZWRpYSBcIiArIG9iai5tZWRpYSArIFwiIHtcIiArIG9iai5jc3MgKyBcIn1cIiA6IG9iai5jc3M7XG4gICAgLy8gRm9yIG9sZCBJRVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi8gaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgc3R5bGUuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuICAgICAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgICAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGFwcGx5VG9UYWcoc3R5bGUsIF9vcHRpb25zLCBvYmopIHtcbiAgICBsZXQgY3NzID0gb2JqLmNzcztcbiAgICBjb25zdCBtZWRpYSA9IG9iai5tZWRpYTtcbiAgICBjb25zdCBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICAgIGlmIChtZWRpYSkge1xuICAgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBtZWRpYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKFwibWVkaWFcIik7XG4gICAgfVxuICAgIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIiArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyBcIiAqL1wiO1xuICAgIH1cbiAgICAvLyBGb3Igb2xkIElFXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqLyBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2hpbGUoc3R5bGUuZmlyc3RDaGlsZCl7XG4gICAgICAgICAgICBzdHlsZS5yZW1vdmVDaGlsZChzdHlsZS5maXJzdENoaWxkKTtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5sZXQgc2luZ2xldG9uID0gbnVsbDtcbmxldCBzaW5nbGV0b25Db3VudGVyID0gMDtcbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICAgIGxldCBzdHlsZTtcbiAgICBsZXQgdXBkYXRlO1xuICAgIGxldCByZW1vdmU7XG4gICAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgICAgICB1cGRhdGUgPSBhcHBseVRvU2luZ2xldG9uVGFnLmJpbmQobnVsbCwgc3R5bGUsIHN0eWxlSW5kZXgsIGZhbHNlKTtcbiAgICAgICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICAgICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcbiAgICAgICAgcmVtb3ZlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGUpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICB1cGRhdGUob2JqKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgICAgIGlmIChuZXdPYmopIHtcbiAgICAgICAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obGlzdCwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAgIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbiAgICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gICAgfVxuICAgIGxpc3QgPSBsaXN0IHx8IFtdO1xuICAgIGxldCBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSBcIltvYmplY3QgQXJyYXldXCIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgY29uc3QgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICAgICAgICBpZiAoc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcigpO1xuICAgICAgICAgICAgICAgIHN0eWxlc0luRG9tLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICAgIH07XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js\n"));
/***/ }),
/***/ "./src/components/IntroGuide.tsx":
/*!***************************************!*\
!*** ./src/components/IntroGuide.tsx ***!
\***************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"./node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var intro_js_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! intro.js-react */ \"./node_modules/intro.js-react/dist/esm/index.mjs\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/router */ \"./node_modules/next/router.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_3__);\n\nvar _s = $RefreshSig$();\n\n\n\nconst IntroGuide = (param)=>{\n let { steps, stepsEnabled, onExit, stepsName } = param;\n _s();\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_3__.useRouter)();\n const handleStepChange = (stepIndex)=>{\n if (stepIndex === 7 && stepsName === \"appSteps\") {\n onExit();\n router.push(\"/users/users-list/\");\n } else if (stepIndex === 2 && stepsName === \"usersSteps\") {\n onExit();\n router.push(\"/roles/roles-list/\");\n }\n };\n const handleExit = ()=>{\n localStorage.setItem(\"completed_\".concat(stepsName), \"true\");\n onExit();\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(intro_js_react__WEBPACK_IMPORTED_MODULE_2__.Steps, {\n enabled: stepsEnabled,\n steps: steps,\n initialStep: 0,\n onExit: handleExit,\n onChange: handleStepChange,\n options: {\n scrollToElement: true,\n scrollPadding: 50\n }\n }, void 0, false, {\n fileName: \"/app/frontend/src/components/IntroGuide.tsx\",\n lineNumber: 39,\n columnNumber: 7\n }, undefined)\n }, void 0, false);\n};\n_s(IntroGuide, \"fN7XvhJ+p5oE6+Xlo0NJmXpxjC8=\", false, function() {\n return [\n next_router__WEBPACK_IMPORTED_MODULE_3__.useRouter\n ];\n});\n_c = IntroGuide;\n/* harmony default export */ __webpack_exports__[\"default\"] = (IntroGuide);\nvar _c;\n$RefreshReg$(_c, \"IntroGuide\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29tcG9uZW50cy9JbnRyb0d1aWRlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTBCO0FBQ29CO0FBQ047QUFheEMsTUFBTUcsYUFBd0M7UUFBQyxFQUM3Q0MsS0FBSyxFQUNMQyxZQUFZLEVBQ1pDLE1BQU0sRUFDTkMsU0FBUyxFQUNWOztJQUNDLE1BQU1DLFNBQVNOLHNEQUFTQTtJQUN4QixNQUFNTyxtQkFBbUIsQ0FBQ0M7UUFDeEIsSUFBSUEsY0FBYyxLQUFLSCxjQUFjLFlBQVk7WUFDL0NEO1lBQ0FFLE9BQU9HLElBQUksQ0FBQztRQUNkLE9BQU8sSUFBSUQsY0FBYyxLQUFLSCxjQUFjLGNBQWM7WUFDeEREO1lBQ0FFLE9BQU9HLElBQUksQ0FBQztRQUNkO0lBQ0Y7SUFFQSxNQUFNQyxhQUFhO1FBQ2pCQyxhQUFhQyxPQUFPLENBQUMsYUFBdUIsT0FBVlAsWUFBYTtRQUMvQ0Q7SUFDRjtJQUNBLHFCQUNFO2tCQUNFLDRFQUFDTCxpREFBS0E7WUFDSmMsU0FBU1Y7WUFDVEQsT0FBT0E7WUFDUFksYUFBYTtZQUNiVixRQUFRTTtZQUNSSyxVQUFVUjtZQUNWUyxTQUFTO2dCQUNQQyxpQkFBaUI7Z0JBQ2pCQyxlQUFlO1lBQ2pCOzs7Ozs7O0FBSVI7R0FwQ01qQjs7UUFNV0Qsa0RBQVNBOzs7S0FOcEJDO0FBc0NOLCtEQUFlQSxVQUFVQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9jb21wb25lbnRzL0ludHJvR3VpZGUudHN4PzNkYzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0ZXBzLCBIaW50cyB9IGZyb20gJ2ludHJvLmpzLXJlYWN0JztcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvcm91dGVyJztcbmludGVyZmFjZSBJbnRyb0d1aWRlUHJvcHMge1xuICBzdGVwczogQXJyYXk8e1xuICAgIGVsZW1lbnQ6IHN0cmluZztcbiAgICBpbnRybzogc3RyaW5nO1xuICAgIHBvc2l0aW9uPzogc3RyaW5nO1xuICB9PjtcbiAgZGlzYWJsZUludGVyYWN0aW9uPzogYm9vbGVhbjtcbiAgc3RlcHNFbmFibGVkOiBib29sZWFuO1xuICBzdGVwc05hbWU6IHN0cmluZztcbiAgb25FeGl0OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBJbnRyb0d1aWRlOiBSZWFjdC5GQzxJbnRyb0d1aWRlUHJvcHM+ID0gKHtcbiAgc3RlcHMsXG4gIHN0ZXBzRW5hYmxlZCxcbiAgb25FeGl0LFxuICBzdGVwc05hbWUsXG59KSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBjb25zdCBoYW5kbGVTdGVwQ2hhbmdlID0gKHN0ZXBJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKHN0ZXBJbmRleCA9PT0gNyAmJiBzdGVwc05hbWUgPT09ICdhcHBTdGVwcycpIHtcbiAgICAgIG9uRXhpdCgpO1xuICAgICAgcm91dGVyLnB1c2goJy91c2Vycy91c2Vycy1saXN0LycpO1xuICAgIH0gZWxzZSBpZiAoc3RlcEluZGV4ID09PSAyICYmIHN0ZXBzTmFtZSA9PT0gJ3VzZXJzU3RlcHMnKSB7XG4gICAgICBvbkV4aXQoKTtcbiAgICAgIHJvdXRlci5wdXNoKCcvcm9sZXMvcm9sZXMtbGlzdC8nKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRXhpdCA9ICgpID0+IHtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShgY29tcGxldGVkXyR7c3RlcHNOYW1lfWAsICd0cnVlJyk7XG4gICAgb25FeGl0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdGVwc1xuICAgICAgICBlbmFibGVkPXtzdGVwc0VuYWJsZWR9XG4gICAgICAgIHN0ZXBzPXtzdGVwc31cbiAgICAgICAgaW5pdGlhbFN0ZXA9ezB9XG4gICAgICAgIG9uRXhpdD17aGFuZGxlRXhpdH1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVN0ZXBDaGFuZ2V9XG4gICAgICAgIG9wdGlvbnM9e3tcbiAgICAgICAgICBzY3JvbGxUb0VsZW1lbnQ6IHRydWUsXG4gICAgICAgICAgc2Nyb2xsUGFkZGluZzogNTAsXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50cm9HdWlkZTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlN0ZXBzIiwidXNlUm91dGVyIiwiSW50cm9HdWlkZSIsInN0ZXBzIiwic3RlcHNFbmFibGVkIiwib25FeGl0Iiwic3RlcHNOYW1lIiwicm91dGVyIiwiaGFuZGxlU3RlcENoYW5nZSIsInN0ZXBJbmRleCIsInB1c2giLCJoYW5kbGVFeGl0IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImVuYWJsZWQiLCJpbml0aWFsU3RlcCIsIm9uQ2hhbmdlIiwib3B0aW9ucyIsInNjcm9sbFRvRWxlbWVudCIsInNjcm9sbFBhZGRpbmciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/components/IntroGuide.tsx\n"));
/***/ }),
/***/ "./src/config.ts":
/*!***********************!*\
!*** ./src/config.ts ***!
\***********************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ appTitle: function() { return /* binding */ appTitle; },\n/* harmony export */ baseURLApi: function() { return /* binding */ baseURLApi; },\n/* harmony export */ containerMaxW: function() { return /* binding */ containerMaxW; },\n/* harmony export */ getPageTitle: function() { return /* binding */ getPageTitle; },\n/* harmony export */ hostApi: function() { return /* binding */ hostApi; },\n/* harmony export */ localStorageDarkModeKey: function() { return /* binding */ localStorageDarkModeKey; },\n/* harmony export */ localStorageStyleKey: function() { return /* binding */ localStorageStyleKey; },\n/* harmony export */ portApi: function() { return /* binding */ portApi; },\n/* harmony export */ tinyKey: function() { return /* binding */ tinyKey; }\n/* harmony export */ });\nconst hostApi = true ? \"http://localhost\" : 0;\nconst portApi = true ? 8080 : 0;\nconst baseURLApi = \"\".concat(hostApi).concat(portApi ? \":\".concat(portApi) : \"\", \"/api\");\nconst localStorageDarkModeKey = \"darkMode\";\nconst localStorageStyleKey = \"style\";\nconst containerMaxW = \"xl:max-w-full xl:mx-auto 2xl:mx-20\";\nconst appTitle = \"created by Flatlogic generator!\";\nconst getPageTitle = (currentPageTitle)=>\"\".concat(currentPageTitle, \" — \").concat(appTitle);\nconst tinyKey = \"cnslp6h943xbg36t2tf2xglmrxiw5b7tatycf3kir7n2j7eh\";\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvY29uZmlnLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFPLE1BQU1BLFVBQ1hDLEtBQXlCLEdBQWdCLHFCQUFxQixFQUFHO0FBQzVELE1BQU1DLFVBQVVELEtBQXlCLEdBQWdCLE9BQU8sRUFBRztBQUNuRSxNQUFNRSxhQUFhLEdBQWFELE9BQVZGLFNBQXVDLE9BQTdCRSxVQUFVLElBQVksT0FBUkEsV0FBYSxJQUFFLFFBQU07QUFFbkUsTUFBTUUsMEJBQTBCLFdBQVc7QUFFM0MsTUFBTUMsdUJBQXVCLFFBQVE7QUFFckMsTUFBTUMsZ0JBQWdCLHFDQUFxQztBQUUzRCxNQUFNQyxXQUFXLGtDQUFrQztBQUVuRCxNQUFNQyxlQUFlLENBQUNDLG1CQUMzQixHQUF5QkYsT0FBdEJFLGtCQUFpQixPQUFjLE9BQVRGLFVBQVc7QUFFL0IsTUFBTUcsVUFBVSxtREFBbUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL2NvbmZpZy50cz9kNDFjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBob3N0QXBpID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdCcgOiAnJztcbmV4cG9ydCBjb25zdCBwb3J0QXBpID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyA4MDgwIDogJyc7XG5leHBvcnQgY29uc3QgYmFzZVVSTEFwaSA9IGAke2hvc3RBcGl9JHtwb3J0QXBpID8gYDoke3BvcnRBcGl9YCA6IGBgfS9hcGlgO1xuXG5leHBvcnQgY29uc3QgbG9jYWxTdG9yYWdlRGFya01vZGVLZXkgPSAnZGFya01vZGUnO1xuXG5leHBvcnQgY29uc3QgbG9jYWxTdG9yYWdlU3R5bGVLZXkgPSAnc3R5bGUnO1xuXG5leHBvcnQgY29uc3QgY29udGFpbmVyTWF4VyA9ICd4bDptYXgtdy1mdWxsIHhsOm14LWF1dG8gMnhsOm14LTIwJztcblxuZXhwb3J0IGNvbnN0IGFwcFRpdGxlID0gJ2NyZWF0ZWQgYnkgRmxhdGxvZ2ljIGdlbmVyYXRvciEnO1xuXG5leHBvcnQgY29uc3QgZ2V0UGFnZVRpdGxlID0gKGN1cnJlbnRQYWdlVGl0bGU6IHN0cmluZykgPT5cbiAgYCR7Y3VycmVudFBhZ2VUaXRsZX0g4oCUICR7YXBwVGl0bGV9YDtcblxuZXhwb3J0IGNvbnN0IHRpbnlLZXkgPSAnY25zbHA2aDk0M3hiZzM2dDJ0ZjJ4Z2xtcnhpdzViN3RhdHljZjNraXI3bjJqN2VoJztcbiJdLCJuYW1lcyI6WyJob3N0QXBpIiwicHJvY2VzcyIsInBvcnRBcGkiLCJiYXNlVVJMQXBpIiwibG9jYWxTdG9yYWdlRGFya01vZGVLZXkiLCJsb2NhbFN0b3JhZ2VTdHlsZUtleSIsImNvbnRhaW5lck1heFciLCJhcHBUaXRsZSIsImdldFBhZ2VUaXRsZSIsImN1cnJlbnRQYWdlVGl0bGUiLCJ0aW55S2V5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/config.ts\n"));
/***/ }),
/***/ "./src/helpers/notifyStateHandler.ts":
/*!*******************************************!*\
!*** ./src/helpers/notifyStateHandler.ts ***!
\*******************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fulfilledNotify: function() { return /* binding */ fulfilledNotify; },\n/* harmony export */ rejectNotify: function() { return /* binding */ rejectNotify; },\n/* harmony export */ resetNotify: function() { return /* binding */ resetNotify; }\n/* harmony export */ });\nconst resetNotify = (state)=>{\n state.notify.showNotification = false;\n state.notify.typeNotification = \"\";\n state.notify.textNotification = \"\";\n};\nconst rejectNotify = (state, action)=>{\n if (typeof action.payload === \"string\") {\n state.notify.textNotification = action.payload;\n } else if (typeof action === \"object\") {\n var _action_payload;\n const obj = {\n ...(_action_payload = action.payload) === null || _action_payload === void 0 ? void 0 : _action_payload.errors\n };\n delete obj[\"_errors\"];\n let msg = \"\";\n for(const key in obj){\n msg += \"\".concat(key, \": \").concat(obj[key][\"_errors\"], \"; \\n \");\n }\n state.notify.textNotification = msg;\n } else {\n state.notify.textNotification = \"\";\n }\n state.notify.typeNotification = \"error\";\n state.notify.showNotification = true;\n};\nconst fulfilledNotify = (state, msg)=>{\n state.notify.textNotification = msg;\n state.notify.typeNotification = \"success\";\n state.notify.showNotification = true;\n};\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaGVscGVycy9ub3RpZnlTdGF0ZUhhbmRsZXIudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sTUFBTUEsY0FBYyxDQUFDQztJQUMxQkEsTUFBTUMsTUFBTSxDQUFDQyxnQkFBZ0IsR0FBRztJQUNoQ0YsTUFBTUMsTUFBTSxDQUFDRSxnQkFBZ0IsR0FBRztJQUNoQ0gsTUFBTUMsTUFBTSxDQUFDRyxnQkFBZ0IsR0FBRztBQUNsQyxFQUFFO0FBQ0ssTUFBTUMsZUFBZSxDQUFDTCxPQUFPTTtJQUNsQyxJQUFJLE9BQU9BLE9BQU9DLE9BQU8sS0FBSyxVQUFVO1FBQ3RDUCxNQUFNQyxNQUFNLENBQUNHLGdCQUFnQixHQUFHRSxPQUFPQyxPQUFPO0lBQ2hELE9BQU8sSUFBSSxPQUFPRCxXQUFXLFVBQVU7WUFDcEJBO1FBQWpCLE1BQU1FLE1BQU07Z0JBQUtGLGtCQUFBQSxPQUFPQyxPQUFPLGNBQWRELHNDQUFBQSxnQkFBZ0JHLE1BQU07UUFBQztRQUN4QyxPQUFPRCxHQUFHLENBQUMsVUFBVTtRQUVyQixJQUFJRSxNQUFNO1FBRVYsSUFBSyxNQUFNQyxPQUFPSCxJQUFLO1lBQ3JCRSxPQUFPLEdBQVdGLE9BQVJHLEtBQUksTUFBd0IsT0FBcEJILEdBQUcsQ0FBQ0csSUFBSSxDQUFDLFVBQVUsRUFBQztRQUN4QztRQUVBWCxNQUFNQyxNQUFNLENBQUNHLGdCQUFnQixHQUFHTTtJQUNsQyxPQUFPO1FBQ0xWLE1BQU1DLE1BQU0sQ0FBQ0csZ0JBQWdCLEdBQUc7SUFDbEM7SUFDQUosTUFBTUMsTUFBTSxDQUFDRSxnQkFBZ0IsR0FBRztJQUNoQ0gsTUFBTUMsTUFBTSxDQUFDQyxnQkFBZ0IsR0FBRztBQUNsQyxFQUFFO0FBQ0ssTUFBTVUsa0JBQWtCLENBQUNaLE9BQU9VO0lBQ3JDVixNQUFNQyxNQUFNLENBQUNHLGdCQUFnQixHQUFHTTtJQUNoQ1YsTUFBTUMsTUFBTSxDQUFDRSxnQkFBZ0IsR0FBRztJQUNoQ0gsTUFBTUMsTUFBTSxDQUFDQyxnQkFBZ0IsR0FBRztBQUNsQyxFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9oZWxwZXJzL25vdGlmeVN0YXRlSGFuZGxlci50cz84YWMwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByZXNldE5vdGlmeSA9IChzdGF0ZSkgPT4ge1xuICBzdGF0ZS5ub3RpZnkuc2hvd05vdGlmaWNhdGlvbiA9IGZhbHNlO1xuICBzdGF0ZS5ub3RpZnkudHlwZU5vdGlmaWNhdGlvbiA9ICcnO1xuICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9ICcnO1xufTtcbmV4cG9ydCBjb25zdCByZWplY3ROb3RpZnkgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICBpZiAodHlwZW9mIGFjdGlvbi5wYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgIHN0YXRlLm5vdGlmeS50ZXh0Tm90aWZpY2F0aW9uID0gYWN0aW9uLnBheWxvYWQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGFjdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBvYmogPSB7IC4uLmFjdGlvbi5wYXlsb2FkPy5lcnJvcnMgfTtcbiAgICBkZWxldGUgb2JqWydfZXJyb3JzJ107XG5cbiAgICBsZXQgbXNnID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgIG1zZyArPSBgJHtrZXl9OiAke29ialtrZXldWydfZXJyb3JzJ119OyBcXG4gYDtcbiAgICB9XG5cbiAgICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9IG1zZztcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9ICcnO1xuICB9XG4gIHN0YXRlLm5vdGlmeS50eXBlTm90aWZpY2F0aW9uID0gJ2Vycm9yJztcbiAgc3RhdGUubm90aWZ5LnNob3dOb3RpZmljYXRpb24gPSB0cnVlO1xufTtcbmV4cG9ydCBjb25zdCBmdWxmaWxsZWROb3RpZnkgPSAoc3RhdGUsIG1zZykgPT4ge1xuICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9IG1zZztcbiAgc3RhdGUubm90aWZ5LnR5cGVOb3RpZmljYXRpb24gPSAnc3VjY2Vzcyc7XG4gIHN0YXRlLm5vdGlmeS5zaG93Tm90aWZpY2F0aW9uID0gdHJ1ZTtcbn07XG4iXSwibmFtZXMiOlsicmVzZXROb3RpZnkiLCJzdGF0ZSIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0eXBlTm90aWZpY2F0aW9uIiwidGV4dE5vdGlmaWNhdGlvbiIsInJlamVjdE5vdGlmeSIsImFjdGlvbiIsInBheWxvYWQiLCJvYmoiLCJlcnJvcnMiLCJtc2ciLCJrZXkiLCJmdWxmaWxsZWROb3RpZnkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/helpers/notifyStateHandler.ts\n"));
/***/ }),
/***/ "./src/pages/_app.tsx":
/*!****************************!*\
!*** ./src/pages/_app.tsx ***!
\****************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"./node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ \"./node_modules/next/head.js\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _stores_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stores/store */ \"./src/stores/store.ts\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _css_main_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../css/main.css */ \"./src/css/main.css\");\n/* harmony import */ var _css_main_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_css_main_css__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../config */ \"./src/config.ts\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! next/router */ \"./node_modules/next/router.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var intro_js_introjs_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! intro.js/introjs.css */ \"./node_modules/intro.js/introjs.css\");\n/* harmony import */ var intro_js_introjs_css__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(intro_js_introjs_css__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _components_IntroGuide__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../components/IntroGuide */ \"./src/components/IntroGuide.tsx\");\n/* harmony import */ var _stores_introSteps__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../stores/introSteps */ \"./src/stores/introSteps.ts\");\n\nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\nfunction MyApp(param) {\n let { Component, pageProps } = param;\n _s();\n // Use the layout defined at the page level, if available\n const getLayout = Component.getLayout || ((page)=>page);\n if (true) {\n // Perform localStorage action\n console.log(\"process.env.NEXT_PUBLIC_BACK_API\", \"https://test3-29605-dev-vmtp6e5axa-uc.a.run.app/api\");\n axios__WEBPACK_IMPORTED_MODULE_11__[\"default\"].defaults.baseURL = true ? \"https://test3-29605-dev-vmtp6e5axa-uc.a.run.app/api\" : 0;\n axios__WEBPACK_IMPORTED_MODULE_11__[\"default\"].defaults.headers.common[\"Content-Type\"] = \"application/json\";\n const token = localStorage.getItem(\"token\");\n if (token) {\n axios__WEBPACK_IMPORTED_MODULE_11__[\"default\"].defaults.headers.common[\"Authorization\"] = \"Bearer \" + token;\n }\n }\n react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(()=>{\n if (true) {\n const handleMessage = (event)=>{\n if (event.data === \"getLocation\") {\n event.source.postMessage({\n iframeLocation: window.location.pathname\n }, event.origin);\n }\n };\n window.addEventListener(\"message\", handleMessage);\n // Cleanup listener on unmount\n return ()=>{\n window.removeEventListener(\"message\", handleMessage);\n };\n }\n }, []);\n const title = \"test3\";\n const description = \"test3 generated by Flatlogic\";\n const url = \"https://flatlogic.com/\";\n const image = \"https://flatlogic.com/logo.svg\";\n const imageWidth = \"1920\";\n const imageHeight = \"960\";\n const [stepsEnabled, setStepsEnabled] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(true);\n const [stepName, setStepName] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(\"\");\n const [steps, setSteps] = react__WEBPACK_IMPORTED_MODULE_1___default().useState([]);\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_7__.useRouter)();\n react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(()=>{\n const isCompleted = (stepKey)=>{\n return localStorage.getItem(\"completed_\".concat(stepKey)) === \"true\";\n };\n if (router.pathname === \"/login\" && !isCompleted(\"loginSteps\")) {\n setSteps(_stores_introSteps__WEBPACK_IMPORTED_MODULE_10__.loginSteps);\n setStepName(\"loginSteps\");\n setStepsEnabled(true);\n } else if (router.pathname === \"/\" && !isCompleted(\"landingSteps\")) {\n setSteps(_stores_introSteps__WEBPACK_IMPORTED_MODULE_10__.landingSteps);\n setStepName(\"landingSteps\");\n setStepsEnabled(true);\n } else if (router.pathname === \"/dashboard\" && !isCompleted(\"appSteps\")) {\n setTimeout(()=>{\n setSteps(_stores_introSteps__WEBPACK_IMPORTED_MODULE_10__.appSteps);\n setStepName(\"appSteps\");\n setStepsEnabled(true);\n }, 1000);\n } else if (router.pathname === \"/users/users-list\" && !isCompleted(\"usersSteps\")) {\n setTimeout(()=>{\n setSteps(_stores_introSteps__WEBPACK_IMPORTED_MODULE_10__.usersSteps);\n setStepName(\"usersSteps\");\n setStepsEnabled(true);\n }, 1000);\n } else if (router.pathname === \"/roles/roles-list\" && !isCompleted(\"rolesSteps\")) {\n setTimeout(()=>{\n setSteps(_stores_introSteps__WEBPACK_IMPORTED_MODULE_10__.rolesSteps);\n setStepName(\"rolesSteps\");\n setStepsEnabled(true);\n }, 1000);\n } else {\n setSteps([]);\n setStepsEnabled(false);\n }\n }, [\n router.pathname\n ]);\n const handleExit = ()=>{\n setStepsEnabled(false);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_redux__WEBPACK_IMPORTED_MODULE_4__.Provider, {\n store: _stores_store__WEBPACK_IMPORTED_MODULE_3__.store,\n children: getLayout(/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n name: \"description\",\n content: description\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 140,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:url\",\n content: url\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 142,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:site_name\",\n content: \"https://flatlogic.com/\"\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 143,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:title\",\n content: title\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 144,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:description\",\n content: description\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:image\",\n content: image\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 146,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:image:type\",\n content: \"image/png\"\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 147,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:image:width\",\n content: imageWidth\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"og:image:height\",\n content: imageHeight\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 149,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:card\",\n content: \"summary_large_image\"\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 151,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:title\",\n content: title\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 152,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:description\",\n content: description\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 153,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:image:src\",\n content: image\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 154,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:image:width\",\n content: imageWidth\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 155,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"meta\", {\n property: \"twitter:image:height\",\n content: imageHeight\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 156,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"icon\",\n href: \"/favicon.svg\"\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 158,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 139,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 161,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_IntroGuide__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n steps: steps,\n stepsName: stepName,\n stepsEnabled: stepsEnabled,\n onExit: handleExit\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 162,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true))\n }, void 0, false, {\n fileName: \"/app/frontend/src/pages/_app.tsx\",\n lineNumber: 136,\n columnNumber: 5\n }, this);\n}\n_s(MyApp, \"1mrRVxK0VAxwclVgA6HVIJsFmAI=\", false, function() {\n return [\n next_router__WEBPACK_IMPORTED_MODULE_7__.useRouter\n ];\n});\n_c = MyApp;\n/* harmony default export */ __webpack_exports__[\"default\"] = (MyApp);\nvar _c;\n$RefreshReg$(_c, \"MyApp\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Uzs0QkFBdUJELFNBQVNmOzs7Ozs7c0NBRS9DLDhEQUFDaUI7NEJBQUtDLEtBQUk7NEJBQU9DLE1BQUs7Ozs7Ozs7Ozs7Ozs4QkFHeEIsOERBQUNyRDtvQkFBVyxHQUFHQyxTQUFTOzs7Ozs7OEJBQ3hCLDhEQUFDUiw4REFBVUE7b0JBQ1QrQyxPQUFPQTtvQkFDUGMsV0FBV2hCO29CQUNYSCxjQUFjQTtvQkFDZG9CLFFBQVFUOzs7Ozs7Ozs7Ozs7O0FBTXBCO0dBM0lTL0M7O1FBdURRUCxrREFBU0E7OztLQXZEakJPO0FBNklULCtEQUFlQSxLQUFLQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9wYWdlcy9fYXBwLnRzeD9mOWQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IEFwcFByb3BzIH0gZnJvbSAnbmV4dC9hcHAnO1xuaW1wb3J0IHR5cGUgeyBSZWFjdEVsZW1lbnQsIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTmV4dFBhZ2UgfSBmcm9tICduZXh0JztcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCc7XG5pbXBvcnQgeyBzdG9yZSB9IGZyb20gJy4uL3N0b3Jlcy9zdG9yZSc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCAnLi4vY3NzL21haW4uY3NzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBiYXNlVVJMQXBpIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvcm91dGVyJztcbmltcG9ydCAnaW50cm8uanMvaW50cm9qcy5jc3MnO1xuaW1wb3J0IEludHJvR3VpZGUgZnJvbSAnLi4vY29tcG9uZW50cy9JbnRyb0d1aWRlJztcbmltcG9ydCB7XG4gIGFwcFN0ZXBzLFxuICBsYW5kaW5nU3RlcHMsXG4gIGxvZ2luU3RlcHMsXG4gIHVzZXJzU3RlcHMsXG4gIHJvbGVzU3RlcHMsXG59IGZyb20gJy4uL3N0b3Jlcy9pbnRyb1N0ZXBzJztcblxuZXhwb3J0IHR5cGUgTmV4dFBhZ2VXaXRoTGF5b3V0PFAgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgSVAgPSBQPiA9IE5leHRQYWdlPFxuICBQLFxuICBJUFxuPiAmIHtcbiAgZ2V0TGF5b3V0PzogKHBhZ2U6IFJlYWN0RWxlbWVudCkgPT4gUmVhY3ROb2RlO1xufTtcblxudHlwZSBBcHBQcm9wc1dpdGhMYXlvdXQgPSBBcHBQcm9wcyAmIHtcbiAgQ29tcG9uZW50OiBOZXh0UGFnZVdpdGhMYXlvdXQ7XG59O1xuXG5mdW5jdGlvbiBNeUFwcCh7IENvbXBvbmVudCwgcGFnZVByb3BzIH06IEFwcFByb3BzV2l0aExheW91dCkge1xuICAvLyBVc2UgdGhlIGxheW91dCBkZWZpbmVkIGF0IHRoZSBwYWdlIGxldmVsLCBpZiBhdmFpbGFibGVcbiAgY29uc3QgZ2V0TGF5b3V0ID0gQ29tcG9uZW50LmdldExheW91dCB8fCAoKHBhZ2UpID0+IHBhZ2UpO1xuXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIC8vIFBlcmZvcm0gbG9jYWxTdG9yYWdlIGFjdGlvblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ3Byb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0JBQ0tfQVBJJyxcbiAgICAgIHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0JBQ0tfQVBJLFxuICAgICk7XG4gICAgYXhpb3MuZGVmYXVsdHMuYmFzZVVSTCA9IHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0JBQ0tfQVBJXG4gICAgICA/IHByb2Nlc3MuZW52Lk5FWFRfUFVCTElDX0JBQ0tfQVBJXG4gICAgICA6IGJhc2VVUkxBcGk7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIGNvbnN0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rva2VuJyk7XG4gICAgaWYgKHRva2VuKSB7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gJ0JlYXJlciAnICsgdG9rZW47XG4gICAgfVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICdnZXRMb2NhdGlvbicpIHtcbiAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICB7IGlmcmFtZUxvY2F0aW9uOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgfSxcbiAgICAgICAgICAgIGV2ZW50Lm9yaWdpbixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpO1xuXG4gICAgICAvLyBDbGVhbnVwIGxpc3RlbmVyIG9uIHVubW91bnRcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHRpdGxlID0gJ3Rlc3QzJztcblxuICBjb25zdCBkZXNjcmlwdGlvbiA9ICd0ZXN0MyBnZW5lcmF0ZWQgYnkgRmxhdGxvZ2ljJztcblxuICBjb25zdCB1cmwgPSAnaHR0cHM6Ly9mbGF0bG9naWMuY29tLyc7XG5cbiAgY29uc3QgaW1hZ2UgPSBgaHR0cHM6Ly9mbGF0bG9naWMuY29tL2xvZ28uc3ZnYDtcblxuICBjb25zdCBpbWFnZVdpZHRoID0gJzE5MjAnO1xuXG4gIGNvbnN0IGltYWdlSGVpZ2h0ID0gJzk2MCc7XG5cbiAgY29uc3QgW3N0ZXBzRW5hYmxlZCwgc2V0U3RlcHNFbmFibGVkXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc3RlcE5hbWUsIHNldFN0ZXBOYW1lXSA9IFJlYWN0LnVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW3N0ZXBzLCBzZXRTdGVwc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlzQ29tcGxldGVkID0gKHN0ZXBLZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBjb21wbGV0ZWRfJHtzdGVwS2V5fWApID09PSAndHJ1ZSc7XG4gICAgfTtcbiAgICBpZiAocm91dGVyLnBhdGhuYW1lID09PSAnL2xvZ2luJyAmJiAhaXNDb21wbGV0ZWQoJ2xvZ2luU3RlcHMnKSkge1xuICAgICAgc2V0U3RlcHMobG9naW5TdGVwcyk7XG4gICAgICBzZXRTdGVwTmFtZSgnbG9naW5TdGVwcycpO1xuICAgICAgc2V0U3RlcHNFbmFibGVkKHRydWUpO1xuICAgIH0gZWxzZSBpZiAocm91dGVyLnBhdGhuYW1lID09PSAnLycgJiYgIWlzQ29tcGxldGVkKCdsYW5kaW5nU3RlcHMnKSkge1xuICAgICAgc2V0U3RlcHMobGFuZGluZ1N0ZXBzKTtcbiAgICAgIHNldFN0ZXBOYW1lKCdsYW5kaW5nU3RlcHMnKTtcbiAgICAgIHNldFN0ZXBzRW5hYmxlZCh0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHJvdXRlci5wYXRobmFtZSA9PT0gJy9kYXNoYm9hcmQnICYmICFpc0NvbXBsZXRlZCgnYXBwU3RlcHMnKSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFN0ZXBzKGFwcFN0ZXBzKTtcbiAgICAgICAgc2V0U3RlcE5hbWUoJ2FwcFN0ZXBzJyk7XG4gICAgICAgIHNldFN0ZXBzRW5hYmxlZCh0cnVlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICByb3V0ZXIucGF0aG5hbWUgPT09ICcvdXNlcnMvdXNlcnMtbGlzdCcgJiZcbiAgICAgICFpc0NvbXBsZXRlZCgndXNlcnNTdGVwcycpXG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U3RlcHModXNlcnNTdGVwcyk7XG4gICAgICAgIHNldFN0ZXBOYW1lKCd1c2Vyc1N0ZXBzJyk7XG4gICAgICAgIHNldFN0ZXBzRW5hYmxlZCh0cnVlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICByb3V0ZXIucGF0aG5hbWUgPT09ICcvcm9sZXMvcm9sZXMtbGlzdCcgJiZcbiAgICAgICFpc0NvbXBsZXRlZCgncm9sZXNTdGVwcycpXG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U3RlcHMocm9sZXNTdGVwcyk7XG4gICAgICAgIHNldFN0ZXBOYW1lKCdyb2xlc1N0ZXBzJyk7XG4gICAgICAgIHNldFN0ZXBzRW5hYmxlZCh0cnVlKTtcbiAgICAgIH0sIDEwMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdGVwcyhbXSk7XG4gICAgICBzZXRTdGVwc0VuYWJsZWQoZmFsc2UpO1xuICAgIH1cbiAgfSwgW3JvdXRlci5wYXRobmFtZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUV4aXQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcHNFbmFibGVkKGZhbHNlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAge2dldExheW91dChcbiAgICAgICAgPD5cbiAgICAgICAgICA8SGVhZD5cbiAgICAgICAgICAgIDxtZXRhIG5hbWU9J2Rlc2NyaXB0aW9uJyBjb250ZW50PXtkZXNjcmlwdGlvbn0gLz5cblxuICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9J29nOnVybCcgY29udGVudD17dXJsfSAvPlxuICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9J29nOnNpdGVfbmFtZScgY29udGVudD0naHR0cHM6Ly9mbGF0bG9naWMuY29tLycgLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSdvZzp0aXRsZScgY29udGVudD17dGl0bGV9IC8+XG4gICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0nb2c6ZGVzY3JpcHRpb24nIGNvbnRlbnQ9e2Rlc2NyaXB0aW9ufSAvPlxuICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9J29nOmltYWdlJyBjb250ZW50PXtpbWFnZX0gLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSdvZzppbWFnZTp0eXBlJyBjb250ZW50PSdpbWFnZS9wbmcnIC8+XG4gICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2U6d2lkdGgnIGNvbnRlbnQ9e2ltYWdlV2lkdGh9IC8+XG4gICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0nb2c6aW1hZ2U6aGVpZ2h0JyBjb250ZW50PXtpbWFnZUhlaWdodH0gLz5cblxuICAgICAgICAgICAgPG1ldGEgcHJvcGVydHk9J3R3aXR0ZXI6Y2FyZCcgY29udGVudD0nc3VtbWFyeV9sYXJnZV9pbWFnZScgLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSd0d2l0dGVyOnRpdGxlJyBjb250ZW50PXt0aXRsZX0gLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSd0d2l0dGVyOmRlc2NyaXB0aW9uJyBjb250ZW50PXtkZXNjcmlwdGlvbn0gLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSd0d2l0dGVyOmltYWdlOnNyYycgY29udGVudD17aW1hZ2V9IC8+XG4gICAgICAgICAgICA8bWV0YSBwcm9wZXJ0eT0ndHdpdHRlcjppbWFnZTp3aWR0aCcgY29udGVudD17aW1hZ2VXaWR0aH0gLz5cbiAgICAgICAgICAgIDxtZXRhIHByb3BlcnR5PSd0d2l0dGVyOmltYWdlOmhlaWdodCcgY29udGVudD17aW1hZ2VIZWlnaHR9IC8+XG5cbiAgICAgICAgICAgIDxsaW5rIHJlbD0naWNvbicgaHJlZj0nL2Zhdmljb24uc3ZnJyAvPlxuICAgICAgICAgIDwvSGVhZD5cblxuICAgICAgICAgIDxDb21wb25lbnQgey4uLnBhZ2VQcm9wc30gLz5cbiAgICAgICAgICA8SW50cm9HdWlkZVxuICAgICAgICAgICAgc3RlcHM9e3N0ZXBzfVxuICAgICAgICAgICAgc3RlcHNOYW1lPXtzdGVwTmFtZX1cbiAgICAgICAgICAgIHN0ZXBzRW5hYmxlZD17c3RlcHNFbmFibGVkfVxuICAgICAgICAgICAgb25FeGl0PXtoYW5kbGVFeGl0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPixcbiAgICAgICl9XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlBcHA7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJIZWFkIiwic3RvcmUiLCJQcm92aWRlciIsImF4aW9zIiwiYmFzZVVSTEFwaSIsInVzZVJvdXRlciIsIkludHJvR3VpZGUiLCJhcHBTdGVwcyIsImxhbmRpbmdTdGVwcyIsImxvZ2luU3RlcHMiLCJ1c2Vyc1N0ZXBzIiwicm9sZXNTdGVwcyIsIk15QXBwIiwiQ29tcG9uZW50IiwicGFnZVByb3BzIiwiZ2V0TGF5b3V0IiwicGFnZSIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9QVUJMSUNfQkFDS19BUEkiLCJkZWZhdWx0cyIsImJhc2VVUkwiLCJoZWFkZXJzIiwiY29tbW9uIiwidG9rZW4iLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwidXNlRWZmZWN0IiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwiZGF0YSIsInNvdXJjZSIsInBvc3RNZXNzYWdlIiwiaWZyYW1lTG9jYXRpb24iLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwib3JpZ2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwidXJsIiwiaW1hZ2UiLCJpbWFnZVdpZHRoIiwiaW1hZ2VIZWlnaHQiLCJzdGVwc0VuYWJsZWQiLCJzZXRTdGVwc0VuYWJsZWQiLCJ1c2VTdGF0ZSIsInN0ZXBOYW1lIiwic2V0U3RlcE5hbWUiLCJzdGVwcyIsInNldFN0ZXBzIiwicm91dGVyIiwiaXNDb21wbGV0ZWQiLCJzdGVwS2V5Iiwic2V0VGltZW91dCIsImhhbmRsZUV4aXQiLCJtZXRhIiwibmFtZSIsImNvbnRlbnQiLCJwcm9wZXJ0eSIsImxpbmsiLCJyZWwiLCJocmVmIiwic3RlcHNOYW1lIiwib25FeGl0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/pages/_app.tsx\n"));
/***/ }),
/***/ "./src/stores/analytics/analyticsSlice.ts":
/*!************************************************!*\
!*** ./src/stores/analytics/analyticsSlice.ts ***!
\************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ analyticsSlice: function() { return /* binding */ analyticsSlice; },\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n analytics: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"analytics\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"analytics/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/deleteAnalytics\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"analytics/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/createAnalytics\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"analytics\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"analytics/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"analytics/updateAnalytics\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"analytics/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst analyticsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"analytics\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.analytics = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.analytics = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Analytics has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Analytics\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Analytics\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Analytics\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Analytics has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = analyticsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (analyticsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL2FuYWx5dGljcy9hbmFseXRpY3NTbGljZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFnRjtBQUN0RDtBQUtnQjtBQWUxQyxNQUFNTSxlQUEwQjtJQUM5QkMsV0FBVyxFQUFFO0lBQ2JDLFNBQVM7SUFDVEMsT0FBTztJQUNQQyxTQUFTO0lBQ1RDLGNBQWMsRUFBRTtJQUNoQkMsUUFBUTtRQUNOQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtRQUNsQkMsa0JBQWtCO0lBQ3BCO0FBQ0Y7QUFFTyxNQUFNQyxRQUFRZixrRUFBZ0JBLENBQUMsbUJBQW1CLE9BQU9nQjtJQUM5RCxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLFNBQVMsTUFBTWxCLGlEQUFTLENBQUMsWUFBMEMsT0FBOUJpQixTQUFVRCxDQUFBQSxLQUFLLElBQU8sT0FBSEEsTUFBTyxFQUFDO0lBQ3RFLE9BQU9BLEtBQ0hFLE9BQU9ILElBQUksR0FDWDtRQUFFSyxNQUFNRixPQUFPSCxJQUFJLENBQUNLLElBQUk7UUFBRWIsT0FBT1csT0FBT0gsSUFBSSxDQUFDUixLQUFLO0lBQUM7QUFDekQsR0FBRztBQUVJLE1BQU1jLG1CQUFtQnRCLGtFQUFnQkEsQ0FDOUMseUJBQ0EsT0FBT2dCO1FBQVcsRUFBRU8sZUFBZSxFQUFFO0lBQ25DLElBQUk7UUFDRixNQUFNdEIsa0RBQVUsQ0FBQyx5QkFBeUI7WUFBRWU7UUFBSztJQUNuRCxFQUFFLE9BQU9TLE9BQU87UUFDZCxJQUFJLENBQUNBLE1BQU1DLFFBQVEsRUFBRTtZQUNuQixNQUFNRDtRQUNSO1FBRUEsT0FBT0YsZ0JBQWdCRSxNQUFNQyxRQUFRLENBQUNWLElBQUk7SUFDNUM7QUFDRixHQUNBO0FBRUssTUFBTVcsYUFBYTNCLGtFQUFnQkEsQ0FDeEMsNkJBQ0EsT0FBT2lCO1FBQVksRUFBRU0sZUFBZSxFQUFFO0lBQ3BDLElBQUk7UUFDRixNQUFNdEIsdURBQVksQ0FBQyxhQUFn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QztBQUVyRCwrREFBZVosZUFBZWEsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9zdG9yZXMvYW5hbHl0aWNzL2FuYWx5dGljc1NsaWNlLnRzPzEzNTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIGFuYWx5dGljczogYW55O1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBjb3VudDogbnVtYmVyO1xuICByZWZldGNoOiBib29sZWFuO1xuICByb2xlc1dpZGdldHM6IGFueVtdO1xuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAgIHRleHROb3RpZmljYXRpb246IHN0cmluZztcbiAgICB0eXBlTm90aWZpY2F0aW9uOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTWFpblN0YXRlID0ge1xuICBhbmFseXRpY3M6IFtdLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY291bnQ6IDAsXG4gIHJlZmV0Y2g6IGZhbHNlLFxuICByb2xlc1dpZGdldHM6IFtdLFxuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBmYWxzZSxcbiAgICB0ZXh0Tm90aWZpY2F0aW9uOiAnJyxcbiAgICB0eXBlTm90aWZpY2F0aW9uOiAnd2FybicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2ggPSBjcmVhdGVBc3luY1RodW5rKCdhbmFseXRpY3MvZmV0Y2gnLCBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5nZXQoYGFuYWx5dGljcyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCk7XG4gIHJldHVybiBpZFxuICAgID8gcmVzdWx0LmRhdGFcbiAgICA6IHsgcm93czogcmVzdWx0LmRhdGEucm93cywgY291bnQ6IHJlc3VsdC5kYXRhLmNvdW50IH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnYW5hbHl0aWNzL2RlbGV0ZUJ5SWRzJyxcbiAgYXN5bmMgKGRhdGE6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBheGlvcy5wb3N0KCdhbmFseXRpY3MvZGVsZXRlQnlJZHMnLCB7IGRhdGEgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW0gPSBjcmVhdGVBc3luY1RodW5rKFxuICAnYW5hbHl0aWNzL2RlbGV0ZUFuYWx5dGljcycsXG4gIGFzeW5jIChpZDogc3RyaW5nLCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLmRlbGV0ZShgYW5hbHl0aWNzLyR7aWR9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdhbmFseXRpY3MvY3JlYXRlQW5hbHl0aWNzJyxcbiAgYXN5bmMgKGRhdGE6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5wb3N0KCdhbmFseXRpY3MnLCB7IGRhdGEgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZENzdiA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdhbmFseXRpY3MvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2FuYWx5dGljcy9idWxrLWltcG9ydCcsIGRhdGEsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnYW5hbHl0aWNzL3VwZGF0ZUFuYWx5dGljcycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBhbmFseXRpY3MvJHtwYXlsb2FkLmlkfWAsIHtcbiAgICAgICAgaWQ6IHBheWxvYWQuaWQsXG4gICAgICAgIGRhdGE6IHBheWxvYWQuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBhbmFseXRpY3NTbGljZSA9IGNyZWF0ZVNsaWNlKHtcbiAgbmFtZTogJ2FuYWx5dGljcycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUuYW5hbHl0aWNzID0gYWN0aW9uLnBheWxvYWQucm93cztcbiAgICAgICAgc3RhdGUuY291bnQgPSBhY3Rpb24ucGF5bG9hZC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLmFuYWx5dGljcyA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgfVxuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsICdBbmFseXRpY3MgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J0FuYWx5dGljcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBkZWxldGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnQW5hbHl0aWNzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGNyZWF0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydBbmFseXRpY3MnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnQW5hbHl0aWNzIGhhcyBiZWVuIHVwbG9hZGVkJyk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnMgYXJlIGdlbmVyYXRlZCBmb3IgZWFjaCBjYXNlIHJlZHVjZXIgZnVuY3Rpb25cbmV4cG9ydCBjb25zdCB7IHNldFJlZmV0Y2ggfSA9IGFuYWx5dGljc1NsaWNlLmFjdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IGFuYWx5dGljc1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsImFuYWx5dGljcyIsImxvYWRpbmciLCJjb3VudCIsInJlZmV0Y2giLCJyb2xlc1dpZGdldHMiLCJub3RpZnkiLCJzaG93Tm90aWZpY2F0aW9uIiwidGV4dE5vdGlmaWNhdGlvbiIsInR5cGVOb3RpZmljYXRpb24iLCJmZXRjaCIsImRhdGEiLCJpZCIsInF1ZXJ5IiwicmVzdWx0IiwiZ2V0Iiwicm93cyIsImRlbGV0ZUl0ZW1zQnlJZHMiLCJyZWplY3RXaXRoVmFsdWUiLCJwb3N0IiwiZXJyb3IiLCJyZXNwb25zZSIsImRlbGV0ZUl0ZW0iLCJkZWxldGUiLCJjcmVhdGUiLCJ1cGxvYWRDc3YiLCJmaWxlIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJuYW1lIiwiaGVhZGVycyIsInVwZGF0ZSIsInBheWxvYWQiLCJwdXQiLCJhbmFseXRpY3NTbGljZSIsInJlZHVjZXJzIiwic2V0UmVmZXRjaCIsInN0YXRlIiwiYWN0aW9uIiwiZXh0cmFSZWR1Y2VycyIsImJ1aWxkZXIiLCJhZGRDYXNlIiwicGVuZGluZyIsInJlamVjdGVkIiwiZnVsZmlsbGVkIiwic2xpY2UiLCJhY3Rpb25zIiwicmVkdWNlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/stores/analytics/analyticsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/authSlice.ts":
/*!*********************************!*\
!*** ./src/stores/authSlice.ts ***!
\*********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ authSlice: function() { return /* binding */ authSlice; },\n/* harmony export */ findMe: function() { return /* binding */ findMe; },\n/* harmony export */ loginUser: function() { return /* binding */ loginUser; },\n/* harmony export */ logoutUser: function() { return /* binding */ logoutUser; },\n/* harmony export */ passwordReset: function() { return /* binding */ passwordReset; },\n/* harmony export */ resetAction: function() { return /* binding */ resetAction; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var jsonwebtoken__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonwebtoken */ \"./node_modules/jsonwebtoken/index.js\");\n/* harmony import */ var jsonwebtoken__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonwebtoken__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\nconst initialState = {\n /* User */ isFetching: false,\n errorMessage: \"\",\n currentUser: null,\n token: \"\",\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst resetAction = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAction)(\"auth/passwordReset/reset\");\nconst loginUser = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"auth/loginUser\", async (creds, param)=>{\n let { rejectWithValue } = param;\n try {\n const response = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"auth/signin/local\", creds);\n return response.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst passwordReset = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"auth/passwordReset\", async (value, param)=>{\n let { rejectWithValue } = param;\n try {\n const { data: response } = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"/auth/password-reset\", {\n token: value.token,\n password: value.password,\n type: value.type\n });\n return response.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst findMe = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"auth/findMe\", async ()=>{\n const response = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"auth/me\");\n return response.data;\n});\nconst authSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"auth\",\n initialState,\n reducers: {\n logoutUser: (state)=>{\n localStorage.removeItem(\"token\");\n localStorage.removeItem(\"user\");\n axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaults.headers.common[\"Authorization\"] = \"\";\n state.currentUser = null;\n state.token = \"\";\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(loginUser.pending, (state)=>{\n state.isFetching = true;\n });\n builder.addCase(loginUser.fulfilled, (state, action)=>{\n const token = action.payload;\n const user = jsonwebtoken__WEBPACK_IMPORTED_MODULE_0___default().decode(token);\n state.errorMessage = \"\";\n state.token = token;\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"user\", JSON.stringify(user));\n axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].defaults.headers.common[\"Authorization\"] = \"Bearer \" + token;\n });\n builder.addCase(loginUser.rejected, (state, action)=>{\n state.errorMessage = String(action.payload) || \"Something went wrong. Try again\";\n state.isFetching = false;\n });\n builder.addCase(findMe.pending, ()=>{\n console.log(\"Pending findMe\");\n });\n builder.addCase(findMe.fulfilled, (state, action)=>{\n state.currentUser = action.payload;\n state.isFetching = false;\n });\n builder.addCase(passwordReset.fulfilled, (state, action)=>{\n state.notify.showNotification = true;\n state.notify.textNotification = \"Password has been reset successfully\";\n });\n builder.addCase(resetAction, (state)=>initialState);\n builder.addCase(passwordReset.rejected, (state)=>{\n state.errorMessage = \"Something was wrong. Try again\";\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { logoutUser } = authSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (authSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TyxDQUFDZCxPQUFPZSxPQUFPLEVBQUU7WUFDOUJXLFFBQVFDLEdBQUcsQ0FBQztRQUNkO1FBQ0FkLFFBQVFDLE9BQU8sQ0FBQ2QsT0FBT2dCLFNBQVMsRUFBRSxDQUFDVixPQUFPVztZQUN4Q1gsTUFBTXpCLFdBQVcsR0FBR29DLE9BQU9DLE9BQU87WUFDbENaLE1BQU0zQixVQUFVLEdBQUc7UUFDckI7UUFFQWtDLFFBQVFDLE9BQU8sQ0FBQ25CLGNBQWNxQixTQUFTLEVBQUUsQ0FBQ1YsT0FBT1c7WUFDL0NYLE1BQU12QixNQUFNLENBQUNDLGdCQUFnQixHQUFHO1lBQ2hDc0IsTUFBTXZCLE1BQU0sQ0FBQ0UsZ0JBQWdCLEdBQUc7UUFDbEM7UUFFQTRCLFFBQVFDLE9BQU8sQ0FBQzNCLGFBQWEsQ0FBQ21CLFFBQVU1QjtRQUV4Q21DLFFBQVFDLE9BQU8sQ0FBQ25CLGNBQWM2QixRQUFRLEVBQUUsQ0FBQ2xCO1lBQ3ZDQSxNQUFNMUIsWUFBWSxHQUFHO1FBQ3ZCO0lBQ0Y7QUFDRixHQUFHO0FBRUgsK0RBQStEO0FBQ3hELE1BQU0sRUFBRXlCLFVBQVUsRUFBRSxHQUFHSCxVQUFVMEIsT0FBTyxDQUFDO0FBRWhELCtEQUFlMUIsVUFBVTJCLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvc3RvcmVzL2F1dGhTbGljZS50cz81NjUyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNsaWNlLCBjcmVhdGVBc3luY1RodW5rLCBjcmVhdGVBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5cbmludGVyZmFjZSBNYWluU3RhdGUge1xuICBpc0ZldGNoaW5nOiBib29sZWFuO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgY3VycmVudFVzZXI6IGFueTtcbiAgbm90aWZ5OiBhbnk7XG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTWFpblN0YXRlID0ge1xuICAvKiBVc2VyICovXG4gIGlzRmV0Y2hpbmc6IGZhbHNlLFxuICBlcnJvck1lc3NhZ2U6ICcnLFxuICBjdXJyZW50VXNlcjogbnVsbCxcbiAgdG9rZW46ICcnLFxuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBmYWxzZSxcbiAgICB0ZXh0Tm90aWZpY2F0aW9uOiAnJyxcbiAgICB0eXBlTm90aWZpY2F0aW9uOiAnd2FybicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRBY3Rpb24gPSBjcmVhdGVBY3Rpb24oJ2F1dGgvcGFzc3dvcmRSZXNldC9yZXNldCcpO1xuXG5leHBvcnQgY29uc3QgbG9naW5Vc2VyID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2F1dGgvbG9naW5Vc2VyJyxcbiAgYXN5bmMgKGNyZWRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MucG9zdCgnYXV0aC9zaWduaW4vbG9jYWwnLCBjcmVkcyk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFlcnJvci5yZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkUmVzZXQgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnYXV0aC9wYXNzd29yZFJlc2V0JyxcbiAgYXN5bmMgKHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogcmVzcG9uc2UgfSA9IGF3YWl0IGF4aW9zLnB1dCgnL2F1dGgvcGFzc3dvcmQtcmVzZXQnLCB7XG4gICAgICAgIHRva2VuOiB2YWx1ZS50b2tlbixcbiAgICAgICAgcGFzc3dvcmQ6IHZhbHVlLnBhc3N3b3JkLFxuICAgICAgICB0eXBlOiB2YWx1ZS50eXBlLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBmaW5kTWUgPSBjcmVhdGVBc3luY1RodW5rKCdhdXRoL2ZpbmRNZScsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoJ2F1dGgvbWUnKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG59KTtcblxuZXhwb3J0IGNvbnN0IGF1dGhTbGljZSA9IGNyZWF0ZVNsaWNlKHtcbiAgbmFtZTogJ2F1dGgnLFxuICBpbml0aWFsU3RhdGUsXG4gIHJlZHVjZXJzOiB7XG4gICAgbG9nb3V0VXNlcjogKHN0YXRlKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9rZW4nKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c2VyJyk7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gJyc7XG4gICAgICBzdGF0ZS5jdXJyZW50VXNlciA9IG51bGw7XG4gICAgICBzdGF0ZS50b2tlbiA9ICcnO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGxvZ2luVXNlci5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmlzRmV0Y2hpbmcgPSB0cnVlO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShsb2dpblVzZXIuZnVsZmlsbGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IHVzZXIgPSBqd3QuZGVjb2RlKHRva2VuKTtcblxuICAgICAgc3RhdGUuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICBzdGF0ZS50b2tlbiA9IHRva2VuO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgdG9rZW4pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VzZXInLCBKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG4gICAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID0gJ0JlYXJlciAnICsgdG9rZW47XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UobG9naW5Vc2VyLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUuZXJyb3JNZXNzYWdlID1cbiAgICAgICAgU3RyaW5nKGFjdGlvbi5wYXlsb2FkKSB8fCAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFRyeSBhZ2Fpbic7XG4gICAgICBzdGF0ZS5pc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZpbmRNZS5wZW5kaW5nLCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnUGVuZGluZyBmaW5kTWUnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoZmluZE1lLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmN1cnJlbnRVc2VyID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgICBzdGF0ZS5pc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UocGFzc3dvcmRSZXNldC5mdWxmaWxsZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5ub3RpZnkuc2hvd05vdGlmaWNhdGlvbiA9IHRydWU7XG4gICAgICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9ICdQYXNzd29yZCBoYXMgYmVlbiByZXNldCBzdWNjZXNzZnVsbHknO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKHJlc2V0QWN0aW9uLCAoc3RhdGUpID0+IGluaXRpYWxTdGF0ZSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UocGFzc3dvcmRSZXNldC5yZWplY3RlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5lcnJvck1lc3NhZ2UgPSAnU29tZXRoaW5nIHdhcyB3cm9uZy4gVHJ5IGFnYWluJztcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnMgYXJlIGdlbmVyYXRlZCBmb3IgZWFjaCBjYXNlIHJlZHVjZXIgZnVuY3Rpb25cbmV4cG9ydCBjb25zdCB7IGxvZ291dFVzZXIgfSA9IGF1dGhTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBhdXRoU2xpY2UucmVkdWNlcjtcbiJdLCJuYW1lcyI6WyJjcmVhdGVTbGljZSIsImNyZWF0ZUFzeW5jVGh1bmsiLCJjcmVhdGVBY3Rpb24iLCJheGlvcyIsImp3dCIsImluaXRpYWxTdGF0ZSIsImlzRmV0Y2hpbmciLCJlcnJvck1lc3NhZ2UiLCJjdXJyZW50VXNlciIsInRva2VuIiwibm90aWZ5Iiwic2hvd05vdGlmaWNhdGlvbiIsInRleHROb3RpZmljYXRpb24iLCJ0eXBlTm90aWZpY2F0aW9uIiwicmVzZXRBY3Rpb24iLCJsb2dpblVzZXIiLCJjcmVkcyIsInJlamVjdFdpdGhWYWx1ZSIsInJlc3BvbnNlIiwicG9zdCIsImRhdGEiLCJlcnJvciIsInBhc3N3b3JkUmVzZXQiLCJ2YWx1ZSIsInB1dCIsInBhc3N3b3JkIiwidHlwZSIsImZpbmRNZSIsImdldCIsImF1dGhTbGljZSIsIm5hbWUiLCJyZWR1Y2VycyIsImxvZ291dFVzZXIiLCJzdGF0ZSIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJleHRyYVJlZHVjZXJzIiwiYnVpbGRlciIsImFkZENhc2UiLCJwZW5kaW5nIiwiZnVsZmlsbGVkIiwiYWN0aW9uIiwicGF5bG9hZCIsInVzZXIiLCJkZWNvZGUiLCJzZXRJdGVtIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlamVjdGVkIiwiU3RyaW5nIiwiY29uc29sZSIsImxvZyIsImFjdGlvbnMiLCJyZWR1Y2VyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/stores/authSlice.ts\n"));
/***/ }),
/***/ "./src/stores/courses/coursesSlice.ts":
/*!********************************************!*\
!*** ./src/stores/courses/coursesSlice.ts ***!
\********************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ coursesSlice: function() { return /* binding */ coursesSlice; },\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n courses: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"courses\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"courses/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/deleteCourses\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"courses/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/createCourses\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"courses\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"courses/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"courses/updateCourses\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"courses/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst coursesSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"courses\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.courses = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.courses = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Courses has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Courses\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Courses\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Courses\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Courses has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = coursesSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (coursesSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LCtEQUFlWixhQUFhYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9jb3Vyc2VzL2NvdXJzZXNTbGljZS50cz82NTMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNsaWNlLCBjcmVhdGVBc3luY1RodW5rLCBQYXlsb2FkQWN0aW9uIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgZnVsZmlsbGVkTm90aWZ5LFxuICByZWplY3ROb3RpZnksXG4gIHJlc2V0Tm90aWZ5LFxufSBmcm9tICcuLi8uLi9oZWxwZXJzL25vdGlmeVN0YXRlSGFuZGxlcic7XG5cbmludGVyZmFjZSBNYWluU3RhdGUge1xuICBjb3Vyc2VzOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIGNvdXJzZXM6IFtdLFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY291bnQ6IDAsXG4gIHJlZmV0Y2g6IGZhbHNlLFxuICByb2xlc1dpZGdldHM6IFtdLFxuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBmYWxzZSxcbiAgICB0ZXh0Tm90aWZpY2F0aW9uOiAnJyxcbiAgICB0eXBlTm90aWZpY2F0aW9uOiAnd2FybicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2ggPSBjcmVhdGVBc3luY1RodW5rKCdjb3Vyc2VzL2ZldGNoJywgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICBjb25zdCB7IGlkLCBxdWVyeSB9ID0gZGF0YTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MuZ2V0KGBjb3Vyc2VzJHtxdWVyeSB8fCAoaWQgPyBgLyR7aWR9YCA6ICcnKX1gKTtcbiAgcmV0dXJuIGlkXG4gICAgPyByZXN1bHQuZGF0YVxuICAgIDogeyByb3dzOiByZXN1bHQuZGF0YS5yb3dzLCBjb3VudDogcmVzdWx0LmRhdGEuY291bnQgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlSXRlbXNCeUlkcyA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdjb3Vyc2VzL2RlbGV0ZUJ5SWRzJyxcbiAgYXN5bmMgKGRhdGE6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBheGlvcy5wb3N0KCdjb3Vyc2VzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2NvdXJzZXMvZGVsZXRlQ291cnNlcycsXG4gIGFzeW5jIChpZDogc3RyaW5nLCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLmRlbGV0ZShgY291cnNlcy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnY291cnNlcy9jcmVhdGVDb3Vyc2VzJyxcbiAgYXN5bmMgKGRhdGE6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5wb3N0KCdjb3Vyc2VzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnY291cnNlcy91cGxvYWRDc3YnLFxuICBhc3luYyAoZmlsZTogRmlsZSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBkYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGVuYW1lJywgZmlsZS5uYW1lKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucG9zdCgnY291cnNlcy9idWxrLWltcG9ydCcsIGRhdGEsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnY291cnNlcy91cGRhdGVDb3Vyc2VzJyxcbiAgYXN5bmMgKHBheWxvYWQ6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5wdXQoYGNvdXJzZXMvJHtwYXlsb2FkLmlkfWAsIHtcbiAgICAgICAgaWQ6IHBheWxvYWQuaWQsXG4gICAgICAgIGRhdGE6IHBheWxvYWQuZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjb3Vyc2VzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdjb3Vyc2VzJyxcbiAgaW5pdGlhbFN0YXRlLFxuICByZWR1Y2Vyczoge1xuICAgIHNldFJlZmV0Y2g6IChzdGF0ZSwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4+KSA9PiB7XG4gICAgICBzdGF0ZS5yZWZldGNoID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgfSxcbiAgfSxcbiAgZXh0cmFSZWR1Y2VyczogKGJ1aWxkZXIpID0+IHtcbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2gucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2gucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2guZnVsZmlsbGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkLnJvd3MgJiYgYWN0aW9uLnBheWxvYWQuY291bnQgPj0gMCkge1xuICAgICAgICBzdGF0ZS5jb3Vyc2VzID0gYWN0aW9uLnBheWxvYWQucm93cztcbiAgICAgICAgc3RhdGUuY291bnQgPSBhY3Rpb24ucGF5bG9hZC5jb3VudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLmNvdXJzZXMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnQ291cnNlcyBoYXMgYmVlbiBkZWxldGVkJyk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnQ291cnNlcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBkZWxldGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnQ291cnNlcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnQ291cnNlcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiB1cGRhdGVkYCk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGxvYWRDc3YucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsICdDb3Vyc2VzIGhhcyBiZWVuIHVwbG9hZGVkJyk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnMgYXJlIGdlbmVyYXRlZCBmb3IgZWFjaCBjYXNlIHJlZHVjZXIgZnVuY3Rpb25cbmV4cG9ydCBjb25zdCB7IHNldFJlZmV0Y2ggfSA9IGNvdXJzZXNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBjb3Vyc2VzU2xpY2UucmVkdWNlcjtcbiJdLCJuYW1lcyI6WyJjcmVhdGVTbGljZSIsImNyZWF0ZUFzeW5jVGh1bmsiLCJheGlvcyIsImZ1bGZpbGxlZE5vdGlmeSIsInJlamVjdE5vdGlmeSIsInJlc2V0Tm90aWZ5IiwiaW5pdGlhbFN0YXRlIiwiY291cnNlcyIsImxvYWRpbmciLCJjb3VudCIsInJlZmV0Y2giLCJyb2xlc1dpZGdldHMiLCJub3RpZnkiLCJzaG93Tm90aWZpY2F0aW9uIiwidGV4dE5vdGlmaWNhdGlvbiIsInR5cGVOb3RpZmljYXRpb24iLCJmZXRjaCIsImRhdGEiLCJpZCIsInF1ZXJ5IiwicmVzdWx0IiwiZ2V0Iiwicm93cyIsImRlbGV0ZUl0ZW1zQnlJZHMiLCJyZWplY3RXaXRoVmFsdWUiLCJwb3N0IiwiZXJyb3IiLCJyZXNwb25zZSIsImRlbGV0ZUl0ZW0iLCJkZWxldGUiLCJjcmVhdGUiLCJ1cGxvYWRDc3YiLCJmaWxlIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJuYW1lIiwiaGVhZGVycyIsInVwZGF0ZSIsInBheWxvYWQiLCJwdXQiLCJjb3Vyc2VzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/courses/coursesSlice.ts\n"));
/***/ }),
/***/ "./src/stores/discussion_boards/discussion_boardsSlice.ts":
/*!****************************************************************!*\
!*** ./src/stores/discussion_boards/discussion_boardsSlice.ts ***!
\****************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ discussion_boardsSlice: function() { return /* binding */ discussion_boardsSlice; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n discussion_boards: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"discussion_boards\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"discussion_boards/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/deleteDiscussion_boards\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"discussion_boards/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/createDiscussion_boards\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"discussion_boards\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"discussion_boards/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"discussion_boards/updateDiscussion_boards\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"discussion_boards/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst discussion_boardsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"discussion_boards\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.discussion_boards = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.discussion_boards = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Discussion_boards has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Discussion_boards\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Discussion_boards\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Discussion_boards\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Discussion_boards has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = discussion_boardsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (discussion_boardsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL2Rpc2N1c3Npb25fYm9hcmRzL2Rpc2N1c3Npb25fYm9hcmRzU2xpY2UudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFDdEQ7QUFLZ0I7QUFlMUMsTUFBTU0sZUFBMEI7SUFDOUJDLG1CQUFtQixFQUFFO0lBQ3JCQyxTQUFTO0lBQ1RDLE9BQU87SUFDUEMsU0FBUztJQUNUQyxjQUFjLEVBQUU7SUFDaEJDLFFBQVE7UUFDTkMsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtJQUNwQjtBQUNGO0FBRU8sTUFBTUMsUUFBUWYsa0VBQWdCQSxDQUNuQywyQkFDQSxPQUFPZ0I7SUFDTCxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLFNBQVMsTUFBTWxCLGlEQUFTLENBQzVCLG9CQUFrRCxPQUE5QmlCLFNBQVVELENBQUFBLEtBQUssSUFBTyxPQUFIQSxNQUFPLEVBQUM7SUFFakQsT0FBT0EsS0FDSEUsT0FBT0gsSUFBSSxHQUNYO1FBQUVLLE1BQU1GLE9BQU9ILElBQUksQ0FBQ0ssSUFBSTtRQUFFYixPQUFPVyxPQUFPSCxJQUFJLENBQUNSLEtBQUs7SUFBQztBQUN6RCxHQUNBO0FBRUssTUFBTWMsbUJBQW1CdEIsa0VBQWdCQSxDQUM5QyxpQ0FDQSxPQUFPZ0I7UUFBVyxFQUFFTyxlQUFlLEVBQUU7SUFDbkMsSUFBSTtRQUNGLE1BQU10QixrREFBVSxDQUFDLGlDQUFpQztZQUFFZTtRQUFLO0lBQzNELEVBQUUsT0FBT1MsT0FBTztRQUNkLElBQUksQ0FBQ0EsTUFBTUMsUUFBUSxFQUFFO1lBQ25CLE1BQU1EO1FBQ1I7UUFFQSxPQUFPRixnQkFBZ0JFLE1BQU1DLFFBQVEsQ0FBQ1YsSUFBSTtJQUM1QztBQUNGLEdBQ0E7QUFFSyxNQUFNVyxhQUFhM0Isa0VBQWdCQSxDQUN4Qyw2Q0FDQSxPQUFPaUI7UUFBWSxFQUFFTSxlQUFlLEVBQUU7SUFDcEMsSUFBSTtRQUNGLE1B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QUVGLFVBQVUsRUFBRSxHQUFHRix1QkFBdUJZLE9BQU8sQ0FBQztBQUU3RCwrREFBZVosdUJBQXVCYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9kaXNjdXNzaW9uX2JvYXJkcy9kaXNjdXNzaW9uX2JvYXJkc1NsaWNlLnRzP2E2YjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIGRpc2N1c3Npb25fYm9hcmRzOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIGRpc2N1c3Npb25fYm9hcmRzOiBbXSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGNvdW50OiAwLFxuICByZWZldGNoOiBmYWxzZSxcbiAgcm9sZXNXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2Rpc2N1c3Npb25fYm9hcmRzL2ZldGNoJyxcbiAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgIGBkaXNjdXNzaW9uX2JvYXJkcyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCxcbiAgICApO1xuICAgIHJldHVybiBpZFxuICAgICAgPyByZXN1bHQuZGF0YVxuICAgICAgOiB7IHJvd3M6IHJlc3VsdC5kYXRhLnJvd3MsIGNvdW50OiByZXN1bHQuZGF0YS5jb3VudCB9O1xuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZGlzY3Vzc2lvbl9ib2FyZHMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ2Rpc2N1c3Npb25fYm9hcmRzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2Rpc2N1c3Npb25fYm9hcmRzL2RlbGV0ZURpc2N1c3Npb25fYm9hcmRzJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGBkaXNjdXNzaW9uX2JvYXJkcy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZGlzY3Vzc2lvbl9ib2FyZHMvY3JlYXRlRGlzY3Vzc2lvbl9ib2FyZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2Rpc2N1c3Npb25fYm9hcmRzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZGlzY3Vzc2lvbl9ib2FyZHMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2Rpc2N1c3Npb25fYm9hcmRzL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdkaXNjdXNzaW9uX2JvYXJkcy91cGRhdGVEaXNjdXNzaW9uX2JvYXJkcycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBkaXNjdXNzaW9uX2JvYXJkcy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRpc2N1c3Npb25fYm9hcmRzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdkaXNjdXNzaW9uX2JvYXJkcycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUuZGlzY3Vzc2lvbl9ib2FyZHMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuZGlzY3Vzc2lvbl9ib2FyZHMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnRGlzY3Vzc2lvbl9ib2FyZHMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIGAkeydEaXNjdXNzaW9uX2JvYXJkcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBkZWxldGVkYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgYCR7J0Rpc2N1c3Npb25fYm9hcmRzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGNyZWF0ZWRgLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBgJHsnRGlzY3Vzc2lvbl9ib2FyZHMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGAsXG4gICAgICApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnRGlzY3Vzc2lvbl9ib2FyZHMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0UmVmZXRjaCB9ID0gZGlzY3Vzc2lvbl9ib2FyZHNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBkaXNjdXNzaW9uX2JvYXJkc1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsImRpc2N1c3Npb25fYm9hcmRzIiwibG9hZGluZyIsImNvdW50IiwicmVmZXRjaCIsInJvbGVzV2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZldGNoIiwiZGF0YSIsImlkIiwicXVlcnkiLCJyZXN1bHQiLCJnZXQiLCJyb3dzIiwiZGVsZXRlSXRlbXNCeUlkcyIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZSIsImNyZWF0ZSIsInVwbG9hZENzdiIsImZpbGUiLCJGb3JtRGF0YSIsImFwcGVuZCIsIm5hbWUiLCJoZWFkZXJzIiwidXBkYXRlIiwicGF5bG9hZCIsInB1dCIsImRpc2N1c3Npb25fYm9hcmRzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/discussion_boards/discussion_boardsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/enrollments/enrollmentsSlice.ts":
/*!****************************************************!*\
!*** ./src/stores/enrollments/enrollmentsSlice.ts ***!
\****************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ enrollmentsSlice: function() { return /* binding */ enrollmentsSlice; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n enrollments: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"enrollments\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"enrollments/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/deleteEnrollments\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"enrollments/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/createEnrollments\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"enrollments\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"enrollments/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"enrollments/updateEnrollments\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"enrollments/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst enrollmentsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"enrollments\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.enrollments = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.enrollments = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Enrollments has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Enrollments\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Enrollments\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Enrollments\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Enrollments has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = enrollmentsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (enrollmentsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL2Vucm9sbG1lbnRzL2Vucm9sbG1lbnRzU2xpY2UudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFDdEQ7QUFLZ0I7QUFlMUMsTUFBTU0sZUFBMEI7SUFDOUJDLGFBQWEsRUFBRTtJQUNmQyxTQUFTO0lBQ1RDLE9BQU87SUFDUEMsU0FBUztJQUNUQyxjQUFjLEVBQUU7SUFDaEJDLFFBQVE7UUFDTkMsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtJQUNwQjtBQUNGO0FBRU8sTUFBTUMsUUFBUWYsa0VBQWdCQSxDQUNuQyxxQkFDQSxPQUFPZ0I7SUFDTCxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLFNBQVMsTUFBTWxCLGlEQUFTLENBQzVCLGNBQTRDLE9BQTlCaUIsU0FBVUQsQ0FBQUEsS0FBSyxJQUFPLE9BQUhBLE1BQU8sRUFBQztJQUUzQyxPQUFPQSxLQUNIRSxPQUFPSCxJQUFJLEdBQ1g7UUFBRUssTUFBTUYsT0FBT0gsSUFBSSxDQUFDSyxJQUFJO1FBQUViLE9BQU9XLE9BQU9ILElBQUksQ0FBQ1IsS0FBSztJQUFDO0FBQ3pELEdBQ0E7QUFFSyxNQUFNYyxtQkFBbUJ0QixrRUFBZ0JBLENBQzlDLDJCQUNBLE9BQU9nQjtRQUFXLEVBQUVPLGVBQWUsRUFBRTtJQUNuQyxJQUFJO1FBQ0YsTUFBTXRCLGtEQUFVLENBQUMsMkJBQTJCO1lBQUVlO1FBQUs7SUFDckQsRUFBRSxPQUFPUyxPQUFPO1FBQ2QsSUFBSSxDQUFDQSxNQUFNQyxRQUFRLEVBQUU7WUFDbkIsTUFBTUQ7UUFDUjtRQUVBLE9BQU9GLGdCQUFnQkUsTUFBTUMsUUFBUSxDQUFDVixJQUFJO0lBQzVDO0FBQ0YsR0FDQTtBQUVLLE1BQU1XLGFBQWEzQixrRUFBZ0JBLENBQ3hDLGlDQUNBLE9BQU9pQjtRQUFZLEVBQUVNLGVBQWUsRUFBRTtJQUNwQyxJQUFJO1FBQ0YsTUFBTXRCLHVEQUFZLENBQUMs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QU8sQ0FBQztBQUV2RCwrREFBZVosaUJBQWlCYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9lbnJvbGxtZW50cy9lbnJvbGxtZW50c1NsaWNlLnRzP2I3ZmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIGVucm9sbG1lbnRzOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIGVucm9sbG1lbnRzOiBbXSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGNvdW50OiAwLFxuICByZWZldGNoOiBmYWxzZSxcbiAgcm9sZXNXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2Vucm9sbG1lbnRzL2ZldGNoJyxcbiAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgIGBlbnJvbGxtZW50cyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCxcbiAgICApO1xuICAgIHJldHVybiBpZFxuICAgICAgPyByZXN1bHQuZGF0YVxuICAgICAgOiB7IHJvd3M6IHJlc3VsdC5kYXRhLnJvd3MsIGNvdW50OiByZXN1bHQuZGF0YS5jb3VudCB9O1xuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZW5yb2xsbWVudHMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ2Vucm9sbG1lbnRzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2Vucm9sbG1lbnRzL2RlbGV0ZUVucm9sbG1lbnRzJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGBlbnJvbGxtZW50cy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZW5yb2xsbWVudHMvY3JlYXRlRW5yb2xsbWVudHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2Vucm9sbG1lbnRzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnZW5yb2xsbWVudHMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2Vucm9sbG1lbnRzL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdlbnJvbGxtZW50cy91cGRhdGVFbnJvbGxtZW50cycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBlbnJvbGxtZW50cy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGVucm9sbG1lbnRzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdlbnJvbGxtZW50cycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUuZW5yb2xsbWVudHMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuZW5yb2xsbWVudHMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnRW5yb2xsbWVudHMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J0Vucm9sbG1lbnRzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGRlbGV0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydFbnJvbGxtZW50cycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnRW5yb2xsbWVudHMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnRW5yb2xsbWVudHMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0UmVmZXRjaCB9ID0gZW5yb2xsbWVudHNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBlbnJvbGxtZW50c1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsImVucm9sbG1lbnRzIiwibG9hZGluZyIsImNvdW50IiwicmVmZXRjaCIsInJvbGVzV2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZldGNoIiwiZGF0YSIsImlkIiwicXVlcnkiLCJyZXN1bHQiLCJnZXQiLCJyb3dzIiwiZGVsZXRlSXRlbXNCeUlkcyIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZSIsImNyZWF0ZSIsInVwbG9hZENzdiIsImZpbGUiLCJGb3JtRGF0YSIsImFwcGVuZCIsIm5hbWUiLCJoZWFkZXJzIiwidXBkYXRlIiwicGF5bG9hZCIsInB1dCIsImVucm9sbG1lbnRzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/enrollments/enrollmentsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/instructors/instructorsSlice.ts":
/*!****************************************************!*\
!*** ./src/stores/instructors/instructorsSlice.ts ***!
\****************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ instructorsSlice: function() { return /* binding */ instructorsSlice; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n instructors: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"instructors\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"instructors/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/deleteInstructors\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"instructors/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/createInstructors\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"instructors\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"instructors/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"instructors/updateInstructors\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"instructors/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst instructorsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"instructors\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.instructors = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.instructors = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Instructors has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Instructors\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Instructors\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Instructors\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Instructors has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = instructorsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (instructorsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL2luc3RydWN0b3JzL2luc3RydWN0b3JzU2xpY2UudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFDdEQ7QUFLZ0I7QUFlMUMsTUFBTU0sZUFBMEI7SUFDOUJDLGFBQWEsRUFBRTtJQUNmQyxTQUFTO0lBQ1RDLE9BQU87SUFDUEMsU0FBUztJQUNUQyxjQUFjLEVBQUU7SUFDaEJDLFFBQVE7UUFDTkMsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtJQUNwQjtBQUNGO0FBRU8sTUFBTUMsUUFBUWYsa0VBQWdCQSxDQUNuQyxxQkFDQSxPQUFPZ0I7SUFDTCxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLFNBQVMsTUFBTWxCLGlEQUFTLENBQzVCLGNBQTRDLE9BQTlCaUIsU0FBVUQsQ0FBQUEsS0FBSyxJQUFPLE9BQUhBLE1BQU8sRUFBQztJQUUzQyxPQUFPQSxLQUNIRSxPQUFPSCxJQUFJLEdBQ1g7UUFBRUssTUFBTUYsT0FBT0gsSUFBSSxDQUFDSyxJQUFJO1FBQUViLE9BQU9XLE9BQU9ILElBQUksQ0FBQ1IsS0FBSztJQUFDO0FBQ3pELEdBQ0E7QUFFSyxNQUFNYyxtQkFBbUJ0QixrRUFBZ0JBLENBQzlDLDJCQUNBLE9BQU9nQjtRQUFXLEVBQUVPLGVBQWUsRUFBRTtJQUNuQyxJQUFJO1FBQ0YsTUFBTXRCLGtEQUFVLENBQUMsMkJBQTJCO1lBQUVlO1FBQUs7SUFDckQsRUFBRSxPQUFPUyxPQUFPO1FBQ2QsSUFBSSxDQUFDQSxNQUFNQyxRQUFRLEVBQUU7WUFDbkIsTUFBTUQ7UUFDUjtRQUVBLE9BQU9GLGdCQUFnQkUsTUFBTUMsUUFBUSxDQUFDVixJQUFJO0lBQzVDO0FBQ0YsR0FDQTtBQUVLLE1BQU1XLGFBQWEzQixrRUFBZ0JBLENBQ3hDLGlDQUNBLE9BQU9pQjtRQUFZLEVBQUVNLGVBQWUsRUFBRTtJQUNwQyxJQUFJO1FBQ0YsTUFBTXRCLHVEQUFZLENBQUMs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QU8sQ0FBQztBQUV2RCwrREFBZVosaUJBQWlCYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9pbnN0cnVjdG9ycy9pbnN0cnVjdG9yc1NsaWNlLnRzP2E5YmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIGluc3RydWN0b3JzOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIGluc3RydWN0b3JzOiBbXSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGNvdW50OiAwLFxuICByZWZldGNoOiBmYWxzZSxcbiAgcm9sZXNXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2luc3RydWN0b3JzL2ZldGNoJyxcbiAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgIGBpbnN0cnVjdG9ycyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCxcbiAgICApO1xuICAgIHJldHVybiBpZFxuICAgICAgPyByZXN1bHQuZGF0YVxuICAgICAgOiB7IHJvd3M6IHJlc3VsdC5kYXRhLnJvd3MsIGNvdW50OiByZXN1bHQuZGF0YS5jb3VudCB9O1xuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnaW5zdHJ1Y3RvcnMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ2luc3RydWN0b3JzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ2luc3RydWN0b3JzL2RlbGV0ZUluc3RydWN0b3JzJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGBpbnN0cnVjdG9ycy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnaW5zdHJ1Y3RvcnMvY3JlYXRlSW5zdHJ1Y3RvcnMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2luc3RydWN0b3JzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnaW5zdHJ1Y3RvcnMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ2luc3RydWN0b3JzL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdpbnN0cnVjdG9ycy91cGRhdGVJbnN0cnVjdG9ycycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBpbnN0cnVjdG9ycy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGluc3RydWN0b3JzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdpbnN0cnVjdG9ycycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUuaW5zdHJ1Y3RvcnMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuaW5zdHJ1Y3RvcnMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnSW5zdHJ1Y3RvcnMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J0luc3RydWN0b3JzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGRlbGV0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydJbnN0cnVjdG9ycycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnSW5zdHJ1Y3RvcnMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnSW5zdHJ1Y3RvcnMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0UmVmZXRjaCB9ID0gaW5zdHJ1Y3RvcnNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBpbnN0cnVjdG9yc1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsImluc3RydWN0b3JzIiwibG9hZGluZyIsImNvdW50IiwicmVmZXRjaCIsInJvbGVzV2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZldGNoIiwiZGF0YSIsImlkIiwicXVlcnkiLCJyZXN1bHQiLCJnZXQiLCJyb3dzIiwiZGVsZXRlSXRlbXNCeUlkcyIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZSIsImNyZWF0ZSIsInVwbG9hZENzdiIsImZpbGUiLCJGb3JtRGF0YSIsImFwcGVuZCIsIm5hbWUiLCJoZWFkZXJzIiwidXBkYXRlIiwicGF5bG9hZCIsInB1dCIsImluc3RydWN0b3JzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/instructors/instructorsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/introSteps.ts":
/*!**********************************!*\
!*** ./src/stores/introSteps.ts ***!
\**********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ appSteps: function() { return /* binding */ appSteps; },\n/* harmony export */ landingSteps: function() { return /* binding */ landingSteps; },\n/* harmony export */ loginSteps: function() { return /* binding */ loginSteps; },\n/* harmony export */ rolesSteps: function() { return /* binding */ rolesSteps; },\n/* harmony export */ usersSteps: function() { return /* binding */ usersSteps; }\n/* harmony export */ });\nconst landingSteps = [\n {\n element: \"#elementId1\",\n intro: '\\n <div class=\"text-center text-black \">\\n <img src=\"https://flatlogic.com/blog/wp-content/uploads/2024/10/good_img.png\" alt=\"Description\" class=\"w-full mb-2 object-cover\" />\\n <p>Welcome to our app tutorial! Get a sneak peek into the key functionalities and learn how to navigate seamlessly. Here\\'s a quick overview to get you started.</p>\\n </div>\\n ',\n position: \"auto\",\n tooltipClass: \" good-img\"\n },\n {\n element: \"#websiteHeader\",\n intro: \"You can switch between different sections of the app using this header. It's your gateway to exploring all the available pages.\",\n position: \"auto\",\n tooltipClass: \" right-0 mx-auto rounded shadow-lg\",\n disableInteraction: true\n },\n {\n element: \"#loginButton\",\n intro: \"Decide whether to explore the landing page or proceed to the login. You can always return to the landing page later.\",\n disableInteraction: true\n }\n];\nconst loginSteps = [\n {\n element: \"#loginRoles\",\n intro: \"Choose your login role to proceed. Experience the app as Admin, or User, or create your own account to get started.\",\n position: \"auto\"\n }\n];\nconst appSteps = [\n {\n element: \"#profilEdit\",\n intro: \"Update your profile information, including name, email, and password. Don't forget to save your changes to keep your profile current.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#themeToggle\",\n intro: \"Switch between light and dark modes to suit your preference.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#logout\",\n intro: \"Log out or switch users/roles with ease to manage your access.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#search\",\n intro: \"Quickly find specific data or items by entering your query in the search field. Navigate directly to the desired element.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#widgetCreator\",\n intro: 'Use Text-to-Chart and Text-to-Widget to create charts or widgets from text descriptions. Type what you need, like \"Orders by Month,\" and customize your dashboard.',\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#dashboard\",\n intro: \"View all the entities available to your role, offering insights into the data categories and total items in each.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#asideMenu\",\n intro: \"Access various entities and manage your data. Find links to the landing page and Swagger API documentation for more information.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#asideMenu\",\n intro: \"Let's explore the User entity.\",\n position: \"auto\",\n disableInteraction: true\n }\n];\nconst usersSteps = [\n {\n element: \"#usersList\",\n intro: \"Invite new users, filter data, and work with CSV files in this section.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#usersTable\",\n intro: \"View, modify, or delete items with the necessary permissions. Inline editing is available within the table.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#asideMenu\",\n intro: \"Let's explore the Roles entity.\",\n position: \"auto\",\n disableInteraction: true\n }\n];\nconst rolesSteps = [\n {\n element: \"#rolesTable\",\n intro: \"Super Admin can manage roles and permissions. Adjust access levels and permissions for each role or user in the Roles and Permissions sections.\",\n position: \"auto\",\n disableInteraction: true\n },\n {\n element: \"#feedbackSection\",\n intro: '\\n <div class=\"text-center \">\\n <img src=\"https://flatlogic.com/blog/wp-content/uploads/2024/10/end_guide.png\" alt=\"Description\" class=\"w-full mb-2 object-cover\" />\\n <p>Thank you for completing the tour! We hope you now have a better understanding of the app.</p>\\n <p>If you have any questions, feel free to reach out to us at <a href=\"mailto:support@flatlogic.com\" class=\"text-blue-500 underline\">support@flatlogic.com</a>.</p>\\n </div>\\n ',\n position: \"auto\",\n tooltipClass: \"end-img\"\n }\n];\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL2ludHJvU3RlcHMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFlTyxNQUFNQSxlQUF1QjtJQUNsQztRQUNFQyxTQUFTO1FBQ1RDLE9BQVE7UUFNUkMsVUFBVTtRQUNWQyxjQUFjO0lBQ2hCO0lBQ0E7UUFDRUgsU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkMsY0FBYztRQUNkQyxvQkFBb0I7SUFDdEI7SUFDQTtRQUNFSixTQUFTO1FBQ1RDLE9BQ0U7UUFDRkcsb0JBQW9CO0lBQ3RCO0NBQ0QsQ0FBQztBQUVLLE1BQU1DLGFBQXFCO0lBQ2hDO1FBQ0VMLFNBQVM7UUFDVEMsT0FDRTtRQUNGQyxVQUFVO0lBQ1o7Q0FDRCxDQUFDO0FBRUssTUFBTUksV0FBbUI7SUFDOUI7UUFDRU4sU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUFPO1FBQ1BDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUFPO1FBQ1BDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUNFO1FBQ0ZDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0lBQ0E7UUFDRUosU0FBUztRQUNUQyxPQUFPO1FBQ1BDLFVBQVU7UUFDVkUsb0JBQW9CO0lBQ3RCO0NBQ0QsQ0FBQztBQUVLLE1BQU1HLGFBQXFCO0lBQ2hDO1FBQ0VQLFNBQVM7UUFDVEMsT0FDRTtRQUNGQyxVQUFVO1FBQ1ZFLG9CQUFvQjtJQUN0QjtJQUNBO1FBQ0VKLFNBQVM7UUFDVEMsT0FDRTtRQUNGQyxVQUFVO1FBQ1ZFLG9CQUFvQjtJQUN0QjtJQUNBO1FBQ0VKLFNBQVM7UUFDVEMsT0FBTztRQUNQQyxVQUFVO1FBQ1ZFLG9CQUFvQjtJQUN0QjtDQUNELENBQUM7QUFFSyxNQUFNSSxhQUFxQjtJQUNoQztRQUNFUixTQUFTO1FBQ1RDLE9BQ0U7UUFDRkMsVUFBVTtRQUNWRSxvQkFBb0I7SUFDdEI7SUFDQTtRQUNFSixTQUFTO1FBQ1RDLE9BQVE7UUFPUkMsVUFBVTtRQUNWQyxjQUFjO0lBQ2hCO0NBQ0QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvc3RvcmVzL2ludHJvU3RlcHMudHM/OTkwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgU3RlcCB7XG4gIGVsZW1lbnQ6IHN0cmluZztcbiAgaW50cm86IHN0cmluZztcbiAgcG9zaXRpb24/OiBzdHJpbmc7XG4gIHRvb2x0aXBDbGFzcz86IHN0cmluZztcbiAgaGlnaGxpZ2h0Q2xhc3M/OiBzdHJpbmc7XG4gIGRpc2FibGVJbnRlcmFjdGlvbj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBIaW50IHtcbiAgZWxlbWVudDogc3RyaW5nO1xuICBoaW50OiBzdHJpbmc7XG4gIGhpbnRQb3NpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGxhbmRpbmdTdGVwczogU3RlcFtdID0gW1xuICB7XG4gICAgZWxlbWVudDogJyNlbGVtZW50SWQxJyxcbiAgICBpbnRybzogYFxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LWJsYWNrIFwiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJodHRwczovL2ZsYXRsb2dpYy5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAyNC8xMC9nb29kX2ltZy5wbmdcIiBhbHQ9XCJEZXNjcmlwdGlvblwiIGNsYXNzPVwidy1mdWxsIG1iLTIgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgICAgICAgIDxwPldlbGNvbWUgdG8gb3VyIGFwcCB0dXRvcmlhbCEgR2V0IGEgc25lYWsgcGVlayBpbnRvIHRoZSBrZXkgZnVuY3Rpb25hbGl0aWVzIGFuZCBsZWFybiBob3cgdG8gbmF2aWdhdGUgc2VhbWxlc3NseS4gSGVyZSdzIGEgcXVpY2sgb3ZlcnZpZXcgdG8gZ2V0IHlvdSBzdGFydGVkLjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgYCxcbiAgICBwb3NpdGlvbjogJ2F1dG8nLFxuICAgIHRvb2x0aXBDbGFzczogJyBnb29kLWltZycsXG4gIH0sXG4gIHtcbiAgICBlbGVtZW50OiAnI3dlYnNpdGVIZWFkZXInLFxuICAgIGludHJvOlxuICAgICAgXCJZb3UgY2FuIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBzZWN0aW9ucyBvZiB0aGUgYXBwIHVzaW5nIHRoaXMgaGVhZGVyLiBJdCdzIHlvdXIgZ2F0ZXdheSB0byBleHBsb3JpbmcgYWxsIHRoZSBhdmFpbGFibGUgcGFnZXMuXCIsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICB0b29sdGlwQ2xhc3M6ICcgcmlnaHQtMCBteC1hdXRvIHJvdW5kZWQgc2hhZG93LWxnJyxcbiAgICBkaXNhYmxlSW50ZXJhY3Rpb246IHRydWUsXG4gIH0sXG4gIHtcbiAgICBlbGVtZW50OiAnI2xvZ2luQnV0dG9uJyxcbiAgICBpbnRybzpcbiAgICAgICdEZWNpZGUgd2hldGhlciB0byBleHBsb3JlIHRoZSBsYW5kaW5nIHBhZ2Ugb3IgcHJvY2VlZCB0byB0aGUgbG9naW4uIFlvdSBjYW4gYWx3YXlzIHJldHVybiB0byB0aGUgbGFuZGluZyBwYWdlIGxhdGVyLicsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGxvZ2luU3RlcHM6IFN0ZXBbXSA9IFtcbiAge1xuICAgIGVsZW1lbnQ6ICcjbG9naW5Sb2xlcycsXG4gICAgaW50cm86XG4gICAgICAnQ2hvb3NlIHlvdXIgbG9naW4gcm9sZSB0byBwcm9jZWVkLiBFeHBlcmllbmNlIHRoZSBhcHAgYXMgICBBZG1pbiwgb3IgIFVzZXIsIG9yIGNyZWF0ZSB5b3VyIG93biBhY2NvdW50IHRvIGdldCBzdGFydGVkLicsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBhcHBTdGVwczogU3RlcFtdID0gW1xuICB7XG4gICAgZWxlbWVudDogJyNwcm9maWxFZGl0JyxcbiAgICBpbnRybzpcbiAgICAgIFwiVXBkYXRlIHlvdXIgcHJvZmlsZSBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIG5hbWUsIGVtYWlsLCBhbmQgcGFzc3dvcmQuIERvbid0IGZvcmdldCB0byBzYXZlIHlvdXIgY2hhbmdlcyB0byBrZWVwIHlvdXIgcHJvZmlsZSBjdXJyZW50LlwiLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyN0aGVtZVRvZ2dsZScsXG4gICAgaW50cm86ICdTd2l0Y2ggYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlcyB0byBzdWl0IHlvdXIgcHJlZmVyZW5jZS4nLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyNsb2dvdXQnLFxuICAgIGludHJvOiAnTG9nIG91dCBvciBzd2l0Y2ggdXNlcnMvcm9sZXMgd2l0aCBlYXNlIHRvIG1hbmFnZSB5b3VyIGFjY2Vzcy4nLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyNzZWFyY2gnLFxuICAgIGludHJvOlxuICAgICAgJ1F1aWNrbHkgZmluZCBzcGVjaWZpYyBkYXRhIG9yIGl0ZW1zIGJ5IGVudGVyaW5nIHlvdXIgcXVlcnkgaW4gdGhlIHNlYXJjaCBmaWVsZC4gTmF2aWdhdGUgZGlyZWN0bHkgdG8gdGhlIGRlc2lyZWQgZWxlbWVudC4nLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyN3aWRnZXRDcmVhdG9yJyxcbiAgICBpbnRybzpcbiAgICAgICdVc2UgVGV4dC10by1DaGFydCBhbmQgVGV4dC10by1XaWRnZXQgdG8gY3JlYXRlIGNoYXJ0cyBvciB3aWRnZXRzIGZyb20gdGV4dCBkZXNjcmlwdGlvbnMuIFR5cGUgd2hhdCB5b3UgbmVlZCwgbGlrZSBcIk9yZGVycyBieSBNb250aCxcIiBhbmQgY3VzdG9taXplIHlvdXIgZGFzaGJvYXJkLicsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICBkaXNhYmxlSW50ZXJhY3Rpb246IHRydWUsXG4gIH0sXG4gIHtcbiAgICBlbGVtZW50OiAnI2Rhc2hib2FyZCcsXG4gICAgaW50cm86XG4gICAgICAnVmlldyBhbGwgdGhlIGVudGl0aWVzIGF2YWlsYWJsZSB0byB5b3VyIHJvbGUsIG9mZmVyaW5nIGluc2lnaHRzIGludG8gdGhlIGRhdGEgY2F0ZWdvcmllcyBhbmQgdG90YWwgaXRlbXMgaW4gZWFjaC4nLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyNhc2lkZU1lbnUnLFxuICAgIGludHJvOlxuICAgICAgJ0FjY2VzcyB2YXJpb3VzIGVudGl0aWVzIGFuZCBtYW5hZ2UgeW91ciBkYXRhLiBGaW5kIGxpbmtzIHRvICB0aGUgbGFuZGluZyBwYWdlIGFuZCAgU3dhZ2dlciBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuICB7XG4gICAgZWxlbWVudDogJyNhc2lkZU1lbnUnLFxuICAgIGludHJvOiBcIkxldCdzIGV4cGxvcmUgdGhlIFVzZXIgZW50aXR5LlwiLFxuICAgIHBvc2l0aW9uOiAnYXV0bycsXG4gICAgZGlzYWJsZUludGVyYWN0aW9uOiB0cnVlLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IHVzZXJzU3RlcHM6IFN0ZXBbXSA9IFtcbiAge1xuICAgIGVsZW1lbnQ6ICcjdXNlcnNMaXN0JyxcbiAgICBpbnRybzpcbiAgICAgICdJbnZpdGUgbmV3IHVzZXJzLCBmaWx0ZXIgZGF0YSwgYW5kIHdvcmsgd2l0aCBDU1YgZmlsZXMgaW4gdGhpcyBzZWN0aW9uLicsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICBkaXNhYmxlSW50ZXJhY3Rpb246IHRydWUsXG4gIH0sXG4gIHtcbiAgICBlbGVtZW50OiAnI3VzZXJzVGFibGUnLFxuICAgIGludHJvOlxuICAgICAgJ1ZpZXcsIG1vZGlmeSwgb3IgZGVsZXRlIGl0ZW1zIHdpdGggdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucy4gSW5saW5lIGVkaXRpbmcgaXMgYXZhaWxhYmxlIHdpdGhpbiB0aGUgdGFibGUuJyxcbiAgICBwb3NpdGlvbjogJ2F1dG8nLFxuICAgIGRpc2FibGVJbnRlcmFjdGlvbjogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIGVsZW1lbnQ6ICcjYXNpZGVNZW51JyxcbiAgICBpbnRybzogXCJMZXQncyBleHBsb3JlIHRoZSBSb2xlcyBlbnRpdHkuXCIsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICBkaXNhYmxlSW50ZXJhY3Rpb246IHRydWUsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3Qgcm9sZXNTdGVwczogU3RlcFtdID0gW1xuICB7XG4gICAgZWxlbWVudDogJyNyb2xlc1RhYmxlJyxcbiAgICBpbnRybzpcbiAgICAgICdTdXBlciBBZG1pbiBjYW4gbWFuYWdlIHJvbGVzIGFuZCBwZXJtaXNzaW9ucy4gQWRqdXN0IGFjY2VzcyBsZXZlbHMgYW5kIHBlcm1pc3Npb25zIGZvciBlYWNoIHJvbGUgb3IgdXNlciBpbiB0aGUgUm9sZXMgYW5kIFBlcm1pc3Npb25zIHNlY3Rpb25zLicsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICBkaXNhYmxlSW50ZXJhY3Rpb246IHRydWUsXG4gIH0sXG4gIHtcbiAgICBlbGVtZW50OiAnI2ZlZWRiYWNrU2VjdGlvbicsXG4gICAgaW50cm86IGBcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgXCI+XG4gICAgICA8aW1nIHNyYz1cImh0dHBzOi8vZmxhdGxvZ2ljLmNvbS9ibG9nL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI0LzEwL2VuZF9ndWlkZS5wbmdcIiBhbHQ9XCJEZXNjcmlwdGlvblwiIGNsYXNzPVwidy1mdWxsIG1iLTIgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgIDxwPlRoYW5rIHlvdSBmb3IgY29tcGxldGluZyB0aGUgdG91ciEgV2UgaG9wZSB5b3Ugbm93IGhhdmUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXBwLjwvcD5cbiAgICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byByZWFjaCBvdXQgdG8gdXMgYXQgPGEgaHJlZj1cIm1haWx0bzpzdXBwb3J0QGZsYXRsb2dpYy5jb21cIiBjbGFzcz1cInRleHQtYmx1ZS01MDAgdW5kZXJsaW5lXCI+c3VwcG9ydEBmbGF0bG9naWMuY29tPC9hPi48L3A+XG4gICAgPC9kaXY+XG4gIGAsXG4gICAgcG9zaXRpb246ICdhdXRvJyxcbiAgICB0b29sdGlwQ2xhc3M6ICdlbmQtaW1nJyxcbiAgfSxcbl07XG4iXSwibmFtZXMiOlsibGFuZGluZ1N0ZXBzIiwiZWxlbWVudCIsImludHJvIiwicG9zaXRpb24iLCJ0b29sdGlwQ2xhc3MiLCJkaXNhYmxlSW50ZXJhY3Rpb24iLCJsb2dpblN0ZXBzIiwiYXBwU3RlcHMiLCJ1c2Vyc1N0ZXBzIiwicm9sZXNTdGVwcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/stores/introSteps.ts\n"));
/***/ }),
/***/ "./src/stores/mainSlice.ts":
/*!*********************************!*\
!*** ./src/stores/mainSlice.ts ***!
\*********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mainSlice: function() { return /* binding */ mainSlice; },\n/* harmony export */ setUser: function() { return /* binding */ setUser; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n\nconst initialState = {\n /* User */ userName: \"\",\n userEmail: null,\n userAvatar: null,\n /* Field focus with ctrl+k (to register only once) */ isFieldFocusRegistered: false\n};\nconst mainSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({\n name: \"main\",\n initialState,\n reducers: {\n setUser: (state, action)=>{\n state.userName = action.payload.name;\n state.userEmail = action.payload.email;\n state.userAvatar = action.payload.avatar;\n }\n }\n});\n// Action creators are generated for each case reducer function\nconst { setUser } = mainSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (mainSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL21haW5TbGljZS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEQ7QUFVOUQsTUFBTUMsZUFBMEI7SUFDOUIsUUFBUSxHQUNSQyxVQUFVO0lBQ1ZDLFdBQVc7SUFDWEMsWUFBWTtJQUVaLG1EQUFtRCxHQUNuREMsd0JBQXdCO0FBQzFCO0FBRU8sTUFBTUMsWUFBWU4sNkRBQVdBLENBQUM7SUFDbkNPLE1BQU07SUFDTk47SUFDQU8sVUFBVTtRQUNSQyxTQUFTLENBQUNDLE9BQU9DO1lBQ2ZELE1BQU1SLFFBQVEsR0FBR1MsT0FBT0MsT0FBTyxDQUFDTCxJQUFJO1lBQ3BDRyxNQUFNUCxTQUFTLEdBQUdRLE9BQU9DLE9BQU8sQ0FBQ0MsS0FBSztZQUN0Q0gsTUFBTU4sVUFBVSxHQUFHTyxPQUFPQyxPQUFPLENBQUNFLE1BQU07UUFDMUM7SUFDRjtBQUNGLEdBQUc7QUFFSCwrREFBK0Q7QUFDeEQsTUFBTSxFQUFFTCxPQUFPLEVBQUUsR0FBR0gsVUFBVVMsT0FBTyxDQUFDO0FBRTdDLCtEQUFlVCxVQUFVVSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9tYWluU2xpY2UudHM/N2IzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTbGljZSwgUGF5bG9hZEFjdGlvbiB9IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuaW1wb3J0IHsgVXNlclBheWxvYWRPYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHVzZXJFbWFpbDogbnVsbCB8IHN0cmluZztcbiAgdXNlckF2YXRhcjogbnVsbCB8IHN0cmluZztcbiAgaXNGaWVsZEZvY3VzUmVnaXN0ZXJlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIC8qIFVzZXIgKi9cbiAgdXNlck5hbWU6ICcnLFxuICB1c2VyRW1haWw6IG51bGwsXG4gIHVzZXJBdmF0YXI6IG51bGwsXG5cbiAgLyogRmllbGQgZm9jdXMgd2l0aCBjdHJsK2sgKHRvIHJlZ2lzdGVyIG9ubHkgb25jZSkgKi9cbiAgaXNGaWVsZEZvY3VzUmVnaXN0ZXJlZDogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgbWFpblNsaWNlID0gY3JlYXRlU2xpY2Uoe1xuICBuYW1lOiAnbWFpbicsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRVc2VyOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxVc2VyUGF5bG9hZE9iamVjdD4pID0+IHtcbiAgICAgIHN0YXRlLnVzZXJOYW1lID0gYWN0aW9uLnBheWxvYWQubmFtZTtcbiAgICAgIHN0YXRlLnVzZXJFbWFpbCA9IGFjdGlvbi5wYXlsb2FkLmVtYWlsO1xuICAgICAgc3RhdGUudXNlckF2YXRhciA9IGFjdGlvbi5wYXlsb2FkLmF2YXRhcjtcbiAgICB9LFxuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0VXNlciB9ID0gbWFpblNsaWNlLmFjdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IG1haW5TbGljZS5yZWR1Y2VyO1xuIl0sIm5hbWVzIjpbImNyZWF0ZVNsaWNlIiwiaW5pdGlhbFN0YXRlIiwidXNlck5hbWUiLCJ1c2VyRW1haWwiLCJ1c2VyQXZhdGFyIiwiaXNGaWVsZEZvY3VzUmVnaXN0ZXJlZCIsIm1haW5TbGljZSIsIm5hbWUiLCJyZWR1Y2VycyIsInNldFVzZXIiLCJzdGF0ZSIsImFjdGlvbiIsInBheWxvYWQiLCJlbWFpbCIsImF2YXRhciIsImFjdGlvbnMiLCJyZWR1Y2VyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/stores/mainSlice.ts\n"));
/***/ }),
/***/ "./src/stores/openAiSlice.ts":
/*!***********************************!*\
!*** ./src/stores/openAiSlice.ts ***!
\***********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ aiPrompt: function() { return /* binding */ aiPrompt; },\n/* harmony export */ openAiSlice: function() { return /* binding */ openAiSlice; },\n/* harmony export */ resetNotify: function() { return /* binding */ resetNotify; },\n/* harmony export */ setErrorNotification: function() { return /* binding */ setErrorNotification; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n\n\nconst initialState = {\n isFetchingQuery: false,\n errorMessage: \"\",\n smartWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fulfilledNotify = (state, msg, type)=>{\n state.notify.textNotification = msg;\n state.notify.typeNotification = type || \"success\";\n state.notify.showNotification = true;\n};\nconst aiPrompt = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createAsyncThunk)(\"openai/aiPrompt\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n return await axios__WEBPACK_IMPORTED_MODULE_1__[\"default\"].post(\"/openai/create_widget\", data);\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst openAiSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice)({\n name: \"openAiSlice\",\n initialState,\n reducers: {\n resetNotify: (state)=>{\n state.notify.showNotification = false;\n state.notify.typeNotification = \"\";\n state.notify.textNotification = \"\";\n },\n setErrorNotification: (state, action)=>{\n fulfilledNotify(state, action.payload, \"error\");\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(aiPrompt.pending, (state)=>{\n state.isFetchingQuery = true;\n });\n builder.addCase(aiPrompt.fulfilled, (state, action)=>{\n state.isFetchingQuery = false;\n state.errorMessage = \"\";\n state.smartWidgets.unshift(action.payload.data);\n });\n builder.addCase(aiPrompt.rejected, (state)=>{\n state.errorMessage = \"Something was wrong. Try again\";\n state.isFetchingQuery = false;\n state.smartWidgets = null;\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { resetNotify, setErrorNotification } = openAiSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (openAiSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL29wZW5BaVNsaWNlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFpRTtBQUN2QztBQVkxQixNQUFNRyxlQUEwQjtJQUM5QkMsaUJBQWlCO0lBQ2pCQyxjQUFjO0lBQ2RDLGNBQWMsRUFBRTtJQUNoQkMsUUFBUTtRQUNOQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtRQUNsQkMsa0JBQWtCO0lBQ3BCO0FBQ0Y7QUFFQSxNQUFNQyxrQkFBa0IsQ0FBQ0MsT0FBT0MsS0FBS0M7SUFDbkNGLE1BQU1MLE1BQU0sQ0FBQ0UsZ0JBQWdCLEdBQUdJO0lBQ2hDRCxNQUFNTCxNQUFNLENBQUNHLGdCQUFnQixHQUFHSSxRQUFRO0lBQ3hDRixNQUFNTCxNQUFNLENBQUNDLGdCQUFnQixHQUFHO0FBQ2xDO0FBRU8sTUFBTU8sV0FBV2Ysa0VBQWdCQSxDQUN0QyxtQkFDQSxPQUFPZ0I7UUFBVyxFQUFFQyxlQUFlLEVBQUU7SUFDbkMsSUFBSTtRQUNGLE9BQU8sTUFBTWYsa0RBQVUsQ0FBQyx5QkFBeUJjO0lBQ25ELEVBQUUsT0FBT0csT0FBTztRQUNkLElBQUksQ0FBQ0EsTUFBTUMsUUFBUSxFQUFFO1lBQ25CLE1BQU1EO1FBQ1I7UUFDQSxPQUFPRixnQkFBZ0JFLE1BQU1DLFFBQVEsQ0FBQ0osSUFBSTtJQUM1QztBQUNGLEdBQ0E7QUFFSyxNQUFNSyxjQUFjcEIsNkRBQVdBLENBQUM7SUFDckNxQixNQUFNO0lBQ05uQjtJQUNBb0IsVUFBVTtRQUNSQyxhQUFhLENBQUNaO1lBQ1pBLE1BQU1MLE1BQU0sQ0FBQ0MsZ0JBQWdCLEdBQUc7WUFDaENJLE1BQU1MLE1BQU0sQ0FBQ0csZ0JBQWdCLEdBQUc7WUFDaENFLE1BQU1MLE1BQU0sQ0FBQ0UsZ0JBQWdCLEdBQUc7UUFDbEM7UUFDQWdCLHNCQUFzQixDQUFDYixPQUFPYztZQUM1QmYsZ0JBQWdCQyxPQUFPYyxPQUFPQyxPQUFPLEVBQUU7UUFDekM7SUFDRjtJQUNBQyxlQUFlLENBQUNDO1FBQ2RBLFFBQVFDLE9BQU8sQ0FBQ2YsU0FBU2dCLE9BQU8sRUFBRSxDQUFDbkI7WUFDakNBLE1BQU1SLGVBQWUsR0FBRztRQUMxQjtRQUNBeUIsUUFBUUMsT0FBTyxDQUFDZixTQUFTaUIsU0FBUyxFQUFFLENBQUNwQixPQUFPYztZQUMxQ2QsTUFBTVIsZUFBZSxHQUFHO1lBQ3hCUSxNQUFNUCxZQUFZLEdBQUc7WUFDckJPLE1BQU1OLFlBQVksQ0FBQzJCLE9BQU8sQ0FBQ1AsT0FBT0MsT0FBTyxDQUFDWCxJQUFJO1FBQ2hEO1FBRUFhLFFBQVFDLE9BQU8sQ0FBQ2YsU0FBU21CLFFBQVEsRUFBRSxDQUFDdEI7WUFDbENBLE1BQU1QLFlBQVksR0FBRztZQUNyQk8sTUFBTVIsZUFBZSxHQUFHO1lBQ3hCUSxNQUFNTixZQUFZLEdBQUc7UUFDdkI7SUFDRjtBQUNGLEdBQUc7QUFFSCwrREFBK0Q7QUFDeEQsTUFBTSxFQUFFa0IsV0FBVyxFQUFFQyxvQkFBb0IsRUFBRSxHQUFHSixZQUFZYyxPQUFPLENBQUM7QUFFekUsK0RBQWVkLFlBQVllLE9BQU8sRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvc3RvcmVzL29wZW5BaVNsaWNlLnRzP2U3NGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQXN5bmNUaHVuaywgY3JlYXRlU2xpY2UgfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbmludGVyZmFjZSBNYWluU3RhdGUge1xuICBpc0ZldGNoaW5nUXVlcnk6IGJvb2xlYW47XG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBzbWFydFdpZGdldHM6IGFueVtdO1xuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAgIHRleHROb3RpZmljYXRpb246IHN0cmluZztcbiAgICB0eXBlTm90aWZpY2F0aW9uOiBzdHJpbmc7XG4gIH07XG59XG5jb25zdCBpbml0aWFsU3RhdGU6IE1haW5TdGF0ZSA9IHtcbiAgaXNGZXRjaGluZ1F1ZXJ5OiBmYWxzZSxcbiAgZXJyb3JNZXNzYWdlOiAnJyxcbiAgc21hcnRXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuY29uc3QgZnVsZmlsbGVkTm90aWZ5ID0gKHN0YXRlLCBtc2csIHR5cGU/OiBzdHJpbmcpID0+IHtcbiAgc3RhdGUubm90aWZ5LnRleHROb3RpZmljYXRpb24gPSBtc2c7XG4gIHN0YXRlLm5vdGlmeS50eXBlTm90aWZpY2F0aW9uID0gdHlwZSB8fCAnc3VjY2Vzcyc7XG4gIHN0YXRlLm5vdGlmeS5zaG93Tm90aWZpY2F0aW9uID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBhaVByb21wdCA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdvcGVuYWkvYWlQcm9tcHQnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBheGlvcy5wb3N0KCcvb3BlbmFpL2NyZWF0ZV93aWRnZXQnLCBkYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFlcnJvci5yZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IG9wZW5BaVNsaWNlID0gY3JlYXRlU2xpY2Uoe1xuICBuYW1lOiAnb3BlbkFpU2xpY2UnLFxuICBpbml0aWFsU3RhdGUsXG4gIHJlZHVjZXJzOiB7XG4gICAgcmVzZXROb3RpZnk6IChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubm90aWZ5LnNob3dOb3RpZmljYXRpb24gPSBmYWxzZTtcbiAgICAgIHN0YXRlLm5vdGlmeS50eXBlTm90aWZpY2F0aW9uID0gJyc7XG4gICAgICBzdGF0ZS5ub3RpZnkudGV4dE5vdGlmaWNhdGlvbiA9ICcnO1xuICAgIH0sXG4gICAgc2V0RXJyb3JOb3RpZmljYXRpb246IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGFjdGlvbi5wYXlsb2FkLCAnZXJyb3InKTtcbiAgICB9LFxuICB9LFxuICBleHRyYVJlZHVjZXJzOiAoYnVpbGRlcikgPT4ge1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShhaVByb21wdC5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmlzRmV0Y2hpbmdRdWVyeSA9IHRydWU7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGFpUHJvbXB0LmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb246IFJlY29yZDxhbnksIGFueT4pID0+IHtcbiAgICAgIHN0YXRlLmlzRmV0Y2hpbmdRdWVyeSA9IGZhbHNlO1xuICAgICAgc3RhdGUuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICBzdGF0ZS5zbWFydFdpZGdldHMudW5zaGlmdChhY3Rpb24ucGF5bG9hZC5kYXRhKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShhaVByb21wdC5yZWplY3RlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5lcnJvck1lc3NhZ2UgPSAnU29tZXRoaW5nIHdhcyB3cm9uZy4gVHJ5IGFnYWluJztcbiAgICAgIHN0YXRlLmlzRmV0Y2hpbmdRdWVyeSA9IGZhbHNlO1xuICAgICAgc3RhdGUuc21hcnRXaWRnZXRzID0gbnVsbDtcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnMgYXJlIGdlbmVyYXRlZCBmb3IgZWFjaCBjYXNlIHJlZHVjZXIgZnVuY3Rpb25cbmV4cG9ydCBjb25zdCB7IHJlc2V0Tm90aWZ5LCBzZXRFcnJvck5vdGlmaWNhdGlvbiB9ID0gb3BlbkFpU2xpY2UuYWN0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQgb3BlbkFpU2xpY2UucmVkdWNlcjtcbiJdLCJuYW1lcyI6WyJjcmVhdGVBc3luY1RodW5rIiwiY3JlYXRlU2xpY2UiLCJheGlvcyIsImluaXRpYWxTdGF0ZSIsImlzRmV0Y2hpbmdRdWVyeSIsImVycm9yTWVzc2FnZSIsInNtYXJ0V2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZ1bGZpbGxlZE5vdGlmeSIsInN0YXRlIiwibXNnIiwidHlwZSIsImFpUHJvbXB0IiwiZGF0YSIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwib3BlbkFpU2xpY2UiLCJuYW1lIiwicmVkdWNlcnMiLCJyZXNldE5vdGlmeSIsInNldEVycm9yTm90aWZpY2F0aW9uIiwiYWN0aW9uIiwicGF5bG9hZCIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJmdWxmaWxsZWQiLCJ1bnNoaWZ0IiwicmVqZWN0ZWQiLCJhY3Rpb25zIiwicmVkdWNlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/stores/openAiSlice.ts\n"));
/***/ }),
/***/ "./src/stores/permissions/permissionsSlice.ts":
/*!****************************************************!*\
!*** ./src/stores/permissions/permissionsSlice.ts ***!
\****************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ permissionsSlice: function() { return /* binding */ permissionsSlice; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n permissions: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"permissions\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"permissions/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/deletePermissions\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"permissions/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/createPermissions\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"permissions\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"permissions/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"permissions/updatePermissions\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"permissions/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst permissionsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"permissions\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.permissions = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.permissions = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Permissions has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Permissions\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Permissions\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Permissions\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Permissions has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = permissionsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (permissionsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zU2xpY2UudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFDdEQ7QUFLZ0I7QUFlMUMsTUFBTU0sZUFBMEI7SUFDOUJDLGFBQWEsRUFBRTtJQUNmQyxTQUFTO0lBQ1RDLE9BQU87SUFDUEMsU0FBUztJQUNUQyxjQUFjLEVBQUU7SUFDaEJDLFFBQVE7UUFDTkMsa0JBQWtCO1FBQ2xCQyxrQkFBa0I7UUFDbEJDLGtCQUFrQjtJQUNwQjtBQUNGO0FBRU8sTUFBTUMsUUFBUWYsa0VBQWdCQSxDQUNuQyxxQkFDQSxPQUFPZ0I7SUFDTCxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsS0FBSyxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLFNBQVMsTUFBTWxCLGlEQUFTLENBQzVCLGNBQTRDLE9BQTlCaUIsU0FBVUQsQ0FBQUEsS0FBSyxJQUFPLE9BQUhBLE1BQU8sRUFBQztJQUUzQyxPQUFPQSxLQUNIRSxPQUFPSCxJQUFJLEdBQ1g7UUFBRUssTUFBTUYsT0FBT0gsSUFBSSxDQUFDSyxJQUFJO1FBQUViLE9BQU9XLE9BQU9ILElBQUksQ0FBQ1IsS0FBSztJQUFDO0FBQ3pELEdBQ0E7QUFFSyxNQUFNYyxtQkFBbUJ0QixrRUFBZ0JBLENBQzlDLDJCQUNBLE9BQU9nQjtRQUFXLEVBQUVPLGVBQWUsRUFBRTtJQUNuQyxJQUFJO1FBQ0YsTUFBTXRCLGtEQUFVLENBQUMsMkJBQTJCO1lBQUVlO1FBQUs7SUFDckQsRUFBRSxPQUFPUyxPQUFPO1FBQ2QsSUFBSSxDQUFDQSxNQUFNQyxRQUFRLEVBQUU7WUFDbkIsTUFBTUQ7UUFDUjtRQUVBLE9BQU9GLGdCQUFnQkUsTUFBTUMsUUFBUSxDQUFDVixJQUFJO0lBQzVDO0FBQ0YsR0FDQTtBQUVLLE1BQU1XLGFBQWEzQixrRUFBZ0JBLENBQ3hDLGlDQUNBLE9BQU9pQjtRQUFZLEVBQUVNLGVBQWUsRUFBRTtJQUNwQyxJQUFJO1FBQ0YsTUFBTXRCLHVEQUFZLENBQUMs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QU8sQ0FBQztBQUV2RCwrREFBZVosaUJBQWlCYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9uc1NsaWNlLnRzPzg3NmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIHBlcm1pc3Npb25zOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGNvdW50OiAwLFxuICByZWZldGNoOiBmYWxzZSxcbiAgcm9sZXNXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ3Blcm1pc3Npb25zL2ZldGNoJyxcbiAgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgIGBwZXJtaXNzaW9ucyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCxcbiAgICApO1xuICAgIHJldHVybiBpZFxuICAgICAgPyByZXN1bHQuZGF0YVxuICAgICAgOiB7IHJvd3M6IHJlc3VsdC5kYXRhLnJvd3MsIGNvdW50OiByZXN1bHQuZGF0YS5jb3VudCB9O1xuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncGVybWlzc2lvbnMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ3Blcm1pc3Npb25zL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ3Blcm1pc3Npb25zL2RlbGV0ZVBlcm1pc3Npb25zJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGBwZXJtaXNzaW9ucy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncGVybWlzc2lvbnMvY3JlYXRlUGVybWlzc2lvbnMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3Blcm1pc3Npb25zJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncGVybWlzc2lvbnMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3Blcm1pc3Npb25zL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdwZXJtaXNzaW9ucy91cGRhdGVQZXJtaXNzaW9ucycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBwZXJtaXNzaW9ucy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHBlcm1pc3Npb25zU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdwZXJtaXNzaW9ucycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUucGVybWlzc2lvbnMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucGVybWlzc2lvbnMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnUGVybWlzc2lvbnMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J1Blcm1pc3Npb25zJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGRlbGV0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydQZXJtaXNzaW9ucycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnUGVybWlzc2lvbnMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnUGVybWlzc2lvbnMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0UmVmZXRjaCB9ID0gcGVybWlzc2lvbnNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBwZXJtaXNzaW9uc1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsInBlcm1pc3Npb25zIiwibG9hZGluZyIsImNvdW50IiwicmVmZXRjaCIsInJvbGVzV2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZldGNoIiwiZGF0YSIsImlkIiwicXVlcnkiLCJyZXN1bHQiLCJnZXQiLCJyb3dzIiwiZGVsZXRlSXRlbXNCeUlkcyIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZSIsImNyZWF0ZSIsInVwbG9hZENzdiIsImZpbGUiLCJGb3JtRGF0YSIsImFwcGVuZCIsIm5hbWUiLCJoZWFkZXJzIiwidXBkYXRlIiwicGF5bG9hZCIsInB1dCIsInBlcm1pc3Npb25zU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/permissions/permissionsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/roles/rolesSlice.ts":
/*!****************************************!*\
!*** ./src/stores/roles/rolesSlice.ts ***!
\****************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ fetchWidgets: function() { return /* binding */ fetchWidgets; },\n/* harmony export */ removeWidget: function() { return /* binding */ removeWidget; },\n/* harmony export */ rolesSlice: function() { return /* binding */ rolesSlice; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n roles: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"roles\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"roles/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/deleteRoles\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"roles/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/createRoles\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"roles\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"roles/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"roles/updateRoles\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"roles/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst removeWidget = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"openai/removeWidget\", async (payload)=>{\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"openai/roles-info/\".concat(payload.id), {\n params: {\n roleId: payload.roleId,\n infoId: payload.widgetId,\n key: \"widgets\"\n }\n });\n return result.data;\n});\nconst fetchWidgets = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"openai/fetchWidgets\", async (roleId)=>{\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"openai/info-by-key?key=widgets&roleId=\".concat(roleId));\n return result.data;\n});\nconst rolesSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"roles\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.roles = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.roles = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Roles has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Roles\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Roles\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Roles\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Roles has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(removeWidget.pending, (state)=>{\n state.loading = true;\n });\n builder.addCase(removeWidget.fulfilled, (state)=>{\n state.loading = false;\n });\n builder.addCase(removeWidget.rejected, (state)=>{\n state.loading = false;\n });\n builder.addCase(fetchWidgets.pending, (state)=>{\n state.loading = true;\n state.rolesWidgets = [];\n });\n builder.addCase(fetchWidgets.fulfilled, (state, action)=>{\n state.loading = false;\n state.rolesWidgets = action.payload;\n });\n builder.addCase(fetchWidgets.rejected, (state)=>{\n state.loading = false;\n state.rolesWidgets = [];\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = rolesSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (rolesSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LFdBQVdZLE9BQU8sQ0FBQztBQUVqRCwrREFBZVosV0FBV2EsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9zdG9yZXMvcm9sZXMvcm9sZXNTbGljZS50cz9mMTIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNsaWNlLCBjcmVhdGVBc3luY1RodW5rLCBQYXlsb2FkQWN0aW9uIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgZnVsZmlsbGVkTm90aWZ5LFxuICByZWplY3ROb3RpZnksXG4gIHJlc2V0Tm90aWZ5LFxufSBmcm9tICcuLi8uLi9oZWxwZXJzL25vdGlmeVN0YXRlSGFuZGxlcic7XG5cbmludGVyZmFjZSBNYWluU3RhdGUge1xuICByb2xlczogYW55O1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBjb3VudDogbnVtYmVyO1xuICByZWZldGNoOiBib29sZWFuO1xuICByb2xlc1dpZGdldHM6IGFueVtdO1xuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAgIHRleHROb3RpZmljYXRpb246IHN0cmluZztcbiAgICB0eXBlTm90aWZpY2F0aW9uOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTWFpblN0YXRlID0ge1xuICByb2xlczogW10sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjb3VudDogMCxcbiAgcmVmZXRjaDogZmFsc2UsXG4gIHJvbGVzV2lkZ2V0czogW10sXG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGZhbHNlLFxuICAgIHRleHROb3RpZmljYXRpb246ICcnLFxuICAgIHR5cGVOb3RpZmljYXRpb246ICd3YXJuJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaCA9IGNyZWF0ZUFzeW5jVGh1bmsoJ3JvbGVzL2ZldGNoJywgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICBjb25zdCB7IGlkLCBxdWVyeSB9ID0gZGF0YTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MuZ2V0KGByb2xlcyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCk7XG4gIHJldHVybiBpZFxuICAgID8gcmVzdWx0LmRhdGFcbiAgICA6IHsgcm93czogcmVzdWx0LmRhdGEucm93cywgY291bnQ6IHJlc3VsdC5kYXRhLmNvdW50IH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncm9sZXMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ3JvbGVzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ3JvbGVzL2RlbGV0ZVJvbGVzJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGByb2xlcy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncm9sZXMvY3JlYXRlUm9sZXMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3JvbGVzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAncm9sZXMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3JvbGVzL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdyb2xlcy91cGRhdGVSb2xlcycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGByb2xlcy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVdpZGdldCA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdvcGVuYWkvcmVtb3ZlV2lkZ2V0JyxcbiAgYXN5bmMgKHBheWxvYWQ6IGFueSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLmRlbGV0ZShgb3BlbmFpL3JvbGVzLWluZm8vJHtwYXlsb2FkLmlkfWAsIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICByb2xlSWQ6IHBheWxvYWQucm9sZUlkLFxuICAgICAgICBpbmZvSWQ6IHBheWxvYWQud2lkZ2V0SWQsXG4gICAgICAgIGtleTogJ3dpZGdldHMnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH0sXG4pO1xuXG5leHBvcnQgY29uc3QgZmV0Y2hXaWRnZXRzID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ29wZW5haS9mZXRjaFdpZGdldHMnLFxuICBhc3luYyAocm9sZUlkOiBhbnkpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5nZXQoXG4gICAgICBgb3BlbmFpL2luZm8tYnkta2V5P2tleT13aWRnZXRzJnJvbGVJZD0ke3JvbGVJZH1gLFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHJvbGVzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdyb2xlcycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUucm9sZXMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucm9sZXMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnUm9sZXMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J1JvbGVzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGRlbGV0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydSb2xlcycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnUm9sZXMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnUm9sZXMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKHJlbW92ZVdpZGdldC5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShyZW1vdmVXaWRnZXQuZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UocmVtb3ZlV2lkZ2V0LnJlamVjdGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShmZXRjaFdpZGdldHMucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHN0YXRlLnJvbGVzV2lkZ2V0cyA9IFtdO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShmZXRjaFdpZGdldHMuZnVsZmlsbGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgc3RhdGUucm9sZXNXaWRnZXRzID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoV2lkZ2V0cy5yZWplY3RlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBzdGF0ZS5yb2xlc1dpZGdldHMgPSBbXTtcbiAgICB9KTtcbiAgfSxcbn0pO1xuXG4vLyBBY3Rpb24gY3JlYXRvcnMgYXJlIGdlbmVyYXRlZCBmb3IgZWFjaCBjYXNlIHJlZHVjZXIgZnVuY3Rpb25cbmV4cG9ydCBjb25zdCB7IHNldFJlZmV0Y2ggfSA9IHJvbGVzU2xpY2UuYWN0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQgcm9sZXNTbGljZS5yZWR1Y2VyO1xuIl0sIm5hbWVzIjpbImNyZWF0ZVNsaWNlIiwiY3JlYXRlQXN5bmNUaHVuayIsImF4aW9zIiwiZnVsZmlsbGVkTm90aWZ5IiwicmVqZWN0Tm90aWZ5IiwicmVzZXROb3RpZnkiLCJpbml0aWFsU3RhdGUiLCJyb2xlcyIsImxvYWRpbmciLCJjb3VudCIsInJlZmV0Y2giLCJyb2xlc1dpZGdldHMiLCJub3RpZnkiLCJzaG93Tm90aWZpY2F0aW9uIiwidGV4dE5vdGlmaWNhdGlvbiIsInR5cGVOb3RpZmljYXRpb24iLCJmZXRjaCIsImRhdGEiLCJpZCIsInF1ZXJ5IiwicmVzdWx0IiwiZ2V0Iiwicm93cyIsImRlbGV0ZUl0ZW1zQnlJZHMiLCJyZWplY3RXaXRoVmFsdWUiLCJwb3N0IiwiZXJyb3IiLCJyZXNwb25zZSIsImRlbGV0ZUl0ZW0iLCJkZWxldGUiLCJjcmVhdGUiLCJ1cGxvYWRDc3YiLCJmaWxlIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJuYW1lIiwiaGVhZGVycyIsInVwZGF0ZSIsInBheWxvYWQiLCJwdXQiLCJyZW1vdmVXaWRnZXQiLCJwYXJhbXMiLCJyb2xlSWQiLCJpbmZvSWQiLCJ3aWRnZXRJZCIsImtleSIsImZldGNoV2lkZ2V0cyIsInJvbGVzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/roles/rolesSlice.ts\n"));
/***/ }),
/***/ "./src/stores/store.ts":
/*!*****************************!*\
!*** ./src/stores/store.ts ***!
\*****************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ store: function() { return /* binding */ store; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var _styleSlice__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./styleSlice */ \"./src/stores/styleSlice.ts\");\n/* harmony import */ var _mainSlice__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mainSlice */ \"./src/stores/mainSlice.ts\");\n/* harmony import */ var _authSlice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./authSlice */ \"./src/stores/authSlice.ts\");\n/* harmony import */ var _openAiSlice__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./openAiSlice */ \"./src/stores/openAiSlice.ts\");\n/* harmony import */ var _users_usersSlice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./users/usersSlice */ \"./src/stores/users/usersSlice.ts\");\n/* harmony import */ var _analytics_analyticsSlice__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./analytics/analyticsSlice */ \"./src/stores/analytics/analyticsSlice.ts\");\n/* harmony import */ var _courses_coursesSlice__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./courses/coursesSlice */ \"./src/stores/courses/coursesSlice.ts\");\n/* harmony import */ var _discussion_boards_discussion_boardsSlice__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./discussion_boards/discussion_boardsSlice */ \"./src/stores/discussion_boards/discussion_boardsSlice.ts\");\n/* harmony import */ var _enrollments_enrollmentsSlice__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./enrollments/enrollmentsSlice */ \"./src/stores/enrollments/enrollmentsSlice.ts\");\n/* harmony import */ var _instructors_instructorsSlice__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./instructors/instructorsSlice */ \"./src/stores/instructors/instructorsSlice.ts\");\n/* harmony import */ var _students_studentsSlice__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./students/studentsSlice */ \"./src/stores/students/studentsSlice.ts\");\n/* harmony import */ var _roles_rolesSlice__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./roles/rolesSlice */ \"./src/stores/roles/rolesSlice.ts\");\n/* harmony import */ var _permissions_permissionsSlice__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./permissions/permissionsSlice */ \"./src/stores/permissions/permissionsSlice.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst store = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_13__.configureStore)({\n reducer: {\n style: _styleSlice__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n main: _mainSlice__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n auth: _authSlice__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n openAi: _openAiSlice__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n users: _users_usersSlice__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n analytics: _analytics_analyticsSlice__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n courses: _courses_coursesSlice__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n discussion_boards: _discussion_boards_discussion_boardsSlice__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n enrollments: _enrollments_enrollmentsSlice__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n instructors: _instructors_instructorsSlice__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n students: _students_studentsSlice__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n roles: _roles_rolesSlice__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n permissions: _permissions_permissionsSlice__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n }\n});\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3RvcmVzL3N0b3JlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFrRDtBQUNWO0FBQ0Y7QUFDRjtBQUNJO0FBRUk7QUFDWTtBQUNOO0FBQzhCO0FBQ2xCO0FBQ0E7QUFDVDtBQUNUO0FBQ2tCO0FBRXZELE1BQU1jLFFBQVFkLGlFQUFjQSxDQUFDO0lBQ2xDZSxTQUFTO1FBQ1BDLE9BQU9mLG1EQUFZQTtRQUNuQmdCLE1BQU1mLGtEQUFXQTtRQUNqQmdCLE1BQU1mLGtEQUFTQTtRQUNmZ0IsUUFBUWYsb0RBQVdBO1FBRW5CZ0IsT0FBT2YseURBQVVBO1FBQ2pCZ0IsV0FBV2YsaUVBQWNBO1FBQ3pCZ0IsU0FBU2YsNkRBQVlBO1FBQ3JCZ0IsbUJBQW1CZixpRkFBc0JBO1FBQ3pDZ0IsYUFBYWYscUVBQWdCQTtRQUM3QmdCLGFBQWFmLHFFQUFnQkE7UUFDN0JnQixVQUFVZixnRUFBYUE7UUFDdkJnQixPQUFPZiwwREFBVUE7UUFDakJnQixhQUFhZixzRUFBZ0JBO0lBQy9CO0FBQ0YsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvc3RvcmVzL3N0b3JlLnRzPzY1MWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBzdHlsZVJlZHVjZXIgZnJvbSAnLi9zdHlsZVNsaWNlJztcbmltcG9ydCBtYWluUmVkdWNlciBmcm9tICcuL21haW5TbGljZSc7XG5pbXBvcnQgYXV0aFNsaWNlIGZyb20gJy4vYXV0aFNsaWNlJztcbmltcG9ydCBvcGVuQWlTbGljZSBmcm9tICcuL29wZW5BaVNsaWNlJztcblxuaW1wb3J0IHVzZXJzU2xpY2UgZnJvbSAnLi91c2Vycy91c2Vyc1NsaWNlJztcbmltcG9ydCBhbmFseXRpY3NTbGljZSBmcm9tICcuL2FuYWx5dGljcy9hbmFseXRpY3NTbGljZSc7XG5pbXBvcnQgY291cnNlc1NsaWNlIGZyb20gJy4vY291cnNlcy9jb3Vyc2VzU2xpY2UnO1xuaW1wb3J0IGRpc2N1c3Npb25fYm9hcmRzU2xpY2UgZnJvbSAnLi9kaXNjdXNzaW9uX2JvYXJkcy9kaXNjdXNzaW9uX2JvYXJkc1NsaWNlJztcbmltcG9ydCBlbnJvbGxtZW50c1NsaWNlIGZyb20gJy4vZW5yb2xsbWVudHMvZW5yb2xsbWVudHNTbGljZSc7XG5pbXBvcnQgaW5zdHJ1Y3RvcnNTbGljZSBmcm9tICcuL2luc3RydWN0b3JzL2luc3RydWN0b3JzU2xpY2UnO1xuaW1wb3J0IHN0dWRlbnRzU2xpY2UgZnJvbSAnLi9zdHVkZW50cy9zdHVkZW50c1NsaWNlJztcbmltcG9ydCByb2xlc1NsaWNlIGZyb20gJy4vcm9sZXMvcm9sZXNTbGljZSc7XG5pbXBvcnQgcGVybWlzc2lvbnNTbGljZSBmcm9tICcuL3Blcm1pc3Npb25zL3Blcm1pc3Npb25zU2xpY2UnO1xuXG5leHBvcnQgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gIHJlZHVjZXI6IHtcbiAgICBzdHlsZTogc3R5bGVSZWR1Y2VyLFxuICAgIG1haW46IG1haW5SZWR1Y2VyLFxuICAgIGF1dGg6IGF1dGhTbGljZSxcbiAgICBvcGVuQWk6IG9wZW5BaVNsaWNlLFxuXG4gICAgdXNlcnM6IHVzZXJzU2xpY2UsXG4gICAgYW5hbHl0aWNzOiBhbmFseXRpY3NTbGljZSxcbiAgICBjb3Vyc2VzOiBjb3Vyc2VzU2xpY2UsXG4gICAgZGlzY3Vzc2lvbl9ib2FyZHM6IGRpc2N1c3Npb25fYm9hcmRzU2xpY2UsXG4gICAgZW5yb2xsbWVudHM6IGVucm9sbG1lbnRzU2xpY2UsXG4gICAgaW5zdHJ1Y3RvcnM6IGluc3RydWN0b3JzU2xpY2UsXG4gICAgc3R1ZGVudHM6IHN0dWRlbnRzU2xpY2UsXG4gICAgcm9sZXM6IHJvbGVzU2xpY2UsXG4gICAgcGVybWlzc2lvbnM6IHBlcm1pc3Npb25zU2xpY2UsXG4gIH0sXG59KTtcblxuLy8gSW5mZXIgdGhlIGBSb290U3RhdGVgIGFuZCBgQXBwRGlzcGF0Y2hgIHR5cGVzIGZyb20gdGhlIHN0b3JlIGl0c2VsZlxuZXhwb3J0IHR5cGUgUm9vdFN0YXRlID0gUmV0dXJuVHlwZTx0eXBlb2Ygc3RvcmUuZ2V0U3RhdGU+O1xuLy8gSW5mZXJyZWQgdHlwZToge3Bvc3RzOiBQb3N0c1N0YXRlLCBjb21tZW50czogQ29tbWVudHNTdGF0ZSwgdXNlcnM6IFVzZXJzU3RhdGV9XG5leHBvcnQgdHlwZSBBcHBEaXNwYXRjaCA9IHR5cGVvZiBzdG9yZS5kaXNwYXRjaDtcbiJdLCJuYW1lcyI6WyJjb25maWd1cmVTdG9yZSIsInN0eWxlUmVkdWNlciIsIm1haW5SZWR1Y2VyIiwiYXV0aFNsaWNlIiwib3BlbkFpU2xpY2UiLCJ1c2Vyc1NsaWNlIiwiYW5hbHl0aWNzU2xpY2UiLCJjb3Vyc2VzU2xpY2UiLCJkaXNjdXNzaW9uX2JvYXJkc1NsaWNlIiwiZW5yb2xsbWVudHNTbGljZSIsImluc3RydWN0b3JzU2xpY2UiLCJzdHVkZW50c1NsaWNlIiwicm9sZXNTbGljZSIsInBlcm1pc3Npb25zU2xpY2UiLCJzdG9yZSIsInJlZHVjZXIiLCJzdHlsZSIsIm1haW4iLCJhdXRoIiwib3BlbkFpIiwidXNlcnMiLCJhbmFseXRpY3MiLCJjb3Vyc2VzIiwiZGlzY3Vzc2lvbl9ib2FyZHMiLCJlbnJvbGxtZW50cyIsImluc3RydWN0b3JzIiwic3R1ZGVudHMiLCJyb2xlcyIsInBlcm1pc3Npb25zIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/stores/store.ts\n"));
/***/ }),
/***/ "./src/stores/students/studentsSlice.ts":
/*!**********************************************!*\
!*** ./src/stores/students/studentsSlice.ts ***!
\**********************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ studentsSlice: function() { return /* binding */ studentsSlice; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n students: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"students\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"students/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/deleteStudents\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"students/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/createStudents\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"students\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"students/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"students/updateStudents\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"students/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst studentsSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"students\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.students = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.students = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Students has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Students\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Students\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Students\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Students has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = studentsSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (studentsSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUVwRCwrREFBZVosY0FBY2EsT0FBTyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9zdG9yZXMvc3R1ZGVudHMvc3R1ZGVudHNTbGljZS50cz9jMTY4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNsaWNlLCBjcmVhdGVBc3luY1RodW5rLCBQYXlsb2FkQWN0aW9uIH0gZnJvbSAnQHJlZHV4anMvdG9vbGtpdCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHtcbiAgZnVsZmlsbGVkTm90aWZ5LFxuICByZWplY3ROb3RpZnksXG4gIHJlc2V0Tm90aWZ5LFxufSBmcm9tICcuLi8uLi9oZWxwZXJzL25vdGlmeVN0YXRlSGFuZGxlcic7XG5cbmludGVyZmFjZSBNYWluU3RhdGUge1xuICBzdHVkZW50czogYW55O1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBjb3VudDogbnVtYmVyO1xuICByZWZldGNoOiBib29sZWFuO1xuICByb2xlc1dpZGdldHM6IGFueVtdO1xuICBub3RpZnk6IHtcbiAgICBzaG93Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAgIHRleHROb3RpZmljYXRpb246IHN0cmluZztcbiAgICB0eXBlTm90aWZpY2F0aW9uOiBzdHJpbmc7XG4gIH07XG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogTWFpblN0YXRlID0ge1xuICBzdHVkZW50czogW10sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjb3VudDogMCxcbiAgcmVmZXRjaDogZmFsc2UsXG4gIHJvbGVzV2lkZ2V0czogW10sXG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGZhbHNlLFxuICAgIHRleHROb3RpZmljYXRpb246ICcnLFxuICAgIHR5cGVOb3RpZmljYXRpb246ICd3YXJuJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaCA9IGNyZWF0ZUFzeW5jVGh1bmsoJ3N0dWRlbnRzL2ZldGNoJywgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICBjb25zdCB7IGlkLCBxdWVyeSB9ID0gZGF0YTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MuZ2V0KGBzdHVkZW50cyR7cXVlcnkgfHwgKGlkID8gYC8ke2lkfWAgOiAnJyl9YCk7XG4gIHJldHVybiBpZFxuICAgID8gcmVzdWx0LmRhdGFcbiAgICA6IHsgcm93czogcmVzdWx0LmRhdGEucm93cywgY291bnQ6IHJlc3VsdC5kYXRhLmNvdW50IH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW1zQnlJZHMgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnc3R1ZGVudHMvZGVsZXRlQnlJZHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGF4aW9zLnBvc3QoJ3N0dWRlbnRzL2RlbGV0ZUJ5SWRzJywgeyBkYXRhIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBkZWxldGVJdGVtID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ3N0dWRlbnRzL2RlbGV0ZVN0dWRlbnRzJyxcbiAgYXN5bmMgKGlkOiBzdHJpbmcsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MuZGVsZXRlKGBzdHVkZW50cy8ke2lkfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnc3R1ZGVudHMvY3JlYXRlU3R1ZGVudHMnLFxuICBhc3luYyAoZGF0YTogYW55LCB7IHJlamVjdFdpdGhWYWx1ZSB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3N0dWRlbnRzJywgeyBkYXRhIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVqZWN0V2l0aFZhbHVlKGVycm9yLnJlc3BvbnNlLmRhdGEpO1xuICAgIH1cbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRDc3YgPSBjcmVhdGVBc3luY1RodW5rKFxuICAnc3R1ZGVudHMvdXBsb2FkQ3N2JyxcbiAgYXN5bmMgKGZpbGU6IEZpbGUsIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICAgIGRhdGEuYXBwZW5kKCdmaWxlbmFtZScsIGZpbGUubmFtZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoJ3N0dWRlbnRzL2J1bGstaW1wb3J0JywgZGF0YSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICdzdHVkZW50cy91cGRhdGVTdHVkZW50cycsXG4gIGFzeW5jIChwYXlsb2FkOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucHV0KGBzdHVkZW50cy8ke3BheWxvYWQuaWR9YCwge1xuICAgICAgICBpZDogcGF5bG9hZC5pZCxcbiAgICAgICAgZGF0YTogcGF5bG9hZC5kYXRhLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHN0dWRlbnRzU2xpY2UgPSBjcmVhdGVTbGljZSh7XG4gIG5hbWU6ICdzdHVkZW50cycsXG4gIGluaXRpYWxTdGF0ZSxcbiAgcmVkdWNlcnM6IHtcbiAgICBzZXRSZWZldGNoOiAoc3RhdGUsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4ge1xuICAgICAgc3RhdGUucmVmZXRjaCA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIH0sXG4gIH0sXG4gIGV4dHJhUmVkdWNlcnM6IChidWlsZGVyKSA9PiB7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGZldGNoLmZ1bGZpbGxlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIGlmIChhY3Rpb24ucGF5bG9hZC5yb3dzICYmIGFjdGlvbi5wYXlsb2FkLmNvdW50ID49IDApIHtcbiAgICAgICAgc3RhdGUuc3R1ZGVudHMgPSBhY3Rpb24ucGF5bG9hZC5yb3dzO1xuICAgICAgICBzdGF0ZS5jb3VudCA9IGFjdGlvbi5wYXlsb2FkLmNvdW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc3R1ZGVudHMgPSBhY3Rpb24ucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnU3R1ZGVudHMgaGFzIGJlZW4gZGVsZXRlZCcpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0uZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J1N0dWRlbnRzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGRlbGV0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5wZW5kaW5nLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgcmVzZXROb3RpZnkoc3RhdGUpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydTdHVkZW50cycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiBjcmVhdGVkYCk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnU3R1ZGVudHMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gdXBkYXRlZGApO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwbG9hZENzdi5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCAnU3R1ZGVudHMgaGFzIGJlZW4gdXBsb2FkZWQnKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LnJlamVjdGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgcmVqZWN0Tm90aWZ5KHN0YXRlLCBhY3Rpb24pO1xuICAgIH0pO1xuICB9LFxufSk7XG5cbi8vIEFjdGlvbiBjcmVhdG9ycyBhcmUgZ2VuZXJhdGVkIGZvciBlYWNoIGNhc2UgcmVkdWNlciBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IHsgc2V0UmVmZXRjaCB9ID0gc3R1ZGVudHNTbGljZS5hY3Rpb25zO1xuXG5leHBvcnQgZGVmYXVsdCBzdHVkZW50c1NsaWNlLnJlZHVjZXI7XG4iXSwibmFtZXMiOlsiY3JlYXRlU2xpY2UiLCJjcmVhdGVBc3luY1RodW5rIiwiYXhpb3MiLCJmdWxmaWxsZWROb3RpZnkiLCJyZWplY3ROb3RpZnkiLCJyZXNldE5vdGlmeSIsImluaXRpYWxTdGF0ZSIsInN0dWRlbnRzIiwibG9hZGluZyIsImNvdW50IiwicmVmZXRjaCIsInJvbGVzV2lkZ2V0cyIsIm5vdGlmeSIsInNob3dOb3RpZmljYXRpb24iLCJ0ZXh0Tm90aWZpY2F0aW9uIiwidHlwZU5vdGlmaWNhdGlvbiIsImZldGNoIiwiZGF0YSIsImlkIiwicXVlcnkiLCJyZXN1bHQiLCJnZXQiLCJyb3dzIiwiZGVsZXRlSXRlbXNCeUlkcyIsInJlamVjdFdpdGhWYWx1ZSIsInBvc3QiLCJlcnJvciIsInJlc3BvbnNlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZSIsImNyZWF0ZSIsInVwbG9hZENzdiIsImZpbGUiLCJGb3JtRGF0YSIsImFwcGVuZCIsIm5hbWUiLCJoZWFkZXJzIiwidXBkYXRlIiwicGF5bG9hZCIsInB1dCIsInN0dWRlbnRzU2xpY2UiLCJyZWR1Y2VycyIsInNldFJlZmV0Y2giLCJzdGF0ZSIsImFjdGlvbiIsImV4dHJhUmVkdWNlcnMiLCJidWlsZGVyIiwiYWRkQ2FzZSIsInBlbmRpbmciLCJyZWplY3RlZCIsImZ1bGZpbGxlZCIsInNsaWNlIiwiYWN0aW9ucyIsInJlZHVjZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/stores/students/studentsSlice.ts\n"));
/***/ }),
/***/ "./src/stores/styleSlice.ts":
/*!**********************************!*\
!*** ./src/stores/styleSlice.ts ***!
\**********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setDarkMode: function() { return /* binding */ setDarkMode; },\n/* harmony export */ setStyle: function() { return /* binding */ setStyle; },\n/* harmony export */ styleSlice: function() { return /* binding */ styleSlice; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../styles */ \"./src/styles.ts\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config */ \"./src/config.ts\");\n\n\n\nconst initialState = {\n asideStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.aside,\n asideScrollbarsStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.asideScrollbars,\n asideBrandStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.asideBrand,\n asideMenuItemStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.asideMenuItem,\n asideMenuItemActiveStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.asideMenuItemActive,\n asideMenuDropdownStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.asideMenuDropdown,\n navBarItemLabelStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.navBarItemLabel,\n navBarItemLabelHoverStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.navBarItemLabelHover,\n navBarItemLabelActiveColorStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.navBarItemLabelActiveColor,\n overlayStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.overlay,\n darkMode: false,\n bgLayoutColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.bgLayoutColor,\n iconsColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.iconsColor,\n activeLinkColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.activeLinkColor,\n cardsColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.cardsColor,\n focusRingColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.focusRingColor,\n corners: _styles__WEBPACK_IMPORTED_MODULE_0__.white.corners,\n cardsStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.cardsStyle,\n linkColor: _styles__WEBPACK_IMPORTED_MODULE_0__.white.linkColor,\n websiteHeder: _styles__WEBPACK_IMPORTED_MODULE_0__.white.websiteHeder,\n borders: _styles__WEBPACK_IMPORTED_MODULE_0__.white.borders,\n shadow: _styles__WEBPACK_IMPORTED_MODULE_0__.white.shadow,\n websiteSectionStyle: _styles__WEBPACK_IMPORTED_MODULE_0__.white.websiteSectionStyle,\n textSecondary: _styles__WEBPACK_IMPORTED_MODULE_0__.white.textSecondary\n};\nconst styleSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__.createSlice)({\n name: \"style\",\n initialState,\n reducers: {\n setDarkMode: (state, action)=>{\n state.darkMode = action.payload !== null ? action.payload : !state.darkMode;\n if (typeof localStorage !== \"undefined\") {\n localStorage.setItem(_config__WEBPACK_IMPORTED_MODULE_1__.localStorageDarkModeKey, state.darkMode ? \"1\" : \"0\");\n }\n if (typeof document !== \"undefined\") {\n document.body.classList[state.darkMode ? \"add\" : \"remove\"](\"dark-scrollbars\");\n document.documentElement.classList[state.darkMode ? \"add\" : \"remove\"](\"dark-scrollbars-compat\");\n }\n },\n setStyle: (state, action)=>{\n if (!_styles__WEBPACK_IMPORTED_MODULE_0__[action.payload]) {\n return;\n }\n if (typeof localStorage !== \"undefined\") {\n localStorage.setItem(_config__WEBPACK_IMPORTED_MODULE_1__.localStorageStyleKey, action.payload);\n }\n const style = _styles__WEBPACK_IMPORTED_MODULE_0__[action.payload];\n for(const key in style){\n state[\"\".concat(key, \"Style\")] = style[key];\n }\n }\n }\n});\n// Action creators are generated for each case reducer function\nconst { setDarkMode, setStyle } = styleSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (styleSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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b3Jlcy9zdHlsZVNsaWNlLnRzPzE0Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHsgbG9jYWxTdG9yYWdlRGFya01vZGVLZXksIGxvY2FsU3RvcmFnZVN0eWxlS2V5IH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IFN0eWxlS2V5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmludGVyZmFjZSBTdHlsZVN0YXRlIHtcbiAgYXNpZGVTdHlsZTogc3RyaW5nO1xuICBhc2lkZVNjcm9sbGJhcnNTdHlsZTogc3RyaW5nO1xuICBhc2lkZUJyYW5kU3R5bGU6IHN0cmluZztcbiAgYXNpZGVNZW51SXRlbVN0eWxlOiBzdHJpbmc7XG4gIGFzaWRlTWVudUl0ZW1BY3RpdmVTdHlsZTogc3RyaW5nO1xuICBhc2lkZU1lbnVEcm9wZG93blN0eWxlOiBzdHJpbmc7XG4gIG5hdkJhckl0ZW1MYWJlbFN0eWxlOiBzdHJpbmc7XG4gIG5hdkJhckl0ZW1MYWJlbEhvdmVyU3R5bGU6IHN0cmluZztcbiAgbmF2QmFySXRlbUxhYmVsQWN0aXZlQ29sb3JTdHlsZTogc3RyaW5nO1xuICBvdmVybGF5U3R5bGU6IHN0cmluZztcbiAgZGFya01vZGU6IGJvb2xlYW47XG4gIGJnTGF5b3V0Q29sb3I6IHN0cmluZztcbiAgaWNvbnNDb2xvcjogc3RyaW5nO1xuICBhY3RpdmVMaW5rQ29sb3I6IHN0cmluZztcbiAgY2FyZHNDb2xvcjogc3RyaW5nO1xuICBmb2N1c1JpbmdDb2xvcjogc3RyaW5nO1xuICBjb3JuZXJzOiBzdHJpbmc7XG4gIGNhcmRzU3R5bGU6IHN0cmluZztcbiAgbGlua0NvbG9yOiBzdHJpbmc7XG4gIHdlYnNpdGVIZWRlcjogc3RyaW5nO1xuICBib3JkZXJzOiBzdHJpbmc7XG4gIHNoYWRvdzogc3RyaW5nO1xuICB3ZWJzaXRlU2VjdGlvblN0eWxlOiBzdHJpbmc7XG4gIHRleHRTZWNvbmRhcnk6IHN0cmluZztcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBTdHlsZVN0YXRlID0ge1xuICBhc2lkZVN0eWxlOiBzdHlsZXMud2hpdGUuYXNpZGUsXG4gIGFzaWRlU2Nyb2xsYmFyc1N0eWxlOiBzdHlsZXMud2hpdGUuYXNpZGVTY3JvbGxiYXJzLFxuICBhc2lkZUJyYW5kU3R5bGU6IHN0eWxlcy53aGl0ZS5hc2lkZUJyYW5kLFxuICBhc2lkZU1lbnVJdGVtU3R5bGU6IHN0eWxlcy53aGl0ZS5hc2lkZU1lbnVJdGVtLFxuICBhc2lkZU1lbnVJdGVtQWN0aXZlU3R5bGU6IHN0eWxlcy53aGl0ZS5hc2lkZU1lbnVJdGVtQWN0aXZlLFxuICBhc2lkZU1lbnVEcm9wZG93blN0eWxlOiBzdHlsZXMud2hpdGUuYXNpZGVNZW51RHJvcGRvd24sXG4gIG5hdkJhckl0ZW1MYWJlbFN0eWxlOiBzdHlsZXMud2hpdGUubmF2QmFySXRlbUxhYmVsLFxuICBuYXZCYXJJdGVtTGFiZWxIb3ZlclN0eWxlOiBzdHlsZXMud2hpdGUubmF2QmFySXRlbUxhYmVsSG92ZXIsXG4gIG5hdkJhckl0ZW1MYWJlbEFjdGl2ZUNvbG9yU3R5bGU6IHN0eWxlcy53aGl0ZS5uYXZCYXJJdGVtTGFiZWxBY3RpdmVDb2xvcixcbiAgb3ZlcmxheVN0eWxlOiBzdHlsZXMud2hpdGUub3ZlcmxheSxcbiAgZGFya01vZGU6IGZhbHNlLFxuICBiZ0xheW91dENvbG9yOiBzdHlsZXMud2hpdGUuYmdMYXlvdXRDb2xvcixcbiAgaWNvbnNDb2xvcjogc3R5bGVzLndoaXRlLmljb25zQ29sb3IsXG4gIGFjdGl2ZUxpbmtDb2xvcjogc3R5bGVzLndoaXRlLmFjdGl2ZUxpbmtDb2xvcixcbiAgY2FyZHNDb2xvcjogc3R5bGVzLndoaXRlLmNhcmRzQ29sb3IsXG4gIGZvY3VzUmluZ0NvbG9yOiBzdHlsZXMud2hpdGUuZm9jdXNSaW5nQ29sb3IsXG4gIGNvcm5lcnM6IHN0eWxlcy53aGl0ZS5jb3JuZXJzLFxuICBjYXJkc1N0eWxlOiBzdHlsZXMud2hpdGUuY2FyZHNTdHlsZSxcbiAgbGlua0NvbG9yOiBzdHlsZXMud2hpdGUubGlua0NvbG9yLFxuICB3ZWJzaXRlSGVkZXI6IHN0eWxlcy53aGl0ZS53ZWJzaXRlSGVkZXIsXG4gIGJvcmRlcnM6IHN0eWxlcy53aGl0ZS5ib3JkZXJzLFxuICBzaGFkb3c6IHN0eWxlcy53aGl0ZS5zaGFkb3csXG4gIHdlYnNpdGVTZWN0aW9uU3R5bGU6IHN0eWxlcy53aGl0ZS53ZWJzaXRlU2VjdGlvblN0eWxlLFxuICB0ZXh0U2Vjb25kYXJ5OiBzdHlsZXMud2hpdGUudGV4dFNlY29uZGFyeSxcbn07XG5cbmV4cG9ydCBjb25zdCBzdHlsZVNsaWNlID0gY3JlYXRlU2xpY2Uoe1xuICBuYW1lOiAnc3R5bGUnLFxuICBpbml0aWFsU3RhdGUsXG4gIHJlZHVjZXJzOiB7XG4gICAgc2V0RGFya01vZGU6IChzdGF0ZSwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4gfCBudWxsPikgPT4ge1xuICAgICAgc3RhdGUuZGFya01vZGUgPVxuICAgICAgICBhY3Rpb24ucGF5bG9hZCAhPT0gbnVsbCA/IGFjdGlvbi5wYXlsb2FkIDogIXN0YXRlLmRhcmtNb2RlO1xuXG4gICAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgbG9jYWxTdG9yYWdlRGFya01vZGVLZXksXG4gICAgICAgICAgc3RhdGUuZGFya01vZGUgPyAnMScgOiAnMCcsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0W3N0YXRlLmRhcmtNb2RlID8gJ2FkZCcgOiAncmVtb3ZlJ10oXG4gICAgICAgICAgJ2Rhcmstc2Nyb2xsYmFycycsXG4gICAgICAgICk7XG5cbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdFtzdGF0ZS5kYXJrTW9kZSA/ICdhZGQnIDogJ3JlbW92ZSddKFxuICAgICAgICAgICdkYXJrLXNjcm9sbGJhcnMtY29tcGF0JyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc2V0U3R5bGU6IChzdGF0ZSwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPFN0eWxlS2V5PikgPT4ge1xuICAgICAgaWYgKCFzdHlsZXNbYWN0aW9uLnBheWxvYWRdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZVN0eWxlS2V5LCBhY3Rpb24ucGF5bG9hZCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0eWxlID0gc3R5bGVzW2FjdGlvbi5wYXlsb2FkXTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGUpIHtcbiAgICAgICAgc3RhdGVbYCR7a2V5fVN0eWxlYF0gPSBzdHlsZVtrZXldO1xuICAgICAgfVxuICAgIH0sXG4gIH0sXG59KTtcblxuLy8gQWN0aW9uIGNyZWF0b3JzIGFyZSBnZW5lcmF0ZWQgZm9yIGVhY2ggY2FzZSByZWR1Y2VyIGZ1bmN0aW9uXG5leHBvcnQgY29uc3QgeyBzZXREYXJrTW9kZSwgc2V0U3R5bGUgfSA9IHN0eWxlU2xpY2UuYWN0aW9ucztcblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVTbGljZS5yZWR1Y2VyO1xuIl0sIm5hbWVzIjpbImNyZWF0ZVNsaWNlIiwic3R5bGVzIiwibG9jYWxTdG9yYWdlRGFya01vZGVLZXkiLCJsb2NhbFN0b3JhZ2VTdHlsZUtleSIsImluaXRpYWxTdGF0ZSIsImFzaWRlU3R5bGUiLCJ3aGl0ZSIsImFzaWRlIiwiYXNpZGVTY3JvbGxiYXJzU3R5bGUiLCJhc2lkZVNjcm9sbGJhcnMiLCJhc2lkZUJyYW5kU3R5bGUiLCJhc2lkZUJyYW5kIiwiYXNpZGVNZW51SXRlbVN0eWxlIiwiYXNpZGVNZW51SXRlbSIsImFzaWRlTWVudUl0ZW1BY3RpdmVTdHlsZSIsImFzaWRlTWVudUl0ZW1BY3RpdmUiLCJhc2lkZU1lbnVEcm9wZG93blN0eWxlIiwiYXNpZGVNZW51RHJvcGRvd24iLCJuYXZCYXJJdGVtTGFiZWxTdHlsZSIsIm5hdkJhckl0ZW1MYWJlbCIsIm5hdkJhckl0ZW1MYWJlbEhvdmVyU3R5bGUiLCJuYXZCYXJJdGVtTGFiZWxIb3ZlciIsIm5hdkJhckl0ZW1MYWJlbEFjdGl2ZUNvbG9yU3R5bGUiLCJuYXZCYXJJdGVtTGFiZWxBY3RpdmVDb2xvciIsIm92ZXJsYXlTdHlsZSIsIm92ZXJsYXkiLCJkYXJrTW9kZSIsImJnTGF5b3V0Q29sb3IiLCJpY29uc0NvbG9yIiwiYWN0aXZlTGlua0NvbG9yIiwiY2FyZHNDb2xvciIsImZvY3VzUmluZ0NvbG9yIiwiY29ybmVycyIsImNhcmRzU3R5bGUiLCJsaW5rQ29sb3IiLCJ3ZWJzaXRlSGVkZXIiLCJib3JkZXJzIiwic2hhZG93Iiwid2Vic2l0ZVNlY3Rpb25TdHlsZSIsInRleHRTZWNvbmRhcnkiLCJzdHlsZVNsaWNlIiwibmFtZSIsInJlZHVjZXJzIiwic2V0RGFya01vZGUiLCJzdGF0ZSIsImFjdGlvbiIsInBheWxvYWQiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiZG9jdW1lbnQiLCJib2R5IiwiY2xhc3NMaXN0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2V0U3R5bGUiLCJzdHlsZSIsImtleSIsImFjdGlvbnMiLCJyZWR1Y2VyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/stores/styleSlice.ts\n"));
/***/ }),
/***/ "./src/stores/users/usersSlice.ts":
/*!****************************************!*\
!*** ./src/stores/users/usersSlice.ts ***!
\****************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ create: function() { return /* binding */ create; },\n/* harmony export */ deleteItem: function() { return /* binding */ deleteItem; },\n/* harmony export */ deleteItemsByIds: function() { return /* binding */ deleteItemsByIds; },\n/* harmony export */ fetch: function() { return /* binding */ fetch; },\n/* harmony export */ setRefetch: function() { return /* binding */ setRefetch; },\n/* harmony export */ update: function() { return /* binding */ update; },\n/* harmony export */ uploadCsv: function() { return /* binding */ uploadCsv; },\n/* harmony export */ usersSlice: function() { return /* binding */ usersSlice; }\n/* harmony export */ });\n/* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ \"./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var _helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/notifyStateHandler */ \"./src/helpers/notifyStateHandler.ts\");\n\n\n\nconst initialState = {\n users: [],\n loading: false,\n count: 0,\n refetch: false,\n rolesWidgets: [],\n notify: {\n showNotification: false,\n textNotification: \"\",\n typeNotification: \"warn\"\n }\n};\nconst fetch = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/fetch\", async (data)=>{\n const { id, query } = data;\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].get(\"users\".concat(query || (id ? \"/\".concat(id) : \"\")));\n return id ? result.data : {\n rows: result.data.rows,\n count: result.data.count\n };\n});\nconst deleteItemsByIds = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/deleteByIds\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"users/deleteByIds\", {\n data\n });\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst deleteItem = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/deleteUsers\", async (id, param)=>{\n let { rejectWithValue } = param;\n try {\n await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"][\"delete\"](\"users/\".concat(id));\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst create = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/createUsers\", async (data, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"users\", {\n data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst uploadCsv = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/uploadCsv\", async (file, param)=>{\n let { rejectWithValue } = param;\n try {\n const data = new FormData();\n data.append(\"file\", file);\n data.append(\"filename\", file.name);\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].post(\"users/bulk-import\", data, {\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst update = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createAsyncThunk)(\"users/updateUsers\", async (payload, param)=>{\n let { rejectWithValue } = param;\n try {\n const result = await axios__WEBPACK_IMPORTED_MODULE_2__[\"default\"].put(\"users/\".concat(payload.id), {\n id: payload.id,\n data: payload.data\n });\n return result.data;\n } catch (error) {\n if (!error.response) {\n throw error;\n }\n return rejectWithValue(error.response.data);\n }\n});\nconst usersSlice = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.createSlice)({\n name: \"users\",\n initialState,\n reducers: {\n setRefetch: (state, action)=>{\n state.refetch = action.payload;\n }\n },\n extraReducers: (builder)=>{\n builder.addCase(fetch.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(fetch.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(fetch.fulfilled, (state, action)=>{\n if (action.payload.rows && action.payload.count >= 0) {\n state.users = action.payload.rows;\n state.count = action.payload.count;\n } else {\n state.users = action.payload;\n }\n state.loading = false;\n });\n builder.addCase(deleteItemsByIds.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItemsByIds.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Users has been deleted\");\n });\n builder.addCase(deleteItemsByIds.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(deleteItem.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(deleteItem.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Users\".slice(0, -1), \" has been deleted\"));\n });\n builder.addCase(deleteItem.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(create.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(create.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Users\".slice(0, -1), \" has been created\"));\n });\n builder.addCase(update.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(update.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"\".concat(\"Users\".slice(0, -1), \" has been updated\"));\n });\n builder.addCase(update.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n builder.addCase(uploadCsv.pending, (state)=>{\n state.loading = true;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.resetNotify)(state);\n });\n builder.addCase(uploadCsv.fulfilled, (state)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.fulfilledNotify)(state, \"Users has been uploaded\");\n });\n builder.addCase(uploadCsv.rejected, (state, action)=>{\n state.loading = false;\n (0,_helpers_notifyStateHandler__WEBPACK_IMPORTED_MODULE_0__.rejectNotify)(state, action);\n });\n }\n});\n// Action creators are generated for each case reducer function\nconst { setRefetch } = usersSlice.actions;\n/* harmony default export */ __webpack_exports__[\"default\"] = (usersSlice.reducer);\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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WixXQUFXYSxPQUFPLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0b3Jlcy91c2Vycy91c2Vyc1NsaWNlLnRzPzIxNjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2xpY2UsIGNyZWF0ZUFzeW5jVGh1bmssIFBheWxvYWRBY3Rpb24gfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQge1xuICBmdWxmaWxsZWROb3RpZnksXG4gIHJlamVjdE5vdGlmeSxcbiAgcmVzZXROb3RpZnksXG59IGZyb20gJy4uLy4uL2hlbHBlcnMvbm90aWZ5U3RhdGVIYW5kbGVyJztcblxuaW50ZXJmYWNlIE1haW5TdGF0ZSB7XG4gIHVzZXJzOiBhbnk7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGNvdW50OiBudW1iZXI7XG4gIHJlZmV0Y2g6IGJvb2xlYW47XG4gIHJvbGVzV2lkZ2V0czogYW55W107XG4gIG5vdGlmeToge1xuICAgIHNob3dOb3RpZmljYXRpb246IGJvb2xlYW47XG4gICAgdGV4dE5vdGlmaWNhdGlvbjogc3RyaW5nO1xuICAgIHR5cGVOb3RpZmljYXRpb246IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBNYWluU3RhdGUgPSB7XG4gIHVzZXJzOiBbXSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGNvdW50OiAwLFxuICByZWZldGNoOiBmYWxzZSxcbiAgcm9sZXNXaWRnZXRzOiBbXSxcbiAgbm90aWZ5OiB7XG4gICAgc2hvd05vdGlmaWNhdGlvbjogZmFsc2UsXG4gICAgdGV4dE5vdGlmaWNhdGlvbjogJycsXG4gICAgdHlwZU5vdGlmaWNhdGlvbjogJ3dhcm4nLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoID0gY3JlYXRlQXN5bmNUaHVuaygndXNlcnMvZmV0Y2gnLCBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gIGNvbnN0IHsgaWQsIHF1ZXJ5IH0gPSBkYXRhO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5nZXQoYHVzZXJzJHtxdWVyeSB8fCAoaWQgPyBgLyR7aWR9YCA6ICcnKX1gKTtcbiAgcmV0dXJuIGlkXG4gICAgPyByZXN1bHQuZGF0YVxuICAgIDogeyByb3dzOiByZXN1bHQuZGF0YS5yb3dzLCBjb3VudDogcmVzdWx0LmRhdGEuY291bnQgfTtcbn0pO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlSXRlbXNCeUlkcyA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICd1c2Vycy9kZWxldGVCeUlkcycsXG4gIGFzeW5jIChkYXRhOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYXhpb3MucG9zdCgndXNlcnMvZGVsZXRlQnlJZHMnLCB7IGRhdGEgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUl0ZW0gPSBjcmVhdGVBc3luY1RodW5rKFxuICAndXNlcnMvZGVsZXRlVXNlcnMnLFxuICBhc3luYyAoaWQ6IHN0cmluZywgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBheGlvcy5kZWxldGUoYHVzZXJzLyR7aWR9YCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZSA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICd1c2Vycy9jcmVhdGVVc2VycycsXG4gIGFzeW5jIChkYXRhOiBhbnksIHsgcmVqZWN0V2l0aFZhbHVlIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucG9zdCgndXNlcnMnLCB7IGRhdGEgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghZXJyb3IucmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWplY3RXaXRoVmFsdWUoZXJyb3IucmVzcG9uc2UuZGF0YSk7XG4gICAgfVxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZENzdiA9IGNyZWF0ZUFzeW5jVGh1bmsoXG4gICd1c2Vycy91cGxvYWRDc3YnLFxuICBhc3luYyAoZmlsZTogRmlsZSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBkYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGVuYW1lJywgZmlsZS5uYW1lKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucG9zdCgndXNlcnMvYnVsay1pbXBvcnQnLCBkYXRhLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFlcnJvci5yZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlamVjdFdpdGhWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhKTtcbiAgICB9XG4gIH0sXG4pO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlID0gY3JlYXRlQXN5bmNUaHVuayhcbiAgJ3VzZXJzL3VwZGF0ZVVzZXJzJyxcbiAgYXN5bmMgKHBheWxvYWQ6IGFueSwgeyByZWplY3RXaXRoVmFsdWUgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBheGlvcy5wdXQoYHVzZXJzLyR7cGF5bG9hZC5pZH1gLCB7XG4gICAgICAgIGlkOiBwYXlsb2FkLmlkLFxuICAgICAgICBkYXRhOiBwYXlsb2FkLmRhdGEsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFlcnJvci5yZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlamVjdFdpdGhWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhKTtcbiAgICB9XG4gIH0sXG4pO1xuXG5leHBvcnQgY29uc3QgdXNlcnNTbGljZSA9IGNyZWF0ZVNsaWNlKHtcbiAgbmFtZTogJ3VzZXJzJyxcbiAgaW5pdGlhbFN0YXRlLFxuICByZWR1Y2Vyczoge1xuICAgIHNldFJlZmV0Y2g6IChzdGF0ZSwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4+KSA9PiB7XG4gICAgICBzdGF0ZS5yZWZldGNoID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgfSxcbiAgfSxcbiAgZXh0cmFSZWR1Y2VyczogKGJ1aWxkZXIpID0+IHtcbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2gucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2gucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZmV0Y2guZnVsZmlsbGVkLCAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICAgICAgaWYgKGFjdGlvbi5wYXlsb2FkLnJvd3MgJiYgYWN0aW9uLnBheWxvYWQuY291bnQgPj0gMCkge1xuICAgICAgICBzdGF0ZS51c2VycyA9IGFjdGlvbi5wYXlsb2FkLnJvd3M7XG4gICAgICAgIHN0YXRlLmNvdW50ID0gYWN0aW9uLnBheWxvYWQuY291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS51c2VycyA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgfVxuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW1zQnlJZHMucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtc0J5SWRzLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsICdVc2VycyBoYXMgYmVlbiBkZWxldGVkJyk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbXNCeUlkcy5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShkZWxldGVJdGVtLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoZGVsZXRlSXRlbS5mdWxmaWxsZWQsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IGZhbHNlO1xuICAgICAgZnVsZmlsbGVkTm90aWZ5KHN0YXRlLCBgJHsnVXNlcnMnLnNsaWNlKDAsIC0xKX0gaGFzIGJlZW4gZGVsZXRlZGApO1xuICAgIH0pO1xuXG4gICAgYnVpbGRlci5hZGRDYXNlKGRlbGV0ZUl0ZW0ucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG5cbiAgICBidWlsZGVyLmFkZENhc2UoY3JlYXRlLnBlbmRpbmcsIChzdGF0ZSkgPT4ge1xuICAgICAgc3RhdGUubG9hZGluZyA9IHRydWU7XG4gICAgICByZXNldE5vdGlmeShzdGF0ZSk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKGNyZWF0ZS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZShjcmVhdGUuZnVsZmlsbGVkLCAoc3RhdGUpID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGZ1bGZpbGxlZE5vdGlmeShzdGF0ZSwgYCR7J1VzZXJzJy5zbGljZSgwLCAtMSl9IGhhcyBiZWVuIGNyZWF0ZWRgKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGRhdGUucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBkYXRlLmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsIGAkeydVc2Vycycuc2xpY2UoMCwgLTEpfSBoYXMgYmVlbiB1cGRhdGVkYCk7XG4gICAgfSk7XG4gICAgYnVpbGRlci5hZGRDYXNlKHVwZGF0ZS5yZWplY3RlZCwgKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgIHN0YXRlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJlamVjdE5vdGlmeShzdGF0ZSwgYWN0aW9uKTtcbiAgICB9KTtcblxuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGxvYWRDc3YucGVuZGluZywgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHJlc2V0Tm90aWZ5KHN0YXRlKTtcbiAgICB9KTtcbiAgICBidWlsZGVyLmFkZENhc2UodXBsb2FkQ3N2LmZ1bGZpbGxlZCwgKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICBmdWxmaWxsZWROb3RpZnkoc3RhdGUsICdVc2VycyBoYXMgYmVlbiB1cGxvYWRlZCcpO1xuICAgIH0pO1xuICAgIGJ1aWxkZXIuYWRkQ2FzZSh1cGxvYWRDc3YucmVqZWN0ZWQsIChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZWplY3ROb3RpZnkoc3RhdGUsIGFjdGlvbik7XG4gICAgfSk7XG4gIH0sXG59KTtcblxuLy8gQWN0aW9uIGNyZWF0b3JzIGFyZSBnZW5lcmF0ZWQgZm9yIGVhY2ggY2FzZSByZWR1Y2VyIGZ1bmN0aW9uXG5leHBvcnQgY29uc3QgeyBzZXRSZWZldGNoIH0gPSB1c2Vyc1NsaWNlLmFjdGlvbnM7XG5cbmV4cG9ydCBkZWZhdWx0IHVzZXJzU2xpY2UucmVkdWNlcjtcbiJdLCJuYW1lcyI6WyJjcmVhdGVTbGljZSIsImNyZWF0ZUFzeW5jVGh1bmsiLCJheGlvcyIsImZ1bGZpbGxlZE5vdGlmeSIsInJlamVjdE5vdGlmeSIsInJlc2V0Tm90aWZ5IiwiaW5pdGlhbFN0YXRlIiwidXNlcnMiLCJsb2FkaW5nIiwiY291bnQiLCJyZWZldGNoIiwicm9sZXNXaWRnZXRzIiwibm90aWZ5Iiwic2hvd05vdGlmaWNhdGlvbiIsInRleHROb3RpZmljYXRpb24iLCJ0eXBlTm90aWZpY2F0aW9uIiwiZmV0Y2giLCJkYXRhIiwiaWQiLCJxdWVyeSIsInJlc3VsdCIsImdldCIsInJvd3MiLCJkZWxldGVJdGVtc0J5SWRzIiwicmVqZWN0V2l0aFZhbHVlIiwicG9zdCIsImVycm9yIiwicmVzcG9uc2UiLCJkZWxldGVJdGVtIiwiZGVsZXRlIiwiY3JlYXRlIiwidXBsb2FkQ3N2IiwiZmlsZSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsImhlYWRlcnMiLCJ1cGRhdGUiLCJwYXlsb2FkIiwicHV0IiwidXNlcnNTbGljZSIsInJlZHVjZXJzIiwic2V0UmVmZXRjaCIsInN0YXRlIiwiYWN0aW9uIiwiZXh0cmFSZWR1Y2VycyIsImJ1aWxkZXIiLCJhZGRDYXNlIiwicGVuZGluZyIsInJlamVjdGVkIiwiZnVsZmlsbGVkIiwic2xpY2UiLCJhY3Rpb25zIiwicmVkdWNlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/stores/users/usersSlice.ts\n"));
/***/ }),
/***/ "./src/styles.ts":
/*!***********************!*\
!*** ./src/styles.ts ***!
\***********************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ basic: function() { return /* binding */ basic; },\n/* harmony export */ dataGridStyles: function() { return /* binding */ dataGridStyles; },\n/* harmony export */ white: function() { return /* binding */ white; }\n/* harmony export */ });\nconst basic = {\n aside: \"bg-gray-800 lg:rounded-2xl\",\n asideScrollbars: \"aside-scrollbars-gray\",\n asideBrand: \"bg-gray-900 text-white\",\n asideMenuItem: \"text-gray-300 hover:text-white\",\n asideMenuItemActive: \"font-bold text-white\",\n asideMenuDropdown: \"bg-gray-700/50\",\n navBarItemLabel: \"text-black\",\n navBarItemLabelHover: \"hover:text-blue-500\",\n navBarItemLabelActiveColor: \"text-blue-600\",\n overlay: \"from-gray-700 via-gray-900 to-gray-700\",\n activeLinkColor: \"bg-gray-100/70\",\n bgLayoutColor: \"bg-gray-50\",\n iconsColor: \"text-blue-500\",\n cardsColor: \"bg-white\",\n focusRingColor: \"focus:ring focus:ring-blue-600 focus:border-blue-600 focus:outline-none dark:focus:ring-blue-600 border-gray-300 dark:focus:border-blue-600\",\n corners: \"rounded\",\n cardsStyle: \"bg-white border border-pavitra-400\",\n linkColor: \"text-black\",\n websiteHeder: \"\",\n borders: \"\",\n shadow: \"\",\n websiteSectionStyle: \"\",\n textSecondary: \"\"\n};\nconst white = {\n aside: \"bg-white dark:text-white lg:rounded-2xl\",\n asideScrollbars: \"aside-scrollbars-light\",\n asideBrand: \"\",\n asideMenuItem: \"text-gray-700 hover:bg-gray-100/70 dark:text-dark-500 dark:hover:text-white dark:hover:bg-dark-800\",\n asideMenuItemActive: \"font-bold text-black dark:text-white\",\n asideMenuDropdown: \"bg-gray-100/75\",\n navBarItemLabel: \"text-blue-600\",\n navBarItemLabelHover: \"hover:text-black\",\n navBarItemLabelActiveColor: \"text-black\",\n overlay: \"from-white via-gray-100 to-white\",\n activeLinkColor: \"bg-gray-100/70\",\n bgLayoutColor: \"bg-gray-50\",\n iconsColor: \"text-blue-500\",\n cardsColor: \"bg-white\",\n focusRingColor: \"focus:ring focus:ring-blue-600 focus:border-blue-600 focus:outline-none border-gray-300 dark:focus:ring-blue-600 dark:focus:border-blue-600\",\n corners: \"rounded\",\n cardsStyle: \"bg-white border border-pavitra-400\",\n linkColor: \"text-blue-600\",\n websiteHeder: \"border-b border-gray-200\",\n borders: \"border-gray-200\",\n shadow: \"\",\n websiteSectionStyle: \"\",\n textSecondary: \"text-gray-500\"\n};\nconst dataGridStyles = {\n \"& .MuiDataGrid-cell\": {\n paddingX: 3,\n border: \"none\"\n },\n \"& .MuiDataGrid-columnHeader\": {\n paddingX: 3\n },\n \"& .MuiDataGrid-columnHeaderCheckbox\": {\n paddingX: 0\n },\n \"& .MuiDataGrid-columnHeaders\": {\n paddingY: 4,\n borderStartStartRadius: 7,\n borderStartEndRadius: 7\n },\n \"& .MuiDataGrid-footerContainer\": {\n paddingY: 0.5,\n borderEndStartRadius: 7,\n borderEndEndRadius: 7\n },\n \"& .MuiDataGrid-root\": {\n border: \"none\"\n }\n};\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvc3R5bGVzLnRzIiwibWFwcGluZ3MiOiI7Ozs7OztBQTBCTyxNQUFNQSxRQUFxQjtJQUNoQ0MsT0FBTztJQUNQQyxpQkFBaUI7SUFDakJDLFlBQVk7SUFDWkMsZUFBZTtJQUNmQyxxQkFBcUI7SUFDckJDLG1CQUFtQjtJQUNuQkMsaUJBQWlCO0lBQ2pCQyxzQkFBc0I7SUFDdEJDLDRCQUE0QjtJQUM1QkMsU0FBUztJQUNUQyxpQkFBaUI7SUFDakJDLGVBQWU7SUFDZkMsWUFBWTtJQUNaQyxZQUFZO0lBQ1pDLGdCQUNFO0lBQ0ZDLFNBQVM7SUFDVEMsWUFBWTtJQUNaQyxXQUFXO0lBQ1hDLGNBQWM7SUFDZEMsU0FBUztJQUNUQyxRQUFRO0lBQ1JDLHFCQUFxQjtJQUNyQkMsZUFBZTtBQUNqQixFQUFFO0FBRUssTUFBTUMsUUFBcUI7SUFDaEN2QixPQUFPO0lBQ1BDLGlCQUFpQjtJQUNqQkMsWUFBWTtJQUNaQyxlQUNFO0lBQ0ZDLHFCQUFxQjtJQUNyQkMsbUJBQW1CO0lBQ25CQyxpQkFBaUI7SUFDakJDLHNCQUFzQjtJQUN0QkMsNEJBQTRCO0lBQzVCQyxTQUFTO0lBQ1RDLGlCQUFpQjtJQUNqQkMsZUFBZTtJQUNmQyxZQUFZO0lBQ1pDLFlBQVk7SUFDWkMsZ0JBQ0U7SUFDRkMsU0FBUztJQUNUQyxZQUFZO0lBQ1pDLFdBQVc7SUFDWEMsY0FBYztJQUNkQyxTQUFTO0lBQ1RDLFFBQVE7SUFDUkMscUJBQXFCO0lBQ3JCQyxlQUFlO0FBQ2pCLEVBQUU7QUFFSyxNQUFNRSxpQkFBaUI7SUFDNUIsdUJBQXVCO1FBQ3JCQyxVQUFVO1FBQ1ZDLFFBQVE7SUFDVjtJQUNBLCtCQUErQjtRQUM3QkQsVUFBVTtJQUNaO0lBQ0EsdUNBQXVDO1FBQ3JDQSxVQUFVO0lBQ1o7SUFDQSxnQ0FBZ0M7UUFDOUJFLFVBQVU7UUFDVkMsd0JBQXdCO1FBQ3hCQyxzQkFBc0I7SUFDeEI7SUFDQSxrQ0FBa0M7UUFDaENGLFVBQVU7UUFDVkcsc0JBQXNCO1FBQ3RCQyxvQkFBb0I7SUFDdEI7SUFDQSx1QkFBdUI7UUFDckJMLFFBQVE7SUFDVjtBQUNGLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vc3JjL3N0eWxlcy50cz9kZjg2Il0sInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBTdHlsZU9iamVjdCB7XG4gIGFzaWRlOiBzdHJpbmc7XG4gIGFzaWRlU2Nyb2xsYmFyczogc3RyaW5nO1xuICBhc2lkZUJyYW5kOiBzdHJpbmc7XG4gIGFzaWRlTWVudUl0ZW06IHN0cmluZztcbiAgYXNpZGVNZW51SXRlbUFjdGl2ZTogc3RyaW5nO1xuICBhc2lkZU1lbnVEcm9wZG93bjogc3RyaW5nO1xuICBuYXZCYXJJdGVtTGFiZWw6IHN0cmluZztcbiAgbmF2QmFySXRlbUxhYmVsSG92ZXI6IHN0cmluZztcbiAgbmF2QmFySXRlbUxhYmVsQWN0aXZlQ29sb3I6IHN0cmluZztcbiAgb3ZlcmxheTogc3RyaW5nO1xuICBhY3RpdmVMaW5rQ29sb3I6IHN0cmluZztcbiAgYmdMYXlvdXRDb2xvcjogc3RyaW5nO1xuICBpY29uc0NvbG9yOiBzdHJpbmc7XG4gIGNhcmRzQ29sb3I6IHN0cmluZztcbiAgZm9jdXNSaW5nQ29sb3I6IHN0cmluZztcbiAgY29ybmVyczogc3RyaW5nO1xuICBjYXJkc1N0eWxlOiBzdHJpbmc7XG4gIGxpbmtDb2xvcjogc3RyaW5nO1xuICB3ZWJzaXRlSGVkZXI6IHN0cmluZztcbiAgYm9yZGVyczogc3RyaW5nO1xuICBzaGFkb3c6IHN0cmluZztcbiAgd2Vic2l0ZVNlY3Rpb25TdHlsZTogc3RyaW5nO1xuICB0ZXh0U2Vjb25kYXJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBiYXNpYzogU3R5bGVPYmplY3QgPSB7XG4gIGFzaWRlOiAnYmctZ3JheS04MDAgbGc6cm91bmRlZC0yeGwnLFxuICBhc2lkZVNjcm9sbGJhcnM6ICdhc2lkZS1zY3JvbGxiYXJzLWdyYXknLFxuICBhc2lkZUJyYW5kOiAnYmctZ3JheS05MDAgdGV4dC13aGl0ZScsXG4gIGFzaWRlTWVudUl0ZW06ICd0ZXh0LWdyYXktMzAwIGhvdmVyOnRleHQtd2hpdGUnLFxuICBhc2lkZU1lbnVJdGVtQWN0aXZlOiAnZm9udC1ib2xkIHRleHQtd2hpdGUnLFxuICBhc2lkZU1lbnVEcm9wZG93bjogJ2JnLWdyYXktNzAwLzUwJyxcbiAgbmF2QmFySXRlbUxhYmVsOiAndGV4dC1ibGFjaycsXG4gIG5hdkJhckl0ZW1MYWJlbEhvdmVyOiAnaG92ZXI6dGV4dC1ibHVlLTUwMCcsXG4gIG5hdkJhckl0ZW1MYWJlbEFjdGl2ZUNvbG9yOiAndGV4dC1ibHVlLTYwMCcsXG4gIG92ZXJsYXk6ICdmcm9tLWdyYXktNzAwIHZpYS1ncmF5LTkwMCB0by1ncmF5LTcwMCcsXG4gIGFjdGl2ZUxpbmtDb2xvcjogJ2JnLWdyYXktMTAwLzcwJyxcbiAgYmdMYXlvdXRDb2xvcjogJ2JnLWdyYXktNTAnLFxuICBpY29uc0NvbG9yOiAndGV4dC1ibHVlLTUwMCcsXG4gIGNhcmRzQ29sb3I6ICdiZy13aGl0ZScsXG4gIGZvY3VzUmluZ0NvbG9yOlxuICAgICdmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS02MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBkYXJrOmZvY3VzOnJpbmctYmx1ZS02MDAgYm9yZGVyLWdyYXktMzAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNjAwJyxcbiAgY29ybmVyczogJ3JvdW5kZWQnLFxuICBjYXJkc1N0eWxlOiAnYmctd2hpdGUgYm9yZGVyIGJvcmRlci1wYXZpdHJhLTQwMCcsXG4gIGxpbmtDb2xvcjogJ3RleHQtYmxhY2snLFxuICB3ZWJzaXRlSGVkZXI6ICcnLFxuICBib3JkZXJzOiAnJyxcbiAgc2hhZG93OiAnJyxcbiAgd2Vic2l0ZVNlY3Rpb25TdHlsZTogJycsXG4gIHRleHRTZWNvbmRhcnk6ICcnLFxufTtcblxuZXhwb3J0IGNvbnN0IHdoaXRlOiBTdHlsZU9iamVjdCA9IHtcbiAgYXNpZGU6ICdiZy13aGl0ZSBkYXJrOnRleHQtd2hpdGUgIGxnOnJvdW5kZWQtMnhsJyxcbiAgYXNpZGVTY3JvbGxiYXJzOiAnYXNpZGUtc2Nyb2xsYmFycy1saWdodCcsXG4gIGFzaWRlQnJhbmQ6ICcnLFxuICBhc2lkZU1lbnVJdGVtOlxuICAgICd0ZXh0LWdyYXktNzAwIGhvdmVyOmJnLWdyYXktMTAwLzcwIGRhcms6dGV4dC1kYXJrLTUwMCBkYXJrOmhvdmVyOnRleHQtd2hpdGUgZGFyazpob3ZlcjpiZy1kYXJrLTgwMCcsXG4gIGFzaWRlTWVudUl0ZW1BY3RpdmU6ICdmb250LWJvbGQgdGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUnLFxuICBhc2lkZU1lbnVEcm9wZG93bjogJ2JnLWdyYXktMTAwLzc1JyxcbiAgbmF2QmFySXRlbUxhYmVsOiAndGV4dC1ibHVlLTYwMCcsXG4gIG5hdkJhckl0ZW1MYWJlbEhvdmVyOiAnaG92ZXI6dGV4dC1ibGFjaycsXG4gIG5hdkJhckl0ZW1MYWJlbEFjdGl2ZUNvbG9yOiAndGV4dC1ibGFjaycsXG4gIG92ZXJsYXk6ICdmcm9tLXdoaXRlIHZpYS1ncmF5LTEwMCB0by13aGl0ZScsXG4gIGFjdGl2ZUxpbmtDb2xvcjogJ2JnLWdyYXktMTAwLzcwJyxcbiAgYmdMYXlvdXRDb2xvcjogJ2JnLWdyYXktNTAnLFxuICBpY29uc0NvbG9yOiAndGV4dC1ibHVlLTUwMCcsXG4gIGNhcmRzQ29sb3I6ICdiZy13aGl0ZScsXG4gIGZvY3VzUmluZ0NvbG9yOlxuICAgICdmb2N1czpyaW5nIGZvY3VzOnJpbmctYmx1ZS02MDAgZm9jdXM6Ym9yZGVyLWJsdWUtNjAwIGZvY3VzOm91dGxpbmUtbm9uZSBib3JkZXItZ3JheS0zMDAgZGFyazpmb2N1czpyaW5nLWJsdWUtNjAwIGRhcms6Zm9jdXM6Ym9yZGVyLWJsdWUtNjAwJyxcbiAgY29ybmVyczogJ3JvdW5kZWQnLFxuICBjYXJkc1N0eWxlOiAnYmctd2hpdGUgYm9yZGVyIGJvcmRlci1wYXZpdHJhLTQwMCcsXG4gIGxpbmtDb2xvcjogJ3RleHQtYmx1ZS02MDAnLFxuICB3ZWJzaXRlSGVkZXI6ICdib3JkZXItYiBib3JkZXItZ3JheS0yMDAnLFxuICBib3JkZXJzOiAnYm9yZGVyLWdyYXktMjAwJyxcbiAgc2hhZG93OiAnJyxcbiAgd2Vic2l0ZVNlY3Rpb25TdHlsZTogJycsXG4gIHRleHRTZWNvbmRhcnk6ICd0ZXh0LWdyYXktNTAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBkYXRhR3JpZFN0eWxlcyA9IHtcbiAgJyYgLk11aURhdGFHcmlkLWNlbGwnOiB7XG4gICAgcGFkZGluZ1g6IDMsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gIH0sXG4gICcmIC5NdWlEYXRhR3JpZC1jb2x1bW5IZWFkZXInOiB7XG4gICAgcGFkZGluZ1g6IDMsXG4gIH0sXG4gICcmIC5NdWlEYXRhR3JpZC1jb2x1bW5IZWFkZXJDaGVja2JveCc6IHtcbiAgICBwYWRkaW5nWDogMCxcbiAgfSxcbiAgJyYgLk11aURhdGFHcmlkLWNvbHVtbkhlYWRlcnMnOiB7XG4gICAgcGFkZGluZ1k6IDQsXG4gICAgYm9yZGVyU3RhcnRTdGFydFJhZGl1czogNyxcbiAgICBib3JkZXJTdGFydEVuZFJhZGl1czogNyxcbiAgfSxcbiAgJyYgLk11aURhdGFHcmlkLWZvb3RlckNvbnRhaW5lcic6IHtcbiAgICBwYWRkaW5nWTogMC41LFxuICAgIGJvcmRlckVuZFN0YXJ0UmFkaXVzOiA3LFxuICAgIGJvcmRlckVuZEVuZFJhZGl1czogNyxcbiAgfSxcbiAgJyYgLk11aURhdGFHcmlkLXJvb3QnOiB7XG4gICAgYm9yZGVyOiAnbm9uZScsXG4gIH0sXG59O1xuIl0sIm5hbWVzIjpbImJhc2ljIiwiYXNpZGUiLCJhc2lkZVNjcm9sbGJhcnMiLCJhc2lkZUJyYW5kIiwiYXNpZGVNZW51SXRlbSIsImFzaWRlTWVudUl0ZW1BY3RpdmUiLCJhc2lkZU1lbnVEcm9wZG93biIsIm5hdkJhckl0ZW1MYWJlbCIsIm5hdkJhckl0ZW1MYWJlbEhvdmVyIiwibmF2QmFySXRlbUxhYmVsQWN0aXZlQ29sb3IiLCJvdmVybGF5IiwiYWN0aXZlTGlua0NvbG9yIiwiYmdMYXlvdXRDb2xvciIsImljb25zQ29sb3IiLCJjYXJkc0NvbG9yIiwiZm9jdXNSaW5nQ29sb3IiLCJjb3JuZXJzIiwiY2FyZHNTdHlsZSIsImxpbmtDb2xvciIsIndlYnNpdGVIZWRlciIsImJvcmRlcnMiLCJzaGFkb3ciLCJ3ZWJzaXRlU2VjdGlvblN0eWxlIiwidGV4dFNlY29uZGFyeSIsIndoaXRlIiwiZGF0YUdyaWRTdHlsZXMiLCJwYWRkaW5nWCIsImJvcmRlciIsInBhZGRpbmdZIiwiYm9yZGVyU3RhcnRTdGFydFJhZGl1cyIsImJvcmRlclN0YXJ0RW5kUmFkaXVzIiwiYm9yZGVyRW5kU3RhcnRSYWRpdXMiLCJib3JkZXJFbmRFbmRSYWRpdXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/styles.ts\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/buffer/index.js":
/*!*********************************************************!*\
!*** ./node_modules/next/dist/compiled/buffer/index.js ***!
\*********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={675:function(e,r){\"use strict\";r.byteLength=byteLength;r.toByteArray=toByteArray;r.fromByteArray=fromByteArray;var t=[];var f=[];var n=typeof Uint8Array!==\"undefined\"?Uint8Array:Array;var i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(var o=0,u=i.length;o<u;++o){t[o]=i[o];f[i.charCodeAt(o)]=o}f[\"-\".charCodeAt(0)]=62;f[\"_\".charCodeAt(0)]=63;function getLens(e){var r=e.length;if(r%4>0){throw new Error(\"Invalid string. Length must be a multiple of 4\")}var t=e.indexOf(\"=\");if(t===-1)t=r;var f=t===r?0:4-t%4;return[t,f]}function byteLength(e){var r=getLens(e);var t=r[0];var f=r[1];return(t+f)*3/4-f}function _byteLength(e,r,t){return(r+t)*3/4-t}function toByteArray(e){var r;var t=getLens(e);var i=t[0];var o=t[1];var u=new n(_byteLength(e,i,o));var a=0;var s=o>0?i-4:i;var h;for(h=0;h<s;h+=4){r=f[e.charCodeAt(h)]<<18|f[e.charCodeAt(h+1)]<<12|f[e.charCodeAt(h+2)]<<6|f[e.charCodeAt(h+3)];u[a++]=r>>16&255;u[a++]=r>>8&255;u[a++]=r&255}if(o===2){r=f[e.charCodeAt(h)]<<2|f[e.charCodeAt(h+1)]>>4;u[a++]=r&255}if(o===1){r=f[e.charCodeAt(h)]<<10|f[e.charCodeAt(h+1)]<<4|f[e.charCodeAt(h+2)]>>2;u[a++]=r>>8&255;u[a++]=r&255}return u}function tripletToBase64(e){return t[e>>18&63]+t[e>>12&63]+t[e>>6&63]+t[e&63]}function encodeChunk(e,r,t){var f;var n=[];for(var i=r;i<t;i+=3){f=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(e[i+2]&255);n.push(tripletToBase64(f))}return n.join(\"\")}function fromByteArray(e){var r;var f=e.length;var n=f%3;var i=[];var o=16383;for(var u=0,a=f-n;u<a;u+=o){i.push(encodeChunk(e,u,u+o>a?a:u+o))}if(n===1){r=e[f-1];i.push(t[r>>2]+t[r<<4&63]+\"==\")}else if(n===2){r=(e[f-2]<<8)+e[f-1];i.push(t[r>>10]+t[r>>4&63]+t[r<<2&63]+\"=\")}return i.join(\"\")}},72:function(e,r,t){\"use strict\";\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */var f=t(675);var n=t(783);var i=typeof Symbol===\"function\"&&typeof Symbol.for===\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null;r.Buffer=Buffer;r.SlowBuffer=SlowBuffer;r.INSPECT_MAX_BYTES=50;var o=2147483647;r.kMaxLength=o;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!==\"undefined\"&&typeof console.error===\"function\"){console.error(\"This browser lacks typed array (Uint8Array) support which is required by \"+\"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\")}function typedArraySupport(){try{var e=new Uint8Array(1);var r={foo:function(){return 42}};Object.setPrototypeOf(r,Uint8Array.prototype);Object.setPrototypeOf(e,r);return e.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(e){if(e>o){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}var r=new Uint8Array(e);Object.setPrototypeOf(r,Buffer.prototype);return r}function Buffer(e,r,t){if(typeof e===\"number\"){if(typeof r===\"string\"){throw new TypeError('The \"string\" argument must be of type string. Received type number')}return allocUnsafe(e)}return from(e,r,t)}Buffer.poolSize=8192;function from(e,r,t){if(typeof e===\"string\"){return fromString(e,r)}if(ArrayBuffer.isView(e)){return fromArrayLike(e)}if(e==null){throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}if(isInstance(e,ArrayBuffer)||e&&isInstance(e.buffer,ArrayBuffer)){return fromArrayBuffer(e,r,t)}if(typeof SharedArrayBuffer!==\"undefined\"&&(isInstance(e,SharedArrayBuffer)||e&&isInstance(e.buffer,SharedArrayBuffer))){return fromArrayBuffer(e,r,t)}if(typeof e===\"number\"){throw new TypeError('The \"value\" argument must not be of type number. Received type number')}var f=e.valueOf&&e.valueOf();if(f!=null&&f!==e){return Buffer.from(f,r,t)}var n=fromObject(e);if(n)return n;if(typeof Symbol!==\"undefined\"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]===\"function\"){return Buffer.from(e[Symbol.toPrimitive](\"string\"),r,t)}throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \"+\"or Array-like Object. Received type \"+typeof e)}Buffer.from=function(e,r,t){return from(e,r,t)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(e){if(typeof e!==\"number\"){throw new TypeError('\"size\" argument must be of type number')}else if(e<0){throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}}function alloc(e,r,t){assertSize(e);if(e<=0){return createBuffer(e)}if(r!==undefined){return typeof t===\"string\"?createBuffer(e).fill(r,t):createBuffer(e).fill(r)}return createBuffer(e)}Buffer.alloc=function(e,r,t){return alloc(e,r,t)};function allocUnsafe(e){assertSize(e);return createBuffer(e<0?0:checked(e)|0)}Buffer.allocUnsafe=function(e){return allocUnsafe(e)};Buffer.allocUnsafeSlow=function(e){return allocUnsafe(e)};function fromString(e,r){if(typeof r!==\"string\"||r===\"\"){r=\"utf8\"}if(!Buffer.isEncoding(r)){throw new TypeError(\"Unknown encoding: \"+r)}var t=byteLength(e,r)|0;var f=createBuffer(t);var n=f.write(e,r);if(n!==t){f=f.slice(0,n)}return f}function fromArrayLike(e){var r=e.length<0?0:checked(e.length)|0;var t=createBuffer(r);for(var f=0;f<r;f+=1){t[f]=e[f]&255}return t}function fromArrayBuffer(e,r,t){if(r<0||e.byteLength<r){throw new RangeError('\"offset\" is outside of buffer bounds')}if(e.byteLength<r+(t||0)){throw new RangeError('\"length\" is outside of buffer bounds')}var f;if(r===undefined&&t===undefined){f=new Uint8Array(e)}else if(t===undefined){f=new Uint8Array(e,r)}else{f=new Uint8Array(e,r,t)}Object.setPrototypeOf(f,Buffer.prototype);return f}function fromObject(e){if(Buffer.isBuffer(e)){var r=checked(e.length)|0;var t=createBuffer(r);if(t.length===0){return t}e.copy(t,0,0,r);return t}if(e.length!==undefined){if(typeof e.length!==\"number\"||numberIsNaN(e.length)){return createBuffer(0)}return fromArrayLike(e)}if(e.type===\"Buffer\"&&Array.isArray(e.data)){return fromArrayLike(e.data)}}function checked(e){if(e>=o){throw new RangeError(\"Attempt to allocate Buffer larger than maximum \"+\"size: 0x\"+o.toString(16)+\" bytes\")}return e|0}function SlowBuffer(e){if(+e!=e){e=0}return Buffer.alloc(+e)}Buffer.isBuffer=function isBuffer(e){return e!=null&&e._isBuffer===true&&e!==Buffer.prototype};Buffer.compare=function compare(e,r){if(isInstance(e,Uint8Array))e=Buffer.from(e,e.offset,e.byteLength);if(isInstance(r,Uint8Array))r=Buffer.from(r,r.offset,r.byteLength);if(!Buffer.isBuffer(e)||!Buffer.isBuffer(r)){throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array')}if(e===r)return 0;var t=e.length;var f=r.length;for(var n=0,i=Math.min(t,f);n<i;++n){if(e[n]!==r[n]){t=e[n];f=r[n];break}}if(t<f)return-1;if(f<t)return 1;return 0};Buffer.isEncoding=function isEncoding(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return true;default:return false}};Buffer.concat=function concat(e,r){if(!Array.isArray(e)){throw new TypeError('\"list\" argument must be an Array of Buffers')}if(e.length===0){return Buffer.alloc(0)}var t;if(r===undefined){r=0;for(t=0;t<e.length;++t){r+=e[t].length}}var f=Buffer.allocUnsafe(r);var n=0;for(t=0;t<e.length;++t){var i=e[t];if(isInstance(i,Uint8Array)){i=Buffer.from(i)}if(!Buffer.isBuffer(i)){throw new TypeError('\"list\" argument must be an Array of Buffers')}i.copy(f,n);n+=i.length}return f};function byteLength(e,r){if(Buffer.isBuffer(e)){return e.length}if(ArrayBuffer.isView(e)||isInstance(e,ArrayBuffer)){return e.byteLength}if(typeof e!==\"string\"){throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. '+\"Received type \"+typeof e)}var t=e.length;var f=arguments.length>2&&arguments[2]===true;if(!f&&t===0)return 0;var n=false;for(;;){switch(r){case\"ascii\":case\"latin1\":case\"binary\":return t;case\"utf8\":case\"utf-8\":return utf8ToBytes(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return t*2;case\"hex\":return t>>>1;case\"base64\":return base64ToBytes(e).length;default:if(n){return f?-1:utf8ToBytes(e).length}r=(\"\"+r).toLowerCase();n=true}}}Buffer.byteLength=byteLength;function slowToString(e,r,t){var f=false;if(r===undefined||r<0){r=0}if(r>this.length){return\"\"}if(t===undefined||t>this.length){t=this.length}if(t<=0){return\"\"}t>>>=0;r>>>=0;if(t<=r){return\"\"}if(!e)e=\"utf8\";while(true){switch(e){case\"hex\":return hexSlice(this,r,t);case\"utf8\":case\"utf-8\":return utf8Slice(this,r,t);case\"ascii\":return asciiSlice(this,r,t);case\"latin1\":case\"binary\":return latin1Slice(this,r,t);case\"base64\":return base64Slice(this,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,r,t);default:if(f)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase();f=true}}}Buffer.prototype._isBuffer=true;function swap(e,r,t){var f=e[r];e[r]=e[t];e[t]=f}Buffer.prototype.swap16=function swap16(){var e=this.length;if(e%2!==0){throw new RangeError(\"Buffer size must be a multiple of 16-bits\")}for(var r=0;r<e;r+=2){swap(this,r,r+1)}return this};Buffer.prototype.swap32=function swap32(){var e=this.length;if(e%4!==0){throw new RangeError(\"Buffer size must be a multiple of 32-bits\")}for(var r=0;r<e;r+=4){swap(this,r,r+3);swap(this,r+1,r+2)}return this};Buffer.prototype.swap64=function swap64(){var e=this.length;if(e%8!==0){throw new RangeError(\"Buffer size must be a multiple of 64-bits\")}for(var r=0;r<e;r+=8){swap(this,r,r+7);swap(this,r+1,r+6);swap(this,r+2,r+5);swap(this,r+3,r+4)}return this};Buffer.prototype.toString=function toString(){var e=this.length;if(e===0)return\"\";if(arguments.length===0)return utf8Slice(this,0,e);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(e){if(!Buffer.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(this===e)return true;return Buffer.compare(this,e)===0};Buffer.prototype.inspect=function inspect(){var e=\"\";var t=r.INSPECT_MAX_BYTES;e=this.toString(\"hex\",0,t).replace(/(.{2})/g,\"$1 \").trim();if(this.length>t)e+=\" ... \";return\"<Buffer \"+e+\">\"};if(i){Buffer.prototype[i]=Buffer.prototype.inspect}Buffer.prototype.compare=function compare(e,r,t,f,n){if(isInstance(e,Uint8Array)){e=Buffer.from(e,e.offset,e.byteLength)}if(!Buffer.isBuffer(e)){throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. '+\"Received type \"+typeof e)}if(r===undefined){r=0}if(t===undefined){t=e?e.length:0}if(f===undefined){f=0}if(n===undefined){n=this.length}if(r<0||t>e.length||f<0||n>this.length){throw new RangeError(\"out of range index\")}if(f>=n&&r>=t){return 0}if(f>=n){return-1}if(r>=t){return 1}r>>>=0;t>>>=0;f>>>=0;n>>>=0;if(this===e)return 0;var i=n-f;var o=t-r;var u=Math.min(i,o);var a=this.slice(f,n);var s=e.slice(r,t);for(var h=0;h<u;++h){if(a[h]!==s[h]){i=a[h];o=s[h];break}}if(i<o)return-1;if(o<i)return 1;return 0};function bidirectionalIndexOf(e,r,t,f,n){if(e.length===0)return-1;if(typeof t===\"string\"){f=t;t=0}else if(t>2147483647){t=2147483647}else if(t<-2147483648){t=-2147483648}t=+t;if(numberIsNaN(t)){t=n?0:e.length-1}if(t<0)t=e.length+t;if(t>=e.length){if(n)return-1;else t=e.length-1}else if(t<0){if(n)t=0;else return-1}if(typeof r===\"string\"){r=Buffer.from(r,f)}if(Buffer.isBuffer(r)){if(r.length===0){return-1}return arrayIndexOf(e,r,t,f,n)}else if(typeof r===\"number\"){r=r&255;if(typeof Uint8Array.prototype.indexOf===\"function\"){if(n){return Uint8Array.prototype.indexOf.call(e,r,t)}else{return Uint8Array.prototype.lastIndexOf.call(e,r,t)}}return arrayIndexOf(e,[r],t,f,n)}throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(e,r,t,f,n){var i=1;var o=e.length;var u=r.length;if(f!==undefined){f=String(f).toLowerCase();if(f===\"ucs2\"||f===\"ucs-2\"||f===\"utf16le\"||f===\"utf-16le\"){if(e.length<2||r.length<2){return-1}i=2;o/=2;u/=2;t/=2}}function read(e,r){if(i===1){return e[r]}else{return e.readUInt16BE(r*i)}}var a;if(n){var s=-1;for(a=t;a<o;a++){if(read(e,a)===read(r,s===-1?0:a-s)){if(s===-1)s=a;if(a-s+1===u)return s*i}else{if(s!==-1)a-=a-s;s=-1}}}else{if(t+u>o)t=o-u;for(a=t;a>=0;a--){var h=true;for(var c=0;c<u;c++){if(read(e,a+c)!==read(r,c)){h=false;break}}if(h)return a}}return-1}Buffer.prototype.includes=function includes(e,r,t){return this.indexOf(e,r,t)!==-1};Buffer.prototype.indexOf=function indexOf(e,r,t){return bidirectionalIndexOf(this,e,r,t,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(e,r,t){return bidirectionalIndexOf(this,e,r,t,false)};function hexWrite(e,r,t,f){t=Number(t)||0;var n=e.length-t;if(!f){f=n}else{f=Number(f);if(f>n){f=n}}var i=r.length;if(f>i/2){f=i/2}for(var o=0;o<f;++o){var u=parseInt(r.substr(o*2,2),16);if(numberIsNaN(u))return o;e[t+o]=u}return o}function utf8Write(e,r,t,f){return blitBuffer(utf8ToBytes(r,e.length-t),e,t,f)}function asciiWrite(e,r,t,f){return blitBuffer(asciiToBytes(r),e,t,f)}function latin1Write(e,r,t,f){return asciiWrite(e,r,t,f)}function base64Write(e,r,t,f){return blitBuffer(base64ToBytes(r),e,t,f)}function ucs2Write(e,r,t,f){return blitBuffer(utf16leToBytes(r,e.length-t),e,t,f)}Buffer.prototype.write=function write(e,r,t,f){if(r===undefined){f=\"utf8\";t=this.length;r=0}else if(t===undefined&&typeof r===\"string\"){f=r;t=this.length;r=0}else if(isFinite(r)){r=r>>>0;if(isFinite(t)){t=t>>>0;if(f===undefined)f=\"utf8\"}else{f=t;t=undefined}}else{throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\")}var n=this.length-r;if(t===undefined||t>n)t=n;if(e.length>0&&(t<0||r<0)||r>this.length){throw new RangeError(\"Attempt to write outside buffer bounds\")}if(!f)f=\"utf8\";var i=false;for(;;){switch(f){case\"hex\":return hexWrite(this,e,r,t);case\"utf8\":case\"utf-8\":return utf8Write(this,e,r,t);case\"ascii\":return asciiWrite(this,e,r,t);case\"latin1\":case\"binary\":return latin1Write(this,e,r,t);case\"base64\":return base64Write(this,e,r,t);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,e,r,t);default:if(i)throw new TypeError(\"Unknown encoding: \"+f);f=(\"\"+f).toLowerCase();i=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(e,r,t){if(r===0&&t===e.length){return f.fromByteArray(e)}else{return f.fromByteArray(e.slice(r,t))}}function utf8Slice(e,r,t){t=Math.min(e.length,t);var f=[];var n=r;while(n<t){var i=e[n];var o=null;var u=i>239?4:i>223?3:i>191?2:1;if(n+u<=t){var a,s,h,c;switch(u){case 1:if(i<128){o=i}break;case 2:a=e[n+1];if((a&192)===128){c=(i&31)<<6|a&63;if(c>127){o=c}}break;case 3:a=e[n+1];s=e[n+2];if((a&192)===128&&(s&192)===128){c=(i&15)<<12|(a&63)<<6|s&63;if(c>2047&&(c<55296||c>57343)){o=c}}break;case 4:a=e[n+1];s=e[n+2];h=e[n+3];if((a&192)===128&&(s&192)===128&&(h&192)===128){c=(i&15)<<18|(a&63)<<12|(s&63)<<6|h&63;if(c>65535&&c<1114112){o=c}}}}if(o===null){o=65533;u=1}else if(o>65535){o-=65536;f.push(o>>>10&1023|55296);o=56320|o&1023}f.push(o);n+=u}return decodeCodePointsArray(f)}var u=4096;function decodeCodePointsArray(e){var r=e.length;if(r<=u){return String.fromCharCode.apply(String,e)}var t=\"\";var f=0;while(f<r){t+=String.fromCharCode.apply(String,e.slice(f,f+=u))}return t}function asciiSlice(e,r,t){var f=\"\";t=Math.min(e.length,t);for(var n=r;n<t;++n){f+=String.fromCharCode(e[n]&127)}return f}function latin1Slice(e,r,t){var f=\"\";t=Math.min(e.length,t);for(var n=r;n<t;++n){f+=String.fromCharCode(e[n])}return f}function hexSlice(e,r,t){var f=e.length;if(!r||r<0)r=0;if(!t||t<0||t>f)t=f;var n=\"\";for(var i=r;i<t;++i){n+=s[e[i]]}return n}function utf16leSlice(e,r,t){var f=e.slice(r,t);var n=\"\";for(var i=0;i<f.length;i+=2){n+=String.fromCharCode(f[i]+f[i+1]*256)}return n}Buffer.prototype.slice=function slice(e,r){var t=this.length;e=~~e;r=r===undefined?t:~~r;if(e<0){e+=t;if(e<0)e=0}else if(e>t){e=t}if(r<0){r+=t;if(r<0)r=0}else if(r>t){r=t}if(r<e)r=e;var f=this.subarray(e,r);Object.setPrototypeOf(f,Buffer.prototype);return f};function checkOffset(e,r,t){if(e%1!==0||e<0)throw new RangeError(\"offset is not uint\");if(e+r>t)throw new RangeError(\"Trying to access beyond buffer length\")}Buffer.prototype.readUIntLE=function readUIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i<r&&(n*=256)){f+=this[e+i]*n}return f};Buffer.prototype.readUIntBE=function readUIntBE(e,r,t){e=e>>>0;r=r>>>0;if(!t){checkOffset(e,r,this.length)}var f=this[e+--r];var n=1;while(r>0&&(n*=256)){f+=this[e+--r]*n}return f};Buffer.prototype.readUInt8=function readUInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);return this[e]};Buffer.prototype.readUInt16LE=function readUInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]|this[e+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);return this[e]<<8|this[e+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};Buffer.prototype.readIntLE=function readIntLE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=this[e];var n=1;var i=0;while(++i<r&&(n*=256)){f+=this[e+i]*n}n*=128;if(f>=n)f-=Math.pow(2,8*r);return f};Buffer.prototype.readIntBE=function readIntBE(e,r,t){e=e>>>0;r=r>>>0;if(!t)checkOffset(e,r,this.length);var f=r;var n=1;var i=this[e+--f];while(f>0&&(n*=256)){i+=this[e+--f]*n}n*=128;if(i>=n)i-=Math.pow(2,8*r);return i};Buffer.prototype.readInt8=function readInt8(e,r){e=e>>>0;if(!r)checkOffset(e,1,this.length);if(!(this[e]&128))return this[e];return(255-this[e]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e]|this[e+1]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt16BE=function readInt16BE(e,r){e=e>>>0;if(!r)checkOffset(e,2,this.length);var t=this[e+1]|this[e]<<8;return t&32768?t|4294901760:t};Buffer.prototype.readInt32LE=function readInt32LE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};Buffer.prototype.readFloatLE=function readFloatLE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(e,r){e=e>>>0;if(!r)checkOffset(e,4,this.length);return n.read(this,e,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(e,r){e=e>>>0;if(!r)checkOffset(e,8,this.length);return n.read(this,e,false,52,8)};function checkInt(e,r,t,f,n,i){if(!Buffer.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>n||r<i)throw new RangeError('\"value\" argument is out of bounds');if(t+f>e.length)throw new RangeError(\"Index out of range\")}Buffer.prototype.writeUIntLE=function writeUIntLE(e,r,t,f){e=+e;r=r>>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=1;var o=0;this[r]=e&255;while(++o<t&&(i*=256)){this[r+o]=e/i&255}return r+t};Buffer.prototype.writeUIntBE=function writeUIntBE(e,r,t,f){e=+e;r=r>>>0;t=t>>>0;if(!f){var n=Math.pow(2,8*t)-1;checkInt(this,e,r,t,n,0)}var i=t-1;var o=1;this[r+i]=e&255;while(--i>=0&&(o*=256)){this[r+i]=e/o&255}return r+t};Buffer.prototype.writeUInt8=function writeUInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,255,0);this[r]=e&255;return r+1};Buffer.prototype.writeUInt16LE=function writeUInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,65535,0);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeUInt32LE=function writeUInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r+3]=e>>>24;this[r+2]=e>>>16;this[r+1]=e>>>8;this[r]=e&255;return r+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,4294967295,0);this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};Buffer.prototype.writeIntLE=function writeIntLE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=0;var o=1;var u=0;this[r]=e&255;while(++i<t&&(o*=256)){if(e<0&&u===0&&this[r+i-1]!==0){u=1}this[r+i]=(e/o>>0)-u&255}return r+t};Buffer.prototype.writeIntBE=function writeIntBE(e,r,t,f){e=+e;r=r>>>0;if(!f){var n=Math.pow(2,8*t-1);checkInt(this,e,r,t,n-1,-n)}var i=t-1;var o=1;var u=0;this[r+i]=e&255;while(--i>=0&&(o*=256)){if(e<0&&u===0&&this[r+i+1]!==0){u=1}this[r+i]=(e/o>>0)-u&255}return r+t};Buffer.prototype.writeInt8=function writeInt8(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,1,127,-128);if(e<0)e=255+e+1;this[r]=e&255;return r+1};Buffer.prototype.writeInt16LE=function writeInt16LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e&255;this[r+1]=e>>>8;return r+2};Buffer.prototype.writeInt16BE=function writeInt16BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,2,32767,-32768);this[r]=e>>>8;this[r+1]=e&255;return r+2};Buffer.prototype.writeInt32LE=function writeInt32LE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);this[r]=e&255;this[r+1]=e>>>8;this[r+2]=e>>>16;this[r+3]=e>>>24;return r+4};Buffer.prototype.writeInt32BE=function writeInt32BE(e,r,t){e=+e;r=r>>>0;if(!t)checkInt(this,e,r,4,2147483647,-2147483648);if(e<0)e=4294967295+e+1;this[r]=e>>>24;this[r+1]=e>>>16;this[r+2]=e>>>8;this[r+3]=e&255;return r+4};function checkIEEE754(e,r,t,f,n,i){if(t+f>e.length)throw new RangeError(\"Index out of range\");if(t<0)throw new RangeError(\"Index out of range\")}function writeFloat(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,4,34028234663852886e22,-34028234663852886e22)}n.write(e,r,t,f,23,4);return t+4}Buffer.prototype.writeFloatLE=function writeFloatLE(e,r,t){return writeFloat(this,e,r,true,t)};Buffer.prototype.writeFloatBE=function writeFloatBE(e,r,t){return writeFloat(this,e,r,false,t)};function writeDouble(e,r,t,f,i){r=+r;t=t>>>0;if(!i){checkIEEE754(e,r,t,8,17976931348623157e292,-17976931348623157e292)}n.write(e,r,t,f,52,8);return t+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(e,r,t){return writeDouble(this,e,r,true,t)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(e,r,t){return writeDouble(this,e,r,false,t)};Buffer.prototype.copy=function copy(e,r,t,f){if(!Buffer.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(!t)t=0;if(!f&&f!==0)f=this.length;if(r>=e.length)r=e.length;if(!r)r=0;if(f>0&&f<t)f=t;if(f===t)return 0;if(e.length===0||this.length===0)return 0;if(r<0){throw new RangeError(\"targetStart out of bounds\")}if(t<0||t>=this.length)throw new RangeError(\"Index out of range\");if(f<0)throw new RangeError(\"sourceEnd out of bounds\");if(f>this.length)f=this.length;if(e.length-r<f-t){f=e.length-r+t}var n=f-t;if(this===e&&typeof Uint8Array.prototype.copyWithin===\"function\"){this.copyWithin(r,t,f)}else if(this===e&&t<r&&r<f){for(var i=n-1;i>=0;--i){e[i+r]=this[i+t]}}else{Uint8Array.prototype.set.call(e,this.subarray(t,f),r)}return n};Buffer.prototype.fill=function fill(e,r,t,f){if(typeof e===\"string\"){if(typeof r===\"string\"){f=r;r=0;t=this.length}else if(typeof t===\"string\"){f=t;t=this.length}if(f!==undefined&&typeof f!==\"string\"){throw new TypeError(\"encoding must be a string\")}if(typeof f===\"string\"&&!Buffer.isEncoding(f)){throw new TypeError(\"Unknown encoding: \"+f)}if(e.length===1){var n=e.charCodeAt(0);if(f===\"utf8\"&&n<128||f===\"latin1\"){e=n}}}else if(typeof e===\"number\"){e=e&255}else if(typeof e===\"boolean\"){e=Number(e)}if(r<0||this.length<r||this.length<t){throw new RangeError(\"Out of range index\")}if(t<=r){return this}r=r>>>0;t=t===undefined?this.length:t>>>0;if(!e)e=0;var i;if(typeof e===\"number\"){for(i=r;i<t;++i){this[i]=e}}else{var o=Buffer.isBuffer(e)?e:Buffer.from(e,f);var u=o.length;if(u===0){throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"')}for(i=0;i<t-r;++i){this[i+r]=o[i%u]}}return this};var a=/[^+/0-9A-Za-z-_]/g;function base64clean(e){e=e.split(\"=\")[0];e=e.trim().replace(a,\"\");if(e.length<2)return\"\";while(e.length%4!==0){e=e+\"=\"}return e}function utf8ToBytes(e,r){r=r||Infinity;var t;var f=e.length;var n=null;var i=[];for(var o=0;o<f;++o){t=e.charCodeAt(o);if(t>55295&&t<57344){if(!n){if(t>56319){if((r-=3)>-1)i.push(239,191,189);continue}else if(o+1===f){if((r-=3)>-1)i.push(239,191,189);continue}n=t;continue}if(t<56320){if((r-=3)>-1)i.push(239,191,189);n=t;continue}t=(n-55296<<10|t-56320)+65536}else if(n){if((r-=3)>-1)i.push(239,191,189)}n=null;if(t<128){if((r-=1)<0)break;i.push(t)}else if(t<2048){if((r-=2)<0)break;i.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;i.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;i.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else{throw new Error(\"Invalid code point\")}}return i}function asciiToBytes(e){var r=[];for(var t=0;t<e.length;++t){r.push(e.charCodeAt(t)&255)}return r}function utf16leToBytes(e,r){var t,f,n;var i=[];for(var o=0;o<e.length;++o){if((r-=2)<0)break;t=e.charCodeAt(o);f=t>>8;n=t%256;i.push(n);i.push(f)}return i}function base64ToBytes(e){return f.toByteArray(base64clean(e))}function blitBuffer(e,r,t,f){for(var n=0;n<f;++n){if(n+t>=r.length||n>=e.length)break;r[n+t]=e[n]}return n}function isInstance(e,r){return e instanceof r||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===r.name}function numberIsNaN(e){return e!==e}var s=function(){var e=\"0123456789abcdef\";var r=new Array(256);for(var t=0;t<16;++t){var f=t*16;for(var n=0;n<16;++n){r[f+n]=e[t]+e[n]}}return r}()},783:function(e,r){\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nr.read=function(e,r,t,f,n){var i,o;var u=n*8-f-1;var a=(1<<u)-1;var s=a>>1;var h=-7;var c=t?n-1:0;var l=t?-1:1;var p=e[r+c];c+=l;i=p&(1<<-h)-1;p>>=-h;h+=u;for(;h>0;i=i*256+e[r+c],c+=l,h-=8){}o=i&(1<<-h)-1;i>>=-h;h+=f;for(;h>0;o=o*256+e[r+c],c+=l,h-=8){}if(i===0){i=1-s}else if(i===a){return o?NaN:(p?-1:1)*Infinity}else{o=o+Math.pow(2,f);i=i-s}return(p?-1:1)*o*Math.pow(2,i-f)};r.write=function(e,r,t,f,n,i){var o,u,a;var s=i*8-n-1;var h=(1<<s)-1;var c=h>>1;var l=n===23?Math.pow(2,-24)-Math.pow(2,-77):0;var p=f?0:i-1;var y=f?1:-1;var g=r<0||r===0&&1/r<0?1:0;r=Math.abs(r);if(isNaN(r)||r===Infinity){u=isNaN(r)?1:0;o=h}else{o=Math.floor(Math.log(r)/Math.LN2);if(r*(a=Math.pow(2,-o))<1){o--;a*=2}if(o+c>=1){r+=l/a}else{r+=l*Math.pow(2,1-c)}if(r*a>=2){o++;a/=2}if(o+c>=h){u=0;o=h}else if(o+c>=1){u=(r*a-1)*Math.pow(2,n);o=o+c}else{u=r*Math.pow(2,c-1)*Math.pow(2,n);o=0}}for(;n>=8;e[t+p]=u&255,p+=y,u/=256,n-=8){}o=o<<n|u;s+=n;for(;s>0;e[t+p]=o&255,p+=y,o/=256,s-=8){}e[t+p-y]|=g*128}}};var r={};function __nccwpck_require__(t){var f=r[t];if(f!==undefined){return f.exports}var n=r[t]={exports:{}};var i=true;try{e[t](n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete r[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(72);module.exports=t})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2J1ZmZlci9pbmRleC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsWUFBWSxPQUFPLGtCQUFrQixhQUFhLHdCQUF3QiwwQkFBMEIsOEJBQThCLFNBQVMsU0FBUyx1REFBdUQseUVBQXlFLHVCQUF1QixJQUFJLEtBQUssVUFBVSxxQkFBcUIsd0JBQXdCLHdCQUF3QixvQkFBb0IsZUFBZSxVQUFVLGtFQUFrRSxxQkFBcUIsY0FBYyxvQkFBb0IsWUFBWSx1QkFBdUIsaUJBQWlCLFdBQVcsV0FBVyxrQkFBa0IsNEJBQTRCLGtCQUFrQix3QkFBd0IsTUFBTSxpQkFBaUIsV0FBVyxXQUFXLGdDQUFnQyxRQUFRLGdCQUFnQixNQUFNLFFBQVEsSUFBSSxNQUFNLCtGQUErRixpQkFBaUIsZ0JBQWdCLGFBQWEsVUFBVSxnREFBZ0QsYUFBYSxVQUFVLHlFQUF5RSxnQkFBZ0IsYUFBYSxTQUFTLDRCQUE0QixrREFBa0QsNEJBQTRCLE1BQU0sU0FBUyxZQUFZLElBQUksTUFBTSxxREFBcUQsMkJBQTJCLGtCQUFrQiwwQkFBMEIsTUFBTSxlQUFlLFVBQVUsU0FBUyxZQUFZLGtCQUFrQixJQUFJLE1BQU0scUNBQXFDLFVBQVUsU0FBUyxnQ0FBZ0MsZUFBZSxxQkFBcUIsMkNBQTJDLG1CQUFtQixvQkFBb0I7QUFDOXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsYUFBYSwrR0FBK0csZ0JBQWdCLHdCQUF3Qix1QkFBdUIsaUJBQWlCLGVBQWUsK0NBQStDLGlHQUFpRyxrS0FBa0ssNkJBQTZCLElBQUksd0JBQXdCLE9BQU8sZUFBZSxZQUFZLDhDQUE4QywyQkFBMkIsb0JBQW9CLFNBQVMsY0FBYyxpREFBaUQsK0JBQStCLDJDQUEyQyxvQkFBb0IsRUFBRSxpREFBaUQsK0JBQStCLDJDQUEyQyx3QkFBd0IsRUFBRSx5QkFBeUIsUUFBUSx1RUFBdUUsd0JBQXdCLDBDQUEwQyxTQUFTLHVCQUF1Qix3QkFBd0Isd0JBQXdC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NEIsY0FBYywyQkFBMkIsZUFBZSxJQUFJLEtBQUssbUNBQW1DLDJCQUEyQixJQUFJLEtBQUssV0FBVyxPQUFPLEtBQUsscUJBQXFCLFdBQVcsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLGdCQUFnQix3QkFBd0IsTUFBTSxLQUFLLGtDQUFrQyxLQUFLLEtBQUssS0FBSyxnQ0FBZ0MsU0FBUyxLQUFLLEtBQUssSUFBSSxnQ0FBZ0MsbUJBQW1CLFNBQVMsZ0NBQWdDLFdBQVcsa0JBQWtCLGlCQUFpQixZQUFZLFlBQVksV0FBVyxJQUFJLHNDQUFzQyxRQUFRLFFBQVEsaUJBQWlCLGlCQUFpQixtRUFBbUUsU0FBUyxLQUFLLDhCQUE4QixpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9idWZmZXIvaW5kZXguanM/Mzc3NiJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXt2YXIgZT17Njc1OmZ1bmN0aW9uKGUscil7XCJ1c2Ugc3RyaWN0XCI7ci5ieXRlTGVuZ3RoPWJ5dGVMZW5ndGg7ci50b0J5dGVBcnJheT10b0J5dGVBcnJheTtyLmZyb21CeXRlQXJyYXk9ZnJvbUJ5dGVBcnJheTt2YXIgdD1bXTt2YXIgZj1bXTt2YXIgbj10eXBlb2YgVWludDhBcnJheSE9PVwidW5kZWZpbmVkXCI/VWludDhBcnJheTpBcnJheTt2YXIgaT1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIjtmb3IodmFyIG89MCx1PWkubGVuZ3RoO288dTsrK28pe3Rbb109aVtvXTtmW2kuY2hhckNvZGVBdChvKV09b31mW1wiLVwiLmNoYXJDb2RlQXQoMCldPTYyO2ZbXCJfXCIuY2hhckNvZGVBdCgwKV09NjM7ZnVuY3Rpb24gZ2V0TGVucyhlKXt2YXIgcj1lLmxlbmd0aDtpZihyJTQ+MCl7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNFwiKX12YXIgdD1lLmluZGV4T2YoXCI9XCIpO2lmKHQ9PT0tMSl0PXI7dmFyIGY9dD09PXI/MDo0LXQlNDtyZXR1cm5bdCxmXX1mdW5jdGlvbiBieXRlTGVuZ3RoKGUpe3ZhciByPWdldExlbnMoZSk7dmFyIHQ9clswXTt2YXIgZj1yWzFdO3JldHVybih0K2YpKjMvNC1mfWZ1bmN0aW9uIF9ieXRlTGVuZ3RoKGUscix0KXtyZXR1cm4ocit0KSozLzQtdH1mdW5jdGlvbiB0b0J5dGVBcnJheShlKXt2YXIgcjt2YXIgdD1nZXRMZW5zKGUpO3ZhciBpPXRbMF07dmFyIG89dFsxXTt2YXIgdT1uZXcgbihfYnl0ZUxlbmd0aChlLGksbykpO3ZhciBhPTA7dmFyIHM9bz4wP2ktNDppO3ZhciBoO2ZvcihoPTA7aDxzO2grPTQpe3I9ZltlLmNoYXJDb2RlQXQoaCldPDwxOHxmW2UuY2hhckNvZGVBdChoKzEpXTw8MTJ8ZltlLmNoYXJDb2RlQXQoaCsyKV08PDZ8ZltlLmNoYXJDb2RlQXQoaCszKV07dVthKytdPXI+PjE2JjI1NTt1W2ErK109cj4+OCYyNTU7dVthKytdPXImMjU1fWlmKG89PT0yKXtyPWZbZS5jaGFyQ29kZUF0KGgpXTw8MnxmW2UuY2hhckNvZGVBdChoKzEpXT4+NDt1W2ErK109ciYyNTV9aWYobz09PTEpe3I9ZltlLmNoYXJDb2RlQXQoaCldPDwxMHxmW2UuY2hhckNvZGVBdChoKzEpXTw8NHxmW2UuY2hhckNvZGVBdChoKzIpXT4+Mjt1W2ErK109cj4+OCYyNTU7dVthKytdPXImMjU1fXJldHVybiB1fWZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NChlKXtyZXR1cm4gdFtlPj4xOCY2M10rdFtlPj4xMiY2M10rdFtlPj42JjYzXSt0W2UmNjNdfWZ1bmN0aW9uIGVuY29kZUNodW5rKGUscix0KXt2YXIgZjt2YXIgbj1bXTtmb3IodmFyIGk9cjtpPHQ7aSs9Myl7Zj0oZVtpXTw8MTYmMTY3MTE2ODApKyhlW2krMV08PDgmNjUyODApKyhlW2krMl0mMjU1KTtuLnB1c2godHJpcGxldFRvQmFzZTY0KGYpKX1yZXR1cm4gbi5qb2luKFwiXCIpfWZ1bmN0aW9uIGZyb21CeXRlQXJyYXkoZSl7dmFyIHI7dmFyIGY9ZS5sZW5ndGg7dmFyIG49ZiUzO3ZhciBpPVtdO3ZhciBvPTE2MzgzO2Zvcih2YXIgdT0wLGE9Zi1uO3U8YTt1Kz1vKXtpLnB1c2goZW5jb2RlQ2h1bmsoZSx1LHUrbz5hP2E6dStvKSl9aWYobj09PTEpe3I9ZVtmLTFdO2kucHVzaCh0W3I+PjJdK3Rbcjw8NCY2M10rXCI9PVwiKX1lbHNlIGlmKG49PT0yKXtyPShlW2YtMl08PDgpK2VbZi0xXTtpLnB1c2godFtyPj4xMF0rdFtyPj40JjYzXSt0W3I8PDImNjNdK1wiPVwiKX1yZXR1cm4gaS5qb2luKFwiXCIpfX0sNzI6ZnVuY3Rpb24oZSxyLHQpe1widXNlIHN0cmljdFwiO1xuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovdmFyIGY9dCg2NzUpO3ZhciBuPXQoNzgzKTt2YXIgaT10eXBlb2YgU3ltYm9sPT09XCJmdW5jdGlvblwiJiZ0eXBlb2YgU3ltYm9sLmZvcj09PVwiZnVuY3Rpb25cIj9TeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIik6bnVsbDtyLkJ1ZmZlcj1CdWZmZXI7ci5TbG93QnVmZmVyPVNsb3dCdWZmZXI7ci5JTlNQRUNUX01BWF9CWVRFUz01MDt2YXIgbz0yMTQ3NDgzNjQ3O3Iua01heExlbmd0aD1vO0J1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUPXR5cGVkQXJyYXlTdXBwb3J0KCk7aWYoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUJiZ0eXBlb2YgY29uc29sZSE9PVwidW5kZWZpbmVkXCImJnR5cGVvZiBjb25zb2xlLmVycm9yPT09XCJmdW5jdGlvblwiKXtjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IFwiK1wiYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC5cIil9ZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQoKXt0cnl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkoMSk7dmFyIHI9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O09iamVjdC5zZXRQcm90b3R5cGVPZihyLFVpbnQ4QXJyYXkucHJvdG90eXBlKTtPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxyKTtyZXR1cm4gZS5mb28oKT09PTQyfWNhdGNoKGUpe3JldHVybiBmYWxzZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsXCJwYXJlbnRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe2lmKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpcmV0dXJuIHVuZGVmaW5lZDtyZXR1cm4gdGhpcy5idWZmZXJ9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsXCJvZmZzZXRcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe2lmKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpcmV0dXJuIHVuZGVmaW5lZDtyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pO2Z1bmN0aW9uIGNyZWF0ZUJ1ZmZlcihlKXtpZihlPm8pe3Rocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInK2UrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpfXZhciByPW5ldyBVaW50OEFycmF5KGUpO09iamVjdC5zZXRQcm90b3R5cGVPZihyLEJ1ZmZlci5wcm90b3R5cGUpO3JldHVybiByfWZ1bmN0aW9uIEJ1ZmZlcihlLHIsdCl7aWYodHlwZW9mIGU9PT1cIm51bWJlclwiKXtpZih0eXBlb2Ygcj09PVwic3RyaW5nXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyl9cmV0dXJuIGFsbG9jVW5zYWZlKGUpfXJldHVybiBmcm9tKGUscix0KX1CdWZmZXIucG9vbFNpemU9ODE5MjtmdW5jdGlvbiBmcm9tKGUscix0KXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe3JldHVybiBmcm9tU3RyaW5nKGUscil9aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpKXtyZXR1cm4gZnJvbUFycmF5TGlrZShlKX1pZihlPT1udWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgXCIrXCJvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgZSl9aWYoaXNJbnN0YW5jZShlLEFycmF5QnVmZmVyKXx8ZSYmaXNJbnN0YW5jZShlLmJ1ZmZlcixBcnJheUJ1ZmZlcikpe3JldHVybiBmcm9tQXJyYXlCdWZmZXIoZSxyLHQpfWlmKHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciE9PVwidW5kZWZpbmVkXCImJihpc0luc3RhbmNlKGUsU2hhcmVkQXJyYXlCdWZmZXIpfHxlJiZpc0luc3RhbmNlKGUuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpe3JldHVybiBmcm9tQXJyYXlCdWZmZXIoZSxyLHQpfWlmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKX12YXIgZj1lLnZhbHVlT2YmJmUudmFsdWVPZigpO2lmKGYhPW51bGwmJmYhPT1lKXtyZXR1cm4gQnVmZmVyLmZyb20oZixyLHQpfXZhciBuPWZyb21PYmplY3QoZSk7aWYobilyZXR1cm4gbjtpZih0eXBlb2YgU3ltYm9sIT09XCJ1bmRlZmluZWRcIiYmU3ltYm9sLnRvUHJpbWl0aXZlIT1udWxsJiZ0eXBlb2YgZVtTeW1ib2wudG9QcmltaXRpdmVdPT09XCJmdW5jdGlvblwiKXtyZXR1cm4gQnVmZmVyLmZyb20oZVtTeW1ib2wudG9QcmltaXRpdmVdKFwic3RyaW5nXCIpLHIsdCl9dGhyb3cgbmV3IFR5cGVFcnJvcihcIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIFwiK1wib3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIGUpfUJ1ZmZlci5mcm9tPWZ1bmN0aW9uKGUscix0KXtyZXR1cm4gZnJvbShlLHIsdCl9O09iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKTtPYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLFVpbnQ4QXJyYXkpO2Z1bmN0aW9uIGFzc2VydFNpemUoZSl7aWYodHlwZW9mIGUhPT1cIm51bWJlclwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyl9ZWxzZSBpZihlPDApe3Rocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInK2UrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpfX1mdW5jdGlvbiBhbGxvYyhlLHIsdCl7YXNzZXJ0U2l6ZShlKTtpZihlPD0wKXtyZXR1cm4gY3JlYXRlQnVmZmVyKGUpfWlmKHIhPT11bmRlZmluZWQpe3JldHVybiB0eXBlb2YgdD09PVwic3RyaW5nXCI/Y3JlYXRlQnVmZmVyKGUpLmZpbGwocix0KTpjcmVhdGVCdWZmZXIoZSkuZmlsbChyKX1yZXR1cm4gY3JlYXRlQnVmZmVyKGUpfUJ1ZmZlci5hbGxvYz1mdW5jdGlvbihlLHIsdCl7cmV0dXJuIGFsbG9jKGUscix0KX07ZnVuY3Rpb24gYWxsb2NVbnNhZmUoZSl7YXNzZXJ0U2l6ZShlKTtyZXR1cm4gY3JlYXRlQnVmZmVyKGU8MD8wOmNoZWNrZWQoZSl8MCl9QnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBhbGxvY1Vuc2FmZShlKX07QnVmZmVyLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gYWxsb2NVbnNhZmUoZSl9O2Z1bmN0aW9uIGZyb21TdHJpbmcoZSxyKXtpZih0eXBlb2YgciE9PVwic3RyaW5nXCJ8fHI9PT1cIlwiKXtyPVwidXRmOFwifWlmKCFCdWZmZXIuaXNFbmNvZGluZyhyKSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3IpfXZhciB0PWJ5dGVMZW5ndGgoZSxyKXwwO3ZhciBmPWNyZWF0ZUJ1ZmZlcih0KTt2YXIgbj1mLndyaXRlKGUscik7aWYobiE9PXQpe2Y9Zi5zbGljZSgwLG4pfXJldHVybiBmfWZ1bmN0aW9uIGZyb21BcnJheUxpa2UoZSl7dmFyIHI9ZS5sZW5ndGg8MD8wOmNoZWNrZWQoZS5sZW5ndGgpfDA7dmFyIHQ9Y3JlYXRlQnVmZmVyKHIpO2Zvcih2YXIgZj0wO2Y8cjtmKz0xKXt0W2ZdPWVbZl0mMjU1fXJldHVybiB0fWZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlcihlLHIsdCl7aWYocjwwfHxlLmJ5dGVMZW5ndGg8cil7dGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wib2Zmc2V0XCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyl9aWYoZS5ieXRlTGVuZ3RoPHIrKHR8fDApKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKX12YXIgZjtpZihyPT09dW5kZWZpbmVkJiZ0PT09dW5kZWZpbmVkKXtmPW5ldyBVaW50OEFycmF5KGUpfWVsc2UgaWYodD09PXVuZGVmaW5lZCl7Zj1uZXcgVWludDhBcnJheShlLHIpfWVsc2V7Zj1uZXcgVWludDhBcnJheShlLHIsdCl9T2JqZWN0LnNldFByb3RvdHlwZU9mKGYsQnVmZmVyLnByb3RvdHlwZSk7cmV0dXJuIGZ9ZnVuY3Rpb24gZnJvbU9iamVjdChlKXtpZihCdWZmZXIuaXNCdWZmZXIoZSkpe3ZhciByPWNoZWNrZWQoZS5sZW5ndGgpfDA7dmFyIHQ9Y3JlYXRlQnVmZmVyKHIpO2lmKHQubGVuZ3RoPT09MCl7cmV0dXJuIHR9ZS5jb3B5KHQsMCwwLHIpO3JldHVybiB0fWlmKGUubGVuZ3RoIT09dW5kZWZpbmVkKXtpZih0eXBlb2YgZS5sZW5ndGghPT1cIm51bWJlclwifHxudW1iZXJJc05hTihlLmxlbmd0aCkpe3JldHVybiBjcmVhdGVCdWZmZXIoMCl9cmV0dXJuIGZyb21BcnJheUxpa2UoZSl9aWYoZS50eXBlPT09XCJCdWZmZXJcIiYmQXJyYXkuaXNBcnJheShlLmRhdGEpKXtyZXR1cm4gZnJvbUFycmF5TGlrZShlLmRhdGEpfX1mdW5jdGlvbiBjaGVja2VkKGUpe2lmKGU+PW8pe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBcIitcInNpemU6IDB4XCIrby50b1N0cmluZygxNikrXCIgYnl0ZXNcIil9cmV0dXJuIGV8MH1mdW5jdGlvbiBTbG93QnVmZmVyKGUpe2lmKCtlIT1lKXtlPTB9cmV0dXJuIEJ1ZmZlci5hbGxvYygrZSl9QnVmZmVyLmlzQnVmZmVyPWZ1bmN0aW9uIGlzQnVmZmVyKGUpe3JldHVybiBlIT1udWxsJiZlLl9pc0J1ZmZlcj09PXRydWUmJmUhPT1CdWZmZXIucHJvdG90eXBlfTtCdWZmZXIuY29tcGFyZT1mdW5jdGlvbiBjb21wYXJlKGUscil7aWYoaXNJbnN0YW5jZShlLFVpbnQ4QXJyYXkpKWU9QnVmZmVyLmZyb20oZSxlLm9mZnNldCxlLmJ5dGVMZW5ndGgpO2lmKGlzSW5zdGFuY2UocixVaW50OEFycmF5KSlyPUJ1ZmZlci5mcm9tKHIsci5vZmZzZXQsci5ieXRlTGVuZ3RoKTtpZighQnVmZmVyLmlzQnVmZmVyKGUpfHwhQnVmZmVyLmlzQnVmZmVyKHIpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJidWYxXCIsIFwiYnVmMlwiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5Jyl9aWYoZT09PXIpcmV0dXJuIDA7dmFyIHQ9ZS5sZW5ndGg7dmFyIGY9ci5sZW5ndGg7Zm9yKHZhciBuPTAsaT1NYXRoLm1pbih0LGYpO248aTsrK24pe2lmKGVbbl0hPT1yW25dKXt0PWVbbl07Zj1yW25dO2JyZWFrfX1pZih0PGYpcmV0dXJuLTE7aWYoZjx0KXJldHVybiAxO3JldHVybiAwfTtCdWZmZXIuaXNFbmNvZGluZz1mdW5jdGlvbiBpc0VuY29kaW5nKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gdHJ1ZTtkZWZhdWx0OnJldHVybiBmYWxzZX19O0J1ZmZlci5jb25jYXQ9ZnVuY3Rpb24gY29uY2F0KGUscil7aWYoIUFycmF5LmlzQXJyYXkoZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpfWlmKGUubGVuZ3RoPT09MCl7cmV0dXJuIEJ1ZmZlci5hbGxvYygwKX12YXIgdDtpZihyPT09dW5kZWZpbmVkKXtyPTA7Zm9yKHQ9MDt0PGUubGVuZ3RoOysrdCl7cis9ZVt0XS5sZW5ndGh9fXZhciBmPUJ1ZmZlci5hbGxvY1Vuc2FmZShyKTt2YXIgbj0wO2Zvcih0PTA7dDxlLmxlbmd0aDsrK3Qpe3ZhciBpPWVbdF07aWYoaXNJbnN0YW5jZShpLFVpbnQ4QXJyYXkpKXtpPUJ1ZmZlci5mcm9tKGkpfWlmKCFCdWZmZXIuaXNCdWZmZXIoaSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpfWkuY29weShmLG4pO24rPWkubGVuZ3RofXJldHVybiBmfTtmdW5jdGlvbiBieXRlTGVuZ3RoKGUscil7aWYoQnVmZmVyLmlzQnVmZmVyKGUpKXtyZXR1cm4gZS5sZW5ndGh9aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxpc0luc3RhbmNlKGUsQXJyYXlCdWZmZXIpKXtyZXR1cm4gZS5ieXRlTGVuZ3RofWlmKHR5cGVvZiBlIT09XCJzdHJpbmdcIil7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgb3IgQXJyYXlCdWZmZXIuICcrXCJSZWNlaXZlZCB0eXBlIFwiK3R5cGVvZiBlKX12YXIgdD1lLmxlbmd0aDt2YXIgZj1hcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXT09PXRydWU7aWYoIWYmJnQ9PT0wKXJldHVybiAwO3ZhciBuPWZhbHNlO2Zvcig7Oyl7c3dpdGNoKHIpe2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHQ7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIHV0ZjhUb0J5dGVzKGUpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gdCoyO2Nhc2VcImhleFwiOnJldHVybiB0Pj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gYmFzZTY0VG9CeXRlcyhlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXtyZXR1cm4gZj8tMTp1dGY4VG9CeXRlcyhlKS5sZW5ndGh9cj0oXCJcIityKS50b0xvd2VyQ2FzZSgpO249dHJ1ZX19fUJ1ZmZlci5ieXRlTGVuZ3RoPWJ5dGVMZW5ndGg7ZnVuY3Rpb24gc2xvd1RvU3RyaW5nKGUscix0KXt2YXIgZj1mYWxzZTtpZihyPT09dW5kZWZpbmVkfHxyPDApe3I9MH1pZihyPnRoaXMubGVuZ3RoKXtyZXR1cm5cIlwifWlmKHQ9PT11bmRlZmluZWR8fHQ+dGhpcy5sZW5ndGgpe3Q9dGhpcy5sZW5ndGh9aWYodDw9MCl7cmV0dXJuXCJcIn10Pj4+PTA7cj4+Pj0wO2lmKHQ8PXIpe3JldHVyblwiXCJ9aWYoIWUpZT1cInV0ZjhcIjt3aGlsZSh0cnVlKXtzd2l0Y2goZSl7Y2FzZVwiaGV4XCI6cmV0dXJuIGhleFNsaWNlKHRoaXMscix0KTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gdXRmOFNsaWNlKHRoaXMscix0KTtjYXNlXCJhc2NpaVwiOnJldHVybiBhc2NpaVNsaWNlKHRoaXMscix0KTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gbGF0aW4xU2xpY2UodGhpcyxyLHQpO2Nhc2VcImJhc2U2NFwiOnJldHVybiBiYXNlNjRTbGljZSh0aGlzLHIsdCk7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLHIsdCk7ZGVmYXVsdDppZihmKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitlKTtlPShlK1wiXCIpLnRvTG93ZXJDYXNlKCk7Zj10cnVlfX19QnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXI9dHJ1ZTtmdW5jdGlvbiBzd2FwKGUscix0KXt2YXIgZj1lW3JdO2Vbcl09ZVt0XTtlW3RdPWZ9QnVmZmVyLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24gc3dhcDE2KCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT09MCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0c1wiKX1mb3IodmFyIHI9MDtyPGU7cis9Mil7c3dhcCh0aGlzLHIscisxKX1yZXR1cm4gdGhpc307QnVmZmVyLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24gc3dhcDMyKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT09MCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0c1wiKX1mb3IodmFyIHI9MDtyPGU7cis9NCl7c3dhcCh0aGlzLHIsciszKTtzd2FwKHRoaXMscisxLHIrMil9cmV0dXJuIHRoaXN9O0J1ZmZlci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uIHN3YXA2NCgpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9PTApe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHNcIil9Zm9yKHZhciByPTA7cjxlO3IrPTgpe3N3YXAodGhpcyxyLHIrNyk7c3dhcCh0aGlzLHIrMSxyKzYpO3N3YXAodGhpcyxyKzIscis1KTtzd2FwKHRoaXMsciszLHIrNCl9cmV0dXJuIHRoaXN9O0J1ZmZlci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24gdG9TdHJpbmcoKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlPT09MClyZXR1cm5cIlwiO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0wKXJldHVybiB1dGY4U2xpY2UodGhpcywwLGUpO3JldHVybiBzbG93VG9TdHJpbmcuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtCdWZmZXIucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPUJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmc7QnVmZmVyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24gZXF1YWxzKGUpe2lmKCFCdWZmZXIuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXJcIik7aWYodGhpcz09PWUpcmV0dXJuIHRydWU7cmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsZSk9PT0wfTtCdWZmZXIucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24gaW5zcGVjdCgpe3ZhciBlPVwiXCI7dmFyIHQ9ci5JTlNQRUNUX01BWF9CWVRFUztlPXRoaXMudG9TdHJpbmcoXCJoZXhcIiwwLHQpLnJlcGxhY2UoLyguezJ9KS9nLFwiJDEgXCIpLnRyaW0oKTtpZih0aGlzLmxlbmd0aD50KWUrPVwiIC4uLiBcIjtyZXR1cm5cIjxCdWZmZXIgXCIrZStcIj5cIn07aWYoaSl7QnVmZmVyLnByb3RvdHlwZVtpXT1CdWZmZXIucHJvdG90eXBlLmluc3BlY3R9QnVmZmVyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uIGNvbXBhcmUoZSxyLHQsZixuKXtpZihpc0luc3RhbmNlKGUsVWludDhBcnJheSkpe2U9QnVmZmVyLmZyb20oZSxlLm9mZnNldCxlLmJ5dGVMZW5ndGgpfWlmKCFCdWZmZXIuaXNCdWZmZXIoZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuICcrXCJSZWNlaXZlZCB0eXBlIFwiK3R5cGVvZiBlKX1pZihyPT09dW5kZWZpbmVkKXtyPTB9aWYodD09PXVuZGVmaW5lZCl7dD1lP2UubGVuZ3RoOjB9aWYoZj09PXVuZGVmaW5lZCl7Zj0wfWlmKG49PT11bmRlZmluZWQpe249dGhpcy5sZW5ndGh9aWYocjwwfHx0PmUubGVuZ3RofHxmPDB8fG4+dGhpcy5sZW5ndGgpe3Rocm93IG5ldyBSYW5nZUVycm9yKFwib3V0IG9mIHJhbmdlIGluZGV4XCIpfWlmKGY+PW4mJnI+PXQpe3JldHVybiAwfWlmKGY+PW4pe3JldHVybi0xfWlmKHI+PXQpe3JldHVybiAxfXI+Pj49MDt0Pj4+PTA7Zj4+Pj0wO24+Pj49MDtpZih0aGlzPT09ZSlyZXR1cm4gMDt2YXIgaT1uLWY7dmFyIG89dC1yO3ZhciB1PU1hdGgubWluKGksbyk7dmFyIGE9dGhpcy5zbGljZShmLG4pO3ZhciBzPWUuc2xpY2Uocix0KTtmb3IodmFyIGg9MDtoPHU7KytoKXtpZihhW2hdIT09c1toXSl7aT1hW2hdO289c1toXTticmVha319aWYoaTxvKXJldHVybi0xO2lmKG88aSlyZXR1cm4gMTtyZXR1cm4gMH07ZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YoZSxyLHQsZixuKXtpZihlLmxlbmd0aD09PTApcmV0dXJuLTE7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXtmPXQ7dD0wfWVsc2UgaWYodD4yMTQ3NDgzNjQ3KXt0PTIxNDc0ODM2NDd9ZWxzZSBpZih0PC0yMTQ3NDgzNjQ4KXt0PS0yMTQ3NDgzNjQ4fXQ9K3Q7aWYobnVtYmVySXNOYU4odCkpe3Q9bj8wOmUubGVuZ3RoLTF9aWYodDwwKXQ9ZS5sZW5ndGgrdDtpZih0Pj1lLmxlbmd0aCl7aWYobilyZXR1cm4tMTtlbHNlIHQ9ZS5sZW5ndGgtMX1lbHNlIGlmKHQ8MCl7aWYobil0PTA7ZWxzZSByZXR1cm4tMX1pZih0eXBlb2Ygcj09PVwic3RyaW5nXCIpe3I9QnVmZmVyLmZyb20ocixmKX1pZihCdWZmZXIuaXNCdWZmZXIocikpe2lmKHIubGVuZ3RoPT09MCl7cmV0dXJuLTF9cmV0dXJuIGFycmF5SW5kZXhPZihlLHIsdCxmLG4pfWVsc2UgaWYodHlwZW9mIHI9PT1cIm51bWJlclwiKXtyPXImMjU1O2lmKHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mPT09XCJmdW5jdGlvblwiKXtpZihuKXtyZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUscix0KX1lbHNle3JldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUscix0KX19cmV0dXJuIGFycmF5SW5kZXhPZihlLFtyXSx0LGYsbil9dGhyb3cgbmV3IFR5cGVFcnJvcihcInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlclwiKX1mdW5jdGlvbiBhcnJheUluZGV4T2YoZSxyLHQsZixuKXt2YXIgaT0xO3ZhciBvPWUubGVuZ3RoO3ZhciB1PXIubGVuZ3RoO2lmKGYhPT11bmRlZmluZWQpe2Y9U3RyaW5nKGYpLnRvTG93ZXJDYXNlKCk7aWYoZj09PVwidWNzMlwifHxmPT09XCJ1Y3MtMlwifHxmPT09XCJ1dGYxNmxlXCJ8fGY9PT1cInV0Zi0xNmxlXCIpe2lmKGUubGVuZ3RoPDJ8fHIubGVuZ3RoPDIpe3JldHVybi0xfWk9MjtvLz0yO3UvPTI7dC89Mn19ZnVuY3Rpb24gcmVhZChlLHIpe2lmKGk9PT0xKXtyZXR1cm4gZVtyXX1lbHNle3JldHVybiBlLnJlYWRVSW50MTZCRShyKmkpfX12YXIgYTtpZihuKXt2YXIgcz0tMTtmb3IoYT10O2E8bzthKyspe2lmKHJlYWQoZSxhKT09PXJlYWQocixzPT09LTE/MDphLXMpKXtpZihzPT09LTEpcz1hO2lmKGEtcysxPT09dSlyZXR1cm4gcyppfWVsc2V7aWYocyE9PS0xKWEtPWEtcztzPS0xfX19ZWxzZXtpZih0K3U+byl0PW8tdTtmb3IoYT10O2E+PTA7YS0tKXt2YXIgaD10cnVlO2Zvcih2YXIgYz0wO2M8dTtjKyspe2lmKHJlYWQoZSxhK2MpIT09cmVhZChyLGMpKXtoPWZhbHNlO2JyZWFrfX1pZihoKXJldHVybiBhfX1yZXR1cm4tMX1CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uIGluY2x1ZGVzKGUscix0KXtyZXR1cm4gdGhpcy5pbmRleE9mKGUscix0KSE9PS0xfTtCdWZmZXIucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24gaW5kZXhPZihlLHIsdCl7cmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsZSxyLHQsdHJ1ZSl9O0J1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24gbGFzdEluZGV4T2YoZSxyLHQpe3JldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLGUscix0LGZhbHNlKX07ZnVuY3Rpb24gaGV4V3JpdGUoZSxyLHQsZil7dD1OdW1iZXIodCl8fDA7dmFyIG49ZS5sZW5ndGgtdDtpZighZil7Zj1ufWVsc2V7Zj1OdW1iZXIoZik7aWYoZj5uKXtmPW59fXZhciBpPXIubGVuZ3RoO2lmKGY+aS8yKXtmPWkvMn1mb3IodmFyIG89MDtvPGY7KytvKXt2YXIgdT1wYXJzZUludChyLnN1YnN0cihvKjIsMiksMTYpO2lmKG51bWJlcklzTmFOKHUpKXJldHVybiBvO2VbdCtvXT11fXJldHVybiBvfWZ1bmN0aW9uIHV0ZjhXcml0ZShlLHIsdCxmKXtyZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhyLGUubGVuZ3RoLXQpLGUsdCxmKX1mdW5jdGlvbiBhc2NpaVdyaXRlKGUscix0LGYpe3JldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhyKSxlLHQsZil9ZnVuY3Rpb24gbGF0aW4xV3JpdGUoZSxyLHQsZil7cmV0dXJuIGFzY2lpV3JpdGUoZSxyLHQsZil9ZnVuY3Rpb24gYmFzZTY0V3JpdGUoZSxyLHQsZil7cmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhyKSxlLHQsZil9ZnVuY3Rpb24gdWNzMldyaXRlKGUscix0LGYpe3JldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHIsZS5sZW5ndGgtdCksZSx0LGYpfUJ1ZmZlci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24gd3JpdGUoZSxyLHQsZil7aWYocj09PXVuZGVmaW5lZCl7Zj1cInV0ZjhcIjt0PXRoaXMubGVuZ3RoO3I9MH1lbHNlIGlmKHQ9PT11bmRlZmluZWQmJnR5cGVvZiByPT09XCJzdHJpbmdcIil7Zj1yO3Q9dGhpcy5sZW5ndGg7cj0wfWVsc2UgaWYoaXNGaW5pdGUocikpe3I9cj4+PjA7aWYoaXNGaW5pdGUodCkpe3Q9dD4+PjA7aWYoZj09PXVuZGVmaW5lZClmPVwidXRmOFwifWVsc2V7Zj10O3Q9dW5kZWZpbmVkfX1lbHNle3Rocm93IG5ldyBFcnJvcihcIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXCIpfXZhciBuPXRoaXMubGVuZ3RoLXI7aWYodD09PXVuZGVmaW5lZHx8dD5uKXQ9bjtpZihlLmxlbmd0aD4wJiYodDwwfHxyPDApfHxyPnRoaXMubGVuZ3RoKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzXCIpfWlmKCFmKWY9XCJ1dGY4XCI7dmFyIGk9ZmFsc2U7Zm9yKDs7KXtzd2l0Y2goZil7Y2FzZVwiaGV4XCI6cmV0dXJuIGhleFdyaXRlKHRoaXMsZSxyLHQpO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiB1dGY4V3JpdGUodGhpcyxlLHIsdCk7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gYXNjaWlXcml0ZSh0aGlzLGUscix0KTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gbGF0aW4xV3JpdGUodGhpcyxlLHIsdCk7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsZSxyLHQpO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiB1Y3MyV3JpdGUodGhpcyxlLHIsdCk7ZGVmYXVsdDppZihpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitmKTtmPShcIlwiK2YpLnRvTG93ZXJDYXNlKCk7aT10cnVlfX19O0J1ZmZlci5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uIHRvSlNPTigpe3JldHVybnt0eXBlOlwiQnVmZmVyXCIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtmdW5jdGlvbiBiYXNlNjRTbGljZShlLHIsdCl7aWYocj09PTAmJnQ9PT1lLmxlbmd0aCl7cmV0dXJuIGYuZnJvbUJ5dGVBcnJheShlKX1lbHNle3JldHVybiBmLmZyb21CeXRlQXJyYXkoZS5zbGljZShyLHQpKX19ZnVuY3Rpb24gdXRmOFNsaWNlKGUscix0KXt0PU1hdGgubWluKGUubGVuZ3RoLHQpO3ZhciBmPVtdO3ZhciBuPXI7d2hpbGUobjx0KXt2YXIgaT1lW25dO3ZhciBvPW51bGw7dmFyIHU9aT4yMzk/NDppPjIyMz8zOmk+MTkxPzI6MTtpZihuK3U8PXQpe3ZhciBhLHMsaCxjO3N3aXRjaCh1KXtjYXNlIDE6aWYoaTwxMjgpe289aX1icmVhaztjYXNlIDI6YT1lW24rMV07aWYoKGEmMTkyKT09PTEyOCl7Yz0oaSYzMSk8PDZ8YSY2MztpZihjPjEyNyl7bz1jfX1icmVhaztjYXNlIDM6YT1lW24rMV07cz1lW24rMl07aWYoKGEmMTkyKT09PTEyOCYmKHMmMTkyKT09PTEyOCl7Yz0oaSYxNSk8PDEyfChhJjYzKTw8NnxzJjYzO2lmKGM+MjA0NyYmKGM8NTUyOTZ8fGM+NTczNDMpKXtvPWN9fWJyZWFrO2Nhc2UgNDphPWVbbisxXTtzPWVbbisyXTtoPWVbbiszXTtpZigoYSYxOTIpPT09MTI4JiYocyYxOTIpPT09MTI4JiYoaCYxOTIpPT09MTI4KXtjPShpJjE1KTw8MTh8KGEmNjMpPDwxMnwocyY2Myk8PDZ8aCY2MztpZihjPjY1NTM1JiZjPDExMTQxMTIpe289Y319fX1pZihvPT09bnVsbCl7bz02NTUzMzt1PTF9ZWxzZSBpZihvPjY1NTM1KXtvLT02NTUzNjtmLnB1c2gobz4+PjEwJjEwMjN8NTUyOTYpO289NTYzMjB8byYxMDIzfWYucHVzaChvKTtuKz11fXJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkoZil9dmFyIHU9NDA5NjtmdW5jdGlvbiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkoZSl7dmFyIHI9ZS5sZW5ndGg7aWYocjw9dSl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpfXZhciB0PVwiXCI7dmFyIGY9MDt3aGlsZShmPHIpe3QrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UoZixmKz11KSl9cmV0dXJuIHR9ZnVuY3Rpb24gYXNjaWlTbGljZShlLHIsdCl7dmFyIGY9XCJcIjt0PU1hdGgubWluKGUubGVuZ3RoLHQpO2Zvcih2YXIgbj1yO248dDsrK24pe2YrPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtuXSYxMjcpfXJldHVybiBmfWZ1bmN0aW9uIGxhdGluMVNsaWNlKGUscix0KXt2YXIgZj1cIlwiO3Q9TWF0aC5taW4oZS5sZW5ndGgsdCk7Zm9yKHZhciBuPXI7bjx0Oysrbil7Zis9U3RyaW5nLmZyb21DaGFyQ29kZShlW25dKX1yZXR1cm4gZn1mdW5jdGlvbiBoZXhTbGljZShlLHIsdCl7dmFyIGY9ZS5sZW5ndGg7aWYoIXJ8fHI8MClyPTA7aWYoIXR8fHQ8MHx8dD5mKXQ9Zjt2YXIgbj1cIlwiO2Zvcih2YXIgaT1yO2k8dDsrK2kpe24rPXNbZVtpXV19cmV0dXJuIG59ZnVuY3Rpb24gdXRmMTZsZVNsaWNlKGUscix0KXt2YXIgZj1lLnNsaWNlKHIsdCk7dmFyIG49XCJcIjtmb3IodmFyIGk9MDtpPGYubGVuZ3RoO2krPTIpe24rPVN0cmluZy5mcm9tQ2hhckNvZGUoZltpXStmW2krMV0qMjU2KX1yZXR1cm4gbn1CdWZmZXIucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uIHNsaWNlKGUscil7dmFyIHQ9dGhpcy5sZW5ndGg7ZT1+fmU7cj1yPT09dW5kZWZpbmVkP3Q6fn5yO2lmKGU8MCl7ZSs9dDtpZihlPDApZT0wfWVsc2UgaWYoZT50KXtlPXR9aWYocjwwKXtyKz10O2lmKHI8MClyPTB9ZWxzZSBpZihyPnQpe3I9dH1pZihyPGUpcj1lO3ZhciBmPXRoaXMuc3ViYXJyYXkoZSxyKTtPYmplY3Quc2V0UHJvdG90eXBlT2YoZixCdWZmZXIucHJvdG90eXBlKTtyZXR1cm4gZn07ZnVuY3Rpb24gY2hlY2tPZmZzZXQoZSxyLHQpe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm9mZnNldCBpcyBub3QgdWludFwiKTtpZihlK3I+dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGhcIil9QnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uIHJlYWRVSW50TEUoZSxyLHQpe2U9ZT4+PjA7cj1yPj4+MDtpZighdCljaGVja09mZnNldChlLHIsdGhpcy5sZW5ndGgpO3ZhciBmPXRoaXNbZV07dmFyIG49MTt2YXIgaT0wO3doaWxlKCsraTxyJiYobio9MjU2KSl7Zis9dGhpc1tlK2ldKm59cmV0dXJuIGZ9O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbiByZWFkVUludEJFKGUscix0KXtlPWU+Pj4wO3I9cj4+PjA7aWYoIXQpe2NoZWNrT2Zmc2V0KGUscix0aGlzLmxlbmd0aCl9dmFyIGY9dGhpc1tlKy0tcl07dmFyIG49MTt3aGlsZShyPjAmJihuKj0yNTYpKXtmKz10aGlzW2UrLS1yXSpufXJldHVybiBmfTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbiByZWFkVUludDgoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsMSx0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbZV19O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uIHJlYWRVSW50MTZMRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSwyLHRoaXMubGVuZ3RoKTtyZXR1cm4gdGhpc1tlXXx0aGlzW2UrMV08PDh9O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uIHJlYWRVSW50MTZCRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSwyLHRoaXMubGVuZ3RoKTtyZXR1cm4gdGhpc1tlXTw8OHx0aGlzW2UrMV19O0J1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uIHJlYWRVSW50MzJMRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw0LHRoaXMubGVuZ3RoKTtyZXR1cm4odGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrdGhpc1tlKzNdKjE2Nzc3MjE2fTtCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbiByZWFkVUludDMyQkUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIHRoaXNbZV0qMTY3NzcyMTYrKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uIHJlYWRJbnRMRShlLHIsdCl7ZT1lPj4+MDtyPXI+Pj4wO2lmKCF0KWNoZWNrT2Zmc2V0KGUscix0aGlzLmxlbmd0aCk7dmFyIGY9dGhpc1tlXTt2YXIgbj0xO3ZhciBpPTA7d2hpbGUoKytpPHImJihuKj0yNTYpKXtmKz10aGlzW2UraV0qbn1uKj0xMjg7aWYoZj49bilmLT1NYXRoLnBvdygyLDgqcik7cmV0dXJuIGZ9O0J1ZmZlci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uIHJlYWRJbnRCRShlLHIsdCl7ZT1lPj4+MDtyPXI+Pj4wO2lmKCF0KWNoZWNrT2Zmc2V0KGUscix0aGlzLmxlbmd0aCk7dmFyIGY9cjt2YXIgbj0xO3ZhciBpPXRoaXNbZSstLWZdO3doaWxlKGY+MCYmKG4qPTI1Nikpe2krPXRoaXNbZSstLWZdKm59bio9MTI4O2lmKGk+PW4paS09TWF0aC5wb3coMiw4KnIpO3JldHVybiBpfTtCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uIHJlYWRJbnQ4KGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDEsdGhpcy5sZW5ndGgpO2lmKCEodGhpc1tlXSYxMjgpKXJldHVybiB0aGlzW2VdO3JldHVybigyNTUtdGhpc1tlXSsxKSotMX07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbiByZWFkSW50MTZMRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSwyLHRoaXMubGVuZ3RoKTt2YXIgdD10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gdCYzMjc2OD90fDQyOTQ5MDE3NjA6dH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbiByZWFkSW50MTZCRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSwyLHRoaXMubGVuZ3RoKTt2YXIgdD10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gdCYzMjc2OD90fDQyOTQ5MDE3NjA6dH07QnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbiByZWFkSW50MzJMRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fTtCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uIHJlYWRJbnQzMkJFKGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDQsdGhpcy5sZW5ndGgpO3JldHVybiB0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119O0J1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24gcmVhZEZsb2F0TEUoZSxyKXtlPWU+Pj4wO2lmKCFyKWNoZWNrT2Zmc2V0KGUsNCx0aGlzLmxlbmd0aCk7cmV0dXJuIG4ucmVhZCh0aGlzLGUsdHJ1ZSwyMyw0KX07QnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbiByZWFkRmxvYXRCRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw0LHRoaXMubGVuZ3RoKTtyZXR1cm4gbi5yZWFkKHRoaXMsZSxmYWxzZSwyMyw0KX07QnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24gcmVhZERvdWJsZUxFKGUscil7ZT1lPj4+MDtpZighciljaGVja09mZnNldChlLDgsdGhpcy5sZW5ndGgpO3JldHVybiBuLnJlYWQodGhpcyxlLHRydWUsNTIsOCl9O0J1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uIHJlYWREb3VibGVCRShlLHIpe2U9ZT4+PjA7aWYoIXIpY2hlY2tPZmZzZXQoZSw4LHRoaXMubGVuZ3RoKTtyZXR1cm4gbi5yZWFkKHRoaXMsZSxmYWxzZSw1Miw4KX07ZnVuY3Rpb24gY2hlY2tJbnQoZSxyLHQsZixuLGkpe2lmKCFCdWZmZXIuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYocj5ufHxyPGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYodCtmPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpfUJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24gd3JpdGVVSW50TEUoZSxyLHQsZil7ZT0rZTtyPXI+Pj4wO3Q9dD4+PjA7aWYoIWYpe3ZhciBuPU1hdGgucG93KDIsOCp0KS0xO2NoZWNrSW50KHRoaXMsZSxyLHQsbiwwKX12YXIgaT0xO3ZhciBvPTA7dGhpc1tyXT1lJjI1NTt3aGlsZSgrK288dCYmKGkqPTI1Nikpe3RoaXNbcitvXT1lL2kmMjU1fXJldHVybiByK3R9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24gd3JpdGVVSW50QkUoZSxyLHQsZil7ZT0rZTtyPXI+Pj4wO3Q9dD4+PjA7aWYoIWYpe3ZhciBuPU1hdGgucG93KDIsOCp0KS0xO2NoZWNrSW50KHRoaXMsZSxyLHQsbiwwKX12YXIgaT10LTE7dmFyIG89MTt0aGlzW3IraV09ZSYyNTU7d2hpbGUoLS1pPj0wJiYobyo9MjU2KSl7dGhpc1tyK2ldPWUvbyYyNTV9cmV0dXJuIHIrdH07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uIHdyaXRlVUludDgoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciwxLDI1NSwwKTt0aGlzW3JdPWUmMjU1O3JldHVybiByKzF9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbiB3cml0ZVVJbnQxNkxFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsMiw2NTUzNSwwKTt0aGlzW3JdPWUmMjU1O3RoaXNbcisxXT1lPj4+ODtyZXR1cm4gcisyfTtCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24gd3JpdGVVSW50MTZCRShlLHIsdCl7ZT0rZTtyPXI+Pj4wO2lmKCF0KWNoZWNrSW50KHRoaXMsZSxyLDIsNjU1MzUsMCk7dGhpc1tyXT1lPj4+ODt0aGlzW3IrMV09ZSYyNTU7cmV0dXJuIHIrMn07QnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uIHdyaXRlVUludDMyTEUoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciw0LDQyOTQ5NjcyOTUsMCk7dGhpc1tyKzNdPWU+Pj4yNDt0aGlzW3IrMl09ZT4+PjE2O3RoaXNbcisxXT1lPj4+ODt0aGlzW3JdPWUmMjU1O3JldHVybiByKzR9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbiB3cml0ZVVJbnQzMkJFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsNCw0Mjk0OTY3Mjk1LDApO3RoaXNbcl09ZT4+PjI0O3RoaXNbcisxXT1lPj4+MTY7dGhpc1tyKzJdPWU+Pj44O3RoaXNbciszXT1lJjI1NTtyZXR1cm4gcis0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24gd3JpdGVJbnRMRShlLHIsdCxmKXtlPStlO3I9cj4+PjA7aWYoIWYpe3ZhciBuPU1hdGgucG93KDIsOCp0LTEpO2NoZWNrSW50KHRoaXMsZSxyLHQsbi0xLC1uKX12YXIgaT0wO3ZhciBvPTE7dmFyIHU9MDt0aGlzW3JdPWUmMjU1O3doaWxlKCsraTx0JiYobyo9MjU2KSl7aWYoZTwwJiZ1PT09MCYmdGhpc1tyK2ktMV0hPT0wKXt1PTF9dGhpc1tyK2ldPShlL28+PjApLXUmMjU1fXJldHVybiByK3R9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbiB3cml0ZUludEJFKGUscix0LGYpe2U9K2U7cj1yPj4+MDtpZighZil7dmFyIG49TWF0aC5wb3coMiw4KnQtMSk7Y2hlY2tJbnQodGhpcyxlLHIsdCxuLTEsLW4pfXZhciBpPXQtMTt2YXIgbz0xO3ZhciB1PTA7dGhpc1tyK2ldPWUmMjU1O3doaWxlKC0taT49MCYmKG8qPTI1Nikpe2lmKGU8MCYmdT09PTAmJnRoaXNbcitpKzFdIT09MCl7dT0xfXRoaXNbcitpXT0oZS9vPj4wKS11JjI1NX1yZXR1cm4gcit0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbiB3cml0ZUludDgoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciwxLDEyNywtMTI4KTtpZihlPDApZT0yNTUrZSsxO3RoaXNbcl09ZSYyNTU7cmV0dXJuIHIrMX07QnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24gd3JpdGVJbnQxNkxFKGUscix0KXtlPStlO3I9cj4+PjA7aWYoIXQpY2hlY2tJbnQodGhpcyxlLHIsMiwzMjc2NywtMzI3NjgpO3RoaXNbcl09ZSYyNTU7dGhpc1tyKzFdPWU+Pj44O3JldHVybiByKzJ9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uIHdyaXRlSW50MTZCRShlLHIsdCl7ZT0rZTtyPXI+Pj4wO2lmKCF0KWNoZWNrSW50KHRoaXMsZSxyLDIsMzI3NjcsLTMyNzY4KTt0aGlzW3JdPWU+Pj44O3RoaXNbcisxXT1lJjI1NTtyZXR1cm4gcisyfTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbiB3cml0ZUludDMyTEUoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpO3RoaXNbcl09ZSYyNTU7dGhpc1tyKzFdPWU+Pj44O3RoaXNbcisyXT1lPj4+MTY7dGhpc1tyKzNdPWU+Pj4yNDtyZXR1cm4gcis0fTtCdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbiB3cml0ZUludDMyQkUoZSxyLHQpe2U9K2U7cj1yPj4+MDtpZighdCljaGVja0ludCh0aGlzLGUsciw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpO2lmKGU8MCllPTQyOTQ5NjcyOTUrZSsxO3RoaXNbcl09ZT4+PjI0O3RoaXNbcisxXT1lPj4+MTY7dGhpc1tyKzJdPWU+Pj44O3RoaXNbciszXT1lJjI1NTtyZXR1cm4gcis0fTtmdW5jdGlvbiBjaGVja0lFRUU3NTQoZSxyLHQsZixuLGkpe2lmKHQrZj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gd3JpdGVGbG9hdChlLHIsdCxmLGkpe3I9K3I7dD10Pj4+MDtpZighaSl7Y2hlY2tJRUVFNzU0KGUscix0LDQsMzQwMjgyMzQ2NjM4NTI4ODZlMjIsLTM0MDI4MjM0NjYzODUyODg2ZTIyKX1uLndyaXRlKGUscix0LGYsMjMsNCk7cmV0dXJuIHQrNH1CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbiB3cml0ZUZsb2F0TEUoZSxyLHQpe3JldHVybiB3cml0ZUZsb2F0KHRoaXMsZSxyLHRydWUsdCl9O0J1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uIHdyaXRlRmxvYXRCRShlLHIsdCl7cmV0dXJuIHdyaXRlRmxvYXQodGhpcyxlLHIsZmFsc2UsdCl9O2Z1bmN0aW9uIHdyaXRlRG91YmxlKGUscix0LGYsaSl7cj0rcjt0PXQ+Pj4wO2lmKCFpKXtjaGVja0lFRUU3NTQoZSxyLHQsOCwxNzk3NjkzMTM0ODYyMzE1N2UyOTIsLTE3OTc2OTMxMzQ4NjIzMTU3ZTI5Mil9bi53cml0ZShlLHIsdCxmLDUyLDgpO3JldHVybiB0Kzh9QnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uIHdyaXRlRG91YmxlTEUoZSxyLHQpe3JldHVybiB3cml0ZURvdWJsZSh0aGlzLGUscix0cnVlLHQpfTtCdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24gd3JpdGVEb3VibGVCRShlLHIsdCl7cmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsZSxyLGZhbHNlLHQpfTtCdWZmZXIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24gY29weShlLHIsdCxmKXtpZighQnVmZmVyLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXJcIik7aWYoIXQpdD0wO2lmKCFmJiZmIT09MClmPXRoaXMubGVuZ3RoO2lmKHI+PWUubGVuZ3RoKXI9ZS5sZW5ndGg7aWYoIXIpcj0wO2lmKGY+MCYmZjx0KWY9dDtpZihmPT09dClyZXR1cm4gMDtpZihlLmxlbmd0aD09PTB8fHRoaXMubGVuZ3RoPT09MClyZXR1cm4gMDtpZihyPDApe3Rocm93IG5ldyBSYW5nZUVycm9yKFwidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kc1wiKX1pZih0PDB8fHQ+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpO2lmKGY8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzXCIpO2lmKGY+dGhpcy5sZW5ndGgpZj10aGlzLmxlbmd0aDtpZihlLmxlbmd0aC1yPGYtdCl7Zj1lLmxlbmd0aC1yK3R9dmFyIG49Zi10O2lmKHRoaXM9PT1lJiZ0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj09PVwiZnVuY3Rpb25cIil7dGhpcy5jb3B5V2l0aGluKHIsdCxmKX1lbHNlIGlmKHRoaXM9PT1lJiZ0PHImJnI8Zil7Zm9yKHZhciBpPW4tMTtpPj0wOy0taSl7ZVtpK3JdPXRoaXNbaSt0XX19ZWxzZXtVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkodCxmKSxyKX1yZXR1cm4gbn07QnVmZmVyLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uIGZpbGwoZSxyLHQsZil7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtpZih0eXBlb2Ygcj09PVwic3RyaW5nXCIpe2Y9cjtyPTA7dD10aGlzLmxlbmd0aH1lbHNlIGlmKHR5cGVvZiB0PT09XCJzdHJpbmdcIil7Zj10O3Q9dGhpcy5sZW5ndGh9aWYoZiE9PXVuZGVmaW5lZCYmdHlwZW9mIGYhPT1cInN0cmluZ1wiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZ1wiKX1pZih0eXBlb2YgZj09PVwic3RyaW5nXCImJiFCdWZmZXIuaXNFbmNvZGluZyhmKSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK2YpfWlmKGUubGVuZ3RoPT09MSl7dmFyIG49ZS5jaGFyQ29kZUF0KDApO2lmKGY9PT1cInV0ZjhcIiYmbjwxMjh8fGY9PT1cImxhdGluMVwiKXtlPW59fX1lbHNlIGlmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7ZT1lJjI1NX1lbHNlIGlmKHR5cGVvZiBlPT09XCJib29sZWFuXCIpe2U9TnVtYmVyKGUpfWlmKHI8MHx8dGhpcy5sZW5ndGg8cnx8dGhpcy5sZW5ndGg8dCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPdXQgb2YgcmFuZ2UgaW5kZXhcIil9aWYodDw9cil7cmV0dXJuIHRoaXN9cj1yPj4+MDt0PXQ9PT11bmRlZmluZWQ/dGhpcy5sZW5ndGg6dD4+PjA7aWYoIWUpZT0wO3ZhciBpO2lmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7Zm9yKGk9cjtpPHQ7KytpKXt0aGlzW2ldPWV9fWVsc2V7dmFyIG89QnVmZmVyLmlzQnVmZmVyKGUpP2U6QnVmZmVyLmZyb20oZSxmKTt2YXIgdT1vLmxlbmd0aDtpZih1PT09MCl7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKX1mb3IoaT0wO2k8dC1yOysraSl7dGhpc1tpK3JdPW9baSV1XX19cmV0dXJuIHRoaXN9O3ZhciBhPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gYmFzZTY0Y2xlYW4oZSl7ZT1lLnNwbGl0KFwiPVwiKVswXTtlPWUudHJpbSgpLnJlcGxhY2UoYSxcIlwiKTtpZihlLmxlbmd0aDwyKXJldHVyblwiXCI7d2hpbGUoZS5sZW5ndGglNCE9PTApe2U9ZStcIj1cIn1yZXR1cm4gZX1mdW5jdGlvbiB1dGY4VG9CeXRlcyhlLHIpe3I9cnx8SW5maW5pdHk7dmFyIHQ7dmFyIGY9ZS5sZW5ndGg7dmFyIG49bnVsbDt2YXIgaT1bXTtmb3IodmFyIG89MDtvPGY7KytvKXt0PWUuY2hhckNvZGVBdChvKTtpZih0PjU1Mjk1JiZ0PDU3MzQ0KXtpZighbil7aWYodD41NjMxOSl7aWYoKHItPTMpPi0xKWkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9ZWxzZSBpZihvKzE9PT1mKXtpZigoci09Myk+LTEpaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1uPXQ7Y29udGludWV9aWYodDw1NjMyMCl7aWYoKHItPTMpPi0xKWkucHVzaCgyMzksMTkxLDE4OSk7bj10O2NvbnRpbnVlfXQ9KG4tNTUyOTY8PDEwfHQtNTYzMjApKzY1NTM2fWVsc2UgaWYobil7aWYoKHItPTMpPi0xKWkucHVzaCgyMzksMTkxLDE4OSl9bj1udWxsO2lmKHQ8MTI4KXtpZigoci09MSk8MClicmVhaztpLnB1c2godCl9ZWxzZSBpZih0PDIwNDgpe2lmKChyLT0yKTwwKWJyZWFrO2kucHVzaCh0Pj42fDE5Mix0JjYzfDEyOCl9ZWxzZSBpZih0PDY1NTM2KXtpZigoci09Myk8MClicmVhaztpLnB1c2godD4+MTJ8MjI0LHQ+PjYmNjN8MTI4LHQmNjN8MTI4KX1lbHNlIGlmKHQ8MTExNDExMil7aWYoKHItPTQpPDApYnJlYWs7aS5wdXNoKHQ+PjE4fDI0MCx0Pj4xMiY2M3wxMjgsdD4+NiY2M3wxMjgsdCY2M3wxMjgpfWVsc2V7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2RlIHBvaW50XCIpfX1yZXR1cm4gaX1mdW5jdGlvbiBhc2NpaVRvQnl0ZXMoZSl7dmFyIHI9W107Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDsrK3Qpe3IucHVzaChlLmNoYXJDb2RlQXQodCkmMjU1KX1yZXR1cm4gcn1mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyhlLHIpe3ZhciB0LGYsbjt2YXIgaT1bXTtmb3IodmFyIG89MDtvPGUubGVuZ3RoOysrbyl7aWYoKHItPTIpPDApYnJlYWs7dD1lLmNoYXJDb2RlQXQobyk7Zj10Pj44O249dCUyNTY7aS5wdXNoKG4pO2kucHVzaChmKX1yZXR1cm4gaX1mdW5jdGlvbiBiYXNlNjRUb0J5dGVzKGUpe3JldHVybiBmLnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKGUpKX1mdW5jdGlvbiBibGl0QnVmZmVyKGUscix0LGYpe2Zvcih2YXIgbj0wO248ZjsrK24pe2lmKG4rdD49ci5sZW5ndGh8fG4+PWUubGVuZ3RoKWJyZWFrO3Jbbit0XT1lW25dfXJldHVybiBufWZ1bmN0aW9uIGlzSW5zdGFuY2UoZSxyKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHJ8fGUhPW51bGwmJmUuY29uc3RydWN0b3IhPW51bGwmJmUuY29uc3RydWN0b3IubmFtZSE9bnVsbCYmZS5jb25zdHJ1Y3Rvci5uYW1lPT09ci5uYW1lfWZ1bmN0aW9uIG51bWJlcklzTmFOKGUpe3JldHVybiBlIT09ZX12YXIgcz1mdW5jdGlvbigpe3ZhciBlPVwiMDEyMzQ1Njc4OWFiY2RlZlwiO3ZhciByPW5ldyBBcnJheSgyNTYpO2Zvcih2YXIgdD0wO3Q8MTY7Kyt0KXt2YXIgZj10KjE2O2Zvcih2YXIgbj0wO248MTY7KytuKXtyW2Yrbl09ZVt0XStlW25dfX1yZXR1cm4gcn0oKX0sNzgzOmZ1bmN0aW9uKGUscil7XG4vKiEgaWVlZTc1NC4gQlNELTMtQ2xhdXNlIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xuci5yZWFkPWZ1bmN0aW9uKGUscix0LGYsbil7dmFyIGksbzt2YXIgdT1uKjgtZi0xO3ZhciBhPSgxPDx1KS0xO3ZhciBzPWE+PjE7dmFyIGg9LTc7dmFyIGM9dD9uLTE6MDt2YXIgbD10Py0xOjE7dmFyIHA9ZVtyK2NdO2MrPWw7aT1wJigxPDwtaCktMTtwPj49LWg7aCs9dTtmb3IoO2g+MDtpPWkqMjU2K2VbcitjXSxjKz1sLGgtPTgpe31vPWkmKDE8PC1oKS0xO2k+Pj0taDtoKz1mO2Zvcig7aD4wO289byoyNTYrZVtyK2NdLGMrPWwsaC09OCl7fWlmKGk9PT0wKXtpPTEtc31lbHNlIGlmKGk9PT1hKXtyZXR1cm4gbz9OYU46KHA/LTE6MSkqSW5maW5pdHl9ZWxzZXtvPW8rTWF0aC5wb3coMixmKTtpPWktc31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsaS1mKX07ci53cml0ZT1mdW5jdGlvbihlLHIsdCxmLG4saSl7dmFyIG8sdSxhO3ZhciBzPWkqOC1uLTE7dmFyIGg9KDE8PHMpLTE7dmFyIGM9aD4+MTt2YXIgbD1uPT09MjM/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowO3ZhciBwPWY/MDppLTE7dmFyIHk9Zj8xOi0xO3ZhciBnPXI8MHx8cj09PTAmJjEvcjwwPzE6MDtyPU1hdGguYWJzKHIpO2lmKGlzTmFOKHIpfHxyPT09SW5maW5pdHkpe3U9aXNOYU4ocik/MTowO289aH1lbHNle289TWF0aC5mbG9vcihNYXRoLmxvZyhyKS9NYXRoLkxOMik7aWYociooYT1NYXRoLnBvdygyLC1vKSk8MSl7by0tO2EqPTJ9aWYobytjPj0xKXtyKz1sL2F9ZWxzZXtyKz1sKk1hdGgucG93KDIsMS1jKX1pZihyKmE+PTIpe28rKzthLz0yfWlmKG8rYz49aCl7dT0wO289aH1lbHNlIGlmKG8rYz49MSl7dT0ociphLTEpKk1hdGgucG93KDIsbik7bz1vK2N9ZWxzZXt1PXIqTWF0aC5wb3coMixjLTEpKk1hdGgucG93KDIsbik7bz0wfX1mb3IoO24+PTg7ZVt0K3BdPXUmMjU1LHArPXksdS89MjU2LG4tPTgpe31vPW88PG58dTtzKz1uO2Zvcig7cz4wO2VbdCtwXT1vJjI1NSxwKz15LG8vPTI1NixzLT04KXt9ZVt0K3AteV18PWcqMTI4fX19O3ZhciByPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18odCl7dmFyIGY9clt0XTtpZihmIT09dW5kZWZpbmVkKXtyZXR1cm4gZi5leHBvcnRzfXZhciBuPXJbdF09e2V4cG9ydHM6e319O3ZhciBpPXRydWU7dHJ5e2VbdF0obixuLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7aT1mYWxzZX1maW5hbGx5e2lmKGkpZGVsZXRlIHJbdF19cmV0dXJuIG4uZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHQ9X19uY2N3cGNrX3JlcXVpcmVfXyg3Mik7bW9kdWxlLmV4cG9ydHM9dH0pKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/buffer/index.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/crypto-browserify/index.js":
/*!********************************************************************!*\
!*** ./node_modules/next/dist/compiled/crypto-browserify/index.js ***!
\********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n(function(){var e={7160:function(e,t,r){var i=t;i.bignum=r(711);i.define=r(495).define;i.base=r(853);i.constants=r(7335);i.decoders=r(6701);i.encoders=r(3418)},495:function(e,t,r){var i=r(7160);var n=r(3782);var a=t;a.define=function define(e,t){return new Entity(e,t)};function Entity(e,t){this.name=e;this.body=t;this.decoders={};this.encoders={}}Entity.prototype._createNamed=function createNamed(e){var t;try{t=r(6144).runInThisContext(\"(function \"+this.name+\"(entity) {\\n\"+\" this._initNamed(entity);\\n\"+\"})\")}catch(e){t=function(e){this._initNamed(e)}}n(t,e);t.prototype._initNamed=function initnamed(t){e.call(this,t)};return new t(this)};Entity.prototype._getDecoder=function _getDecoder(e){e=e||\"der\";if(!this.decoders.hasOwnProperty(e))this.decoders[e]=this._createNamed(i.decoders[e]);return this.decoders[e]};Entity.prototype.decode=function decode(e,t,r){return this._getDecoder(t).decode(e,r)};Entity.prototype._getEncoder=function _getEncoder(e){e=e||\"der\";if(!this.encoders.hasOwnProperty(e))this.encoders[e]=this._createNamed(i.encoders[e]);return this.encoders[e]};Entity.prototype.encode=function encode(e,t,r){return this._getEncoder(t).encode(e,r)}},6483:function(e,t,r){var i=r(3782);var n=r(853).Reporter;var a=r(4300).Buffer;function DecoderBuffer(e,t){n.call(this,t);if(!a.isBuffer(e)){this.error(\"Input not Buffer\");return}this.base=e;this.offset=0;this.length=e.length}i(DecoderBuffer,n);t.C=DecoderBuffer;DecoderBuffer.prototype.save=function save(){return{offset:this.offset,reporter:n.prototype.save.call(this)}};DecoderBuffer.prototype.restore=function restore(e){var t=new DecoderBuffer(this.base);t.offset=e.offset;t.length=this.offset;this.offset=e.offset;n.prototype.restore.call(this,e.reporter);return t};DecoderBuffer.prototype.isEmpty=function isEmpty(){return this.offset===this.length};DecoderBuffer.prototype.readUInt8=function readUInt8(e){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,true);else return this.error(e||\"DecoderBuffer overrun\")};DecoderBuffer.prototype.skip=function skip(e,t){if(!(this.offset+e<=this.length))return this.error(t||\"DecoderBuffer overrun\");var r=new DecoderBuffer(this.base);r._reporterState=this._reporterState;r.offset=this.offset;r.length=this.offset+e;this.offset+=e;return r};DecoderBuffer.prototype.raw=function raw(e){return this.base.slice(e?e.offset:this.offset,this.length)};function EncoderBuffer(e,t){if(Array.isArray(e)){this.length=0;this.value=e.map((function(e){if(!(e instanceof EncoderBuffer))e=new EncoderBuffer(e,t);this.length+=e.length;return e}),this)}else if(typeof e===\"number\"){if(!(0<=e&&e<=255))return t.error(\"non-byte EncoderBuffer value\");this.value=e;this.length=1}else if(typeof e===\"string\"){this.value=e;this.length=a.byteLength(e)}else if(a.isBuffer(e)){this.value=e;this.length=e.length}else{return t.error(\"Unsupported type: \"+typeof e)}}t.R=EncoderBuffer;EncoderBuffer.prototype.join=function join(e,t){if(!e)e=new a(this.length);if(!t)t=0;if(this.length===0)return e;if(Array.isArray(this.value)){this.value.forEach((function(r){r.join(e,t);t+=r.length}))}else{if(typeof this.value===\"number\")e[t]=this.value;else if(typeof this.value===\"string\")e.write(this.value,t);else if(a.isBuffer(this.value))this.value.copy(e,t);t+=this.length}return e}},853:function(e,t,r){var i=t;i.Reporter=r(1293).b;i.DecoderBuffer=r(6483).C;i.EncoderBuffer=r(6483).R;i.Node=r(9374)},9374:function(e,t,r){var i=r(853).Reporter;var n=r(853).EncoderBuffer;var a=r(853).DecoderBuffer;var s=r(3523);var o=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"objDesc\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"];var h=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(o);var u=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];function Node(e,t){var r={};this._baseState=r;r.enc=e;r.parent=t||null;r.children=null;r.tag=null;r.args=null;r.reverseArgs=null;r.choice=null;r.optional=false;r.any=false;r.obj=false;r.use=null;r.useDecoder=null;r.key=null;r[\"default\"]=null;r.explicit=null;r.implicit=null;r.contains=null;if(!r.parent){r.children=[];this._wrap()}}e.exports=Node;var d=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];Node.prototype.clone=function clone(){var e=this._baseState;var t={};d.forEach((function(r){t[r]=e[r]}));var r=new this.constructor(t.parent);r._baseState=t;return r};Node.prototype._wrap=function wrap(){var e=this._baseState;h.forEach((function(t){this[t]=function _wrappedMethod(){var r=new this.constructor(this);e.children.push(r);return r[t].apply(r,arguments)}}),this)};Node.prototype._init=function init(e){var t=this._baseState;s(t.parent===null);e.call(this);t.children=t.children.filter((function(e){return e._baseState.parent===this}),this);s.equal(t.children.length,1,\"Root node can have only one child\")};Node.prototype._useArgs=function useArgs(e){var t=this._baseState;var r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this);if(r.length!==0){s(t.children===null);t.children=r;r.forEach((function(e){e._baseState.parent=this}),this)}if(e.length!==0){s(t.args===null);t.args=e;t.reverseArgs=e.map((function(e){if(typeof e!==\"object\"||e.constructor!==Object)return e;var t={};Object.keys(e).forEach((function(r){if(r==(r|0))r|=0;var i=e[r];t[i]=r}));return t}))}};u.forEach((function(e){Node.prototype[e]=function _overrided(){var t=this._baseState;throw new Error(e+\" not implemented for encoding: \"+t.enc)}}));o.forEach((function(e){Node.prototype[e]=function _tagMethod(){var t=this._baseState;var r=Array.prototype.slice.call(arguments);s(t.tag===null);t.tag=e;this._useArgs(r);return this}}));Node.prototype.use=function use(e){s(e);var t=this._baseState;s(t.use===null);t.use=e;return this};Node.prototype.optional=function optional(){var e=this._baseState;e.optional=true;return this};Node.prototype.def=function def(e){var t=this._baseState;s(t[\"default\"]===null);t[\"default\"]=e;t.optional=true;return this};Node.prototype.explicit=function explicit(e){var t=this._baseState;s(t.explicit===null&&t.implicit===null);t.explicit=e;return this};Node.prototype.implicit=function implicit(e){var t=this._baseState;s(t.explicit===null&&t.implicit===null);t.implicit=e;return this};Node.prototype.obj=function obj(){var e=this._baseState;var t=Array.prototype.slice.call(arguments);e.obj=true;if(t.length!==0)this._useArgs(t);return this};Node.prototype.key=function key(e){var t=this._baseState;s(t.key===null);t.key=e;return this};Node.prototype.any=function any(){var e=this._baseState;e.any=true;return this};Node.prototype.choice=function choice(e){var t=this._baseState;s(t.choice===null);t.choice=e;this._useArgs(Object.keys(e).map((function(t){return e[t]})));return this};Node.prototype.contains=function contains(e){var t=this._baseState;s(t.use===null);t.contains=e;return this};Node.prototype._decode=function decode(e,t){var r=this._baseState;if(r.parent===null)return e.wrapResult(r.children[0]._decode(e,t));var i=r[\"default\"];var n=true;var s=null;if(r.key!==null)s=e.enterKey(r.key);if(r.optional){var o=null;if(r.explicit!==null)o=r.explicit;else if(r.implicit!==null)o=r.implicit;else if(r.tag!==null)o=r.tag;if(o===null&&!r.any){var h=e.save();try{if(r.choice===null)this._decodeGeneric(r.tag,e,t);else this._decodeChoice(e,t);n=true}catch(e){n=false}e.restore(h)}else{n=this._peekTag(e,o,r.any);if(e.isError(n))return n}}var u;if(r.obj&&n)u=e.enterObject();if(n){if(r.explicit!==null){var d=this._decodeTag(e,r.explicit);if(e.isError(d))return d;e=d}var c=e.offset;if(r.use===null&&r.choice===null){if(r.any)var h=e.save();var l=this._decodeTag(e,r.implicit!==null?r.implicit:r.tag,r.any);if(e.isError(l))return l;if(r.any)i=e.raw(h);else e=l}if(t&&t.track&&r.tag!==null)t.track(e.path(),c,e.length,\"tagged\");if(t&&t.track&&r.tag!==null)t.track(e.path(),e.offset,e.length,\"content\");if(r.any)i=i;else if(r.choice===null)i=this._decodeGeneric(r.tag,e,t);else i=this._decodeChoice(e,t);if(e.isError(i))return i;if(!r.any&&r.choice===null&&r.children!==null){r.children.forEach((function decodeChildren(r){r._decode(e,t)}))}if(r.contains&&(r.tag===\"octstr\"||r.tag===\"bitstr\")){var p=new a(i);i=this._getUse(r.contains,e._reporterState.obj)._decode(p,t)}}if(r.obj&&n)i=e.leaveObject(u);if(r.key!==null&&(i!==null||n===true))e.leaveKey(s,r.key,i);else if(s!==null)e.exitKey(s);return i};Node.prototype._decodeGeneric=function decodeGeneric(e,t,r){var i=this._baseState;if(e===\"seq\"||e===\"set\")return null;if(e===\"seqof\"||e===\"setof\")return this._decodeList(t,e,i.args[0],r);else if(/str$/.test(e))return this._decodeStr(t,e,r);else if(e===\"objid\"&&i.args)return this._decodeObjid(t,i.args[0],i.args[1],r);else if(e===\"objid\")return this._decodeObjid(t,null,null,r);else if(e===\"gentime\"||e===\"utctime\")return this._decodeTime(t,e,r);else if(e===\"null_\")return this._decodeNull(t,r);else if(e===\"bool\")return this._decodeBool(t,r);else if(e===\"objDesc\")return this._decodeStr(t,e,r);else if(e===\"int\"||e===\"enum\")return this._decodeInt(t,i.args&&i.args[0],r);if(i.use!==null){return this._getUse(i.use,t._reporterState.obj)._decode(t,r)}else{return t.error(\"unknown tag: \"+e)}};Node.prototype._getUse=function _getUse(e,t){var r=this._baseState;r.useDecoder=this._use(e,t);s(r.useDecoder._baseState.parent===null);r.useDecoder=r.useDecoder._baseState.children[0];if(r.implicit!==r.useDecoder._baseState.implicit){r.useDecoder=r.useDecoder.clone();r.useDecoder._baseState.implicit=r.implicit}return r.useDecoder};Node.prototype._decodeChoice=function decodeChoice(e,t){var r=this._baseState;var i=null;var n=false;Object.keys(r.choice).some((function(a){var s=e.save();var o=r.choice[a];try{var h=o._decode(e,t);if(e.isError(h))return false;i={type:a,value:h};n=true}catch(t){e.restore(s);return false}return true}),this);if(!n)return e.error(\"Choice not matched\");return i};Node.prototype._createEncoderBuffer=function createEncoderBuffer(e){return new n(e,this.reporter)};Node.prototype._encode=function encode(e,t,r){var i=this._baseState;if(i[\"default\"]!==null&&i[\"default\"]===e)return;var n=this._encodeValue(e,t,r);if(n===undefined)return;if(this._skipDefault(n,t,r))return;return n};Node.prototype._encodeValue=function encode(e,t,r){var n=this._baseState;if(n.parent===null)return n.children[0]._encode(e,t||new i);var a=null;this.reporter=t;if(n.optional&&e===undefined){if(n[\"default\"]!==null)e=n[\"default\"];else return}var s=null;var o=false;if(n.any){a=this._createEncoderBuffer(e)}else if(n.choice){a=this._encodeChoice(e,t)}else if(n.contains){s=this._getUse(n.contains,r)._encode(e,t);o=true}else if(n.children){s=n.children.map((function(r){if(r._baseState.tag===\"null_\")return r._encode(null,t,e);if(r._baseState.key===null)return t.error(\"Child should have a key\");var i=t.enterKey(r._baseState.key);if(typeof e!==\"object\")return t.error(\"Child expected, but input is not object\");var n=r._encode(e[r._baseState.key],t,e);t.leaveKey(i);return n}),this).filter((function(e){return e}));s=this._createEncoderBuffer(s)}else{if(n.tag===\"seqof\"||n.tag===\"setof\"){if(!(n.args&&n.args.length===1))return t.error(\"Too many args for : \"+n.tag);if(!Array.isArray(e))return t.error(\"seqof/setof, but data is not Array\");var h=this.clone();h._baseState.implicit=null;s=this._createEncoderBuffer(e.map((function(r){var i=this._baseState;return this._getUse(i.args[0],e)._encode(r,t)}),h))}else if(n.use!==null){a=this._getUse(n.use,r)._encode(e,t)}else{s=this._encodePrimitive(n.tag,e);o=true}}var a;if(!n.any&&n.choice===null){var u=n.implicit!==null?n.implicit:n.tag;var d=n.implicit===null?\"universal\":\"context\";if(u===null){if(n.use===null)t.error(\"Tag could be omitted only for .use()\")}else{if(n.use===null)a=this._encodeComposite(u,o,d,s)}}if(n.explicit!==null)a=this._encodeComposite(n.explicit,false,\"context\",a);return a};Node.prototype._encodeChoice=function encodeChoice(e,t){var r=this._baseState;var i=r.choice[e.type];if(!i){s(false,e.type+\" not found in \"+JSON.stringify(Object.keys(r.choice)))}return i._encode(e.value,t)};Node.prototype._encodePrimitive=function encodePrimitive(e,t){var r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);else if(e===\"objid\"&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);else if(e===\"objid\")return this._encodeObjid(t,null,null);else if(e===\"gentime\"||e===\"utctime\")return this._encodeTime(t,e);else if(e===\"null_\")return this._encodeNull();else if(e===\"int\"||e===\"enum\")return this._encodeInt(t,r.args&&r.reverseArgs[0]);else if(e===\"bool\")return this._encodeBool(t);else if(e===\"objDesc\")return this._encodeStr(t,e);else throw new Error(\"Unsupported tag: \"+e)};Node.prototype._isNumstr=function isNumstr(e){return/^[0-9 ]*$/.test(e)};Node.prototype._isPrintstr=function isPrintstr(e){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(e)}},1293:function(e,t,r){var i=r(3782);function Reporter(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}t.b=Reporter;Reporter.prototype.isError=function isError(e){return e instanceof ReporterError};Reporter.prototype.save=function save(){var e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};Reporter.prototype.restore=function restore(e){var t=this._reporterState;t.obj=e.obj;t.path=t.path.slice(0,e.pathLen)};Reporter.prototype.enterKey=function enterKey(e){return this._reporterState.path.push(e)};Reporter.prototype.exitKey=function exitKey(e){var t=this._reporterState;t.path=t.path.slice(0,e-1)};Reporter.prototype.leaveKey=function leaveKey(e,t,r){var i=this._reporterState;this.exitKey(e);if(i.obj!==null)i.obj[t]=r};Reporter.prototype.path=function path(){return this._reporterState.path.join(\"/\")};Reporter.prototype.enterObject=function enterObject(){var e=this._reporterState;var t=e.obj;e.obj={};return t};Reporter.prototype.leaveObject=function leaveObject(e){var t=this._reporterState;var r=t.obj;t.obj=e;return r};Reporter.prototype.error=function error(e){var t;var r=this._reporterState;var i=e instanceof ReporterError;if(i){t=e}else{t=new ReporterError(r.path.map((function(e){return\"[\"+JSON.stringify(e)+\"]\"})).join(\"\"),e.message||e,e.stack)}if(!r.options.partial)throw t;if(!i)r.errors.push(t);return t};Reporter.prototype.wrapResult=function wrapResult(e){var t=this._reporterState;if(!t.options.partial)return e;return{result:this.isError(e)?null:e,errors:t.errors}};function ReporterError(e,t){this.path=e;this.rethrow(t)}i(ReporterError,Error);ReporterError.prototype.rethrow=function rethrow(e){this.message=e+\" at: \"+(this.path||\"(shallow)\");if(Error.captureStackTrace)Error.captureStackTrace(this,ReporterError);if(!this.stack){try{throw new Error(this.message)}catch(e){this.stack=e.stack}}return this}},9791:function(e,t,r){var i=r(7335);t.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"};t.tagClassByName=i._reverse(t.tagClass);t.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"};t.tagByName=i._reverse(t.tag)},7335:function(e,t,r){var i=t;i._reverse=function reverse(e){var t={};Object.keys(e).forEach((function(r){if((r|0)==r)r=r|0;var i=e[r];t[i]=r}));return t};i.der=r(9791)},2259:function(e,t,r){var i=r(3782);var n=r(7160);var a=n.base;var s=n.bignum;var o=n.constants.der;function DERDecoder(e){this.enc=\"der\";this.name=e.name;this.entity=e;this.tree=new DERNode;this.tree._init(e.body)}e.exports=DERDecoder;DERDecoder.prototype.decode=function decode(e,t){if(!(e instanceof a.DecoderBuffer))e=new a.DecoderBuffer(e,t);return this.tree._decode(e,t)};function DERNode(e){a.Node.call(this,\"der\",e)}i(DERNode,a.Node);DERNode.prototype._peekTag=function peekTag(e,t,r){if(e.isEmpty())return false;var i=e.save();var n=derDecodeTag(e,'Failed to peek tag: \"'+t+'\"');if(e.isError(n))return n;e.restore(i);return n.tag===t||n.tagStr===t||n.tagStr+\"of\"===t||r};DERNode.prototype._decodeTag=function decodeTag(e,t,r){var i=derDecodeTag(e,'Failed to decode tag of \"'+t+'\"');if(e.isError(i))return i;var n=derDecodeLen(e,i.primitive,'Failed to get length of \"'+t+'\"');if(e.isError(n))return n;if(!r&&i.tag!==t&&i.tagStr!==t&&i.tagStr+\"of\"!==t){return e.error('Failed to match tag: \"'+t+'\"')}if(i.primitive||n!==null)return e.skip(n,'Failed to match body of: \"'+t+'\"');var a=e.save();var s=this._skipUntilEnd(e,'Failed to skip indefinite length body: \"'+this.tag+'\"');if(e.isError(s))return s;n=e.offset-a.offset;e.restore(a);return e.skip(n,'Failed to match body of: \"'+t+'\"')};DERNode.prototype._skipUntilEnd=function skipUntilEnd(e,t){while(true){var r=derDecodeTag(e,t);if(e.isError(r))return r;var i=derDecodeLen(e,r.primitive,t);if(e.isError(i))return i;var n;if(r.primitive||i!==null)n=e.skip(i);else n=this._skipUntilEnd(e,t);if(e.isError(n))return n;if(r.tagStr===\"end\")break}};DERNode.prototype._decodeList=function decodeList(e,t,r,i){var n=[];while(!e.isEmpty()){var a=this._peekTag(e,\"end\");if(e.isError(a))return a;var s=r.decode(e,\"der\",i);if(e.isError(s)&&a)break;n.push(s)}return n};DERNode.prototype._decodeStr=function decodeStr(e,t){if(t===\"bitstr\"){var r=e.readUInt8();if(e.isError(r))return r;return{unused:r,data:e.raw()}}else if(t===\"bmpstr\"){var i=e.raw();if(i.length%2===1)return e.error(\"Decoding of string type: bmpstr length mismatch\");var n=\"\";for(var a=0;a<i.length/2;a++){n+=String.fromCharCode(i.readUInt16BE(a*2))}return n}else if(t===\"numstr\"){var s=e.raw().toString(\"ascii\");if(!this._isNumstr(s)){return e.error(\"Decoding of string type: \"+\"numstr unsupported characters\")}return s}else if(t===\"octstr\"){return e.raw()}else if(t===\"objDesc\"){return e.raw()}else if(t===\"printstr\"){var o=e.raw().toString(\"ascii\");if(!this._isPrintstr(o)){return e.error(\"Decoding of string type: \"+\"printstr unsupported characters\")}return o}else if(/str$/.test(t)){return e.raw().toString()}else{return e.error(\"Decoding of string type: \"+t+\" unsupported\")}};DERNode.prototype._decodeObjid=function decodeObjid(e,t,r){var i;var n=[];var a=0;while(!e.isEmpty()){var s=e.readUInt8();a<<=7;a|=s&127;if((s&128)===0){n.push(a);a=0}}if(s&128)n.push(a);var o=n[0]/40|0;var h=n[0]%40;if(r)i=n;else i=[o,h].concat(n.slice(1));if(t){var u=t[i.join(\" \")];if(u===undefined)u=t[i.join(\".\")];if(u!==undefined)i=u}return i};DERNode.prototype._decodeTime=function decodeTime(e,t){var r=e.raw().toString();if(t===\"gentime\"){var i=r.slice(0,4)|0;var n=r.slice(4,6)|0;var a=r.slice(6,8)|0;var s=r.slice(8,10)|0;var o=r.slice(10,12)|0;var h=r.slice(12,14)|0}else if(t===\"utctime\"){var i=r.slice(0,2)|0;var n=r.slice(2,4)|0;var a=r.slice(4,6)|0;var s=r.slice(6,8)|0;var o=r.slice(8,10)|0;var h=r.slice(10,12)|0;if(i<70)i=2e3+i;else i=1900+i}else{return e.error(\"Decoding \"+t+\" time is not supported yet\")}return Date.UTC(i,n-1,a,s,o,h,0)};DERNode.prototype._decodeNull=function decodeNull(e){return null};DERNode.prototype._decodeBool=function decodeBool(e){var t=e.readUInt8();if(e.isError(t))return t;else return t!==0};DERNode.prototype._decodeInt=function decodeInt(e,t){var r=e.raw();var i=new s(r);if(t)i=t[i.toString(10)]||i;return i};DERNode.prototype._use=function use(e,t){if(typeof e===\"function\")e=e(t);return e._getDecoder(\"der\").tree};function derDecodeTag(e,t){var r=e.readUInt8(t);if(e.isError(r))return r;var i=o.tagClass[r>>6];var n=(r&32)===0;if((r&31)===31){var a=r;r=0;while((a&128)===128){a=e.readUInt8(t);if(e.isError(a))return a;r<<=7;r|=a&127}}else{r&=31}var s=o.tag[r];return{cls:i,primitive:n,tag:r,tagStr:s}}function derDecodeLen(e,t,r){var i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&i===128)return null;if((i&128)===0){return i}var n=i&127;if(n>4)return e.error(\"length octect is too long\");i=0;for(var a=0;a<n;a++){i<<=8;var s=e.readUInt8(r);if(e.isError(s))return s;i|=s}return i}},6701:function(e,t,r){var i=t;i.der=r(2259);i.pem=r(8527)},8527:function(e,t,r){var i=r(3782);var n=r(4300).Buffer;var a=r(2259);function PEMDecoder(e){a.call(this,e);this.enc=\"pem\"}i(PEMDecoder,a);e.exports=PEMDecoder;PEMDecoder.prototype.decode=function decode(e,t){var r=e.toString().split(/[\\r\\n]+/g);var i=t.label.toUpperCase();var s=/^-----(BEGIN|END) ([^-]+)-----$/;var o=-1;var h=-1;for(var u=0;u<r.length;u++){var d=r[u].match(s);if(d===null)continue;if(d[2]!==i)continue;if(o===-1){if(d[1]!==\"BEGIN\")break;o=u}else{if(d[1]!==\"END\")break;h=u;break}}if(o===-1||h===-1)throw new Error(\"PEM section not found for: \"+i);var c=r.slice(o+1,h).join(\"\");c.replace(/[^a-z0-9\\+\\/=]+/gi,\"\");var l=new n(c,\"base64\");return a.prototype.decode.call(this,l,t)}},7804:function(e,t,r){var i=r(3782);var n=r(4300).Buffer;var a=r(7160);var s=a.base;var o=a.constants.der;function DEREncoder(e){this.enc=\"der\";this.name=e.name;this.entity=e;this.tree=new DERNode;this.tree._init(e.body)}e.exports=DEREncoder;DEREncoder.prototype.encode=function encode(e,t){return this.tree._encode(e,t).join()};function DERNode(e){s.Node.call(this,\"der\",e)}i(DERNode,s.Node);DERNode.prototype._encodeComposite=function encodeComposite(e,t,r,i){var a=encodeTag(e,t,r,this.reporter);if(i.length<128){var s=new n(2);s[0]=a;s[1]=i.length;return this._createEncoderBuffer([s,i])}var o=1;for(var h=i.length;h>=256;h>>=8)o++;var s=new n(1+1+o);s[0]=a;s[1]=128|o;for(var h=1+o,u=i.length;u>0;h--,u>>=8)s[h]=u&255;return this._createEncoderBuffer([s,i])};DERNode.prototype._encodeStr=function encodeStr(e,t){if(t===\"bitstr\"){return this._createEncoderBuffer([e.unused|0,e.data])}else if(t===\"bmpstr\"){var r=new n(e.length*2);for(var i=0;i<e.length;i++){r.writeUInt16BE(e.charCodeAt(i),i*2)}return this._createEncoderBuffer(r)}else if(t===\"numstr\"){if(!this._isNumstr(e)){return this.reporter.error(\"Encoding of string type: numstr supports \"+\"only digits and space\")}return this._createEncoderBuffer(e)}else if(t===\"printstr\"){if(!this._isPrintstr(e)){return this.reporter.error(\"Encoding of string type: printstr supports \"+\"only latin upper and lower case letters, \"+\"digits, space, apostrophe, left and rigth \"+\"parenthesis, plus sign, comma, hyphen, \"+\"dot, slash, colon, equal sign, \"+\"question mark\")}return this._createEncoderBuffer(e)}else if(/str$/.test(t)){return this._createEncoderBuffer(e)}else if(t===\"objDesc\"){return this._createEncoderBuffer(e)}else{return this.reporter.error(\"Encoding of string type: \"+t+\" unsupported\")}};DERNode.prototype._encodeObjid=function encodeObjid(e,t,r){if(typeof e===\"string\"){if(!t)return this.reporter.error(\"string objid given, but no values map found\");if(!t.hasOwnProperty(e))return this.reporter.error(\"objid not found in values map\");e=t[e].split(/[\\s\\.]+/g);for(var i=0;i<e.length;i++)e[i]|=0}else if(Array.isArray(e)){e=e.slice();for(var i=0;i<e.length;i++)e[i]|=0}if(!Array.isArray(e)){return this.reporter.error(\"objid() should be either array or string, \"+\"got: \"+JSON.stringify(e))}if(!r){if(e[1]>=40)return this.reporter.error(\"Second objid identifier OOB\");e.splice(0,2,e[0]*40+e[1])}var a=0;for(var i=0;i<e.length;i++){var s=e[i];for(a++;s>=128;s>>=7)a++}var o=new n(a);var h=o.length-1;for(var i=e.length-1;i>=0;i--){var s=e[i];o[h--]=s&127;while((s>>=7)>0)o[h--]=128|s&127}return this._createEncoderBuffer(o)};function two(e){if(e<10)return\"0\"+e;else return e}DERNode.prototype._encodeTime=function encodeTime(e,t){var r;var i=new Date(e);if(t===\"gentime\"){r=[two(i.getFullYear()),two(i.getUTCMonth()+1),two(i.getUTCDate()),two(i.getUTCHours()),two(i.getUTCMinutes()),two(i.getUTCSeconds()),\"Z\"].join(\"\")}else if(t===\"utctime\"){r=[two(i.getFullYear()%100),two(i.getUTCMonth()+1),two(i.getUTCDate()),two(i.getUTCHours()),two(i.getUTCMinutes()),two(i.getUTCSeconds()),\"Z\"].join(\"\")}else{this.reporter.error(\"Encoding \"+t+\" time is not supported yet\")}return this._encodeStr(r,\"octstr\")};DERNode.prototype._encodeNull=function encodeNull(){return this._createEncoderBuffer(\"\")};DERNode.prototype._encodeInt=function encodeInt(e,t){if(typeof e===\"string\"){if(!t)return this.reporter.error(\"String int or enum given, but no values map\");if(!t.hasOwnProperty(e)){return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(e))}e=t[e]}if(typeof e!==\"number\"&&!n.isBuffer(e)){var r=e.toArray();if(!e.sign&&r[0]&128){r.unshift(0)}e=new n(r)}if(n.isBuffer(e)){var i=e.length;if(e.length===0)i++;var a=new n(i);e.copy(a);if(e.length===0)a[0]=0;return this._createEncoderBuffer(a)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);var i=1;for(var s=e;s>=256;s>>=8)i++;var a=new Array(i);for(var s=a.length-1;s>=0;s--){a[s]=e&255;e>>=8}if(a[0]&128){a.unshift(0)}return this._createEncoderBuffer(new n(a))};DERNode.prototype._encodeBool=function encodeBool(e){return this._createEncoderBuffer(e?255:0)};DERNode.prototype._use=function use(e,t){if(typeof e===\"function\")e=e(t);return e._getEncoder(\"der\").tree};DERNode.prototype._skipDefault=function skipDefault(e,t,r){var i=this._baseState;var n;if(i[\"default\"]===null)return false;var a=e.join();if(i.defaultBuffer===undefined)i.defaultBuffer=this._encodeValue(i[\"default\"],t,r).join();if(a.length!==i.defaultBuffer.length)return false;for(n=0;n<a.length;n++)if(a[n]!==i.defaultBuffer[n])return false;return true};function encodeTag(e,t,r,i){var n;if(e===\"seqof\")e=\"seq\";else if(e===\"setof\")e=\"set\";if(o.tagByName.hasOwnProperty(e))n=o.tagByName[e];else if(typeof e===\"number\"&&(e|0)===e)n=e;else return i.error(\"Unknown tag: \"+e);if(n>=31)return i.error(\"Multi-octet tag encoding unsupported\");if(!t)n|=32;n|=o.tagClassByName[r||\"universal\"]<<6;return n}},3418:function(e,t,r){var i=t;i.der=r(7804);i.pem=r(1564)},1564:function(e,t,r){var i=r(3782);var n=r(7804);function PEMEncoder(e){n.call(this,e);this.enc=\"pem\"}i(PEMEncoder,n);e.exports=PEMEncoder;PEMEncoder.prototype.encode=function encode(e,t){var r=n.prototype.encode.call(this,e);var i=r.toString(\"base64\");var a=[\"-----BEGIN \"+t.label+\"-----\"];for(var s=0;s<i.length;s+=64)a.push(i.slice(s,s+64));a.push(\"-----END \"+t.label+\"-----\");return a.join(\"\\n\")}},711:function(e,t,r){e=r.nmd(e);(function(e,t){\"use strict\";function assert(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function inherits(e,t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}function BN(e,t,r){if(BN.isBN(e)){return e}this.negative=0;this.words=null;this.length=0;this.red=null;if(e!==null){if(t===\"le\"||t===\"be\"){r=t;t=10}this._init(e||0,t||10,r||\"be\")}}if(typeof e===\"object\"){e.exports=BN}else{t.BN=BN}BN.BN=BN;BN.wordSize=26;var i;try{i=r(4300).Buffer}catch(e){}BN.isBN=function isBN(e){if(e instanceof BN){return true}return e!==null&&typeof e===\"object\"&&e.constructor.wordSize===BN.wordSize&&Array.isArray(e.words)};BN.max=function max(e,t){if(e.cmp(t)>0)return e;return t};BN.min=function min(e,t){if(e.cmp(t)<0)return e;return t};BN.prototype._init=function init(e,t,r){if(typeof e===\"number\"){return this._initNumber(e,t,r)}if(typeof e===\"object\"){return this._initArray(e,t,r)}if(t===\"hex\"){t=16}assert(t===(t|0)&&t>=2&&t<=36);e=e.toString().replace(/\\s+/g,\"\");var i=0;if(e[0]===\"-\"){i++}if(t===16){this._parseHex(e,i)}else{this._parseBase(e,t,i)}if(e[0]===\"-\"){this.negative=1}this.strip();if(r!==\"le\")return;this._initArray(this.toArray(),t,r)};BN.prototype._initNumber=function _initNumber(e,t,r){if(e<0){this.negative=1;e=-e}if(e<67108864){this.words=[e&67108863];this.length=1}else if(e<4503599627370496){this.words=[e&67108863,e/67108864&67108863];this.length=2}else{assert(e<9007199254740992);this.words=[e&67108863,e/67108864&67108863,1];this.length=3}if(r!==\"le\")return;this._initArray(this.toArray(),t,r)};BN.prototype._initArray=function _initArray(e,t,r){assert(typeof e.length===\"number\");if(e.length<=0){this.words=[0];this.length=1;return this}this.length=Math.ceil(e.length/3);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0}var n,a;var s=0;if(r===\"be\"){for(i=e.length-1,n=0;i>=0;i-=3){a=e[i]|e[i-1]<<8|e[i-2]<<16;this.words[n]|=a<<s&67108863;this.words[n+1]=a>>>26-s&67108863;s+=24;if(s>=26){s-=26;n++}}}else if(r===\"le\"){for(i=0,n=0;i<e.length;i+=3){a=e[i]|e[i+1]<<8|e[i+2]<<16;this.words[n]|=a<<s&67108863;this.words[n+1]=a>>>26-s&67108863;s+=24;if(s>=26){s-=26;n++}}}return this.strip()};function parseHex(e,t,r){var i=0;var n=Math.min(e.length,r);for(var a=t;a<n;a++){var s=e.charCodeAt(a)-48;i<<=4;if(s>=49&&s<=54){i|=s-49+10}else if(s>=17&&s<=22){i|=s-17+10}else{i|=s&15}}return i}BN.prototype._parseHex=function _parseHex(e,t){this.length=Math.ceil((e.length-t)/6);this.words=new Array(this.length);for(var r=0;r<this.length;r++){this.words[r]=0}var i,n;var a=0;for(r=e.length-6,i=0;r>=t;r-=6){n=parseHex(e,r,r+6);this.words[i]|=n<<a&67108863;this.words[i+1]|=n>>>26-a&4194303;a+=24;if(a>=26){a-=26;i++}}if(r+6!==t){n=parseHex(e,t,r+6);this.words[i]|=n<<a&67108863;this.words[i+1]|=n>>>26-a&4194303}this.strip()};function parseBase(e,t,r,i){var n=0;var a=Math.min(e.length,r);for(var s=t;s<a;s++){var o=e.charCodeAt(s)-48;n*=i;if(o>=49){n+=o-49+10}else if(o>=17){n+=o-17+10}else{n+=o}}return n}BN.prototype._parseBase=function _parseBase(e,t,r){this.words=[0];this.length=1;for(var i=0,n=1;n<=67108863;n*=t){i++}i--;n=n/t|0;var a=e.length-r;var s=a%i;var o=Math.min(a,a-s)+r;var h=0;for(var u=r;u<o;u+=i){h=parseBase(e,u,u+i,t);this.imuln(n);if(this.words[0]+h<67108864){this.words[0]+=h}else{this._iaddn(h)}}if(s!==0){var d=1;h=parseBase(e,u,e.length,t);for(u=0;u<s;u++){d*=t}this.imuln(d);if(this.words[0]+h<67108864){this.words[0]+=h}else{this._iaddn(h)}}};BN.prototype.copy=function copy(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++){e.words[t]=this.words[t]}e.length=this.length;e.negative=this.negative;e.red=this.red};BN.prototype.clone=function clone(){var e=new BN(null);this.copy(e);return e};BN.prototype._expand=function _expand(e){while(this.length<e){this.words[this.length++]=0}return this};BN.prototype.strip=function strip(){while(this.length>1&&this.words[this.length-1]===0){this.length--}return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0){this.negative=0}return this};BN.prototype.inspect=function inspect(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var n=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"];var a=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var s=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(e,t){e=e||10;t=t|0||1;var r;if(e===16||e===\"hex\"){r=\"\";var i=0;var o=0;for(var h=0;h<this.length;h++){var u=this.words[h];var d=((u<<i|o)&16777215).toString(16);o=u>>>24-i&16777215;if(o!==0||h!==this.length-1){r=n[6-d.length]+d+r}else{r=d+r}i+=2;if(i>=26){i-=26;h--}}if(o!==0){r=o.toString(16)+r}while(r.length%t!==0){r=\"0\"+r}if(this.negative!==0){r=\"-\"+r}return r}if(e===(e|0)&&e>=2&&e<=36){var c=a[e];var l=s[e];r=\"\";var p=this.clone();p.negative=0;while(!p.isZero()){var v=p.modn(l).toString(e);p=p.idivn(l);if(!p.isZero()){r=n[c-v.length]+v+r}else{r=v+r}}if(this.isZero()){r=\"0\"+r}while(r.length%t!==0){r=\"0\"+r}if(this.negative!==0){r=\"-\"+r}return r}assert(false,\"Base should be between 2 and 36\")};BN.prototype.toNumber=function toNumber(){var e=this.words[0];if(this.length===2){e+=this.words[1]*67108864}else if(this.length===3&&this.words[2]===1){e+=4503599627370496+this.words[1]*67108864}else if(this.length>2){assert(false,\"Number can only safely store up to 53 bits\")}return this.negative!==0?-e:e};BN.prototype.toJSON=function toJSON(){return this.toString(16)};BN.prototype.toBuffer=function toBuffer(e,t){assert(typeof i!==\"undefined\");return this.toArrayLike(i,e,t)};BN.prototype.toArray=function toArray(e,t){return this.toArrayLike(Array,e,t)};BN.prototype.toArrayLike=function toArrayLike(e,t,r){var i=this.byteLength();var n=r||Math.max(1,i);assert(i<=n,\"byte array longer than desired length\");assert(n>0,\"Requested array length <= 0\");this.strip();var a=t===\"le\";var s=new e(n);var o,h;var u=this.clone();if(!a){for(h=0;h<n-i;h++){s[h]=0}for(h=0;!u.isZero();h++){o=u.andln(255);u.iushrn(8);s[n-h-1]=o}}else{for(h=0;!u.isZero();h++){o=u.andln(255);u.iushrn(8);s[h]=o}for(;h<n;h++){s[h]=0}}return s};if(Math.clz32){BN.prototype._countBits=function _countBits(e){return 32-Math.clz32(e)}}else{BN.prototype._countBits=function _countBits(e){var t=e;var r=0;if(t>=4096){r+=13;t>>>=13}if(t>=64){r+=7;t>>>=7}if(t>=8){r+=4;t>>>=4}if(t>=2){r+=2;t>>>=2}return r+t}}BN.prototype._zeroBits=function _zeroBits(e){if(e===0)return 26;var t=e;var r=0;if((t&8191)===0){r+=13;t>>>=13}if((t&127)===0){r+=7;t>>>=7}if((t&15)===0){r+=4;t>>>=4}if((t&3)===0){r+=2;t>>>=2}if((t&1)===0){r++}return r};BN.prototype.bitLength=function bitLength(){var e=this.words[this.length-1];var t=this._countBits(e);return(this.length-1)*26+t};function toBitArray(e){var t=new Array(e.bitLength());for(var r=0;r<t.length;r++){var i=r/26|0;var n=r%26;t[r]=(e.words[i]&1<<n)>>>n}return t}BN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var e=0;for(var t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);e+=r;if(r!==26)break}return e};BN.prototype.byteLength=function byteLength(){return Math.ceil(this.bitLength()/8)};BN.prototype.toTwos=function toTwos(e){if(this.negative!==0){return this.abs().inotn(e).iaddn(1)}return this.clone()};BN.prototype.fromTwos=function fromTwos(e){if(this.testn(e-1)){return this.notn(e).iaddn(1).ineg()}return this.clone()};BN.prototype.isNeg=function isNeg(){return this.negative!==0};BN.prototype.neg=function neg(){return this.clone().ineg()};BN.prototype.ineg=function ineg(){if(!this.isZero()){this.negative^=1}return this};BN.prototype.iuor=function iuor(e){while(this.length<e.length){this.words[this.length++]=0}for(var t=0;t<e.length;t++){this.words[t]=this.words[t]|e.words[t]}return this.strip()};BN.prototype.ior=function ior(e){assert((this.negative|e.negative)===0);return this.iuor(e)};BN.prototype.or=function or(e){if(this.length>e.length)return this.clone().ior(e);return e.clone().ior(this)};BN.prototype.uor=function uor(e){if(this.length>e.length)return this.clone().iuor(e);return e.clone().iuor(this)};BN.prototype.iuand=function iuand(e){var t;if(this.length>e.length){t=e}else{t=this}for(var r=0;r<t.length;r++){this.words[r]=this.words[r]&e.words[r]}this.length=t.length;return this.strip()};BN.prototype.iand=function iand(e){assert((this.negative|e.negative)===0);return this.iuand(e)};BN.prototype.and=function and(e){if(this.length>e.length)return this.clone().iand(e);return e.clone().iand(this)};BN.prototype.uand=function uand(e){if(this.length>e.length)return this.clone().iuand(e);return e.clone().iuand(this)};BN.prototype.iuxor=function iuxor(e){var t;var r;if(this.length>e.length){t=this;r=e}else{t=e;r=this}for(var i=0;i<r.length;i++){this.words[i]=t.words[i]^r.words[i]}if(this!==t){for(;i<t.length;i++){this.words[i]=t.words[i]}}this.length=t.length;return this.strip()};BN.prototype.ixor=function ixor(e){assert((this.negative|e.negative)===0);return this.iuxor(e)};BN.prototype.xor=function xor(e){if(this.length>e.length)return this.clone().ixor(e);return e.clone().ixor(this)};BN.prototype.uxor=function uxor(e){if(this.length>e.length)return this.clone().iuxor(e);return e.clone().iuxor(this)};BN.prototype.inotn=function inotn(e){assert(typeof e===\"number\"&&e>=0);var t=Math.ceil(e/26)|0;var r=e%26;this._expand(t);if(r>0){t--}for(var i=0;i<t;i++){this.words[i]=~this.words[i]&67108863}if(r>0){this.words[i]=~this.words[i]&67108863>>26-r}return this.strip()};BN.prototype.notn=function notn(e){return this.clone().inotn(e)};BN.prototype.setn=function setn(e,t){assert(typeof e===\"number\"&&e>=0);var r=e/26|0;var i=e%26;this._expand(r+1);if(t){this.words[r]=this.words[r]|1<<i}else{this.words[r]=this.words[r]&~(1<<i)}return this.strip()};BN.prototype.iadd=function iadd(e){var t;if(this.negative!==0&&e.negative===0){this.negative=0;t=this.isub(e);this.negative^=1;return this._normSign()}else if(this.negative===0&&e.negative!==0){e.negative=0;t=this.isub(e);e.negative=1;return t._normSign()}var r,i;if(this.length>e.length){r=this;i=e}else{r=e;i=this}var n=0;for(var a=0;a<i.length;a++){t=(r.words[a]|0)+(i.words[a]|0)+n;this.words[a]=t&67108863;n=t>>>26}for(;n!==0&&a<r.length;a++){t=(r.words[a]|0)+n;this.words[a]=t&67108863;n=t>>>26}this.length=r.length;if(n!==0){this.words[this.length]=n;this.length++}else if(r!==this){for(;a<r.length;a++){this.words[a]=r.words[a]}}return this};BN.prototype.add=function add(e){var t;if(e.negative!==0&&this.negative===0){e.negative=0;t=this.sub(e);e.negative^=1;return t}else if(e.negative===0&&this.negative!==0){this.negative=0;t=e.sub(this);this.negative=1;return t}if(this.length>e.length)return this.clone().iadd(e);return e.clone().iadd(this)};BN.prototype.isub=function isub(e){if(e.negative!==0){e.negative=0;var t=this.iadd(e);e.negative=1;return t._normSign()}else if(this.negative!==0){this.negative=0;this.iadd(e);this.negative=1;return this._normSign()}var r=this.cmp(e);if(r===0){this.negative=0;this.length=1;this.words[0]=0;return this}var i,n;if(r>0){i=this;n=e}else{i=e;n=this}var a=0;for(var s=0;s<n.length;s++){t=(i.words[s]|0)-(n.words[s]|0)+a;a=t>>26;this.words[s]=t&67108863}for(;a!==0&&s<i.length;s++){t=(i.words[s]|0)+a;a=t>>26;this.words[s]=t&67108863}if(a===0&&s<i.length&&i!==this){for(;s<i.length;s++){this.words[s]=i.words[s]}}this.length=Math.max(this.length,s);if(i!==this){this.negative=1}return this.strip()};BN.prototype.sub=function sub(e){return this.clone().isub(e)};function smallMulTo(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i;i=i-1|0;var n=e.words[0]|0;var a=t.words[0]|0;var s=n*a;var o=s&67108863;var h=s/67108864|0;r.words[0]=o;for(var u=1;u<i;u++){var d=h>>>26;var c=h&67108863;var l=Math.min(u,t.length-1);for(var p=Math.max(0,u-e.length+1);p<=l;p++){var v=u-p|0;n=e.words[v]|0;a=t.words[p]|0;s=n*a+c;d+=s/67108864|0;c=s&67108863}r.words[u]=c|0;h=d|0}if(h!==0){r.words[u]=h|0}else{r.length--}return r.strip()}var o=function comb10MulTo(e,t,r){var i=e.words;var n=t.words;var a=r.words;var s=0;var o;var h;var u;var d=i[0]|0;var c=d&8191;var l=d>>>13;var p=i[1]|0;var v=p&8191;var b=p>>>13;var m=i[2]|0;var y=m&8191;var g=m>>>13;var _=i[3]|0;var w=_&8191;var M=_>>>13;var B=i[4]|0;var E=B&8191;var k=B>>>13;var A=i[5]|0;var N=A&8191;var P=A>>>13;var x=i[6]|0;var I=x&8191;var C=x>>>13;var D=i[7]|0;var T=D&8191;var j=D>>>13;var q=i[8]|0;var O=q&8191;var H=q>>>13;var L=i[9]|0;var z=L&8191;var F=L>>>13;var U=n[0]|0;var W=U&8191;var V=U>>>13;var G=n[1]|0;var J=G&8191;var Z=G>>>13;var X=n[2]|0;var Y=X&8191;var $=X>>>13;var Q=n[3]|0;var ee=Q&8191;var te=Q>>>13;var re=n[4]|0;var ie=re&8191;var ne=re>>>13;var ae=n[5]|0;var fe=ae&8191;var se=ae>>>13;var oe=n[6]|0;var he=oe&8191;var ue=oe>>>13;var de=n[7]|0;var ce=de&8191;var le=de>>>13;var pe=n[8]|0;var ve=pe&8191;var be=pe>>>13;var me=n[9]|0;var ye=me&8191;var ge=me>>>13;r.negative=e.negative^t.negative;r.length=19;o=Math.imul(c,W);h=Math.imul(c,V);h=h+Math.imul(l,W)|0;u=Math.imul(l,V);var _e=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(_e>>>26)|0;_e&=67108863;o=Math.imul(v,W);h=Math.imul(v,V);h=h+Math.imul(b,W)|0;u=Math.imul(b,V);o=o+Math.imul(c,J)|0;h=h+Math.imul(c,Z)|0;h=h+Math.imul(l,J)|0;u=u+Math.imul(l,Z)|0;var we=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(we>>>26)|0;we&=67108863;o=Math.imul(y,W);h=Math.imul(y,V);h=h+Math.imul(g,W)|0;u=Math.imul(g,V);o=o+Math.imul(v,J)|0;h=h+Math.imul(v,Z)|0;h=h+Math.imul(b,J)|0;u=u+Math.imul(b,Z)|0;o=o+Math.imul(c,Y)|0;h=h+Math.imul(c,$)|0;h=h+Math.imul(l,Y)|0;u=u+Math.imul(l,$)|0;var Me=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Me>>>26)|0;Me&=67108863;o=Math.imul(w,W);h=Math.imul(w,V);h=h+Math.imul(M,W)|0;u=Math.imul(M,V);o=o+Math.imul(y,J)|0;h=h+Math.imul(y,Z)|0;h=h+Math.imul(g,J)|0;u=u+Math.imul(g,Z)|0;o=o+Math.imul(v,Y)|0;h=h+Math.imul(v,$)|0;h=h+Math.imul(b,Y)|0;u=u+Math.imul(b,$)|0;o=o+Math.imul(c,ee)|0;h=h+Math.imul(c,te)|0;h=h+Math.imul(l,ee)|0;u=u+Math.imul(l,te)|0;var Se=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Se>>>26)|0;Se&=67108863;o=Math.imul(E,W);h=Math.imul(E,V);h=h+Math.imul(k,W)|0;u=Math.imul(k,V);o=o+Math.imul(w,J)|0;h=h+Math.imul(w,Z)|0;h=h+Math.imul(M,J)|0;u=u+Math.imul(M,Z)|0;o=o+Math.imul(y,Y)|0;h=h+Math.imul(y,$)|0;h=h+Math.imul(g,Y)|0;u=u+Math.imul(g,$)|0;o=o+Math.imul(v,ee)|0;h=h+Math.imul(v,te)|0;h=h+Math.imul(b,ee)|0;u=u+Math.imul(b,te)|0;o=o+Math.imul(c,ie)|0;h=h+Math.imul(c,ne)|0;h=h+Math.imul(l,ie)|0;u=u+Math.imul(l,ne)|0;var Be=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Be>>>26)|0;Be&=67108863;o=Math.imul(N,W);h=Math.imul(N,V);h=h+Math.imul(P,W)|0;u=Math.imul(P,V);o=o+Math.imul(E,J)|0;h=h+Math.imul(E,Z)|0;h=h+Math.imul(k,J)|0;u=u+Math.imul(k,Z)|0;o=o+Math.imul(w,Y)|0;h=h+Math.imul(w,$)|0;h=h+Math.imul(M,Y)|0;u=u+Math.imul(M,$)|0;o=o+Math.imul(y,ee)|0;h=h+Math.imul(y,te)|0;h=h+Math.imul(g,ee)|0;u=u+Math.imul(g,te)|0;o=o+Math.imul(v,ie)|0;h=h+Math.imul(v,ne)|0;h=h+Math.imul(b,ie)|0;u=u+Math.imul(b,ne)|0;o=o+Math.imul(c,fe)|0;h=h+Math.imul(c,se)|0;h=h+Math.imul(l,fe)|0;u=u+Math.imul(l,se)|0;var Ee=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ee>>>26)|0;Ee&=67108863;o=Math.imul(I,W);h=Math.imul(I,V);h=h+Math.imul(C,W)|0;u=Math.imul(C,V);o=o+Math.imul(N,J)|0;h=h+Math.imul(N,Z)|0;h=h+Math.imul(P,J)|0;u=u+Math.imul(P,Z)|0;o=o+Math.imul(E,Y)|0;h=h+Math.imul(E,$)|0;h=h+Math.imul(k,Y)|0;u=u+Math.imul(k,$)|0;o=o+Math.imul(w,ee)|0;h=h+Math.imul(w,te)|0;h=h+Math.imul(M,ee)|0;u=u+Math.imul(M,te)|0;o=o+Math.imul(y,ie)|0;h=h+Math.imul(y,ne)|0;h=h+Math.imul(g,ie)|0;u=u+Math.imul(g,ne)|0;o=o+Math.imul(v,fe)|0;h=h+Math.imul(v,se)|0;h=h+Math.imul(b,fe)|0;u=u+Math.imul(b,se)|0;o=o+Math.imul(c,he)|0;h=h+Math.imul(c,ue)|0;h=h+Math.imul(l,he)|0;u=u+Math.imul(l,ue)|0;var ke=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(ke>>>26)|0;ke&=67108863;o=Math.imul(T,W);h=Math.imul(T,V);h=h+Math.imul(j,W)|0;u=Math.imul(j,V);o=o+Math.imul(I,J)|0;h=h+Math.imul(I,Z)|0;h=h+Math.imul(C,J)|0;u=u+Math.imul(C,Z)|0;o=o+Math.imul(N,Y)|0;h=h+Math.imul(N,$)|0;h=h+Math.imul(P,Y)|0;u=u+Math.imul(P,$)|0;o=o+Math.imul(E,ee)|0;h=h+Math.imul(E,te)|0;h=h+Math.imul(k,ee)|0;u=u+Math.imul(k,te)|0;o=o+Math.imul(w,ie)|0;h=h+Math.imul(w,ne)|0;h=h+Math.imul(M,ie)|0;u=u+Math.imul(M,ne)|0;o=o+Math.imul(y,fe)|0;h=h+Math.imul(y,se)|0;h=h+Math.imul(g,fe)|0;u=u+Math.imul(g,se)|0;o=o+Math.imul(v,he)|0;h=h+Math.imul(v,ue)|0;h=h+Math.imul(b,he)|0;u=u+Math.imul(b,ue)|0;o=o+Math.imul(c,ce)|0;h=h+Math.imul(c,le)|0;h=h+Math.imul(l,ce)|0;u=u+Math.imul(l,le)|0;var Ae=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ae>>>26)|0;Ae&=67108863;o=Math.imul(O,W);h=Math.imul(O,V);h=h+Math.imul(H,W)|0;u=Math.imul(H,V);o=o+Math.imul(T,J)|0;h=h+Math.imul(T,Z)|0;h=h+Math.imul(j,J)|0;u=u+Math.imul(j,Z)|0;o=o+Math.imul(I,Y)|0;h=h+Math.imul(I,$)|0;h=h+Math.imul(C,Y)|0;u=u+Math.imul(C,$)|0;o=o+Math.imul(N,ee)|0;h=h+Math.imul(N,te)|0;h=h+Math.imul(P,ee)|0;u=u+Math.imul(P,te)|0;o=o+Math.imul(E,ie)|0;h=h+Math.imul(E,ne)|0;h=h+Math.imul(k,ie)|0;u=u+Math.imul(k,ne)|0;o=o+Math.imul(w,fe)|0;h=h+Math.imul(w,se)|0;h=h+Math.imul(M,fe)|0;u=u+Math.imul(M,se)|0;o=o+Math.imul(y,he)|0;h=h+Math.imul(y,ue)|0;h=h+Math.imul(g,he)|0;u=u+Math.imul(g,ue)|0;o=o+Math.imul(v,ce)|0;h=h+Math.imul(v,le)|0;h=h+Math.imul(b,ce)|0;u=u+Math.imul(b,le)|0;o=o+Math.imul(c,ve)|0;h=h+Math.imul(c,be)|0;h=h+Math.imul(l,ve)|0;u=u+Math.imul(l,be)|0;var Ne=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ne>>>26)|0;Ne&=67108863;o=Math.imul(z,W);h=Math.imul(z,V);h=h+Math.imul(F,W)|0;u=Math.imul(F,V);o=o+Math.imul(O,J)|0;h=h+Math.imul(O,Z)|0;h=h+Math.imul(H,J)|0;u=u+Math.imul(H,Z)|0;o=o+Math.imul(T,Y)|0;h=h+Math.imul(T,$)|0;h=h+Math.imul(j,Y)|0;u=u+Math.imul(j,$)|0;o=o+Math.imul(I,ee)|0;h=h+Math.imul(I,te)|0;h=h+Math.imul(C,ee)|0;u=u+Math.imul(C,te)|0;o=o+Math.imul(N,ie)|0;h=h+Math.imul(N,ne)|0;h=h+Math.imul(P,ie)|0;u=u+Math.imul(P,ne)|0;o=o+Math.imul(E,fe)|0;h=h+Math.imul(E,se)|0;h=h+Math.imul(k,fe)|0;u=u+Math.imul(k,se)|0;o=o+Math.imul(w,he)|0;h=h+Math.imul(w,ue)|0;h=h+Math.imul(M,he)|0;u=u+Math.imul(M,ue)|0;o=o+Math.imul(y,ce)|0;h=h+Math.imul(y,le)|0;h=h+Math.imul(g,ce)|0;u=u+Math.imul(g,le)|0;o=o+Math.imul(v,ve)|0;h=h+Math.imul(v,be)|0;h=h+Math.imul(b,ve)|0;u=u+Math.imul(b,be)|0;o=o+Math.imul(c,ye)|0;h=h+Math.imul(c,ge)|0;h=h+Math.imul(l,ye)|0;u=u+Math.imul(l,ge)|0;var Re=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Re>>>26)|0;Re&=67108863;o=Math.imul(z,J);h=Math.imul(z,Z);h=h+Math.imul(F,J)|0;u=Math.imul(F,Z);o=o+Math.imul(O,Y)|0;h=h+Math.imul(O,$)|0;h=h+Math.imul(H,Y)|0;u=u+Math.imul(H,$)|0;o=o+Math.imul(T,ee)|0;h=h+Math.imul(T,te)|0;h=h+Math.imul(j,ee)|0;u=u+Math.imul(j,te)|0;o=o+Math.imul(I,ie)|0;h=h+Math.imul(I,ne)|0;h=h+Math.imul(C,ie)|0;u=u+Math.imul(C,ne)|0;o=o+Math.imul(N,fe)|0;h=h+Math.imul(N,se)|0;h=h+Math.imul(P,fe)|0;u=u+Math.imul(P,se)|0;o=o+Math.imul(E,he)|0;h=h+Math.imul(E,ue)|0;h=h+Math.imul(k,he)|0;u=u+Math.imul(k,ue)|0;o=o+Math.imul(w,ce)|0;h=h+Math.imul(w,le)|0;h=h+Math.imul(M,ce)|0;u=u+Math.imul(M,le)|0;o=o+Math.imul(y,ve)|0;h=h+Math.imul(y,be)|0;h=h+Math.imul(g,ve)|0;u=u+Math.imul(g,be)|0;o=o+Math.imul(v,ye)|0;h=h+Math.imul(v,ge)|0;h=h+Math.imul(b,ye)|0;u=u+Math.imul(b,ge)|0;var Pe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Pe>>>26)|0;Pe&=67108863;o=Math.imul(z,Y);h=Math.imul(z,$);h=h+Math.imul(F,Y)|0;u=Math.imul(F,$);o=o+Math.imul(O,ee)|0;h=h+Math.imul(O,te)|0;h=h+Math.imul(H,ee)|0;u=u+Math.imul(H,te)|0;o=o+Math.imul(T,ie)|0;h=h+Math.imul(T,ne)|0;h=h+Math.imul(j,ie)|0;u=u+Math.imul(j,ne)|0;o=o+Math.imul(I,fe)|0;h=h+Math.imul(I,se)|0;h=h+Math.imul(C,fe)|0;u=u+Math.imul(C,se)|0;o=o+Math.imul(N,he)|0;h=h+Math.imul(N,ue)|0;h=h+Math.imul(P,he)|0;u=u+Math.imul(P,ue)|0;o=o+Math.imul(E,ce)|0;h=h+Math.imul(E,le)|0;h=h+Math.imul(k,ce)|0;u=u+Math.imul(k,le)|0;o=o+Math.imul(w,ve)|0;h=h+Math.imul(w,be)|0;h=h+Math.imul(M,ve)|0;u=u+Math.imul(M,be)|0;o=o+Math.imul(y,ye)|0;h=h+Math.imul(y,ge)|0;h=h+Math.imul(g,ye)|0;u=u+Math.imul(g,ge)|0;var xe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(xe>>>26)|0;xe&=67108863;o=Math.imul(z,ee);h=Math.imul(z,te);h=h+Math.imul(F,ee)|0;u=Math.imul(F,te);o=o+Math.imul(O,ie)|0;h=h+Math.imul(O,ne)|0;h=h+Math.imul(H,ie)|0;u=u+Math.imul(H,ne)|0;o=o+Math.imul(T,fe)|0;h=h+Math.imul(T,se)|0;h=h+Math.imul(j,fe)|0;u=u+Math.imul(j,se)|0;o=o+Math.imul(I,he)|0;h=h+Math.imul(I,ue)|0;h=h+Math.imul(C,he)|0;u=u+Math.imul(C,ue)|0;o=o+Math.imul(N,ce)|0;h=h+Math.imul(N,le)|0;h=h+Math.imul(P,ce)|0;u=u+Math.imul(P,le)|0;o=o+Math.imul(E,ve)|0;h=h+Math.imul(E,be)|0;h=h+Math.imul(k,ve)|0;u=u+Math.imul(k,be)|0;o=o+Math.imul(w,ye)|0;h=h+Math.imul(w,ge)|0;h=h+Math.imul(M,ye)|0;u=u+Math.imul(M,ge)|0;var Ie=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ie>>>26)|0;Ie&=67108863;o=Math.imul(z,ie);h=Math.imul(z,ne);h=h+Math.imul(F,ie)|0;u=Math.imul(F,ne);o=o+Math.imul(O,fe)|0;h=h+Math.imul(O,se)|0;h=h+Math.imul(H,fe)|0;u=u+Math.imul(H,se)|0;o=o+Math.imul(T,he)|0;h=h+Math.imul(T,ue)|0;h=h+Math.imul(j,he)|0;u=u+Math.imul(j,ue)|0;o=o+Math.imul(I,ce)|0;h=h+Math.imul(I,le)|0;h=h+Math.imul(C,ce)|0;u=u+Math.imul(C,le)|0;o=o+Math.imul(N,ve)|0;h=h+Math.imul(N,be)|0;h=h+Math.imul(P,ve)|0;u=u+Math.imul(P,be)|0;o=o+Math.imul(E,ye)|0;h=h+Math.imul(E,ge)|0;h=h+Math.imul(k,ye)|0;u=u+Math.imul(k,ge)|0;var Ce=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ce>>>26)|0;Ce&=67108863;o=Math.imul(z,fe);h=Math.imul(z,se);h=h+Math.imul(F,fe)|0;u=Math.imul(F,se);o=o+Math.imul(O,he)|0;h=h+Math.imul(O,ue)|0;h=h+Math.imul(H,he)|0;u=u+Math.imul(H,ue)|0;o=o+Math.imul(T,ce)|0;h=h+Math.imul(T,le)|0;h=h+Math.imul(j,ce)|0;u=u+Math.imul(j,le)|0;o=o+Math.imul(I,ve)|0;h=h+Math.imul(I,be)|0;h=h+Math.imul(C,ve)|0;u=u+Math.imul(C,be)|0;o=o+Math.imul(N,ye)|0;h=h+Math.imul(N,ge)|0;h=h+Math.imul(P,ye)|0;u=u+Math.imul(P,ge)|0;var De=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(De>>>26)|0;De&=67108863;o=Math.imul(z,he);h=Math.imul(z,ue);h=h+Math.imul(F,he)|0;u=Math.imul(F,ue);o=o+Math.imul(O,ce)|0;h=h+Math.imul(O,le)|0;h=h+Math.imul(H,ce)|0;u=u+Math.imul(H,le)|0;o=o+Math.imul(T,ve)|0;h=h+Math.imul(T,be)|0;h=h+Math.imul(j,ve)|0;u=u+Math.imul(j,be)|0;o=o+Math.imul(I,ye)|0;h=h+Math.imul(I,ge)|0;h=h+Math.imul(C,ye)|0;u=u+Math.imul(C,ge)|0;var Te=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Te>>>26)|0;Te&=67108863;o=Math.imul(z,ce);h=Math.imul(z,le);h=h+Math.imul(F,ce)|0;u=Math.imul(F,le);o=o+Math.imul(O,ve)|0;h=h+Math.imul(O,be)|0;h=h+Math.imul(H,ve)|0;u=u+Math.imul(H,be)|0;o=o+Math.imul(T,ye)|0;h=h+Math.imul(T,ge)|0;h=h+Math.imul(j,ye)|0;u=u+Math.imul(j,ge)|0;var je=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(je>>>26)|0;je&=67108863;o=Math.imul(z,ve);h=Math.imul(z,be);h=h+Math.imul(F,ve)|0;u=Math.imul(F,be);o=o+Math.imul(O,ye)|0;h=h+Math.imul(O,ge)|0;h=h+Math.imul(H,ye)|0;u=u+Math.imul(H,ge)|0;var qe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(qe>>>26)|0;qe&=67108863;o=Math.imul(z,ye);h=Math.imul(z,ge);h=h+Math.imul(F,ye)|0;u=Math.imul(F,ge);var Oe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Oe>>>26)|0;Oe&=67108863;a[0]=_e;a[1]=we;a[2]=Me;a[3]=Se;a[4]=Be;a[5]=Ee;a[6]=ke;a[7]=Ae;a[8]=Ne;a[9]=Re;a[10]=Pe;a[11]=xe;a[12]=Ie;a[13]=Ce;a[14]=De;a[15]=Te;a[16]=je;a[17]=qe;a[18]=Oe;if(s!==0){a[19]=s;r.length++}return r};if(!Math.imul){o=smallMulTo}function bigMulTo(e,t,r){r.negative=t.negative^e.negative;r.length=e.length+t.length;var i=0;var n=0;for(var a=0;a<r.length-1;a++){var s=n;n=0;var o=i&67108863;var h=Math.min(a,t.length-1);for(var u=Math.max(0,a-e.length+1);u<=h;u++){var d=a-u;var c=e.words[d]|0;var l=t.words[u]|0;var p=c*l;var v=p&67108863;s=s+(p/67108864|0)|0;v=v+o|0;o=v&67108863;s=s+(v>>>26)|0;n+=s>>>26;s&=67108863}r.words[a]=o;i=s;s=n}if(i!==0){r.words[a]=i}else{r.length--}return r.strip()}function jumboMulTo(e,t,r){var i=new FFTM;return i.mulp(e,t,r)}BN.prototype.mulTo=function mulTo(e,t){var r;var i=this.length+e.length;if(this.length===10&&e.length===10){r=o(this,e,t)}else if(i<63){r=smallMulTo(this,e,t)}else if(i<1024){r=bigMulTo(this,e,t)}else{r=jumboMulTo(this,e,t)}return r};function FFTM(e,t){this.x=e;this.y=t}FFTM.prototype.makeRBT=function makeRBT(e){var t=new Array(e);var r=BN.prototype._countBits(e)-1;for(var i=0;i<e;i++){t[i]=this.revBin(i,r,e)}return t};FFTM.prototype.revBin=function revBin(e,t,r){if(e===0||e===r-1)return e;var i=0;for(var n=0;n<t;n++){i|=(e&1)<<t-n-1;e>>=1}return i};FFTM.prototype.permute=function permute(e,t,r,i,n,a){for(var s=0;s<a;s++){i[s]=t[e[s]];n[s]=r[e[s]]}};FFTM.prototype.transform=function transform(e,t,r,i,n,a){this.permute(a,e,t,r,i,n);for(var s=1;s<n;s<<=1){var o=s<<1;var h=Math.cos(2*Math.PI/o);var u=Math.sin(2*Math.PI/o);for(var d=0;d<n;d+=o){var c=h;var l=u;for(var p=0;p<s;p++){var v=r[d+p];var b=i[d+p];var m=r[d+p+s];var y=i[d+p+s];var g=c*m-l*y;y=c*y+l*m;m=g;r[d+p]=v+m;i[d+p]=b+y;r[d+p+s]=v-m;i[d+p+s]=b-y;if(p!==o){g=h*c-u*l;l=h*l+u*c;c=g}}}}};FFTM.prototype.guessLen13b=function guessLen13b(e,t){var r=Math.max(t,e)|1;var i=r&1;var n=0;for(r=r/2|0;r;r=r>>>1){n++}return 1<<n+1+i};FFTM.prototype.conjugate=function conjugate(e,t,r){if(r<=1)return;for(var i=0;i<r/2;i++){var n=e[i];e[i]=e[r-i-1];e[r-i-1]=n;n=t[i];t[i]=-t[r-i-1];t[r-i-1]=-n}};FFTM.prototype.normalize13b=function normalize13b(e,t){var r=0;for(var i=0;i<t/2;i++){var n=Math.round(e[2*i+1]/t)*8192+Math.round(e[2*i]/t)+r;e[i]=n&67108863;if(n<67108864){r=0}else{r=n/67108864|0}}return e};FFTM.prototype.convert13b=function convert13b(e,t,r,i){var n=0;for(var a=0;a<t;a++){n=n+(e[a]|0);r[2*a]=n&8191;n=n>>>13;r[2*a+1]=n&8191;n=n>>>13}for(a=2*t;a<i;++a){r[a]=0}assert(n===0);assert((n&~8191)===0)};FFTM.prototype.stub=function stub(e){var t=new Array(e);for(var r=0;r<e;r++){t[r]=0}return t};FFTM.prototype.mulp=function mulp(e,t,r){var i=2*this.guessLen13b(e.length,t.length);var n=this.makeRBT(i);var a=this.stub(i);var s=new Array(i);var o=new Array(i);var h=new Array(i);var u=new Array(i);var d=new Array(i);var c=new Array(i);var l=r.words;l.length=i;this.convert13b(e.words,e.length,s,i);this.convert13b(t.words,t.length,u,i);this.transform(s,a,o,h,i,n);this.transform(u,a,d,c,i,n);for(var p=0;p<i;p++){var v=o[p]*d[p]-h[p]*c[p];h[p]=o[p]*c[p]+h[p]*d[p];o[p]=v}this.conjugate(o,h,i);this.transform(o,h,l,a,i,n);this.conjugate(l,a,i);this.normalize13b(l,i);r.negative=e.negative^t.negative;r.length=e.length+t.length;return r.strip()};BN.prototype.mul=function mul(e){var t=new BN(null);t.words=new Array(this.length+e.length);return this.mulTo(e,t)};BN.prototype.mulf=function mulf(e){var t=new BN(null);t.words=new Array(this.length+e.length);return jumboMulTo(this,e,t)};BN.prototype.imul=function imul(e){return this.clone().mulTo(e,this)};BN.prototype.imuln=function imuln(e){assert(typeof e===\"number\");assert(e<67108864);var t=0;for(var r=0;r<this.length;r++){var i=(this.words[r]|0)*e;var n=(i&67108863)+(t&67108863);t>>=26;t+=i/67108864|0;t+=n>>>26;this.words[r]=n&67108863}if(t!==0){this.words[r]=t;this.length++}return this};BN.prototype.muln=function muln(e){return this.clone().imuln(e)};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.imul(this.clone())};BN.prototype.pow=function pow(e){var t=toBitArray(e);if(t.length===0)return new BN(1);var r=this;for(var i=0;i<t.length;i++,r=r.sqr()){if(t[i]!==0)break}if(++i<t.length){for(var n=r.sqr();i<t.length;i++,n=n.sqr()){if(t[i]===0)continue;r=r.mul(n)}}return r};BN.prototype.iushln=function iushln(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;var i=67108863>>>26-t<<26-t;var n;if(t!==0){var a=0;for(n=0;n<this.length;n++){var s=this.words[n]&i;var o=(this.words[n]|0)-s<<t;this.words[n]=o|a;a=s>>>26-t}if(a){this.words[n]=a;this.length++}}if(r!==0){for(n=this.length-1;n>=0;n--){this.words[n+r]=this.words[n]}for(n=0;n<r;n++){this.words[n]=0}this.length+=r}return this.strip()};BN.prototype.ishln=function ishln(e){assert(this.negative===0);return this.iushln(e)};BN.prototype.iushrn=function iushrn(e,t,r){assert(typeof e===\"number\"&&e>=0);var i;if(t){i=(t-t%26)/26}else{i=0}var n=e%26;var a=Math.min((e-n)/26,this.length);var s=67108863^67108863>>>n<<n;var o=r;i-=a;i=Math.max(0,i);if(o){for(var h=0;h<a;h++){o.words[h]=this.words[h]}o.length=a}if(a===0){}else if(this.length>a){this.length-=a;for(h=0;h<this.length;h++){this.words[h]=this.words[h+a]}}else{this.words[0]=0;this.length=1}var u=0;for(h=this.length-1;h>=0&&(u!==0||h>=i);h--){var d=this.words[h]|0;this.words[h]=u<<26-n|d>>>n;u=d&s}if(o&&u!==0){o.words[o.length++]=u}if(this.length===0){this.words[0]=0;this.length=1}return this.strip()};BN.prototype.ishrn=function ishrn(e,t,r){assert(this.negative===0);return this.iushrn(e,t,r)};BN.prototype.shln=function shln(e){return this.clone().ishln(e)};BN.prototype.ushln=function ushln(e){return this.clone().iushln(e)};BN.prototype.shrn=function shrn(e){return this.clone().ishrn(e)};BN.prototype.ushrn=function ushrn(e){return this.clone().iushrn(e)};BN.prototype.testn=function testn(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;var i=1<<t;if(this.length<=r)return false;var n=this.words[r];return!!(n&i)};BN.prototype.imaskn=function imaskn(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;assert(this.negative===0,\"imaskn works only with positive numbers\");if(this.length<=r){return this}if(t!==0){r++}this.length=Math.min(r,this.length);if(t!==0){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this.strip()};BN.prototype.maskn=function maskn(e){return this.clone().imaskn(e)};BN.prototype.iaddn=function iaddn(e){assert(typeof e===\"number\");assert(e<67108864);if(e<0)return this.isubn(-e);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<e){this.words[0]=e-(this.words[0]|0);this.negative=0;return this}this.negative=0;this.isubn(e);this.negative=1;return this}return this._iaddn(e)};BN.prototype._iaddn=function _iaddn(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++){this.words[t]-=67108864;if(t===this.length-1){this.words[t+1]=1}else{this.words[t+1]++}}this.length=Math.max(this.length,t+1);return this};BN.prototype.isubn=function isubn(e){assert(typeof e===\"number\");assert(e<67108864);if(e<0)return this.iaddn(-e);if(this.negative!==0){this.negative=0;this.iaddn(e);this.negative=1;return this}this.words[0]-=e;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1}else{for(var t=0;t<this.length&&this.words[t]<0;t++){this.words[t]+=67108864;this.words[t+1]-=1}}return this.strip()};BN.prototype.addn=function addn(e){return this.clone().iaddn(e)};BN.prototype.subn=function subn(e){return this.clone().isubn(e)};BN.prototype.iabs=function iabs(){this.negative=0;return this};BN.prototype.abs=function abs(){return this.clone().iabs()};BN.prototype._ishlnsubmul=function _ishlnsubmul(e,t,r){var i=e.length+r;var n;this._expand(i);var a;var s=0;for(n=0;n<e.length;n++){a=(this.words[n+r]|0)+s;var o=(e.words[n]|0)*t;a-=o&67108863;s=(a>>26)-(o/67108864|0);this.words[n+r]=a&67108863}for(;n<this.length-r;n++){a=(this.words[n+r]|0)+s;s=a>>26;this.words[n+r]=a&67108863}if(s===0)return this.strip();assert(s===-1);s=0;for(n=0;n<this.length;n++){a=-(this.words[n]|0)+s;s=a>>26;this.words[n]=a&67108863}this.negative=1;return this.strip()};BN.prototype._wordDiv=function _wordDiv(e,t){var r=this.length-e.length;var i=this.clone();var n=e;var a=n.words[n.length-1]|0;var s=this._countBits(a);r=26-s;if(r!==0){n=n.ushln(r);i.iushln(r);a=n.words[n.length-1]|0}var o=i.length-n.length;var h;if(t!==\"mod\"){h=new BN(null);h.length=o+1;h.words=new Array(h.length);for(var u=0;u<h.length;u++){h.words[u]=0}}var d=i.clone()._ishlnsubmul(n,1,o);if(d.negative===0){i=d;if(h){h.words[o]=1}}for(var c=o-1;c>=0;c--){var l=(i.words[n.length+c]|0)*67108864+(i.words[n.length+c-1]|0);l=Math.min(l/a|0,67108863);i._ishlnsubmul(n,l,c);while(i.negative!==0){l--;i.negative=0;i._ishlnsubmul(n,1,c);if(!i.isZero()){i.negative^=1}}if(h){h.words[c]=l}}if(h){h.strip()}i.strip();if(t!==\"div\"&&r!==0){i.iushrn(r)}return{div:h||null,mod:i}};BN.prototype.divmod=function divmod(e,t,r){assert(!e.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)}}var i,n,a;if(this.negative!==0&&e.negative===0){a=this.neg().divmod(e,t);if(t!==\"mod\"){i=a.div.neg()}if(t!==\"div\"){n=a.mod.neg();if(r&&n.negative!==0){n.iadd(e)}}return{div:i,mod:n}}if(this.negative===0&&e.negative!==0){a=this.divmod(e.neg(),t);if(t!==\"mod\"){i=a.div.neg()}return{div:i,mod:a.mod}}if((this.negative&e.negative)!==0){a=this.neg().divmod(e.neg(),t);if(t!==\"div\"){n=a.mod.neg();if(r&&n.negative!==0){n.isub(e)}}return{div:a.div,mod:n}}if(e.length>this.length||this.cmp(e)<0){return{div:new BN(0),mod:this}}if(e.length===1){if(t===\"div\"){return{div:this.divn(e.words[0]),mod:null}}if(t===\"mod\"){return{div:null,mod:new BN(this.modn(e.words[0]))}}return{div:this.divn(e.words[0]),mod:new BN(this.modn(e.words[0]))}}return this._wordDiv(e,t)};BN.prototype.div=function div(e){return this.divmod(e,\"div\",false).div};BN.prototype.mod=function mod(e){return this.divmod(e,\"mod\",false).mod};BN.prototype.umod=function umod(e){return this.divmod(e,\"mod\",true).mod};BN.prototype.divRound=function divRound(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=t.div.negative!==0?t.mod.isub(e):t.mod;var i=e.ushrn(1);var n=e.andln(1);var a=r.cmp(i);if(a<0||n===1&&a===0)return t.div;return t.div.negative!==0?t.div.isubn(1):t.div.iaddn(1)};BN.prototype.modn=function modn(e){assert(e<=67108863);var t=(1<<26)%e;var r=0;for(var i=this.length-1;i>=0;i--){r=(t*r+(this.words[i]|0))%e}return r};BN.prototype.idivn=function idivn(e){assert(e<=67108863);var t=0;for(var r=this.length-1;r>=0;r--){var i=(this.words[r]|0)+t*67108864;this.words[r]=i/e|0;t=i%e}return this.strip()};BN.prototype.divn=function divn(e){return this.clone().idivn(e)};BN.prototype.egcd=function egcd(e){assert(e.negative===0);assert(!e.isZero());var t=this;var r=e.clone();if(t.negative!==0){t=t.umod(e)}else{t=t.clone()}var i=new BN(1);var n=new BN(0);var a=new BN(0);var s=new BN(1);var o=0;while(t.isEven()&&r.isEven()){t.iushrn(1);r.iushrn(1);++o}var h=r.clone();var u=t.clone();while(!t.isZero()){for(var d=0,c=1;(t.words[0]&c)===0&&d<26;++d,c<<=1);if(d>0){t.iushrn(d);while(d-- >0){if(i.isOdd()||n.isOdd()){i.iadd(h);n.isub(u)}i.iushrn(1);n.iushrn(1)}}for(var l=0,p=1;(r.words[0]&p)===0&&l<26;++l,p<<=1);if(l>0){r.iushrn(l);while(l-- >0){if(a.isOdd()||s.isOdd()){a.iadd(h);s.isub(u)}a.iushrn(1);s.iushrn(1)}}if(t.cmp(r)>=0){t.isub(r);i.isub(a);n.isub(s)}else{r.isub(t);a.isub(i);s.isub(n)}}return{a:a,b:s,gcd:r.iushln(o)}};BN.prototype._invmp=function _invmp(e){assert(e.negative===0);assert(!e.isZero());var t=this;var r=e.clone();if(t.negative!==0){t=t.umod(e)}else{t=t.clone()}var i=new BN(1);var n=new BN(0);var a=r.clone();while(t.cmpn(1)>0&&r.cmpn(1)>0){for(var s=0,o=1;(t.words[0]&o)===0&&s<26;++s,o<<=1);if(s>0){t.iushrn(s);while(s-- >0){if(i.isOdd()){i.iadd(a)}i.iushrn(1)}}for(var h=0,u=1;(r.words[0]&u)===0&&h<26;++h,u<<=1);if(h>0){r.iushrn(h);while(h-- >0){if(n.isOdd()){n.iadd(a)}n.iushrn(1)}}if(t.cmp(r)>=0){t.isub(r);i.isub(n)}else{r.isub(t);n.isub(i)}}var d;if(t.cmpn(1)===0){d=i}else{d=n}if(d.cmpn(0)<0){d.iadd(e)}return d};BN.prototype.gcd=function gcd(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone();var r=e.clone();t.negative=0;r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++){t.iushrn(1);r.iushrn(1)}do{while(t.isEven()){t.iushrn(1)}while(r.isEven()){r.iushrn(1)}var n=t.cmp(r);if(n<0){var a=t;t=r;r=a}else if(n===0||r.cmpn(1)===0){break}t.isub(r)}while(true);return r.iushln(i)};BN.prototype.invm=function invm(e){return this.egcd(e).a.umod(e)};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1};BN.prototype.andln=function andln(e){return this.words[0]&e};BN.prototype.bincn=function bincn(e){assert(typeof e===\"number\");var t=e%26;var r=(e-t)/26;var i=1<<t;if(this.length<=r){this._expand(r+1);this.words[r]|=i;return this}var n=i;for(var a=r;n!==0&&a<this.length;a++){var s=this.words[a]|0;s+=n;n=s>>>26;s&=67108863;this.words[a]=s}if(n!==0){this.words[a]=n;this.length++}return this};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0};BN.prototype.cmpn=function cmpn(e){var t=e<0;if(this.negative!==0&&!t)return-1;if(this.negative===0&&t)return 1;this.strip();var r;if(this.length>1){r=1}else{if(t){e=-e}assert(e<=67108863,\"Number is too big\");var i=this.words[0]|0;r=i===e?0:i<e?-1:1}if(this.negative!==0)return-r|0;return r};BN.prototype.cmp=function cmp(e){if(this.negative!==0&&e.negative===0)return-1;if(this.negative===0&&e.negative!==0)return 1;var t=this.ucmp(e);if(this.negative!==0)return-t|0;return t};BN.prototype.ucmp=function ucmp(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;var t=0;for(var r=this.length-1;r>=0;r--){var i=this.words[r]|0;var n=e.words[r]|0;if(i===n)continue;if(i<n){t=-1}else if(i>n){t=1}break}return t};BN.prototype.gtn=function gtn(e){return this.cmpn(e)===1};BN.prototype.gt=function gt(e){return this.cmp(e)===1};BN.prototype.gten=function gten(e){return this.cmpn(e)>=0};BN.prototype.gte=function gte(e){return this.cmp(e)>=0};BN.prototype.ltn=function ltn(e){return this.cmpn(e)===-1};BN.prototype.lt=function lt(e){return this.cmp(e)===-1};BN.prototype.lten=function lten(e){return this.cmpn(e)<=0};BN.prototype.lte=function lte(e){return this.cmp(e)<=0};BN.prototype.eqn=function eqn(e){return this.cmpn(e)===0};BN.prototype.eq=function eq(e){return this.cmp(e)===0};BN.red=function red(e){return new Red(e)};BN.prototype.toRed=function toRed(e){assert(!this.red,\"Already a number in reduction context\");assert(this.negative===0,\"red works only with positives\");return e.convertTo(this)._forceRed(e)};BN.prototype.fromRed=function fromRed(){assert(this.red,\"fromRed works only with numbers in reduction context\");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(e){this.red=e;return this};BN.prototype.forceRed=function forceRed(e){assert(!this.red,\"Already a number in reduction context\");return this._forceRed(e)};BN.prototype.redAdd=function redAdd(e){assert(this.red,\"redAdd works only with red numbers\");return this.red.add(this,e)};BN.prototype.redIAdd=function redIAdd(e){assert(this.red,\"redIAdd works only with red numbers\");return this.red.iadd(this,e)};BN.prototype.redSub=function redSub(e){assert(this.red,\"redSub works only with red numbers\");return this.red.sub(this,e)};BN.prototype.redISub=function redISub(e){assert(this.red,\"redISub works only with red numbers\");return this.red.isub(this,e)};BN.prototype.redShl=function redShl(e){assert(this.red,\"redShl works only with red numbers\");return this.red.shl(this,e)};BN.prototype.redMul=function redMul(e){assert(this.red,\"redMul works only with red numbers\");this.red._verify2(this,e);return this.red.mul(this,e)};BN.prototype.redIMul=function redIMul(e){assert(this.red,\"redMul works only with red numbers\");this.red._verify2(this,e);return this.red.imul(this,e)};BN.prototype.redSqr=function redSqr(){assert(this.red,\"redSqr works only with red numbers\");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,\"redISqr works only with red numbers\");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,\"redSqrt works only with red numbers\");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,\"redInvm works only with red numbers\");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,\"redNeg works only with red numbers\");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(e){assert(this.red&&!e.red,\"redPow(normalNum)\");this.red._verify1(this);return this.red.pow(this,e)};var h={k256:null,p224:null,p192:null,p25519:null};function MPrime(e,t){this.name=e;this.p=new BN(t,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var e=new BN(null);e.words=new Array(Math.ceil(this.n/13));return e};MPrime.prototype.ireduce=function ireduce(e){var t=e;var r;do{this.split(t,this.tmp);t=this.imulK(t);t=t.iadd(this.tmp);r=t.bitLength()}while(r>this.n);var i=r<this.n?-1:t.ucmp(this.p);if(i===0){t.words[0]=0;t.length=1}else if(i>0){t.isub(this.p)}else{if(t.strip!==undefined){t.strip()}else{t._strip()}}return t};MPrime.prototype.split=function split(e,t){e.iushrn(this.n,0,t)};MPrime.prototype.imulK=function imulK(e){return e.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime);K256.prototype.split=function split(e,t){var r=4194303;var i=Math.min(e.length,9);for(var n=0;n<i;n++){t.words[n]=e.words[n]}t.length=i;if(e.length<=9){e.words[0]=0;e.length=1;return}var a=e.words[9];t.words[t.length++]=a&r;for(n=10;n<e.length;n++){var s=e.words[n]|0;e.words[n-10]=(s&r)<<4|a>>>22;a=s}a>>>=22;e.words[n-10]=a;if(a===0&&e.length>10){e.length-=10}else{e.length-=9}};K256.prototype.imulK=function imulK(e){e.words[e.length]=0;e.words[e.length+1]=0;e.length+=2;var t=0;for(var r=0;r<e.length;r++){var i=e.words[r]|0;t+=i*977;e.words[r]=t&67108863;t=i*64+(t/67108864|0)}if(e.words[e.length-1]===0){e.length--;if(e.words[e.length-1]===0){e.length--}}return e};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime);P25519.prototype.imulK=function imulK(e){var t=0;for(var r=0;r<e.length;r++){var i=(e.words[r]|0)*19+t;var n=i&67108863;i>>>=26;e.words[r]=n;t=i}if(t!==0){e.words[e.length++]=t}return e};BN._prime=function prime(e){if(h[e])return h[e];var prime;if(e===\"k256\"){prime=new K256}else if(e===\"p224\"){prime=new P224}else if(e===\"p192\"){prime=new P192}else if(e===\"p25519\"){prime=new P25519}else{throw new Error(\"Unknown prime \"+e)}h[e]=prime;return prime};function Red(e){if(typeof e===\"string\"){var t=BN._prime(e);this.m=t.p;this.prime=t}else{assert(e.gtn(1),\"modulus must be greater than 1\");this.m=e;this.prime=null}}Red.prototype._verify1=function _verify1(e){assert(e.negative===0,\"red works only with positives\");assert(e.red,\"red works only with red numbers\")};Red.prototype._verify2=function _verify2(e,t){assert((e.negative|t.negative)===0,\"red works only with positives\");assert(e.red&&e.red===t.red,\"red works only with red numbers\")};Red.prototype.imod=function imod(e){if(this.prime)return this.prime.ireduce(e)._forceRed(this);return e.umod(this.m)._forceRed(this)};Red.prototype.neg=function neg(e){if(e.isZero()){return e.clone()}return this.m.sub(e)._forceRed(this)};Red.prototype.add=function add(e,t){this._verify2(e,t);var r=e.add(t);if(r.cmp(this.m)>=0){r.isub(this.m)}return r._forceRed(this)};Red.prototype.iadd=function iadd(e,t){this._verify2(e,t);var r=e.iadd(t);if(r.cmp(this.m)>=0){r.isub(this.m)}return r};Red.prototype.sub=function sub(e,t){this._verify2(e,t);var r=e.sub(t);if(r.cmpn(0)<0){r.iadd(this.m)}return r._forceRed(this)};Red.prototype.isub=function isub(e,t){this._verify2(e,t);var r=e.isub(t);if(r.cmpn(0)<0){r.iadd(this.m)}return r};Red.prototype.shl=function shl(e,t){this._verify1(e);return this.imod(e.ushln(t))};Red.prototype.imul=function imul(e,t){this._verify2(e,t);return this.imod(e.imul(t))};Red.prototype.mul=function mul(e,t){this._verify2(e,t);return this.imod(e.mul(t))};Red.prototype.isqr=function isqr(e){return this.imul(e,e.clone())};Red.prototype.sqr=function sqr(e){return this.mul(e,e)};Red.prototype.sqrt=function sqrt(e){if(e.isZero())return e.clone();var t=this.m.andln(3);assert(t%2===1);if(t===3){var r=this.m.add(new BN(1)).iushrn(2);return this.pow(e,r)}var i=this.m.subn(1);var n=0;while(!i.isZero()&&i.andln(1)===0){n++;i.iushrn(1)}assert(!i.isZero());var a=new BN(1).toRed(this);var s=a.redNeg();var o=this.m.subn(1).iushrn(1);var h=this.m.bitLength();h=new BN(2*h*h).toRed(this);while(this.pow(h,o).cmp(s)!==0){h.redIAdd(s)}var u=this.pow(h,i);var d=this.pow(e,i.addn(1).iushrn(1));var c=this.pow(e,i);var l=n;while(c.cmp(a)!==0){var p=c;for(var v=0;p.cmp(a)!==0;v++){p=p.redSqr()}assert(v<l);var b=this.pow(u,new BN(1).iushln(l-v-1));d=d.redMul(b);u=b.redSqr();c=c.redMul(u);l=v}return d};Red.prototype.invm=function invm(e){var t=e._invmp(this.m);if(t.negative!==0){t.negative=0;return this.imod(t).redNeg()}else{return this.imod(t)}};Red.prototype.pow=function pow(e,t){if(t.isZero())return new BN(1).toRed(this);if(t.cmpn(1)===0)return e.clone();var r=4;var i=new Array(1<<r);i[0]=new BN(1).toRed(this);i[1]=e;for(var n=2;n<i.length;n++){i[n]=this.mul(i[n-1],e)}var a=i[0];var s=0;var o=0;var h=t.bitLength()%26;if(h===0){h=26}for(n=t.length-1;n>=0;n--){var u=t.words[n];for(var d=h-1;d>=0;d--){var c=u>>d&1;if(a!==i[0]){a=this.sqr(a)}if(c===0&&s===0){o=0;continue}s<<=1;s|=c;o++;if(o!==r&&(n!==0||d!==0))continue;a=this.mul(a,i[s]);o=0;s=0}h=26}return a};Red.prototype.convertTo=function convertTo(e){var t=e.umod(this.m);return t===e?t.clone():t};Red.prototype.convertFrom=function convertFrom(e){var t=e.clone();t.red=null;return t};BN.mont=function mont(e){return new Mont(e)};function Mont(e){Red.call(this,e);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(e){return this.imod(e.ushln(this.shift))};Mont.prototype.convertFrom=function convertFrom(e){var t=this.imod(e.mul(this.rinv));t.red=null;return t};Mont.prototype.imul=function imul(e,t){if(e.isZero()||t.isZero()){e.words[0]=0;e.length=1;return e}var r=e.imul(t);var i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var n=r.isub(i).iushrn(this.shift);var a=n;if(n.cmp(this.m)>=0){a=n.isub(this.m)}else if(n.cmpn(0)<0){a=n.iadd(this.m)}return a._forceRed(this)};Mont.prototype.mul=function mul(e,t){if(e.isZero()||t.isZero())return new BN(0)._forceRed(this);var r=e.mul(t);var i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var n=r.isub(i).iushrn(this.shift);var a=n;if(n.cmp(this.m)>=0){a=n.isub(this.m)}else if(n.cmpn(0)<0){a=n.iadd(this.m)}return a._forceRed(this)};Mont.prototype.invm=function invm(e){var t=this.imod(e._invmp(this.m).mul(this.r2));return t._forceRed(this)}})( false||e,this)},1670:function(e,t,r){e=r.nmd(e);(function(e,t){\"use strict\";function assert(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function inherits(e,t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}function BN(e,t,r){if(BN.isBN(e)){return e}this.negative=0;this.words=null;this.length=0;this.red=null;if(e!==null){if(t===\"le\"||t===\"be\"){r=t;t=10}this._init(e||0,t||10,r||\"be\")}}if(typeof e===\"object\"){e.exports=BN}else{t.BN=BN}BN.BN=BN;BN.wordSize=26;var i;try{i=r(4300).Buffer}catch(e){}BN.isBN=function isBN(e){if(e instanceof BN){return true}return e!==null&&typeof e===\"object\"&&e.constructor.wordSize===BN.wordSize&&Array.isArray(e.words)};BN.max=function max(e,t){if(e.cmp(t)>0)return e;return t};BN.min=function min(e,t){if(e.cmp(t)<0)return e;return t};BN.prototype._init=function init(e,t,r){if(typeof e===\"number\"){return this._initNumber(e,t,r)}if(typeof e===\"object\"){return this._initArray(e,t,r)}if(t===\"hex\"){t=16}assert(t===(t|0)&&t>=2&&t<=36);e=e.toString().replace(/\\s+/g,\"\");var i=0;if(e[0]===\"-\"){i++}if(t===16){this._parseHex(e,i)}else{this._parseBase(e,t,i)}if(e[0]===\"-\"){this.negative=1}this._strip();if(r!==\"le\")return;this._initArray(this.toArray(),t,r)};BN.prototype._initNumber=function _initNumber(e,t,r){if(e<0){this.negative=1;e=-e}if(e<67108864){this.words=[e&67108863];this.length=1}else if(e<4503599627370496){this.words=[e&67108863,e/67108864&67108863];this.length=2}else{assert(e<9007199254740992);this.words=[e&67108863,e/67108864&67108863,1];this.length=3}if(r!==\"le\")return;this._initArray(this.toArray(),t,r)};BN.prototype._initArray=function _initArray(e,t,r){assert(typeof e.length===\"number\");if(e.length<=0){this.words=[0];this.length=1;return this}this.length=Math.ceil(e.length/3);this.words=new Array(this.length);for(var i=0;i<this.length;i++){this.words[i]=0}var n,a;var s=0;if(r===\"be\"){for(i=e.length-1,n=0;i>=0;i-=3){a=e[i]|e[i-1]<<8|e[i-2]<<16;this.words[n]|=a<<s&67108863;this.words[n+1]=a>>>26-s&67108863;s+=24;if(s>=26){s-=26;n++}}}else if(r===\"le\"){for(i=0,n=0;i<e.length;i+=3){a=e[i]|e[i+1]<<8|e[i+2]<<16;this.words[n]|=a<<s&67108863;this.words[n+1]=a>>>26-s&67108863;s+=24;if(s>=26){s-=26;n++}}}return this._strip()};function parseHex(e,t,r){var i=0;var n=Math.min(e.length,r);var a=0;for(var s=t;s<n;s++){var o=e.charCodeAt(s)-48;i<<=4;var h;if(o>=49&&o<=54){h=o-49+10}else if(o>=17&&o<=22){h=o-17+10}else{h=o}i|=h;a|=h}assert(!(a&240),\"Invalid character in \"+e);return i}BN.prototype._parseHex=function _parseHex(e,t){this.length=Math.ceil((e.length-t)/6);this.words=new Array(this.length);for(var r=0;r<this.length;r++){this.words[r]=0}var i,n;var a=0;for(r=e.length-6,i=0;r>=t;r-=6){n=parseHex(e,r,r+6);this.words[i]|=n<<a&67108863;this.words[i+1]|=n>>>26-a&4194303;a+=24;if(a>=26){a-=26;i++}}if(r+6!==t){n=parseHex(e,t,r+6);this.words[i]|=n<<a&67108863;this.words[i+1]|=n>>>26-a&4194303}this._strip()};function parseBase(e,t,r,i){var n=0;var a=0;var s=Math.min(e.length,r);for(var o=t;o<s;o++){var h=e.charCodeAt(o)-48;n*=i;if(h>=49){a=h-49+10}else if(h>=17){a=h-17+10}else{a=h}assert(h>=0&&a<i,\"Invalid character\");n+=a}return n}BN.prototype._parseBase=function _parseBase(e,t,r){this.words=[0];this.length=1;for(var i=0,n=1;n<=67108863;n*=t){i++}i--;n=n/t|0;var a=e.length-r;var s=a%i;var o=Math.min(a,a-s)+r;var h=0;for(var u=r;u<o;u+=i){h=parseBase(e,u,u+i,t);this.imuln(n);if(this.words[0]+h<67108864){this.words[0]+=h}else{this._iaddn(h)}}if(s!==0){var d=1;h=parseBase(e,u,e.length,t);for(u=0;u<s;u++){d*=t}this.imuln(d);if(this.words[0]+h<67108864){this.words[0]+=h}else{this._iaddn(h)}}};BN.prototype.copy=function copy(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++){e.words[t]=this.words[t]}e.length=this.length;e.negative=this.negative;e.red=this.red};function move(e,t){e.words=t.words;e.length=t.length;e.negative=t.negative;e.red=t.red}BN.prototype._move=function _move(e){move(e,this)};BN.prototype.clone=function clone(){var e=new BN(null);this.copy(e);return e};BN.prototype._expand=function _expand(e){while(this.length<e){this.words[this.length++]=0}return this};BN.prototype._strip=function strip(){while(this.length>1&&this.words[this.length-1]===0){this.length--}return this._normSign()};BN.prototype._normSign=function _normSign(){if(this.length===1&&this.words[0]===0){this.negative=0}return this};if(typeof Symbol!==\"undefined\"&&typeof Symbol.for===\"function\"){BN.prototype[Symbol.for(\"nodejs.util.inspect.custom\")]=inspect}else{BN.prototype.inspect=inspect}function inspect(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"}var n=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"];var a=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5];var s=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];BN.prototype.toString=function toString(e,t){e=e||10;t=t|0||1;var r;if(e===16||e===\"hex\"){r=\"\";var i=0;var o=0;for(var h=0;h<this.length;h++){var u=this.words[h];var d=((u<<i|o)&16777215).toString(16);o=u>>>24-i&16777215;if(o!==0||h!==this.length-1){r=n[6-d.length]+d+r}else{r=d+r}i+=2;if(i>=26){i-=26;h--}}if(o!==0){r=o.toString(16)+r}while(r.length%t!==0){r=\"0\"+r}if(this.negative!==0){r=\"-\"+r}return r}if(e===(e|0)&&e>=2&&e<=36){var c=a[e];var l=s[e];r=\"\";var p=this.clone();p.negative=0;while(!p.isZero()){var v=p.modrn(l).toString(e);p=p.idivn(l);if(!p.isZero()){r=n[c-v.length]+v+r}else{r=v+r}}if(this.isZero()){r=\"0\"+r}while(r.length%t!==0){r=\"0\"+r}if(this.negative!==0){r=\"-\"+r}return r}assert(false,\"Base should be between 2 and 36\")};BN.prototype.toNumber=function toNumber(){var e=this.words[0];if(this.length===2){e+=this.words[1]*67108864}else if(this.length===3&&this.words[2]===1){e+=4503599627370496+this.words[1]*67108864}else if(this.length>2){assert(false,\"Number can only safely store up to 53 bits\")}return this.negative!==0?-e:e};BN.prototype.toJSON=function toJSON(){return this.toString(16,2)};if(i){BN.prototype.toBuffer=function toBuffer(e,t){return this.toArrayLike(i,e,t)}}BN.prototype.toArray=function toArray(e,t){return this.toArrayLike(Array,e,t)};var o=function allocate(e,t){if(e.allocUnsafe){return e.allocUnsafe(t)}return new e(t)};BN.prototype.toArrayLike=function toArrayLike(e,t,r){this._strip();var i=this.byteLength();var n=r||Math.max(1,i);assert(i<=n,\"byte array longer than desired length\");assert(n>0,\"Requested array length <= 0\");var a=o(e,n);var s=t===\"le\"?\"LE\":\"BE\";this[\"_toArrayLike\"+s](a,i);return a};BN.prototype._toArrayLikeLE=function _toArrayLikeLE(e,t){var r=0;var i=0;for(var n=0,a=0;n<this.length;n++){var s=this.words[n]<<a|i;e[r++]=s&255;if(r<e.length){e[r++]=s>>8&255}if(r<e.length){e[r++]=s>>16&255}if(a===6){if(r<e.length){e[r++]=s>>24&255}i=0;a=0}else{i=s>>>24;a+=2}}if(r<e.length){e[r++]=i;while(r<e.length){e[r++]=0}}};BN.prototype._toArrayLikeBE=function _toArrayLikeBE(e,t){var r=e.length-1;var i=0;for(var n=0,a=0;n<this.length;n++){var s=this.words[n]<<a|i;e[r--]=s&255;if(r>=0){e[r--]=s>>8&255}if(r>=0){e[r--]=s>>16&255}if(a===6){if(r>=0){e[r--]=s>>24&255}i=0;a=0}else{i=s>>>24;a+=2}}if(r>=0){e[r--]=i;while(r>=0){e[r--]=0}}};if(Math.clz32){BN.prototype._countBits=function _countBits(e){return 32-Math.clz32(e)}}else{BN.prototype._countBits=function _countBits(e){var t=e;var r=0;if(t>=4096){r+=13;t>>>=13}if(t>=64){r+=7;t>>>=7}if(t>=8){r+=4;t>>>=4}if(t>=2){r+=2;t>>>=2}return r+t}}BN.prototype._zeroBits=function _zeroBits(e){if(e===0)return 26;var t=e;var r=0;if((t&8191)===0){r+=13;t>>>=13}if((t&127)===0){r+=7;t>>>=7}if((t&15)===0){r+=4;t>>>=4}if((t&3)===0){r+=2;t>>>=2}if((t&1)===0){r++}return r};BN.prototype.bitLength=function bitLength(){var e=this.words[this.length-1];var t=this._countBits(e);return(this.length-1)*26+t};function toBitArray(e){var t=new Array(e.bitLength());for(var r=0;r<t.length;r++){var i=r/26|0;var n=r%26;t[r]=e.words[i]>>>n&1}return t}BN.prototype.zeroBits=function zeroBits(){if(this.isZero())return 0;var e=0;for(var t=0;t<this.length;t++){var r=this._zeroBits(this.words[t]);e+=r;if(r!==26)break}return e};BN.prototype.byteLength=function byteLength(){return Math.ceil(this.bitLength()/8)};BN.prototype.toTwos=function toTwos(e){if(this.negative!==0){return this.abs().inotn(e).iaddn(1)}return this.clone()};BN.prototype.fromTwos=function fromTwos(e){if(this.testn(e-1)){return this.notn(e).iaddn(1).ineg()}return this.clone()};BN.prototype.isNeg=function isNeg(){return this.negative!==0};BN.prototype.neg=function neg(){return this.clone().ineg()};BN.prototype.ineg=function ineg(){if(!this.isZero()){this.negative^=1}return this};BN.prototype.iuor=function iuor(e){while(this.length<e.length){this.words[this.length++]=0}for(var t=0;t<e.length;t++){this.words[t]=this.words[t]|e.words[t]}return this._strip()};BN.prototype.ior=function ior(e){assert((this.negative|e.negative)===0);return this.iuor(e)};BN.prototype.or=function or(e){if(this.length>e.length)return this.clone().ior(e);return e.clone().ior(this)};BN.prototype.uor=function uor(e){if(this.length>e.length)return this.clone().iuor(e);return e.clone().iuor(this)};BN.prototype.iuand=function iuand(e){var t;if(this.length>e.length){t=e}else{t=this}for(var r=0;r<t.length;r++){this.words[r]=this.words[r]&e.words[r]}this.length=t.length;return this._strip()};BN.prototype.iand=function iand(e){assert((this.negative|e.negative)===0);return this.iuand(e)};BN.prototype.and=function and(e){if(this.length>e.length)return this.clone().iand(e);return e.clone().iand(this)};BN.prototype.uand=function uand(e){if(this.length>e.length)return this.clone().iuand(e);return e.clone().iuand(this)};BN.prototype.iuxor=function iuxor(e){var t;var r;if(this.length>e.length){t=this;r=e}else{t=e;r=this}for(var i=0;i<r.length;i++){this.words[i]=t.words[i]^r.words[i]}if(this!==t){for(;i<t.length;i++){this.words[i]=t.words[i]}}this.length=t.length;return this._strip()};BN.prototype.ixor=function ixor(e){assert((this.negative|e.negative)===0);return this.iuxor(e)};BN.prototype.xor=function xor(e){if(this.length>e.length)return this.clone().ixor(e);return e.clone().ixor(this)};BN.prototype.uxor=function uxor(e){if(this.length>e.length)return this.clone().iuxor(e);return e.clone().iuxor(this)};BN.prototype.inotn=function inotn(e){assert(typeof e===\"number\"&&e>=0);var t=Math.ceil(e/26)|0;var r=e%26;this._expand(t);if(r>0){t--}for(var i=0;i<t;i++){this.words[i]=~this.words[i]&67108863}if(r>0){this.words[i]=~this.words[i]&67108863>>26-r}return this._strip()};BN.prototype.notn=function notn(e){return this.clone().inotn(e)};BN.prototype.setn=function setn(e,t){assert(typeof e===\"number\"&&e>=0);var r=e/26|0;var i=e%26;this._expand(r+1);if(t){this.words[r]=this.words[r]|1<<i}else{this.words[r]=this.words[r]&~(1<<i)}return this._strip()};BN.prototype.iadd=function iadd(e){var t;if(this.negative!==0&&e.negative===0){this.negative=0;t=this.isub(e);this.negative^=1;return this._normSign()}else if(this.negative===0&&e.negative!==0){e.negative=0;t=this.isub(e);e.negative=1;return t._normSign()}var r,i;if(this.length>e.length){r=this;i=e}else{r=e;i=this}var n=0;for(var a=0;a<i.length;a++){t=(r.words[a]|0)+(i.words[a]|0)+n;this.words[a]=t&67108863;n=t>>>26}for(;n!==0&&a<r.length;a++){t=(r.words[a]|0)+n;this.words[a]=t&67108863;n=t>>>26}this.length=r.length;if(n!==0){this.words[this.length]=n;this.length++}else if(r!==this){for(;a<r.length;a++){this.words[a]=r.words[a]}}return this};BN.prototype.add=function add(e){var t;if(e.negative!==0&&this.negative===0){e.negative=0;t=this.sub(e);e.negative^=1;return t}else if(e.negative===0&&this.negative!==0){this.negative=0;t=e.sub(this);this.negative=1;return t}if(this.length>e.length)return this.clone().iadd(e);return e.clone().iadd(this)};BN.prototype.isub=function isub(e){if(e.negative!==0){e.negative=0;var t=this.iadd(e);e.negative=1;return t._normSign()}else if(this.negative!==0){this.negative=0;this.iadd(e);this.negative=1;return this._normSign()}var r=this.cmp(e);if(r===0){this.negative=0;this.length=1;this.words[0]=0;return this}var i,n;if(r>0){i=this;n=e}else{i=e;n=this}var a=0;for(var s=0;s<n.length;s++){t=(i.words[s]|0)-(n.words[s]|0)+a;a=t>>26;this.words[s]=t&67108863}for(;a!==0&&s<i.length;s++){t=(i.words[s]|0)+a;a=t>>26;this.words[s]=t&67108863}if(a===0&&s<i.length&&i!==this){for(;s<i.length;s++){this.words[s]=i.words[s]}}this.length=Math.max(this.length,s);if(i!==this){this.negative=1}return this._strip()};BN.prototype.sub=function sub(e){return this.clone().isub(e)};function smallMulTo(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i;i=i-1|0;var n=e.words[0]|0;var a=t.words[0]|0;var s=n*a;var o=s&67108863;var h=s/67108864|0;r.words[0]=o;for(var u=1;u<i;u++){var d=h>>>26;var c=h&67108863;var l=Math.min(u,t.length-1);for(var p=Math.max(0,u-e.length+1);p<=l;p++){var v=u-p|0;n=e.words[v]|0;a=t.words[p]|0;s=n*a+c;d+=s/67108864|0;c=s&67108863}r.words[u]=c|0;h=d|0}if(h!==0){r.words[u]=h|0}else{r.length--}return r._strip()}var h=function comb10MulTo(e,t,r){var i=e.words;var n=t.words;var a=r.words;var s=0;var o;var h;var u;var d=i[0]|0;var c=d&8191;var l=d>>>13;var p=i[1]|0;var v=p&8191;var b=p>>>13;var m=i[2]|0;var y=m&8191;var g=m>>>13;var _=i[3]|0;var w=_&8191;var M=_>>>13;var B=i[4]|0;var E=B&8191;var k=B>>>13;var A=i[5]|0;var N=A&8191;var P=A>>>13;var x=i[6]|0;var I=x&8191;var C=x>>>13;var D=i[7]|0;var T=D&8191;var j=D>>>13;var q=i[8]|0;var O=q&8191;var H=q>>>13;var L=i[9]|0;var z=L&8191;var F=L>>>13;var U=n[0]|0;var W=U&8191;var V=U>>>13;var G=n[1]|0;var J=G&8191;var Z=G>>>13;var X=n[2]|0;var Y=X&8191;var $=X>>>13;var Q=n[3]|0;var ee=Q&8191;var te=Q>>>13;var re=n[4]|0;var ie=re&8191;var ne=re>>>13;var ae=n[5]|0;var fe=ae&8191;var se=ae>>>13;var oe=n[6]|0;var he=oe&8191;var ue=oe>>>13;var de=n[7]|0;var ce=de&8191;var le=de>>>13;var pe=n[8]|0;var ve=pe&8191;var be=pe>>>13;var me=n[9]|0;var ye=me&8191;var ge=me>>>13;r.negative=e.negative^t.negative;r.length=19;o=Math.imul(c,W);h=Math.imul(c,V);h=h+Math.imul(l,W)|0;u=Math.imul(l,V);var _e=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(_e>>>26)|0;_e&=67108863;o=Math.imul(v,W);h=Math.imul(v,V);h=h+Math.imul(b,W)|0;u=Math.imul(b,V);o=o+Math.imul(c,J)|0;h=h+Math.imul(c,Z)|0;h=h+Math.imul(l,J)|0;u=u+Math.imul(l,Z)|0;var we=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(we>>>26)|0;we&=67108863;o=Math.imul(y,W);h=Math.imul(y,V);h=h+Math.imul(g,W)|0;u=Math.imul(g,V);o=o+Math.imul(v,J)|0;h=h+Math.imul(v,Z)|0;h=h+Math.imul(b,J)|0;u=u+Math.imul(b,Z)|0;o=o+Math.imul(c,Y)|0;h=h+Math.imul(c,$)|0;h=h+Math.imul(l,Y)|0;u=u+Math.imul(l,$)|0;var Me=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Me>>>26)|0;Me&=67108863;o=Math.imul(w,W);h=Math.imul(w,V);h=h+Math.imul(M,W)|0;u=Math.imul(M,V);o=o+Math.imul(y,J)|0;h=h+Math.imul(y,Z)|0;h=h+Math.imul(g,J)|0;u=u+Math.imul(g,Z)|0;o=o+Math.imul(v,Y)|0;h=h+Math.imul(v,$)|0;h=h+Math.imul(b,Y)|0;u=u+Math.imul(b,$)|0;o=o+Math.imul(c,ee)|0;h=h+Math.imul(c,te)|0;h=h+Math.imul(l,ee)|0;u=u+Math.imul(l,te)|0;var Se=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Se>>>26)|0;Se&=67108863;o=Math.imul(E,W);h=Math.imul(E,V);h=h+Math.imul(k,W)|0;u=Math.imul(k,V);o=o+Math.imul(w,J)|0;h=h+Math.imul(w,Z)|0;h=h+Math.imul(M,J)|0;u=u+Math.imul(M,Z)|0;o=o+Math.imul(y,Y)|0;h=h+Math.imul(y,$)|0;h=h+Math.imul(g,Y)|0;u=u+Math.imul(g,$)|0;o=o+Math.imul(v,ee)|0;h=h+Math.imul(v,te)|0;h=h+Math.imul(b,ee)|0;u=u+Math.imul(b,te)|0;o=o+Math.imul(c,ie)|0;h=h+Math.imul(c,ne)|0;h=h+Math.imul(l,ie)|0;u=u+Math.imul(l,ne)|0;var Be=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Be>>>26)|0;Be&=67108863;o=Math.imul(N,W);h=Math.imul(N,V);h=h+Math.imul(P,W)|0;u=Math.imul(P,V);o=o+Math.imul(E,J)|0;h=h+Math.imul(E,Z)|0;h=h+Math.imul(k,J)|0;u=u+Math.imul(k,Z)|0;o=o+Math.imul(w,Y)|0;h=h+Math.imul(w,$)|0;h=h+Math.imul(M,Y)|0;u=u+Math.imul(M,$)|0;o=o+Math.imul(y,ee)|0;h=h+Math.imul(y,te)|0;h=h+Math.imul(g,ee)|0;u=u+Math.imul(g,te)|0;o=o+Math.imul(v,ie)|0;h=h+Math.imul(v,ne)|0;h=h+Math.imul(b,ie)|0;u=u+Math.imul(b,ne)|0;o=o+Math.imul(c,fe)|0;h=h+Math.imul(c,se)|0;h=h+Math.imul(l,fe)|0;u=u+Math.imul(l,se)|0;var Ee=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ee>>>26)|0;Ee&=67108863;o=Math.imul(I,W);h=Math.imul(I,V);h=h+Math.imul(C,W)|0;u=Math.imul(C,V);o=o+Math.imul(N,J)|0;h=h+Math.imul(N,Z)|0;h=h+Math.imul(P,J)|0;u=u+Math.imul(P,Z)|0;o=o+Math.imul(E,Y)|0;h=h+Math.imul(E,$)|0;h=h+Math.imul(k,Y)|0;u=u+Math.imul(k,$)|0;o=o+Math.imul(w,ee)|0;h=h+Math.imul(w,te)|0;h=h+Math.imul(M,ee)|0;u=u+Math.imul(M,te)|0;o=o+Math.imul(y,ie)|0;h=h+Math.imul(y,ne)|0;h=h+Math.imul(g,ie)|0;u=u+Math.imul(g,ne)|0;o=o+Math.imul(v,fe)|0;h=h+Math.imul(v,se)|0;h=h+Math.imul(b,fe)|0;u=u+Math.imul(b,se)|0;o=o+Math.imul(c,he)|0;h=h+Math.imul(c,ue)|0;h=h+Math.imul(l,he)|0;u=u+Math.imul(l,ue)|0;var ke=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(ke>>>26)|0;ke&=67108863;o=Math.imul(T,W);h=Math.imul(T,V);h=h+Math.imul(j,W)|0;u=Math.imul(j,V);o=o+Math.imul(I,J)|0;h=h+Math.imul(I,Z)|0;h=h+Math.imul(C,J)|0;u=u+Math.imul(C,Z)|0;o=o+Math.imul(N,Y)|0;h=h+Math.imul(N,$)|0;h=h+Math.imul(P,Y)|0;u=u+Math.imul(P,$)|0;o=o+Math.imul(E,ee)|0;h=h+Math.imul(E,te)|0;h=h+Math.imul(k,ee)|0;u=u+Math.imul(k,te)|0;o=o+Math.imul(w,ie)|0;h=h+Math.imul(w,ne)|0;h=h+Math.imul(M,ie)|0;u=u+Math.imul(M,ne)|0;o=o+Math.imul(y,fe)|0;h=h+Math.imul(y,se)|0;h=h+Math.imul(g,fe)|0;u=u+Math.imul(g,se)|0;o=o+Math.imul(v,he)|0;h=h+Math.imul(v,ue)|0;h=h+Math.imul(b,he)|0;u=u+Math.imul(b,ue)|0;o=o+Math.imul(c,ce)|0;h=h+Math.imul(c,le)|0;h=h+Math.imul(l,ce)|0;u=u+Math.imul(l,le)|0;var Ae=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ae>>>26)|0;Ae&=67108863;o=Math.imul(O,W);h=Math.imul(O,V);h=h+Math.imul(H,W)|0;u=Math.imul(H,V);o=o+Math.imul(T,J)|0;h=h+Math.imul(T,Z)|0;h=h+Math.imul(j,J)|0;u=u+Math.imul(j,Z)|0;o=o+Math.imul(I,Y)|0;h=h+Math.imul(I,$)|0;h=h+Math.imul(C,Y)|0;u=u+Math.imul(C,$)|0;o=o+Math.imul(N,ee)|0;h=h+Math.imul(N,te)|0;h=h+Math.imul(P,ee)|0;u=u+Math.imul(P,te)|0;o=o+Math.imul(E,ie)|0;h=h+Math.imul(E,ne)|0;h=h+Math.imul(k,ie)|0;u=u+Math.imul(k,ne)|0;o=o+Math.imul(w,fe)|0;h=h+Math.imul(w,se)|0;h=h+Math.imul(M,fe)|0;u=u+Math.imul(M,se)|0;o=o+Math.imul(y,he)|0;h=h+Math.imul(y,ue)|0;h=h+Math.imul(g,he)|0;u=u+Math.imul(g,ue)|0;o=o+Math.imul(v,ce)|0;h=h+Math.imul(v,le)|0;h=h+Math.imul(b,ce)|0;u=u+Math.imul(b,le)|0;o=o+Math.imul(c,ve)|0;h=h+Math.imul(c,be)|0;h=h+Math.imul(l,ve)|0;u=u+Math.imul(l,be)|0;var Ne=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ne>>>26)|0;Ne&=67108863;o=Math.imul(z,W);h=Math.imul(z,V);h=h+Math.imul(F,W)|0;u=Math.imul(F,V);o=o+Math.imul(O,J)|0;h=h+Math.imul(O,Z)|0;h=h+Math.imul(H,J)|0;u=u+Math.imul(H,Z)|0;o=o+Math.imul(T,Y)|0;h=h+Math.imul(T,$)|0;h=h+Math.imul(j,Y)|0;u=u+Math.imul(j,$)|0;o=o+Math.imul(I,ee)|0;h=h+Math.imul(I,te)|0;h=h+Math.imul(C,ee)|0;u=u+Math.imul(C,te)|0;o=o+Math.imul(N,ie)|0;h=h+Math.imul(N,ne)|0;h=h+Math.imul(P,ie)|0;u=u+Math.imul(P,ne)|0;o=o+Math.imul(E,fe)|0;h=h+Math.imul(E,se)|0;h=h+Math.imul(k,fe)|0;u=u+Math.imul(k,se)|0;o=o+Math.imul(w,he)|0;h=h+Math.imul(w,ue)|0;h=h+Math.imul(M,he)|0;u=u+Math.imul(M,ue)|0;o=o+Math.imul(y,ce)|0;h=h+Math.imul(y,le)|0;h=h+Math.imul(g,ce)|0;u=u+Math.imul(g,le)|0;o=o+Math.imul(v,ve)|0;h=h+Math.imul(v,be)|0;h=h+Math.imul(b,ve)|0;u=u+Math.imul(b,be)|0;o=o+Math.imul(c,ye)|0;h=h+Math.imul(c,ge)|0;h=h+Math.imul(l,ye)|0;u=u+Math.imul(l,ge)|0;var Re=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Re>>>26)|0;Re&=67108863;o=Math.imul(z,J);h=Math.imul(z,Z);h=h+Math.imul(F,J)|0;u=Math.imul(F,Z);o=o+Math.imul(O,Y)|0;h=h+Math.imul(O,$)|0;h=h+Math.imul(H,Y)|0;u=u+Math.imul(H,$)|0;o=o+Math.imul(T,ee)|0;h=h+Math.imul(T,te)|0;h=h+Math.imul(j,ee)|0;u=u+Math.imul(j,te)|0;o=o+Math.imul(I,ie)|0;h=h+Math.imul(I,ne)|0;h=h+Math.imul(C,ie)|0;u=u+Math.imul(C,ne)|0;o=o+Math.imul(N,fe)|0;h=h+Math.imul(N,se)|0;h=h+Math.imul(P,fe)|0;u=u+Math.imul(P,se)|0;o=o+Math.imul(E,he)|0;h=h+Math.imul(E,ue)|0;h=h+Math.imul(k,he)|0;u=u+Math.imul(k,ue)|0;o=o+Math.imul(w,ce)|0;h=h+Math.imul(w,le)|0;h=h+Math.imul(M,ce)|0;u=u+Math.imul(M,le)|0;o=o+Math.imul(y,ve)|0;h=h+Math.imul(y,be)|0;h=h+Math.imul(g,ve)|0;u=u+Math.imul(g,be)|0;o=o+Math.imul(v,ye)|0;h=h+Math.imul(v,ge)|0;h=h+Math.imul(b,ye)|0;u=u+Math.imul(b,ge)|0;var Pe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Pe>>>26)|0;Pe&=67108863;o=Math.imul(z,Y);h=Math.imul(z,$);h=h+Math.imul(F,Y)|0;u=Math.imul(F,$);o=o+Math.imul(O,ee)|0;h=h+Math.imul(O,te)|0;h=h+Math.imul(H,ee)|0;u=u+Math.imul(H,te)|0;o=o+Math.imul(T,ie)|0;h=h+Math.imul(T,ne)|0;h=h+Math.imul(j,ie)|0;u=u+Math.imul(j,ne)|0;o=o+Math.imul(I,fe)|0;h=h+Math.imul(I,se)|0;h=h+Math.imul(C,fe)|0;u=u+Math.imul(C,se)|0;o=o+Math.imul(N,he)|0;h=h+Math.imul(N,ue)|0;h=h+Math.imul(P,he)|0;u=u+Math.imul(P,ue)|0;o=o+Math.imul(E,ce)|0;h=h+Math.imul(E,le)|0;h=h+Math.imul(k,ce)|0;u=u+Math.imul(k,le)|0;o=o+Math.imul(w,ve)|0;h=h+Math.imul(w,be)|0;h=h+Math.imul(M,ve)|0;u=u+Math.imul(M,be)|0;o=o+Math.imul(y,ye)|0;h=h+Math.imul(y,ge)|0;h=h+Math.imul(g,ye)|0;u=u+Math.imul(g,ge)|0;var xe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(xe>>>26)|0;xe&=67108863;o=Math.imul(z,ee);h=Math.imul(z,te);h=h+Math.imul(F,ee)|0;u=Math.imul(F,te);o=o+Math.imul(O,ie)|0;h=h+Math.imul(O,ne)|0;h=h+Math.imul(H,ie)|0;u=u+Math.imul(H,ne)|0;o=o+Math.imul(T,fe)|0;h=h+Math.imul(T,se)|0;h=h+Math.imul(j,fe)|0;u=u+Math.imul(j,se)|0;o=o+Math.imul(I,he)|0;h=h+Math.imul(I,ue)|0;h=h+Math.imul(C,he)|0;u=u+Math.imul(C,ue)|0;o=o+Math.imul(N,ce)|0;h=h+Math.imul(N,le)|0;h=h+Math.imul(P,ce)|0;u=u+Math.imul(P,le)|0;o=o+Math.imul(E,ve)|0;h=h+Math.imul(E,be)|0;h=h+Math.imul(k,ve)|0;u=u+Math.imul(k,be)|0;o=o+Math.imul(w,ye)|0;h=h+Math.imul(w,ge)|0;h=h+Math.imul(M,ye)|0;u=u+Math.imul(M,ge)|0;var Ie=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ie>>>26)|0;Ie&=67108863;o=Math.imul(z,ie);h=Math.imul(z,ne);h=h+Math.imul(F,ie)|0;u=Math.imul(F,ne);o=o+Math.imul(O,fe)|0;h=h+Math.imul(O,se)|0;h=h+Math.imul(H,fe)|0;u=u+Math.imul(H,se)|0;o=o+Math.imul(T,he)|0;h=h+Math.imul(T,ue)|0;h=h+Math.imul(j,he)|0;u=u+Math.imul(j,ue)|0;o=o+Math.imul(I,ce)|0;h=h+Math.imul(I,le)|0;h=h+Math.imul(C,ce)|0;u=u+Math.imul(C,le)|0;o=o+Math.imul(N,ve)|0;h=h+Math.imul(N,be)|0;h=h+Math.imul(P,ve)|0;u=u+Math.imul(P,be)|0;o=o+Math.imul(E,ye)|0;h=h+Math.imul(E,ge)|0;h=h+Math.imul(k,ye)|0;u=u+Math.imul(k,ge)|0;var Ce=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Ce>>>26)|0;Ce&=67108863;o=Math.imul(z,fe);h=Math.imul(z,se);h=h+Math.imul(F,fe)|0;u=Math.imul(F,se);o=o+Math.imul(O,he)|0;h=h+Math.imul(O,ue)|0;h=h+Math.imul(H,he)|0;u=u+Math.imul(H,ue)|0;o=o+Math.imul(T,ce)|0;h=h+Math.imul(T,le)|0;h=h+Math.imul(j,ce)|0;u=u+Math.imul(j,le)|0;o=o+Math.imul(I,ve)|0;h=h+Math.imul(I,be)|0;h=h+Math.imul(C,ve)|0;u=u+Math.imul(C,be)|0;o=o+Math.imul(N,ye)|0;h=h+Math.imul(N,ge)|0;h=h+Math.imul(P,ye)|0;u=u+Math.imul(P,ge)|0;var De=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(De>>>26)|0;De&=67108863;o=Math.imul(z,he);h=Math.imul(z,ue);h=h+Math.imul(F,he)|0;u=Math.imul(F,ue);o=o+Math.imul(O,ce)|0;h=h+Math.imul(O,le)|0;h=h+Math.imul(H,ce)|0;u=u+Math.imul(H,le)|0;o=o+Math.imul(T,ve)|0;h=h+Math.imul(T,be)|0;h=h+Math.imul(j,ve)|0;u=u+Math.imul(j,be)|0;o=o+Math.imul(I,ye)|0;h=h+Math.imul(I,ge)|0;h=h+Math.imul(C,ye)|0;u=u+Math.imul(C,ge)|0;var Te=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Te>>>26)|0;Te&=67108863;o=Math.imul(z,ce);h=Math.imul(z,le);h=h+Math.imul(F,ce)|0;u=Math.imul(F,le);o=o+Math.imul(O,ve)|0;h=h+Math.imul(O,be)|0;h=h+Math.imul(H,ve)|0;u=u+Math.imul(H,be)|0;o=o+Math.imul(T,ye)|0;h=h+Math.imul(T,ge)|0;h=h+Math.imul(j,ye)|0;u=u+Math.imul(j,ge)|0;var je=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(je>>>26)|0;je&=67108863;o=Math.imul(z,ve);h=Math.imul(z,be);h=h+Math.imul(F,ve)|0;u=Math.imul(F,be);o=o+Math.imul(O,ye)|0;h=h+Math.imul(O,ge)|0;h=h+Math.imul(H,ye)|0;u=u+Math.imul(H,ge)|0;var qe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(qe>>>26)|0;qe&=67108863;o=Math.imul(z,ye);h=Math.imul(z,ge);h=h+Math.imul(F,ye)|0;u=Math.imul(F,ge);var Oe=(s+o|0)+((h&8191)<<13)|0;s=(u+(h>>>13)|0)+(Oe>>>26)|0;Oe&=67108863;a[0]=_e;a[1]=we;a[2]=Me;a[3]=Se;a[4]=Be;a[5]=Ee;a[6]=ke;a[7]=Ae;a[8]=Ne;a[9]=Re;a[10]=Pe;a[11]=xe;a[12]=Ie;a[13]=Ce;a[14]=De;a[15]=Te;a[16]=je;a[17]=qe;a[18]=Oe;if(s!==0){a[19]=s;r.length++}return r};if(!Math.imul){h=smallMulTo}function bigMulTo(e,t,r){r.negative=t.negative^e.negative;r.length=e.length+t.length;var i=0;var n=0;for(var a=0;a<r.length-1;a++){var s=n;n=0;var o=i&67108863;var h=Math.min(a,t.length-1);for(var u=Math.max(0,a-e.length+1);u<=h;u++){var d=a-u;var c=e.words[d]|0;var l=t.words[u]|0;var p=c*l;var v=p&67108863;s=s+(p/67108864|0)|0;v=v+o|0;o=v&67108863;s=s+(v>>>26)|0;n+=s>>>26;s&=67108863}r.words[a]=o;i=s;s=n}if(i!==0){r.words[a]=i}else{r.length--}return r._strip()}function jumboMulTo(e,t,r){return bigMulTo(e,t,r)}BN.prototype.mulTo=function mulTo(e,t){var r;var i=this.length+e.length;if(this.length===10&&e.length===10){r=h(this,e,t)}else if(i<63){r=smallMulTo(this,e,t)}else if(i<1024){r=bigMulTo(this,e,t)}else{r=jumboMulTo(this,e,t)}return r};function FFTM(e,t){this.x=e;this.y=t}FFTM.prototype.makeRBT=function makeRBT(e){var t=new Array(e);var r=BN.prototype._countBits(e)-1;for(var i=0;i<e;i++){t[i]=this.revBin(i,r,e)}return t};FFTM.prototype.revBin=function revBin(e,t,r){if(e===0||e===r-1)return e;var i=0;for(var n=0;n<t;n++){i|=(e&1)<<t-n-1;e>>=1}return i};FFTM.prototype.permute=function permute(e,t,r,i,n,a){for(var s=0;s<a;s++){i[s]=t[e[s]];n[s]=r[e[s]]}};FFTM.prototype.transform=function transform(e,t,r,i,n,a){this.permute(a,e,t,r,i,n);for(var s=1;s<n;s<<=1){var o=s<<1;var h=Math.cos(2*Math.PI/o);var u=Math.sin(2*Math.PI/o);for(var d=0;d<n;d+=o){var c=h;var l=u;for(var p=0;p<s;p++){var v=r[d+p];var b=i[d+p];var m=r[d+p+s];var y=i[d+p+s];var g=c*m-l*y;y=c*y+l*m;m=g;r[d+p]=v+m;i[d+p]=b+y;r[d+p+s]=v-m;i[d+p+s]=b-y;if(p!==o){g=h*c-u*l;l=h*l+u*c;c=g}}}}};FFTM.prototype.guessLen13b=function guessLen13b(e,t){var r=Math.max(t,e)|1;var i=r&1;var n=0;for(r=r/2|0;r;r=r>>>1){n++}return 1<<n+1+i};FFTM.prototype.conjugate=function conjugate(e,t,r){if(r<=1)return;for(var i=0;i<r/2;i++){var n=e[i];e[i]=e[r-i-1];e[r-i-1]=n;n=t[i];t[i]=-t[r-i-1];t[r-i-1]=-n}};FFTM.prototype.normalize13b=function normalize13b(e,t){var r=0;for(var i=0;i<t/2;i++){var n=Math.round(e[2*i+1]/t)*8192+Math.round(e[2*i]/t)+r;e[i]=n&67108863;if(n<67108864){r=0}else{r=n/67108864|0}}return e};FFTM.prototype.convert13b=function convert13b(e,t,r,i){var n=0;for(var a=0;a<t;a++){n=n+(e[a]|0);r[2*a]=n&8191;n=n>>>13;r[2*a+1]=n&8191;n=n>>>13}for(a=2*t;a<i;++a){r[a]=0}assert(n===0);assert((n&~8191)===0)};FFTM.prototype.stub=function stub(e){var t=new Array(e);for(var r=0;r<e;r++){t[r]=0}return t};FFTM.prototype.mulp=function mulp(e,t,r){var i=2*this.guessLen13b(e.length,t.length);var n=this.makeRBT(i);var a=this.stub(i);var s=new Array(i);var o=new Array(i);var h=new Array(i);var u=new Array(i);var d=new Array(i);var c=new Array(i);var l=r.words;l.length=i;this.convert13b(e.words,e.length,s,i);this.convert13b(t.words,t.length,u,i);this.transform(s,a,o,h,i,n);this.transform(u,a,d,c,i,n);for(var p=0;p<i;p++){var v=o[p]*d[p]-h[p]*c[p];h[p]=o[p]*c[p]+h[p]*d[p];o[p]=v}this.conjugate(o,h,i);this.transform(o,h,l,a,i,n);this.conjugate(l,a,i);this.normalize13b(l,i);r.negative=e.negative^t.negative;r.length=e.length+t.length;return r._strip()};BN.prototype.mul=function mul(e){var t=new BN(null);t.words=new Array(this.length+e.length);return this.mulTo(e,t)};BN.prototype.mulf=function mulf(e){var t=new BN(null);t.words=new Array(this.length+e.length);return jumboMulTo(this,e,t)};BN.prototype.imul=function imul(e){return this.clone().mulTo(e,this)};BN.prototype.imuln=function imuln(e){var t=e<0;if(t)e=-e;assert(typeof e===\"number\");assert(e<67108864);var r=0;for(var i=0;i<this.length;i++){var n=(this.words[i]|0)*e;var a=(n&67108863)+(r&67108863);r>>=26;r+=n/67108864|0;r+=a>>>26;this.words[i]=a&67108863}if(r!==0){this.words[i]=r;this.length++}return t?this.ineg():this};BN.prototype.muln=function muln(e){return this.clone().imuln(e)};BN.prototype.sqr=function sqr(){return this.mul(this)};BN.prototype.isqr=function isqr(){return this.imul(this.clone())};BN.prototype.pow=function pow(e){var t=toBitArray(e);if(t.length===0)return new BN(1);var r=this;for(var i=0;i<t.length;i++,r=r.sqr()){if(t[i]!==0)break}if(++i<t.length){for(var n=r.sqr();i<t.length;i++,n=n.sqr()){if(t[i]===0)continue;r=r.mul(n)}}return r};BN.prototype.iushln=function iushln(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;var i=67108863>>>26-t<<26-t;var n;if(t!==0){var a=0;for(n=0;n<this.length;n++){var s=this.words[n]&i;var o=(this.words[n]|0)-s<<t;this.words[n]=o|a;a=s>>>26-t}if(a){this.words[n]=a;this.length++}}if(r!==0){for(n=this.length-1;n>=0;n--){this.words[n+r]=this.words[n]}for(n=0;n<r;n++){this.words[n]=0}this.length+=r}return this._strip()};BN.prototype.ishln=function ishln(e){assert(this.negative===0);return this.iushln(e)};BN.prototype.iushrn=function iushrn(e,t,r){assert(typeof e===\"number\"&&e>=0);var i;if(t){i=(t-t%26)/26}else{i=0}var n=e%26;var a=Math.min((e-n)/26,this.length);var s=67108863^67108863>>>n<<n;var o=r;i-=a;i=Math.max(0,i);if(o){for(var h=0;h<a;h++){o.words[h]=this.words[h]}o.length=a}if(a===0){}else if(this.length>a){this.length-=a;for(h=0;h<this.length;h++){this.words[h]=this.words[h+a]}}else{this.words[0]=0;this.length=1}var u=0;for(h=this.length-1;h>=0&&(u!==0||h>=i);h--){var d=this.words[h]|0;this.words[h]=u<<26-n|d>>>n;u=d&s}if(o&&u!==0){o.words[o.length++]=u}if(this.length===0){this.words[0]=0;this.length=1}return this._strip()};BN.prototype.ishrn=function ishrn(e,t,r){assert(this.negative===0);return this.iushrn(e,t,r)};BN.prototype.shln=function shln(e){return this.clone().ishln(e)};BN.prototype.ushln=function ushln(e){return this.clone().iushln(e)};BN.prototype.shrn=function shrn(e){return this.clone().ishrn(e)};BN.prototype.ushrn=function ushrn(e){return this.clone().iushrn(e)};BN.prototype.testn=function testn(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;var i=1<<t;if(this.length<=r)return false;var n=this.words[r];return!!(n&i)};BN.prototype.imaskn=function imaskn(e){assert(typeof e===\"number\"&&e>=0);var t=e%26;var r=(e-t)/26;assert(this.negative===0,\"imaskn works only with positive numbers\");if(this.length<=r){return this}if(t!==0){r++}this.length=Math.min(r,this.length);if(t!==0){var i=67108863^67108863>>>t<<t;this.words[this.length-1]&=i}return this._strip()};BN.prototype.maskn=function maskn(e){return this.clone().imaskn(e)};BN.prototype.iaddn=function iaddn(e){assert(typeof e===\"number\");assert(e<67108864);if(e<0)return this.isubn(-e);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<=e){this.words[0]=e-(this.words[0]|0);this.negative=0;return this}this.negative=0;this.isubn(e);this.negative=1;return this}return this._iaddn(e)};BN.prototype._iaddn=function _iaddn(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++){this.words[t]-=67108864;if(t===this.length-1){this.words[t+1]=1}else{this.words[t+1]++}}this.length=Math.max(this.length,t+1);return this};BN.prototype.isubn=function isubn(e){assert(typeof e===\"number\");assert(e<67108864);if(e<0)return this.iaddn(-e);if(this.negative!==0){this.negative=0;this.iaddn(e);this.negative=1;return this}this.words[0]-=e;if(this.length===1&&this.words[0]<0){this.words[0]=-this.words[0];this.negative=1}else{for(var t=0;t<this.length&&this.words[t]<0;t++){this.words[t]+=67108864;this.words[t+1]-=1}}return this._strip()};BN.prototype.addn=function addn(e){return this.clone().iaddn(e)};BN.prototype.subn=function subn(e){return this.clone().isubn(e)};BN.prototype.iabs=function iabs(){this.negative=0;return this};BN.prototype.abs=function abs(){return this.clone().iabs()};BN.prototype._ishlnsubmul=function _ishlnsubmul(e,t,r){var i=e.length+r;var n;this._expand(i);var a;var s=0;for(n=0;n<e.length;n++){a=(this.words[n+r]|0)+s;var o=(e.words[n]|0)*t;a-=o&67108863;s=(a>>26)-(o/67108864|0);this.words[n+r]=a&67108863}for(;n<this.length-r;n++){a=(this.words[n+r]|0)+s;s=a>>26;this.words[n+r]=a&67108863}if(s===0)return this._strip();assert(s===-1);s=0;for(n=0;n<this.length;n++){a=-(this.words[n]|0)+s;s=a>>26;this.words[n]=a&67108863}this.negative=1;return this._strip()};BN.prototype._wordDiv=function _wordDiv(e,t){var r=this.length-e.length;var i=this.clone();var n=e;var a=n.words[n.length-1]|0;var s=this._countBits(a);r=26-s;if(r!==0){n=n.ushln(r);i.iushln(r);a=n.words[n.length-1]|0}var o=i.length-n.length;var h;if(t!==\"mod\"){h=new BN(null);h.length=o+1;h.words=new Array(h.length);for(var u=0;u<h.length;u++){h.words[u]=0}}var d=i.clone()._ishlnsubmul(n,1,o);if(d.negative===0){i=d;if(h){h.words[o]=1}}for(var c=o-1;c>=0;c--){var l=(i.words[n.length+c]|0)*67108864+(i.words[n.length+c-1]|0);l=Math.min(l/a|0,67108863);i._ishlnsubmul(n,l,c);while(i.negative!==0){l--;i.negative=0;i._ishlnsubmul(n,1,c);if(!i.isZero()){i.negative^=1}}if(h){h.words[c]=l}}if(h){h._strip()}i._strip();if(t!==\"div\"&&r!==0){i.iushrn(r)}return{div:h||null,mod:i}};BN.prototype.divmod=function divmod(e,t,r){assert(!e.isZero());if(this.isZero()){return{div:new BN(0),mod:new BN(0)}}var i,n,a;if(this.negative!==0&&e.negative===0){a=this.neg().divmod(e,t);if(t!==\"mod\"){i=a.div.neg()}if(t!==\"div\"){n=a.mod.neg();if(r&&n.negative!==0){n.iadd(e)}}return{div:i,mod:n}}if(this.negative===0&&e.negative!==0){a=this.divmod(e.neg(),t);if(t!==\"mod\"){i=a.div.neg()}return{div:i,mod:a.mod}}if((this.negative&e.negative)!==0){a=this.neg().divmod(e.neg(),t);if(t!==\"div\"){n=a.mod.neg();if(r&&n.negative!==0){n.isub(e)}}return{div:a.div,mod:n}}if(e.length>this.length||this.cmp(e)<0){return{div:new BN(0),mod:this}}if(e.length===1){if(t===\"div\"){return{div:this.divn(e.words[0]),mod:null}}if(t===\"mod\"){return{div:null,mod:new BN(this.modrn(e.words[0]))}}return{div:this.divn(e.words[0]),mod:new BN(this.modrn(e.words[0]))}}return this._wordDiv(e,t)};BN.prototype.div=function div(e){return this.divmod(e,\"div\",false).div};BN.prototype.mod=function mod(e){return this.divmod(e,\"mod\",false).mod};BN.prototype.umod=function umod(e){return this.divmod(e,\"mod\",true).mod};BN.prototype.divRound=function divRound(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=t.div.negative!==0?t.mod.isub(e):t.mod;var i=e.ushrn(1);var n=e.andln(1);var a=r.cmp(i);if(a<0||n===1&&a===0)return t.div;return t.div.negative!==0?t.div.isubn(1):t.div.iaddn(1)};BN.prototype.modrn=function modrn(e){var t=e<0;if(t)e=-e;assert(e<=67108863);var r=(1<<26)%e;var i=0;for(var n=this.length-1;n>=0;n--){i=(r*i+(this.words[n]|0))%e}return t?-i:i};BN.prototype.modn=function modn(e){return this.modrn(e)};BN.prototype.idivn=function idivn(e){var t=e<0;if(t)e=-e;assert(e<=67108863);var r=0;for(var i=this.length-1;i>=0;i--){var n=(this.words[i]|0)+r*67108864;this.words[i]=n/e|0;r=n%e}this._strip();return t?this.ineg():this};BN.prototype.divn=function divn(e){return this.clone().idivn(e)};BN.prototype.egcd=function egcd(e){assert(e.negative===0);assert(!e.isZero());var t=this;var r=e.clone();if(t.negative!==0){t=t.umod(e)}else{t=t.clone()}var i=new BN(1);var n=new BN(0);var a=new BN(0);var s=new BN(1);var o=0;while(t.isEven()&&r.isEven()){t.iushrn(1);r.iushrn(1);++o}var h=r.clone();var u=t.clone();while(!t.isZero()){for(var d=0,c=1;(t.words[0]&c)===0&&d<26;++d,c<<=1);if(d>0){t.iushrn(d);while(d-- >0){if(i.isOdd()||n.isOdd()){i.iadd(h);n.isub(u)}i.iushrn(1);n.iushrn(1)}}for(var l=0,p=1;(r.words[0]&p)===0&&l<26;++l,p<<=1);if(l>0){r.iushrn(l);while(l-- >0){if(a.isOdd()||s.isOdd()){a.iadd(h);s.isub(u)}a.iushrn(1);s.iushrn(1)}}if(t.cmp(r)>=0){t.isub(r);i.isub(a);n.isub(s)}else{r.isub(t);a.isub(i);s.isub(n)}}return{a:a,b:s,gcd:r.iushln(o)}};BN.prototype._invmp=function _invmp(e){assert(e.negative===0);assert(!e.isZero());var t=this;var r=e.clone();if(t.negative!==0){t=t.umod(e)}else{t=t.clone()}var i=new BN(1);var n=new BN(0);var a=r.clone();while(t.cmpn(1)>0&&r.cmpn(1)>0){for(var s=0,o=1;(t.words[0]&o)===0&&s<26;++s,o<<=1);if(s>0){t.iushrn(s);while(s-- >0){if(i.isOdd()){i.iadd(a)}i.iushrn(1)}}for(var h=0,u=1;(r.words[0]&u)===0&&h<26;++h,u<<=1);if(h>0){r.iushrn(h);while(h-- >0){if(n.isOdd()){n.iadd(a)}n.iushrn(1)}}if(t.cmp(r)>=0){t.isub(r);i.isub(n)}else{r.isub(t);n.isub(i)}}var d;if(t.cmpn(1)===0){d=i}else{d=n}if(d.cmpn(0)<0){d.iadd(e)}return d};BN.prototype.gcd=function gcd(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone();var r=e.clone();t.negative=0;r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++){t.iushrn(1);r.iushrn(1)}do{while(t.isEven()){t.iushrn(1)}while(r.isEven()){r.iushrn(1)}var n=t.cmp(r);if(n<0){var a=t;t=r;r=a}else if(n===0||r.cmpn(1)===0){break}t.isub(r)}while(true);return r.iushln(i)};BN.prototype.invm=function invm(e){return this.egcd(e).a.umod(e)};BN.prototype.isEven=function isEven(){return(this.words[0]&1)===0};BN.prototype.isOdd=function isOdd(){return(this.words[0]&1)===1};BN.prototype.andln=function andln(e){return this.words[0]&e};BN.prototype.bincn=function bincn(e){assert(typeof e===\"number\");var t=e%26;var r=(e-t)/26;var i=1<<t;if(this.length<=r){this._expand(r+1);this.words[r]|=i;return this}var n=i;for(var a=r;n!==0&&a<this.length;a++){var s=this.words[a]|0;s+=n;n=s>>>26;s&=67108863;this.words[a]=s}if(n!==0){this.words[a]=n;this.length++}return this};BN.prototype.isZero=function isZero(){return this.length===1&&this.words[0]===0};BN.prototype.cmpn=function cmpn(e){var t=e<0;if(this.negative!==0&&!t)return-1;if(this.negative===0&&t)return 1;this._strip();var r;if(this.length>1){r=1}else{if(t){e=-e}assert(e<=67108863,\"Number is too big\");var i=this.words[0]|0;r=i===e?0:i<e?-1:1}if(this.negative!==0)return-r|0;return r};BN.prototype.cmp=function cmp(e){if(this.negative!==0&&e.negative===0)return-1;if(this.negative===0&&e.negative!==0)return 1;var t=this.ucmp(e);if(this.negative!==0)return-t|0;return t};BN.prototype.ucmp=function ucmp(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;var t=0;for(var r=this.length-1;r>=0;r--){var i=this.words[r]|0;var n=e.words[r]|0;if(i===n)continue;if(i<n){t=-1}else if(i>n){t=1}break}return t};BN.prototype.gtn=function gtn(e){return this.cmpn(e)===1};BN.prototype.gt=function gt(e){return this.cmp(e)===1};BN.prototype.gten=function gten(e){return this.cmpn(e)>=0};BN.prototype.gte=function gte(e){return this.cmp(e)>=0};BN.prototype.ltn=function ltn(e){return this.cmpn(e)===-1};BN.prototype.lt=function lt(e){return this.cmp(e)===-1};BN.prototype.lten=function lten(e){return this.cmpn(e)<=0};BN.prototype.lte=function lte(e){return this.cmp(e)<=0};BN.prototype.eqn=function eqn(e){return this.cmpn(e)===0};BN.prototype.eq=function eq(e){return this.cmp(e)===0};BN.red=function red(e){return new Red(e)};BN.prototype.toRed=function toRed(e){assert(!this.red,\"Already a number in reduction context\");assert(this.negative===0,\"red works only with positives\");return e.convertTo(this)._forceRed(e)};BN.prototype.fromRed=function fromRed(){assert(this.red,\"fromRed works only with numbers in reduction context\");return this.red.convertFrom(this)};BN.prototype._forceRed=function _forceRed(e){this.red=e;return this};BN.prototype.forceRed=function forceRed(e){assert(!this.red,\"Already a number in reduction context\");return this._forceRed(e)};BN.prototype.redAdd=function redAdd(e){assert(this.red,\"redAdd works only with red numbers\");return this.red.add(this,e)};BN.prototype.redIAdd=function redIAdd(e){assert(this.red,\"redIAdd works only with red numbers\");return this.red.iadd(this,e)};BN.prototype.redSub=function redSub(e){assert(this.red,\"redSub works only with red numbers\");return this.red.sub(this,e)};BN.prototype.redISub=function redISub(e){assert(this.red,\"redISub works only with red numbers\");return this.red.isub(this,e)};BN.prototype.redShl=function redShl(e){assert(this.red,\"redShl works only with red numbers\");return this.red.shl(this,e)};BN.prototype.redMul=function redMul(e){assert(this.red,\"redMul works only with red numbers\");this.red._verify2(this,e);return this.red.mul(this,e)};BN.prototype.redIMul=function redIMul(e){assert(this.red,\"redMul works only with red numbers\");this.red._verify2(this,e);return this.red.imul(this,e)};BN.prototype.redSqr=function redSqr(){assert(this.red,\"redSqr works only with red numbers\");this.red._verify1(this);return this.red.sqr(this)};BN.prototype.redISqr=function redISqr(){assert(this.red,\"redISqr works only with red numbers\");this.red._verify1(this);return this.red.isqr(this)};BN.prototype.redSqrt=function redSqrt(){assert(this.red,\"redSqrt works only with red numbers\");this.red._verify1(this);return this.red.sqrt(this)};BN.prototype.redInvm=function redInvm(){assert(this.red,\"redInvm works only with red numbers\");this.red._verify1(this);return this.red.invm(this)};BN.prototype.redNeg=function redNeg(){assert(this.red,\"redNeg works only with red numbers\");this.red._verify1(this);return this.red.neg(this)};BN.prototype.redPow=function redPow(e){assert(this.red&&!e.red,\"redPow(normalNum)\");this.red._verify1(this);return this.red.pow(this,e)};var u={k256:null,p224:null,p192:null,p25519:null};function MPrime(e,t){this.name=e;this.p=new BN(t,16);this.n=this.p.bitLength();this.k=new BN(1).iushln(this.n).isub(this.p);this.tmp=this._tmp()}MPrime.prototype._tmp=function _tmp(){var e=new BN(null);e.words=new Array(Math.ceil(this.n/13));return e};MPrime.prototype.ireduce=function ireduce(e){var t=e;var r;do{this.split(t,this.tmp);t=this.imulK(t);t=t.iadd(this.tmp);r=t.bitLength()}while(r>this.n);var i=r<this.n?-1:t.ucmp(this.p);if(i===0){t.words[0]=0;t.length=1}else if(i>0){t.isub(this.p)}else{if(t.strip!==undefined){t.strip()}else{t._strip()}}return t};MPrime.prototype.split=function split(e,t){e.iushrn(this.n,0,t)};MPrime.prototype.imulK=function imulK(e){return e.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime);K256.prototype.split=function split(e,t){var r=4194303;var i=Math.min(e.length,9);for(var n=0;n<i;n++){t.words[n]=e.words[n]}t.length=i;if(e.length<=9){e.words[0]=0;e.length=1;return}var a=e.words[9];t.words[t.length++]=a&r;for(n=10;n<e.length;n++){var s=e.words[n]|0;e.words[n-10]=(s&r)<<4|a>>>22;a=s}a>>>=22;e.words[n-10]=a;if(a===0&&e.length>10){e.length-=10}else{e.length-=9}};K256.prototype.imulK=function imulK(e){e.words[e.length]=0;e.words[e.length+1]=0;e.length+=2;var t=0;for(var r=0;r<e.length;r++){var i=e.words[r]|0;t+=i*977;e.words[r]=t&67108863;t=i*64+(t/67108864|0)}if(e.words[e.length-1]===0){e.length--;if(e.words[e.length-1]===0){e.length--}}return e};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime);P25519.prototype.imulK=function imulK(e){var t=0;for(var r=0;r<e.length;r++){var i=(e.words[r]|0)*19+t;var n=i&67108863;i>>>=26;e.words[r]=n;t=i}if(t!==0){e.words[e.length++]=t}return e};BN._prime=function prime(e){if(u[e])return u[e];var prime;if(e===\"k256\"){prime=new K256}else if(e===\"p224\"){prime=new P224}else if(e===\"p192\"){prime=new P192}else if(e===\"p25519\"){prime=new P25519}else{throw new Error(\"Unknown prime \"+e)}u[e]=prime;return prime};function Red(e){if(typeof e===\"string\"){var t=BN._prime(e);this.m=t.p;this.prime=t}else{assert(e.gtn(1),\"modulus must be greater than 1\");this.m=e;this.prime=null}}Red.prototype._verify1=function _verify1(e){assert(e.negative===0,\"red works only with positives\");assert(e.red,\"red works only with red numbers\")};Red.prototype._verify2=function _verify2(e,t){assert((e.negative|t.negative)===0,\"red works only with positives\");assert(e.red&&e.red===t.red,\"red works only with red numbers\")};Red.prototype.imod=function imod(e){if(this.prime)return this.prime.ireduce(e)._forceRed(this);move(e,e.umod(this.m)._forceRed(this));return e};Red.prototype.neg=function neg(e){if(e.isZero()){return e.clone()}return this.m.sub(e)._forceRed(this)};Red.prototype.add=function add(e,t){this._verify2(e,t);var r=e.add(t);if(r.cmp(this.m)>=0){r.isub(this.m)}return r._forceRed(this)};Red.prototype.iadd=function iadd(e,t){this._verify2(e,t);var r=e.iadd(t);if(r.cmp(this.m)>=0){r.isub(this.m)}return r};Red.prototype.sub=function sub(e,t){this._verify2(e,t);var r=e.sub(t);if(r.cmpn(0)<0){r.iadd(this.m)}return r._forceRed(this)};Red.prototype.isub=function isub(e,t){this._verify2(e,t);var r=e.isub(t);if(r.cmpn(0)<0){r.iadd(this.m)}return r};Red.prototype.shl=function shl(e,t){this._verify1(e);return this.imod(e.ushln(t))};Red.prototype.imul=function imul(e,t){this._verify2(e,t);return this.imod(e.imul(t))};Red.prototype.mul=function mul(e,t){this._verify2(e,t);return this.imod(e.mul(t))};Red.prototype.isqr=function isqr(e){return this.imul(e,e.clone())};Red.prototype.sqr=function sqr(e){return this.mul(e,e)};Red.prototype.sqrt=function sqrt(e){if(e.isZero())return e.clone();var t=this.m.andln(3);assert(t%2===1);if(t===3){var r=this.m.add(new BN(1)).iushrn(2);return this.pow(e,r)}var i=this.m.subn(1);var n=0;while(!i.isZero()&&i.andln(1)===0){n++;i.iushrn(1)}assert(!i.isZero());var a=new BN(1).toRed(this);var s=a.redNeg();var o=this.m.subn(1).iushrn(1);var h=this.m.bitLength();h=new BN(2*h*h).toRed(this);while(this.pow(h,o).cmp(s)!==0){h.redIAdd(s)}var u=this.pow(h,i);var d=this.pow(e,i.addn(1).iushrn(1));var c=this.pow(e,i);var l=n;while(c.cmp(a)!==0){var p=c;for(var v=0;p.cmp(a)!==0;v++){p=p.redSqr()}assert(v<l);var b=this.pow(u,new BN(1).iushln(l-v-1));d=d.redMul(b);u=b.redSqr();c=c.redMul(u);l=v}return d};Red.prototype.invm=function invm(e){var t=e._invmp(this.m);if(t.negative!==0){t.negative=0;return this.imod(t).redNeg()}else{return this.imod(t)}};Red.prototype.pow=function pow(e,t){if(t.isZero())return new BN(1).toRed(this);if(t.cmpn(1)===0)return e.clone();var r=4;var i=new Array(1<<r);i[0]=new BN(1).toRed(this);i[1]=e;for(var n=2;n<i.length;n++){i[n]=this.mul(i[n-1],e)}var a=i[0];var s=0;var o=0;var h=t.bitLength()%26;if(h===0){h=26}for(n=t.length-1;n>=0;n--){var u=t.words[n];for(var d=h-1;d>=0;d--){var c=u>>d&1;if(a!==i[0]){a=this.sqr(a)}if(c===0&&s===0){o=0;continue}s<<=1;s|=c;o++;if(o!==r&&(n!==0||d!==0))continue;a=this.mul(a,i[s]);o=0;s=0}h=26}return a};Red.prototype.convertTo=function convertTo(e){var t=e.umod(this.m);return t===e?t.clone():t};Red.prototype.convertFrom=function convertFrom(e){var t=e.clone();t.red=null;return t};BN.mont=function mont(e){return new Mont(e)};function Mont(e){Red.call(this,e);this.shift=this.m.bitLength();if(this.shift%26!==0){this.shift+=26-this.shift%26}this.r=new BN(1).iushln(this.shift);this.r2=this.imod(this.r.sqr());this.rinv=this.r._invmp(this.m);this.minv=this.rinv.mul(this.r).isubn(1).div(this.m);this.minv=this.minv.umod(this.r);this.minv=this.r.sub(this.minv)}inherits(Mont,Red);Mont.prototype.convertTo=function convertTo(e){return this.imod(e.ushln(this.shift))};Mont.prototype.convertFrom=function convertFrom(e){var t=this.imod(e.mul(this.rinv));t.red=null;return t};Mont.prototype.imul=function imul(e,t){if(e.isZero()||t.isZero()){e.words[0]=0;e.length=1;return e}var r=e.imul(t);var i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var n=r.isub(i).iushrn(this.shift);var a=n;if(n.cmp(this.m)>=0){a=n.isub(this.m)}else if(n.cmpn(0)<0){a=n.iadd(this.m)}return a._forceRed(this)};Mont.prototype.mul=function mul(e,t){if(e.isZero()||t.isZero())return new BN(0)._forceRed(this);var r=e.mul(t);var i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);var n=r.isub(i).iushrn(this.shift);var a=n;if(n.cmp(this.m)>=0){a=n.isub(this.m)}else if(n.cmpn(0)<0){a=n.iadd(this.m)}return a._forceRed(this)};Mont.prototype.invm=function invm(e){var t=this.imod(e._invmp(this.m).mul(this.r2));return t._forceRed(this)}})( false||e,this)},3500:function(e,t,r){var i;e.exports=function rand(e){if(!i)i=new Rand(null);return i.generate(e)};function Rand(e){this.rand=e}e.exports.Rand=Rand;Rand.prototype.generate=function generate(e){return this._rand(e)};Rand.prototype._rand=function _rand(e){if(this.rand.getBytes)return this.rand.getBytes(e);var t=new Uint8Array(e);for(var r=0;r<t.length;r++)t[r]=this.rand.getByte();return t};if(typeof self===\"object\"){if(self.crypto&&self.crypto.getRandomValues){Rand.prototype._rand=function _rand(e){var t=new Uint8Array(e);self.crypto.getRandomValues(t);return t}}else if(self.msCrypto&&self.msCrypto.getRandomValues){Rand.prototype._rand=function _rand(e){var t=new Uint8Array(e);self.msCrypto.getRandomValues(t);return t}}else if(typeof window===\"object\"){Rand.prototype._rand=function(){throw new Error(\"Not implemented yet\")}}}else{try{var n=r(6113);if(typeof n.randomBytes!==\"function\")throw new Error(\"Not supported\");Rand.prototype._rand=function _rand(e){return n.randomBytes(e)}}catch(e){}}},1387:function(e,t,r){var i=r(6911).Buffer;function asUInt32Array(e){if(!i.isBuffer(e))e=i.from(e);var t=e.length/4|0;var r=new Array(t);for(var n=0;n<t;n++){r[n]=e.readUInt32BE(n*4)}return r}function scrubVec(e){for(var t=0;t<e.length;e++){e[t]=0}}function cryptBlock(e,t,r,i,n){var a=r[0];var s=r[1];var o=r[2];var h=r[3];var u=e[0]^t[0];var d=e[1]^t[1];var c=e[2]^t[2];var l=e[3]^t[3];var p,v,b,m;var y=4;for(var g=1;g<n;g++){p=a[u>>>24]^s[d>>>16&255]^o[c>>>8&255]^h[l&255]^t[y++];v=a[d>>>24]^s[c>>>16&255]^o[l>>>8&255]^h[u&255]^t[y++];b=a[c>>>24]^s[l>>>16&255]^o[u>>>8&255]^h[d&255]^t[y++];m=a[l>>>24]^s[u>>>16&255]^o[d>>>8&255]^h[c&255]^t[y++];u=p;d=v;c=b;l=m}p=(i[u>>>24]<<24|i[d>>>16&255]<<16|i[c>>>8&255]<<8|i[l&255])^t[y++];v=(i[d>>>24]<<24|i[c>>>16&255]<<16|i[l>>>8&255]<<8|i[u&255])^t[y++];b=(i[c>>>24]<<24|i[l>>>16&255]<<16|i[u>>>8&255]<<8|i[d&255])^t[y++];m=(i[l>>>24]<<24|i[u>>>16&255]<<16|i[d>>>8&255]<<8|i[c&255])^t[y++];p=p>>>0;v=v>>>0;b=b>>>0;m=m>>>0;return[p,v,b,m]}var n=[0,1,2,4,8,16,32,64,128,27,54];var a=function(){var e=new Array(256);for(var t=0;t<256;t++){if(t<128){e[t]=t<<1}else{e[t]=t<<1^283}}var r=[];var i=[];var n=[[],[],[],[]];var a=[[],[],[],[]];var s=0;var o=0;for(var h=0;h<256;++h){var u=o^o<<1^o<<2^o<<3^o<<4;u=u>>>8^u&255^99;r[s]=u;i[u]=s;var d=e[s];var c=e[d];var l=e[c];var p=e[u]*257^u*16843008;n[0][s]=p<<24|p>>>8;n[1][s]=p<<16|p>>>16;n[2][s]=p<<8|p>>>24;n[3][s]=p;p=l*16843009^c*65537^d*257^s*16843008;a[0][u]=p<<24|p>>>8;a[1][u]=p<<16|p>>>16;a[2][u]=p<<8|p>>>24;a[3][u]=p;if(s===0){s=o=1}else{s=d^e[e[e[l^d]]];o^=e[e[o]]}}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function AES(e){this._key=asUInt32Array(e);this._reset()}AES.blockSize=4*4;AES.keySize=256/8;AES.prototype.blockSize=AES.blockSize;AES.prototype.keySize=AES.keySize;AES.prototype._reset=function(){var e=this._key;var t=e.length;var r=t+6;var i=(r+1)*4;var s=[];for(var o=0;o<t;o++){s[o]=e[o]}for(o=t;o<i;o++){var h=s[o-1];if(o%t===0){h=h<<8|h>>>24;h=a.SBOX[h>>>24]<<24|a.SBOX[h>>>16&255]<<16|a.SBOX[h>>>8&255]<<8|a.SBOX[h&255];h^=n[o/t|0]<<24}else if(t>6&&o%t===4){h=a.SBOX[h>>>24]<<24|a.SBOX[h>>>16&255]<<16|a.SBOX[h>>>8&255]<<8|a.SBOX[h&255]}s[o]=s[o-t]^h}var u=[];for(var d=0;d<i;d++){var c=i-d;var l=s[c-(d%4?0:4)];if(d<4||c<=4){u[d]=l}else{u[d]=a.INV_SUB_MIX[0][a.SBOX[l>>>24]]^a.INV_SUB_MIX[1][a.SBOX[l>>>16&255]]^a.INV_SUB_MIX[2][a.SBOX[l>>>8&255]]^a.INV_SUB_MIX[3][a.SBOX[l&255]]}}this._nRounds=r;this._keySchedule=s;this._invKeySchedule=u};AES.prototype.encryptBlockRaw=function(e){e=asUInt32Array(e);return cryptBlock(e,this._keySchedule,a.SUB_MIX,a.SBOX,this._nRounds)};AES.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e);var r=i.allocUnsafe(16);r.writeUInt32BE(t[0],0);r.writeUInt32BE(t[1],4);r.writeUInt32BE(t[2],8);r.writeUInt32BE(t[3],12);return r};AES.prototype.decryptBlock=function(e){e=asUInt32Array(e);var t=e[1];e[1]=e[3];e[3]=t;var r=cryptBlock(e,this._invKeySchedule,a.INV_SUB_MIX,a.INV_SBOX,this._nRounds);var n=i.allocUnsafe(16);n.writeUInt32BE(r[0],0);n.writeUInt32BE(r[3],4);n.writeUInt32BE(r[2],8);n.writeUInt32BE(r[1],12);return n};AES.prototype.scrub=function(){scrubVec(this._keySchedule);scrubVec(this._invKeySchedule);scrubVec(this._key)};e.exports.AES=AES},6624:function(e,t,r){var i=r(1387);var n=r(6911).Buffer;var a=r(1043);var s=r(3782);var o=r(7225);var h=r(4734);var u=r(598);function xorTest(e,t){var r=0;if(e.length!==t.length)r++;var i=Math.min(e.length,t.length);for(var n=0;n<i;++n){r+=e[n]^t[n]}return r}function calcIv(e,t,r){if(t.length===12){e._finID=n.concat([t,n.from([0,0,0,1])]);return n.concat([t,n.from([0,0,0,2])])}var i=new o(r);var a=t.length;var s=a%16;i.update(t);if(s){s=16-s;i.update(n.alloc(s,0))}i.update(n.alloc(8,0));var h=a*8;var d=n.alloc(8);d.writeUIntBE(h,0,8);i.update(d);e._finID=i.state;var c=n.from(e._finID);u(c);return c}function StreamCipher(e,t,r,s){a.call(this);var h=n.alloc(4,0);this._cipher=new i.AES(t);var u=this._cipher.encryptBlock(h);this._ghash=new o(u);r=calcIv(this,r,u);this._prev=n.from(r);this._cache=n.allocUnsafe(0);this._secCache=n.allocUnsafe(0);this._decrypt=s;this._alen=0;this._len=0;this._mode=e;this._authTag=null;this._called=false}s(StreamCipher,a);StreamCipher.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;if(t<16){t=n.alloc(t,0);this._ghash.update(t)}}this._called=true;var r=this._mode.encrypt(this,e);if(this._decrypt){this._ghash.update(e)}else{this._ghash.update(r)}this._len+=e.length;return r};StreamCipher.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error(\"Unsupported state or unable to authenticate data\");var e=h(this._ghash.final(this._alen*8,this._len*8),this._cipher.encryptBlock(this._finID));if(this._decrypt&&xorTest(e,this._authTag))throw new Error(\"Unsupported state or unable to authenticate data\");this._authTag=e;this._cipher.scrub()};StreamCipher.prototype.getAuthTag=function getAuthTag(){if(this._decrypt||!n.isBuffer(this._authTag))throw new Error(\"Attempting to get auth tag in unsupported state\");return this._authTag};StreamCipher.prototype.setAuthTag=function setAuthTag(e){if(!this._decrypt)throw new Error(\"Attempting to set auth tag in unsupported state\");this._authTag=e};StreamCipher.prototype.setAAD=function setAAD(e){if(this._called)throw new Error(\"Attempting to set AAD in unsupported state\");this._ghash.update(e);this._alen+=e.length};e.exports=StreamCipher},6594:function(e,t,r){var i=r(2);var n=r(2598);var a=r(5866);function getCiphers(){return Object.keys(a)}t.createCipher=t.Cipher=i.createCipher;t.createCipheriv=t.Cipheriv=i.createCipheriv;t.createDecipher=t.Decipher=n.createDecipher;t.createDecipheriv=t.Decipheriv=n.createDecipheriv;t.listCiphers=t.getCiphers=getCiphers},2598:function(e,t,r){var i=r(6624);var n=r(6911).Buffer;var a=r(6370);var s=r(126);var o=r(1043);var h=r(1387);var u=r(8368);var d=r(3782);function Decipher(e,t,r){o.call(this);this._cache=new Splitter;this._last=void 0;this._cipher=new h.AES(t);this._prev=n.from(r);this._mode=e;this._autopadding=true}d(Decipher,o);Decipher.prototype._update=function(e){this._cache.add(e);var t;var r;var i=[];while(t=this._cache.get(this._autopadding)){r=this._mode.decrypt(this,t);i.push(r)}return n.concat(i)};Decipher.prototype._final=function(){var e=this._cache.flush();if(this._autopadding){return unpad(this._mode.decrypt(this,e))}else if(e){throw new Error(\"data not multiple of block length\")}};Decipher.prototype.setAutoPadding=function(e){this._autopadding=!!e;return this};function Splitter(){this.cache=n.allocUnsafe(0)}Splitter.prototype.add=function(e){this.cache=n.concat([this.cache,e])};Splitter.prototype.get=function(e){var t;if(e){if(this.cache.length>16){t=this.cache.slice(0,16);this.cache=this.cache.slice(16);return t}}else{if(this.cache.length>=16){t=this.cache.slice(0,16);this.cache=this.cache.slice(16);return t}}return null};Splitter.prototype.flush=function(){if(this.cache.length)return this.cache};function unpad(e){var t=e[15];if(t<1||t>16){throw new Error(\"unable to decrypt data\")}var r=-1;while(++r<t){if(e[r+(16-t)]!==t){throw new Error(\"unable to decrypt data\")}}if(t===16)return;return e.slice(0,16-t)}function createDecipheriv(e,t,r){var o=a[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(typeof r===\"string\")r=n.from(r);if(o.mode!==\"GCM\"&&r.length!==o.iv)throw new TypeError(\"invalid iv length \"+r.length);if(typeof t===\"string\")t=n.from(t);if(t.length!==o.key/8)throw new TypeError(\"invalid key length \"+t.length);if(o.type===\"stream\"){return new s(o.module,t,r,true)}else if(o.type===\"auth\"){return new i(o.module,t,r,true)}return new Decipher(o.module,t,r)}function createDecipher(e,t){var r=a[e.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var i=u(t,false,r.key,r.iv);return createDecipheriv(e,i.key,i.iv)}t.createDecipher=createDecipher;t.createDecipheriv=createDecipheriv},2:function(e,t,r){var i=r(6370);var n=r(6624);var a=r(6911).Buffer;var s=r(126);var o=r(1043);var h=r(1387);var u=r(8368);var d=r(3782);function Cipher(e,t,r){o.call(this);this._cache=new Splitter;this._cipher=new h.AES(t);this._prev=a.from(r);this._mode=e;this._autopadding=true}d(Cipher,o);Cipher.prototype._update=function(e){this._cache.add(e);var t;var r;var i=[];while(t=this._cache.get()){r=this._mode.encrypt(this,t);i.push(r)}return a.concat(i)};var c=a.alloc(16,16);Cipher.prototype._final=function(){var e=this._cache.flush();if(this._autopadding){e=this._mode.encrypt(this,e);this._cipher.scrub();return e}if(!e.equals(c)){this._cipher.scrub();throw new Error(\"data not multiple of block length\")}};Cipher.prototype.setAutoPadding=function(e){this._autopadding=!!e;return this};function Splitter(){this.cache=a.allocUnsafe(0)}Splitter.prototype.add=function(e){this.cache=a.concat([this.cache,e])};Splitter.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);this.cache=this.cache.slice(16);return e}return null};Splitter.prototype.flush=function(){var e=16-this.cache.length;var t=a.allocUnsafe(e);var r=-1;while(++r<e){t.writeUInt8(e,r)}return a.concat([this.cache,t])};function createCipheriv(e,t,r){var o=i[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(typeof t===\"string\")t=a.from(t);if(t.length!==o.key/8)throw new TypeError(\"invalid key length \"+t.length);if(typeof r===\"string\")r=a.from(r);if(o.mode!==\"GCM\"&&r.length!==o.iv)throw new TypeError(\"invalid iv length \"+r.length);if(o.type===\"stream\"){return new s(o.module,t,r)}else if(o.type===\"auth\"){return new n(o.module,t,r)}return new Cipher(o.module,t,r)}function createCipher(e,t){var r=i[e.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=u(t,false,r.key,r.iv);return createCipheriv(e,n.key,n.iv)}t.createCipheriv=createCipheriv;t.createCipher=createCipher},7225:function(e,t,r){var i=r(6911).Buffer;var n=i.alloc(16,0);function toArray(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function fromArray(e){var t=i.allocUnsafe(16);t.writeUInt32BE(e[0]>>>0,0);t.writeUInt32BE(e[1]>>>0,4);t.writeUInt32BE(e[2]>>>0,8);t.writeUInt32BE(e[3]>>>0,12);return t}function GHASH(e){this.h=e;this.state=i.alloc(16,0);this.cache=i.allocUnsafe(0)}GHASH.prototype.ghash=function(e){var t=-1;while(++t<e.length){this.state[t]^=e[t]}this._multiply()};GHASH.prototype._multiply=function(){var e=toArray(this.h);var t=[0,0,0,0];var r,i,n;var a=-1;while(++a<128){i=(this.state[~~(a/8)]&1<<7-a%8)!==0;if(i){t[0]^=e[0];t[1]^=e[1];t[2]^=e[2];t[3]^=e[3]}n=(e[3]&1)!==0;for(r=3;r>0;r--){e[r]=e[r]>>>1|(e[r-1]&1)<<31}e[0]=e[0]>>>1;if(n){e[0]=e[0]^225<<24}}this.state=fromArray(t)};GHASH.prototype.update=function(e){this.cache=i.concat([this.cache,e]);var t;while(this.cache.length>=16){t=this.cache.slice(0,16);this.cache=this.cache.slice(16);this.ghash(t)}};GHASH.prototype.final=function(e,t){if(this.cache.length){this.ghash(i.concat([this.cache,n],16))}this.ghash(fromArray([0,e,0,t]));return this.state};e.exports=GHASH},598:function(e){function incr32(e){var t=e.length;var r;while(t--){r=e.readUInt8(t);if(r===255){e.writeUInt8(0,t)}else{r++;e.writeUInt8(r,t);break}}}e.exports=incr32},9825:function(e,t,r){var i=r(4734);t.encrypt=function(e,t){var r=i(t,e._prev);e._prev=e._cipher.encryptBlock(r);return e._prev};t.decrypt=function(e,t){var r=e._prev;e._prev=t;var n=e._cipher.decryptBlock(t);return i(n,r)}},321:function(e,t,r){var i=r(6911).Buffer;var n=r(4734);function encryptStart(e,t,r){var a=t.length;var s=n(t,e._cache);e._cache=e._cache.slice(a);e._prev=i.concat([e._prev,r?t:s]);return s}t.encrypt=function(e,t,r){var n=i.allocUnsafe(0);var a;while(t.length){if(e._cache.length===0){e._cache=e._cipher.encryptBlock(e._prev);e._prev=i.allocUnsafe(0)}if(e._cache.length<=t.length){a=e._cache.length;n=i.concat([n,encryptStart(e,t.slice(0,a),r)]);t=t.slice(a)}else{n=i.concat([n,encryptStart(e,t,r)]);break}}return n}},3147:function(e,t,r){var i=r(6911).Buffer;function encryptByte(e,t,r){var i;var n=-1;var a=8;var s=0;var o,h;while(++n<a){i=e._cipher.encryptBlock(e._prev);o=t&1<<7-n?128:0;h=i[0]^o;s+=(h&128)>>n%8;e._prev=shiftIn(e._prev,r?o:h)}return s}function shiftIn(e,t){var r=e.length;var n=-1;var a=i.allocUnsafe(e.length);e=i.concat([e,i.from([t])]);while(++n<r){a[n]=e[n]<<1|e[n+1]>>7}return a}t.encrypt=function(e,t,r){var n=t.length;var a=i.allocUnsafe(n);var s=-1;while(++s<n){a[s]=encryptByte(e,t[s],r)}return a}},2430:function(e,t,r){var i=r(6911).Buffer;function encryptByte(e,t,r){var n=e._cipher.encryptBlock(e._prev);var a=n[0]^t;e._prev=i.concat([e._prev.slice(1),i.from([r?t:a])]);return a}t.encrypt=function(e,t,r){var n=t.length;var a=i.allocUnsafe(n);var s=-1;while(++s<n){a[s]=encryptByte(e,t[s],r)}return a}},3361:function(e,t,r){var i=r(4734);var n=r(6911).Buffer;var a=r(598);function getBlock(e){var t=e._cipher.encryptBlockRaw(e._prev);a(e._prev);return t}var s=16;t.encrypt=function(e,t){var r=Math.ceil(t.length/s);var a=e._cache.length;e._cache=n.concat([e._cache,n.allocUnsafe(r*s)]);for(var o=0;o<r;o++){var h=getBlock(e);var u=a+o*s;e._cache.writeUInt32BE(h[0],u+0);e._cache.writeUInt32BE(h[1],u+4);e._cache.writeUInt32BE(h[2],u+8);e._cache.writeUInt32BE(h[3],u+12)}var d=e._cache.slice(0,t.length);e._cache=e._cache.slice(t.length);return i(t,d)}},1590:function(e,t){t.encrypt=function(e,t){return e._cipher.encryptBlock(t)};t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},6370:function(e,t,r){var i={ECB:r(1590),CBC:r(9825),CFB:r(321),CFB8:r(2430),CFB1:r(3147),OFB:r(3412),CTR:r(3361),GCM:r(3361)};var n=r(5866);for(var a in n){n[a].module=i[n[a].mode]}e.exports=n},3412:function(e,t,r){var i=r(4734);function getBlock(e){e._prev=e._cipher.encryptBlock(e._prev);return e._prev}t.encrypt=function(e,t){while(e._cache.length<t.length){e._cache=Buffer.concat([e._cache,getBlock(e)])}var r=e._cache.slice(0,t.length);e._cache=e._cache.slice(t.length);return i(t,r)}},126:function(e,t,r){var i=r(1387);var n=r(6911).Buffer;var a=r(1043);var s=r(3782);function StreamCipher(e,t,r,s){a.call(this);this._cipher=new i.AES(t);this._prev=n.from(r);this._cache=n.allocUnsafe(0);this._secCache=n.allocUnsafe(0);this._decrypt=s;this._mode=e}s(StreamCipher,a);StreamCipher.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)};StreamCipher.prototype._final=function(){this._cipher.scrub()};e.exports=StreamCipher},8996:function(e,t,r){var i=r(5238);var n=r(6594);var a=r(6370);var s=r(6280);var o=r(8368);function createCipher(e,t){e=e.toLowerCase();var r,i;if(a[e]){r=a[e].key;i=a[e].iv}else if(s[e]){r=s[e].key*8;i=s[e].iv}else{throw new TypeError(\"invalid suite type\")}var n=o(t,false,r,i);return createCipheriv(e,n.key,n.iv)}function createDecipher(e,t){e=e.toLowerCase();var r,i;if(a[e]){r=a[e].key;i=a[e].iv}else if(s[e]){r=s[e].key*8;i=s[e].iv}else{throw new TypeError(\"invalid suite type\")}var n=o(t,false,r,i);return createDecipheriv(e,n.key,n.iv)}function createCipheriv(e,t,r){e=e.toLowerCase();if(a[e])return n.createCipheriv(e,t,r);if(s[e])return new i({key:t,iv:r,mode:e});throw new TypeError(\"invalid suite type\")}function createDecipheriv(e,t,r){e=e.toLowerCase();if(a[e])return n.createDecipheriv(e,t,r);if(s[e])return new i({key:t,iv:r,mode:e,decrypt:true});throw new TypeError(\"invalid suite type\")}function getCiphers(){return Object.keys(s).concat(n.getCiphers())}t.createCipher=t.Cipher=createCipher;t.createCipheriv=t.Cipheriv=createCipheriv;t.createDecipher=t.Decipher=createDecipher;t.createDecipheriv=t.Decipheriv=createDecipheriv;t.listCiphers=t.getCiphers=getCiphers},5238:function(e,t,r){var i=r(1043);var n=r(9536);var a=r(3782);var s=r(6911).Buffer;var o={\"des-ede3-cbc\":n.CBC.instantiate(n.EDE),\"des-ede3\":n.EDE,\"des-ede-cbc\":n.CBC.instantiate(n.EDE),\"des-ede\":n.EDE,\"des-cbc\":n.CBC.instantiate(n.DES),\"des-ecb\":n.DES};o.des=o[\"des-cbc\"];o.des3=o[\"des-ede3-cbc\"];e.exports=DES;a(DES,i);function DES(e){i.call(this);var t=e.mode.toLowerCase();var r=o[t];var n;if(e.decrypt){n=\"decrypt\"}else{n=\"encrypt\"}var a=e.key;if(!s.isBuffer(a)){a=s.from(a)}if(t===\"des-ede\"||t===\"des-ede-cbc\"){a=s.concat([a,a.slice(0,8)])}var h=e.iv;if(!s.isBuffer(h)){h=s.from(h)}this._des=r.create({key:a,iv:h,type:n})}DES.prototype._update=function(e){return s.from(this._des.update(e))};DES.prototype._final=function(){return s.from(this._des.final())}},6280:function(e,t){t[\"des-ecb\"]={key:8,iv:0};t[\"des-cbc\"]=t.des={key:8,iv:8};t[\"des-ede3-cbc\"]=t.des3={key:24,iv:8};t[\"des-ede3\"]={key:24,iv:0};t[\"des-ede-cbc\"]={key:16,iv:8};t[\"des-ede\"]={key:16,iv:0}},7166:function(e,t,r){var i=r(711);var n=r(7223);e.exports=crt;function blind(e){var t=getr(e);var r=t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function crt(e,t){var r=blind(t);var n=t.modulus.byteLength();var a=i.mont(t.modulus);var s=new i(e).mul(r.blinder).umod(t.modulus);var o=s.toRed(i.mont(t.prime1));var h=s.toRed(i.mont(t.prime2));var u=t.coefficient;var d=t.prime1;var c=t.prime2;var l=o.redPow(t.exponent1);var p=h.redPow(t.exponent2);l=l.fromRed();p=p.fromRed();var v=l.isub(p).imul(u).umod(d);v.imul(c);p.iadd(v);return new Buffer(p.imul(r.unblinder).umod(t.modulus).toArray(false,n))}crt.getr=getr;function getr(e){var t=e.modulus.byteLength();var r=new i(n(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2)){r=new i(n(t))}return r}},9276:function(e,t,r){e.exports=r(2908)},4078:function(e,t,r){var i=r(6911).Buffer;var n=r(9739);var a=r(3726);var s=r(3782);var o=r(9807);var h=r(4013);var u=r(2908);Object.keys(u).forEach((function(e){u[e].id=i.from(u[e].id,\"hex\");u[e.toLowerCase()]=u[e]}));function Sign(e){a.Writable.call(this);var t=u[e];if(!t)throw new Error(\"Unknown message digest\");this._hashType=t.hash;this._hash=n(t.hash);this._tag=t.id;this._signType=t.sign}s(Sign,a.Writable);Sign.prototype._write=function _write(e,t,r){this._hash.update(e);r()};Sign.prototype.update=function update(e,t){if(typeof e===\"string\")e=i.from(e,t);this._hash.update(e);return this};Sign.prototype.sign=function signMethod(e,t){this.end();var r=this._hash.digest();var i=o(r,e,this._hashType,this._signType,this._tag);return t?i.toString(t):i};function Verify(e){a.Writable.call(this);var t=u[e];if(!t)throw new Error(\"Unknown message digest\");this._hash=n(t.hash);this._tag=t.id;this._signType=t.sign}s(Verify,a.Writable);Verify.prototype._write=function _write(e,t,r){this._hash.update(e);r()};Verify.prototype.update=function update(e,t){if(typeof e===\"string\")e=i.from(e,t);this._hash.update(e);return this};Verify.prototype.verify=function verifyMethod(e,t,r){if(typeof t===\"string\")t=i.from(t,r);this.end();var n=this._hash.digest();return h(t,n,e,this._signType,this._tag)};function createSign(e){return new Sign(e)}function createVerify(e){return new Verify(e)}e.exports={Sign:createSign,Verify:createVerify,createSign:createSign,createVerify:createVerify}},9807:function(e,t,r){var i=r(6911).Buffer;var n=r(4873);var a=r(7166);var s=r(949).ec;var o=r(1670);var h=r(9902);var u=r(9267);function sign(e,t,r,n,s){var o=h(t);if(o.curve){if(n!==\"ecdsa\"&&n!==\"ecdsa/rsa\")throw new Error(\"wrong private key type\");return ecSign(e,o)}else if(o.type===\"dsa\"){if(n!==\"dsa\")throw new Error(\"wrong private key type\");return dsaSign(e,o,r)}else{if(n!==\"rsa\"&&n!==\"ecdsa/rsa\")throw new Error(\"wrong private key type\")}e=i.concat([s,e]);var u=o.modulus.byteLength();var d=[0,1];while(e.length+d.length+1<u)d.push(255);d.push(0);var c=-1;while(++c<e.length)d.push(e[c]);var l=a(d,o);return l}function ecSign(e,t){var r=u[t.curve.join(\".\")];if(!r)throw new Error(\"unknown curve \"+t.curve.join(\".\"));var n=new s(r);var a=n.keyFromPrivate(t.privateKey);var o=a.sign(e);return i.from(o.toDER())}function dsaSign(e,t,r){var i=t.params.priv_key;var n=t.params.p;var a=t.params.q;var s=t.params.g;var h=new o(0);var u;var d=bits2int(e,a).mod(a);var c=false;var l=getKey(i,a,e,r);while(c===false){u=makeKey(a,l,r);h=makeR(s,u,n,a);c=u.invm(a).imul(d.add(i.mul(h))).mod(a);if(c.cmpn(0)===0){c=false;h=new o(0)}}return toDER(h,c)}function toDER(e,t){e=e.toArray();t=t.toArray();if(e[0]&128)e=[0].concat(e);if(t[0]&128)t=[0].concat(t);var r=e.length+t.length+4;var n=[48,r,2,e.length];n=n.concat(e,[2,t.length],t);return i.from(n)}function getKey(e,t,r,a){e=i.from(e.toArray());if(e.length<t.byteLength()){var s=i.alloc(t.byteLength()-e.length);e=i.concat([s,e])}var o=r.length;var h=bits2octets(r,t);var u=i.alloc(o);u.fill(1);var d=i.alloc(o);d=n(a,d).update(u).update(i.from([0])).update(e).update(h).digest();u=n(a,d).update(u).digest();d=n(a,d).update(u).update(i.from([1])).update(e).update(h).digest();u=n(a,d).update(u).digest();return{k:d,v:u}}function bits2int(e,t){var r=new o(e);var i=(e.length<<3)-t.bitLength();if(i>0)r.ishrn(i);return r}function bits2octets(e,t){e=bits2int(e,t);e=e.mod(t);var r=i.from(e.toArray());if(r.length<t.byteLength()){var n=i.alloc(t.byteLength()-r.length);r=i.concat([n,r])}return r}function makeKey(e,t,r){var a;var s;do{a=i.alloc(0);while(a.length*8<e.bitLength()){t.v=n(r,t.k).update(t.v).digest();a=i.concat([a,t.v])}s=bits2int(a,e);t.k=n(r,t.k).update(t.v).update(i.from([0])).digest();t.v=n(r,t.k).update(t.v).digest()}while(s.cmp(e)!==-1);return s}function makeR(e,t,r,i){return e.toRed(o.mont(r)).redPow(t).fromRed().mod(i)}e.exports=sign;e.exports.getKey=getKey;e.exports.makeKey=makeKey},4013:function(e,t,r){var i=r(6911).Buffer;var n=r(1670);var a=r(949).ec;var s=r(9902);var o=r(9267);function verify(e,t,r,a,o){var h=s(r);if(h.type===\"ec\"){if(a!==\"ecdsa\"&&a!==\"ecdsa/rsa\")throw new Error(\"wrong public key type\");return ecVerify(e,t,h)}else if(h.type===\"dsa\"){if(a!==\"dsa\")throw new Error(\"wrong public key type\");return dsaVerify(e,t,h)}else{if(a!==\"rsa\"&&a!==\"ecdsa/rsa\")throw new Error(\"wrong public key type\")}t=i.concat([o,t]);var u=h.modulus.byteLength();var d=[1];var c=0;while(t.length+d.length+2<u){d.push(255);c++}d.push(0);var l=-1;while(++l<t.length){d.push(t[l])}d=i.from(d);var p=n.mont(h.modulus);e=new n(e).toRed(p);e=e.redPow(new n(h.publicExponent));e=i.from(e.fromRed().toArray());var v=c<8?1:0;u=Math.min(e.length,d.length);if(e.length!==d.length)v=1;l=-1;while(++l<u)v|=e[l]^d[l];return v===0}function ecVerify(e,t,r){var i=o[r.data.algorithm.curve.join(\".\")];if(!i)throw new Error(\"unknown curve \"+r.data.algorithm.curve.join(\".\"));var n=new a(i);var s=r.data.subjectPrivateKey.data;return n.verify(t,e,s)}function dsaVerify(e,t,r){var i=r.data.p;var a=r.data.q;var o=r.data.g;var h=r.data.pub_key;var u=s.signature.decode(e,\"der\");var d=u.s;var c=u.r;checkValue(d,a);checkValue(c,a);var l=n.mont(i);var p=d.invm(a);var v=o.toRed(l).redPow(new n(t).mul(p).mod(a)).fromRed().mul(h.toRed(l).redPow(c.mul(p).mod(a)).fromRed()).mod(i).mod(a);return v.cmp(c)===0}function checkValue(e,t){if(e.cmpn(0)<=0)throw new Error(\"invalid sig\");if(e.cmp(t)>=t)throw new Error(\"invalid sig\")}e.exports=verify},4734:function(e){e.exports=function xor(e,t){var r=Math.min(e.length,t.length);var i=new Buffer(r);for(var n=0;n<r;++n){i[n]=e[n]^t[n]}return i}},1043:function(e,t,r){var i=r(6911).Buffer;var n=r(2781).Transform;var a=r(1576).StringDecoder;var s=r(3782);function CipherBase(e){n.call(this);this.hashMode=typeof e===\"string\";if(this.hashMode){this[e]=this._finalOrDigest}else{this.final=this._finalOrDigest}if(this._final){this.__final=this._final;this._final=null}this._decoder=null;this._encoding=null}s(CipherBase,n);CipherBase.prototype.update=function(e,t,r){if(typeof e===\"string\"){e=i.from(e,t)}var n=this._update(e);if(this.hashMode)return this;if(r){n=this._toString(n,r)}return n};CipherBase.prototype.setAutoPadding=function(){};CipherBase.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")};CipherBase.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")};CipherBase.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")};CipherBase.prototype._transform=function(e,t,r){var i;try{if(this.hashMode){this._update(e)}else{this.push(this._update(e))}}catch(e){i=e}finally{r(i)}};CipherBase.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)};CipherBase.prototype._finalOrDigest=function(e){var t=this.__final()||i.alloc(0);if(e){t=this._toString(t,e,true)}return t};CipherBase.prototype._toString=function(e,t,r){if(!this._decoder){this._decoder=new a(t);this._encoding=t}if(this._encoding!==t)throw new Error(\"can't switch encodings\");var i=this._decoder.write(e);if(r){i+=this._decoder.end()}return i};e.exports=CipherBase},9942:function(e,t,r){var i=r(949);var n=r(711);e.exports=function createECDH(e){return new ECDH(e)};var a={secp256k1:{name:\"secp256k1\",byteLength:32},secp224r1:{name:\"p224\",byteLength:28},prime256v1:{name:\"p256\",byteLength:32},prime192v1:{name:\"p192\",byteLength:24},ed25519:{name:\"ed25519\",byteLength:32},secp384r1:{name:\"p384\",byteLength:48},secp521r1:{name:\"p521\",byteLength:66}};a.p224=a.secp224r1;a.p256=a.secp256r1=a.prime256v1;a.p192=a.secp192r1=a.prime192v1;a.p384=a.secp384r1;a.p521=a.secp521r1;function ECDH(e){this.curveType=a[e];if(!this.curveType){this.curveType={name:e}}this.curve=new i.ec(this.curveType.name);this.keys=void 0}ECDH.prototype.generateKeys=function(e,t){this.keys=this.curve.genKeyPair();return this.getPublicKey(e,t)};ECDH.prototype.computeSecret=function(e,t,r){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}var i=this.curve.keyFromPublic(e).getPublic();var n=i.mul(this.keys.getPrivate()).getX();return formatReturnValue(n,r,this.curveType.byteLength)};ECDH.prototype.getPublicKey=function(e,t){var r=this.keys.getPublic(t===\"compressed\",true);if(t===\"hybrid\"){if(r[r.length-1]%2){r[0]=7}else{r[0]=6}}return formatReturnValue(r,e)};ECDH.prototype.getPrivateKey=function(e){return formatReturnValue(this.keys.getPrivate(),e)};ECDH.prototype.setPublicKey=function(e,t){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}this.keys._importPublic(e);return this};ECDH.prototype.setPrivateKey=function(e,t){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}var r=new n(e);r=r.toString(16);this.keys=this.curve.genKeyPair();this.keys._importPrivate(r);return this};function formatReturnValue(e,t,r){if(!Array.isArray(e)){e=e.toArray()}var i=new Buffer(e);if(r&&i.length<r){var n=new Buffer(r-i.length);n.fill(0);i=Buffer.concat([n,i])}if(!t){return i}else{return i.toString(t)}}},9739:function(e,t,r){\"use strict\";var i=r(3782);var n=r(3533);var a=r(3225);var s=r(4371);var o=r(1043);function Hash(e){o.call(this,\"digest\");this._hash=e}i(Hash,o);Hash.prototype._update=function(e){this._hash.update(e)};Hash.prototype._final=function(){return this._hash.digest()};e.exports=function createHash(e){e=e.toLowerCase();if(e===\"md5\")return new n;if(e===\"rmd160\"||e===\"ripemd160\")return new a;return new Hash(s(e))}},450:function(e,t,r){var i=r(3533);e.exports=function(e){return(new i).update(e).digest()}},4873:function(e,t,r){\"use strict\";var i=r(3782);var n=r(8119);var a=r(1043);var s=r(6911).Buffer;var o=r(450);var h=r(3225);var u=r(4371);var d=s.alloc(128);function Hmac(e,t){a.call(this,\"digest\");if(typeof t===\"string\"){t=s.from(t)}var r=e===\"sha512\"||e===\"sha384\"?128:64;this._alg=e;this._key=t;if(t.length>r){var i=e===\"rmd160\"?new h:u(e);t=i.update(t).digest()}else if(t.length<r){t=s.concat([t,d],r)}var n=this._ipad=s.allocUnsafe(r);var o=this._opad=s.allocUnsafe(r);for(var c=0;c<r;c++){n[c]=t[c]^54;o[c]=t[c]^92}this._hash=e===\"rmd160\"?new h:u(e);this._hash.update(n)}i(Hmac,a);Hmac.prototype._update=function(e){this._hash.update(e)};Hmac.prototype._final=function(){var e=this._hash.digest();var t=this._alg===\"rmd160\"?new h:u(this._alg);return t.update(this._opad).update(e).digest()};e.exports=function createHmac(e,t){e=e.toLowerCase();if(e===\"rmd160\"||e===\"ripemd160\"){return new Hmac(\"rmd160\",t)}if(e===\"md5\"){return new n(o,t)}return new Hmac(e,t)}},8119:function(e,t,r){\"use strict\";var i=r(3782);var n=r(6911).Buffer;var a=r(1043);var s=n.alloc(128);var o=64;function Hmac(e,t){a.call(this,\"digest\");if(typeof t===\"string\"){t=n.from(t)}this._alg=e;this._key=t;if(t.length>o){t=e(t)}else if(t.length<o){t=n.concat([t,s],o)}var r=this._ipad=n.allocUnsafe(o);var i=this._opad=n.allocUnsafe(o);for(var h=0;h<o;h++){r[h]=t[h]^54;i[h]=t[h]^92}this._hash=[r]}i(Hmac,a);Hmac.prototype._update=function(e){this._hash.push(e)};Hmac.prototype._final=function(){var e=this._alg(n.concat(this._hash));return this._alg(n.concat([this._opad,e]))};e.exports=Hmac},9536:function(e,t,r){\"use strict\";t.utils=r(5334);t.Cipher=r(9876);t.DES=r(1016);t.CBC=r(8641);t.EDE=r(6159)},8641:function(e,t,r){\"use strict\";var i=r(3523);var n=r(3782);var a={};function CBCState(e){i.equal(e.length,8,\"Invalid IV length\");this.iv=new Array(8);for(var t=0;t<this.iv.length;t++)this.iv[t]=e[t]}function instantiate(e){function CBC(t){e.call(this,t);this._cbcInit()}n(CBC,e);var t=Object.keys(a);for(var r=0;r<t.length;r++){var i=t[r];CBC.prototype[i]=a[i]}CBC.create=function create(e){return new CBC(e)};return CBC}t.instantiate=instantiate;a._cbcInit=function _cbcInit(){var e=new CBCState(this.options.iv);this._cbcState=e};a._update=function _update(e,t,r,i){var n=this._cbcState;var a=this.constructor.super_.prototype;var s=n.iv;if(this.type===\"encrypt\"){for(var o=0;o<this.blockSize;o++)s[o]^=e[t+o];a._update.call(this,s,0,r,i);for(var o=0;o<this.blockSize;o++)s[o]=r[i+o]}else{a._update.call(this,e,t,r,i);for(var o=0;o<this.blockSize;o++)r[i+o]^=s[o];for(var o=0;o<this.blockSize;o++)s[o]=e[t+o]}}},9876:function(e,t,r){\"use strict\";var i=r(3523);function Cipher(e){this.options=e;this.type=this.options.type;this.blockSize=8;this._init();this.buffer=new Array(this.blockSize);this.bufferOff=0}e.exports=Cipher;Cipher.prototype._init=function _init(){};Cipher.prototype.update=function update(e){if(e.length===0)return[];if(this.type===\"decrypt\")return this._updateDecrypt(e);else return this._updateEncrypt(e)};Cipher.prototype._buffer=function _buffer(e,t){var r=Math.min(this.buffer.length-this.bufferOff,e.length-t);for(var i=0;i<r;i++)this.buffer[this.bufferOff+i]=e[t+i];this.bufferOff+=r;return r};Cipher.prototype._flushBuffer=function _flushBuffer(e,t){this._update(this.buffer,0,e,t);this.bufferOff=0;return this.blockSize};Cipher.prototype._updateEncrypt=function _updateEncrypt(e){var t=0;var r=0;var i=(this.bufferOff+e.length)/this.blockSize|0;var n=new Array(i*this.blockSize);if(this.bufferOff!==0){t+=this._buffer(e,t);if(this.bufferOff===this.buffer.length)r+=this._flushBuffer(n,r)}var a=e.length-(e.length-t)%this.blockSize;for(;t<a;t+=this.blockSize){this._update(e,t,n,r);r+=this.blockSize}for(;t<e.length;t++,this.bufferOff++)this.buffer[this.bufferOff]=e[t];return n};Cipher.prototype._updateDecrypt=function _updateDecrypt(e){var t=0;var r=0;var i=Math.ceil((this.bufferOff+e.length)/this.blockSize)-1;var n=new Array(i*this.blockSize);for(;i>0;i--){t+=this._buffer(e,t);r+=this._flushBuffer(n,r)}t+=this._buffer(e,t);return n};Cipher.prototype.final=function final(e){var t;if(e)t=this.update(e);var r;if(this.type===\"encrypt\")r=this._finalEncrypt();else r=this._finalDecrypt();if(t)return t.concat(r);else return r};Cipher.prototype._pad=function _pad(e,t){if(t===0)return false;while(t<e.length)e[t++]=0;return true};Cipher.prototype._finalEncrypt=function _finalEncrypt(){if(!this._pad(this.buffer,this.bufferOff))return[];var e=new Array(this.blockSize);this._update(this.buffer,0,e,0);return e};Cipher.prototype._unpad=function _unpad(e){return e};Cipher.prototype._finalDecrypt=function _finalDecrypt(){i.equal(this.bufferOff,this.blockSize,\"Not enough data to decrypt\");var e=new Array(this.blockSize);this._flushBuffer(e,0);return this._unpad(e)}},1016:function(e,t,r){\"use strict\";var i=r(3523);var n=r(3782);var a=r(5334);var s=r(9876);function DESState(){this.tmp=new Array(2);this.keys=null}function DES(e){s.call(this,e);var t=new DESState;this._desState=t;this.deriveKeys(t,e.key)}n(DES,s);e.exports=DES;DES.create=function create(e){return new DES(e)};var o=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];DES.prototype.deriveKeys=function deriveKeys(e,t){e.keys=new Array(16*2);i.equal(t.length,this.blockSize,\"Invalid key length\");var r=a.readUInt32BE(t,0);var n=a.readUInt32BE(t,4);a.pc1(r,n,e.tmp,0);r=e.tmp[0];n=e.tmp[1];for(var s=0;s<e.keys.length;s+=2){var h=o[s>>>1];r=a.r28shl(r,h);n=a.r28shl(n,h);a.pc2(r,n,e.keys,s)}};DES.prototype._update=function _update(e,t,r,i){var n=this._desState;var s=a.readUInt32BE(e,t);var o=a.readUInt32BE(e,t+4);a.ip(s,o,n.tmp,0);s=n.tmp[0];o=n.tmp[1];if(this.type===\"encrypt\")this._encrypt(n,s,o,n.tmp,0);else this._decrypt(n,s,o,n.tmp,0);s=n.tmp[0];o=n.tmp[1];a.writeUInt32BE(r,s,i);a.writeUInt32BE(r,o,i+4)};DES.prototype._pad=function _pad(e,t){var r=e.length-t;for(var i=t;i<e.length;i++)e[i]=r;return true};DES.prototype._unpad=function _unpad(e){var t=e[e.length-1];for(var r=e.length-t;r<e.length;r++)i.equal(e[r],t);return e.slice(0,e.length-t)};DES.prototype._encrypt=function _encrypt(e,t,r,i,n){var s=t;var o=r;for(var h=0;h<e.keys.length;h+=2){var u=e.keys[h];var d=e.keys[h+1];a.expand(o,e.tmp,0);u^=e.tmp[0];d^=e.tmp[1];var c=a.substitute(u,d);var l=a.permute(c);var p=o;o=(s^l)>>>0;s=p}a.rip(o,s,i,n)};DES.prototype._decrypt=function _decrypt(e,t,r,i,n){var s=r;var o=t;for(var h=e.keys.length-2;h>=0;h-=2){var u=e.keys[h];var d=e.keys[h+1];a.expand(s,e.tmp,0);u^=e.tmp[0];d^=e.tmp[1];var c=a.substitute(u,d);var l=a.permute(c);var p=s;s=(o^l)>>>0;o=p}a.rip(s,o,i,n)}},6159:function(e,t,r){\"use strict\";var i=r(3523);var n=r(3782);var a=r(9876);var s=r(1016);function EDEState(e,t){i.equal(t.length,24,\"Invalid key length\");var r=t.slice(0,8);var n=t.slice(8,16);var a=t.slice(16,24);if(e===\"encrypt\"){this.ciphers=[s.create({type:\"encrypt\",key:r}),s.create({type:\"decrypt\",key:n}),s.create({type:\"encrypt\",key:a})]}else{this.ciphers=[s.create({type:\"decrypt\",key:a}),s.create({type:\"encrypt\",key:n}),s.create({type:\"decrypt\",key:r})]}}function EDE(e){a.call(this,e);var t=new EDEState(this.type,this.options.key);this._edeState=t}n(EDE,a);e.exports=EDE;EDE.create=function create(e){return new EDE(e)};EDE.prototype._update=function _update(e,t,r,i){var n=this._edeState;n.ciphers[0]._update(e,t,r,i);n.ciphers[1]._update(r,i,r,i);n.ciphers[2]._update(r,i,r,i)};EDE.prototype._pad=s.prototype._pad;EDE.prototype._unpad=s.prototype._unpad},5334:function(e,t){\"use strict\";t.readUInt32BE=function readUInt32BE(e,t){var r=e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t];return r>>>0};t.writeUInt32BE=function writeUInt32BE(e,t,r){e[0+r]=t>>>24;e[1+r]=t>>>16&255;e[2+r]=t>>>8&255;e[3+r]=t&255};t.ip=function ip(e,t,r,i){var n=0;var a=0;for(var s=6;s>=0;s-=2){for(var o=0;o<=24;o+=8){n<<=1;n|=t>>>o+s&1}for(var o=0;o<=24;o+=8){n<<=1;n|=e>>>o+s&1}}for(var s=6;s>=0;s-=2){for(var o=1;o<=25;o+=8){a<<=1;a|=t>>>o+s&1}for(var o=1;o<=25;o+=8){a<<=1;a|=e>>>o+s&1}}r[i+0]=n>>>0;r[i+1]=a>>>0};t.rip=function rip(e,t,r,i){var n=0;var a=0;for(var s=0;s<4;s++){for(var o=24;o>=0;o-=8){n<<=1;n|=t>>>o+s&1;n<<=1;n|=e>>>o+s&1}}for(var s=4;s<8;s++){for(var o=24;o>=0;o-=8){a<<=1;a|=t>>>o+s&1;a<<=1;a|=e>>>o+s&1}}r[i+0]=n>>>0;r[i+1]=a>>>0};t.pc1=function pc1(e,t,r,i){var n=0;var a=0;for(var s=7;s>=5;s--){for(var o=0;o<=24;o+=8){n<<=1;n|=t>>o+s&1}for(var o=0;o<=24;o+=8){n<<=1;n|=e>>o+s&1}}for(var o=0;o<=24;o+=8){n<<=1;n|=t>>o+s&1}for(var s=1;s<=3;s++){for(var o=0;o<=24;o+=8){a<<=1;a|=t>>o+s&1}for(var o=0;o<=24;o+=8){a<<=1;a|=e>>o+s&1}}for(var o=0;o<=24;o+=8){a<<=1;a|=e>>o+s&1}r[i+0]=n>>>0;r[i+1]=a>>>0};t.r28shl=function r28shl(e,t){return e<<t&268435455|e>>>28-t};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function pc2(e,t,i,n){var a=0;var s=0;var o=r.length>>>1;for(var h=0;h<o;h++){a<<=1;a|=e>>>r[h]&1}for(var h=o;h<r.length;h++){s<<=1;s|=t>>>r[h]&1}i[n+0]=a>>>0;i[n+1]=s>>>0};t.expand=function expand(e,t,r){var i=0;var n=0;i=(e&1)<<5|e>>>27;for(var a=23;a>=15;a-=4){i<<=6;i|=e>>>a&63}for(var a=11;a>=3;a-=4){n|=e>>>a&63;n<<=6}n|=(e&31)<<1|e>>>31;t[r+0]=i>>>0;t[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function substitute(e,t){var r=0;for(var n=0;n<4;n++){var a=e>>>18-n*6&63;var s=i[n*64+a];r<<=4;r|=s}for(var n=0;n<4;n++){var a=t>>>18-n*6&63;var s=i[4*64+n*64+a];r<<=4;r|=s}return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function permute(e){var t=0;for(var r=0;r<n.length;r++){t<<=1;t|=e>>>n[r]&1}return t>>>0};t.padSplit=function padSplit(e,t,r){var i=e.toString(2);while(i.length<t)i=\"0\"+i;var n=[];for(var a=0;a<t;a+=r)n.push(i.slice(a,a+r));return n.join(\" \")}},6587:function(e,t,r){var i=r(296);var n=r(7992);var a=r(373);function getDiffieHellman(e){var t=new Buffer(n[e].prime,\"hex\");var r=new Buffer(n[e].gen,\"hex\");return new a(t,r)}var s={binary:true,hex:true,base64:true};function createDiffieHellman(e,t,r,n){if(Buffer.isBuffer(t)||s[t]===undefined){return createDiffieHellman(e,\"binary\",t,r)}t=t||\"binary\";n=n||\"binary\";r=r||new Buffer([2]);if(!Buffer.isBuffer(r)){r=new Buffer(r,n)}if(typeof e===\"number\"){return new a(i(e,r),r,true)}if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}return new a(e,r,true)}t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=getDiffieHellman;t.createDiffieHellman=t.DiffieHellman=createDiffieHellman},373:function(e,t,r){var i=r(711);var n=r(1354);var a=new n;var s=new i(24);var o=new i(11);var h=new i(10);var u=new i(3);var d=new i(7);var c=r(296);var l=r(7223);e.exports=DH;function setPublicKey(e,t){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}this._pub=new i(e);return this}function setPrivateKey(e,t){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}this._priv=new i(e);return this}var p={};function checkPrime(e,t){var r=t.toString(\"hex\");var i=[r,e.toString(16)].join(\"_\");if(i in p){return p[i]}var n=0;if(e.isEven()||!c.simpleSieve||!c.fermatTest(e)||!a.test(e)){n+=1;if(r===\"02\"||r===\"05\"){n+=8}else{n+=4}p[i]=n;return n}if(!a.test(e.shrn(1))){n+=2}var l;switch(r){case\"02\":if(e.mod(s).cmp(o)){n+=8}break;case\"05\":l=e.mod(h);if(l.cmp(u)&&l.cmp(d)){n+=8}break;default:n+=4}p[i]=n;return n}function DH(e,t,r){this.setGenerator(t);this.__prime=new i(e);this._prime=i.mont(this.__prime);this._primeLen=e.length;this._pub=undefined;this._priv=undefined;this._primeCode=undefined;if(r){this.setPublicKey=setPublicKey;this.setPrivateKey=setPrivateKey}else{this._primeCode=8}}Object.defineProperty(DH.prototype,\"verifyError\",{enumerable:true,get:function(){if(typeof this._primeCode!==\"number\"){this._primeCode=checkPrime(this.__prime,this.__gen)}return this._primeCode}});DH.prototype.generateKeys=function(){if(!this._priv){this._priv=new i(l(this._primeLen))}this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed();return this.getPublicKey()};DH.prototype.computeSecret=function(e){e=new i(e);e=e.toRed(this._prime);var t=e.redPow(this._priv).fromRed();var r=new Buffer(t.toArray());var n=this.getPrime();if(r.length<n.length){var a=new Buffer(n.length-r.length);a.fill(0);r=Buffer.concat([a,r])}return r};DH.prototype.getPublicKey=function getPublicKey(e){return formatReturnValue(this._pub,e)};DH.prototype.getPrivateKey=function getPrivateKey(e){return formatReturnValue(this._priv,e)};DH.prototype.getPrime=function(e){return formatReturnValue(this.__prime,e)};DH.prototype.getGenerator=function(e){return formatReturnValue(this._gen,e)};DH.prototype.setGenerator=function(e,t){t=t||\"utf8\";if(!Buffer.isBuffer(e)){e=new Buffer(e,t)}this.__gen=e;this._gen=new i(e);return this};function formatReturnValue(e,t){var r=new Buffer(e.toArray());if(!t){return r}else{return r.toString(t)}}},296:function(e,t,r){var i=r(7223);e.exports=findPrime;findPrime.simpleSieve=simpleSieve;findPrime.fermatTest=fermatTest;var n=r(711);var a=new n(24);var s=r(1354);var o=new s;var h=new n(1);var u=new n(2);var d=new n(5);var c=new n(16);var l=new n(8);var p=new n(10);var v=new n(3);var b=new n(7);var m=new n(11);var y=new n(4);var g=new n(12);var _=null;function _getPrimes(){if(_!==null)return _;var e=1048576;var t=[];t[0]=2;for(var r=1,i=3;i<e;i+=2){var n=Math.ceil(Math.sqrt(i));for(var a=0;a<r&&t[a]<=n;a++)if(i%t[a]===0)break;if(r!==a&&t[a]<=n)continue;t[r++]=i}_=t;return t}function simpleSieve(e){var t=_getPrimes();for(var r=0;r<t.length;r++)if(e.modn(t[r])===0){if(e.cmpn(t[r])===0){return true}else{return false}}return true}function fermatTest(e){var t=n.mont(e);return u.toRed(t).redPow(e.subn(1)).fromRed().cmpn(1)===0}function findPrime(e,t){if(e<16){if(t===2||t===5){return new n([140,123])}else{return new n([140,39])}}t=new n(t);var r,s;while(true){r=new n(i(Math.ceil(e/8)));while(r.bitLength()>e){r.ishrn(1)}if(r.isEven()){r.iadd(h)}if(!r.testn(1)){r.iadd(u)}if(!t.cmp(u)){while(r.mod(a).cmp(m)){r.iadd(y)}}else if(!t.cmp(d)){while(r.mod(p).cmp(v)){r.iadd(y)}}s=r.shrn(1);if(simpleSieve(s)&&simpleSieve(r)&&fermatTest(s)&&fermatTest(r)&&o.test(s)&&o.test(r)){return r}}}},949:function(e,t,r){\"use strict\";var i=t;i.version=r(2531).i8;i.utils=r(4401);i.rand=r(3500);i.curve=r(9359);i.curves=r(6226);i.ec=r(4088);i.eddsa=r(8511)},2727:function(e,t,r){\"use strict\";var i=r(711);var n=r(4401);var a=n.getNAF;var s=n.getJSF;var o=n.assert;function BaseCurve(e,t){this.type=e;this.p=new i(t.p,16);this.red=t.prime?i.red(t.prime):i.mont(this.p);this.zero=new i(0).toRed(this.red);this.one=new i(1).toRed(this.red);this.two=new i(2).toRed(this.red);this.n=t.n&&new i(t.n,16);this.g=t.g&&this.pointFromJSON(t.g,t.gRed);this._wnafT1=new Array(4);this._wnafT2=new Array(4);this._wnafT3=new Array(4);this._wnafT4=new Array(4);this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);if(!r||r.cmpn(100)>0){this.redN=null}else{this._maxwellTrick=true;this.redN=this.n.toRed(this.red)}}e.exports=BaseCurve;BaseCurve.prototype.point=function point(){throw new Error(\"Not implemented\")};BaseCurve.prototype.validate=function validate(){throw new Error(\"Not implemented\")};BaseCurve.prototype._fixedNafMul=function _fixedNafMul(e,t){o(e.precomputed);var r=e._getDoubles();var i=a(t,1,this._bitLength);var n=(1<<r.step+1)-(r.step%2===0?2:1);n/=3;var s=[];for(var h=0;h<i.length;h+=r.step){var u=0;for(var t=h+r.step-1;t>=h;t--)u=(u<<1)+i[t];s.push(u)}var d=this.jpoint(null,null,null);var c=this.jpoint(null,null,null);for(var l=n;l>0;l--){for(var h=0;h<s.length;h++){var u=s[h];if(u===l)c=c.mixedAdd(r.points[h]);else if(u===-l)c=c.mixedAdd(r.points[h].neg())}d=d.add(c)}return d.toP()};BaseCurve.prototype._wnafMul=function _wnafMul(e,t){var r=4;var i=e._getNAFPoints(r);r=i.wnd;var n=i.points;var s=a(t,r,this._bitLength);var h=this.jpoint(null,null,null);for(var u=s.length-1;u>=0;u--){for(var t=0;u>=0&&s[u]===0;u--)t++;if(u>=0)t++;h=h.dblp(t);if(u<0)break;var d=s[u];o(d!==0);if(e.type===\"affine\"){if(d>0)h=h.mixedAdd(n[d-1>>1]);else h=h.mixedAdd(n[-d-1>>1].neg())}else{if(d>0)h=h.add(n[d-1>>1]);else h=h.add(n[-d-1>>1].neg())}}return e.type===\"affine\"?h.toP():h};BaseCurve.prototype._wnafMulAdd=function _wnafMulAdd(e,t,r,i,n){var o=this._wnafT1;var h=this._wnafT2;var u=this._wnafT3;var d=0;for(var c=0;c<i;c++){var l=t[c];var p=l._getNAFPoints(e);o[c]=p.wnd;h[c]=p.points}for(var c=i-1;c>=1;c-=2){var v=c-1;var b=c;if(o[v]!==1||o[b]!==1){u[v]=a(r[v],o[v],this._bitLength);u[b]=a(r[b],o[b],this._bitLength);d=Math.max(u[v].length,d);d=Math.max(u[b].length,d);continue}var m=[t[v],null,null,t[b]];if(t[v].y.cmp(t[b].y)===0){m[1]=t[v].add(t[b]);m[2]=t[v].toJ().mixedAdd(t[b].neg())}else if(t[v].y.cmp(t[b].y.redNeg())===0){m[1]=t[v].toJ().mixedAdd(t[b]);m[2]=t[v].add(t[b].neg())}else{m[1]=t[v].toJ().mixedAdd(t[b]);m[2]=t[v].toJ().mixedAdd(t[b].neg())}var y=[-3,-1,-5,-7,0,7,5,1,3];var g=s(r[v],r[b]);d=Math.max(g[0].length,d);u[v]=new Array(d);u[b]=new Array(d);for(var _=0;_<d;_++){var w=g[0][_]|0;var M=g[1][_]|0;u[v][_]=y[(w+1)*3+(M+1)];u[b][_]=0;h[v]=m}}var B=this.jpoint(null,null,null);var E=this._wnafT4;for(var c=d;c>=0;c--){var k=0;while(c>=0){var A=true;for(var _=0;_<i;_++){E[_]=u[_][c]|0;if(E[_]!==0)A=false}if(!A)break;k++;c--}if(c>=0)k++;B=B.dblp(k);if(c<0)break;for(var _=0;_<i;_++){var N=E[_];var l;if(N===0)continue;else if(N>0)l=h[_][N-1>>1];else if(N<0)l=h[_][-N-1>>1].neg();if(l.type===\"affine\")B=B.mixedAdd(l);else B=B.add(l)}}for(var c=0;c<i;c++)h[c]=null;if(n)return B;else return B.toP()};function BasePoint(e,t){this.curve=e;this.type=t;this.precomputed=null}BaseCurve.BasePoint=BasePoint;BasePoint.prototype.eq=function eq(){throw new Error(\"Not implemented\")};BasePoint.prototype.validate=function validate(){return this.curve.validate(this)};BaseCurve.prototype.decodePoint=function decodePoint(e,t){e=n.toArray(e,t);var r=this.p.byteLength();if((e[0]===4||e[0]===6||e[0]===7)&&e.length-1===2*r){if(e[0]===6)o(e[e.length-1]%2===0);else if(e[0]===7)o(e[e.length-1]%2===1);var i=this.point(e.slice(1,1+r),e.slice(1+r,1+2*r));return i}else if((e[0]===2||e[0]===3)&&e.length-1===r){return this.pointFromX(e.slice(1,1+r),e[0]===3)}throw new Error(\"Unknown point format\")};BasePoint.prototype.encodeCompressed=function encodeCompressed(e){return this.encode(e,true)};BasePoint.prototype._encode=function _encode(e){var t=this.curve.p.byteLength();var r=this.getX().toArray(\"be\",t);if(e)return[this.getY().isEven()?2:3].concat(r);return[4].concat(r,this.getY().toArray(\"be\",t))};BasePoint.prototype.encode=function encode(e,t){return n.encode(this._encode(t),e)};BasePoint.prototype.precompute=function precompute(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};t.naf=this._getNAFPoints(8);t.doubles=this._getDoubles(4,e);t.beta=this._getBeta();this.precomputed=t;return this};BasePoint.prototype._hasDoubles=function _hasDoubles(e){if(!this.precomputed)return false;var t=this.precomputed.doubles;if(!t)return false;return t.points.length>=Math.ceil((e.bitLength()+1)/t.step)};BasePoint.prototype._getDoubles=function _getDoubles(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;var r=[this];var i=this;for(var n=0;n<t;n+=e){for(var a=0;a<e;a++)i=i.dbl();r.push(i)}return{step:e,points:r}};BasePoint.prototype._getNAFPoints=function _getNAFPoints(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;var t=[this];var r=(1<<e)-1;var i=r===1?null:this.dbl();for(var n=1;n<r;n++)t[n]=t[n-1].add(i);return{wnd:e,points:t}};BasePoint.prototype._getBeta=function _getBeta(){return null};BasePoint.prototype.dblp=function dblp(e){var t=this;for(var r=0;r<e;r++)t=t.dbl();return t}},2705:function(e,t,r){\"use strict\";var i=r(4401);var n=r(711);var a=r(3782);var s=r(2727);var o=i.assert;function EdwardsCurve(e){this.twisted=(e.a|0)!==1;this.mOneA=this.twisted&&(e.a|0)===-1;this.extended=this.mOneA;s.call(this,\"edwards\",e);this.a=new n(e.a,16).umod(this.red.m);this.a=this.a.toRed(this.red);this.c=new n(e.c,16).toRed(this.red);this.c2=this.c.redSqr();this.d=new n(e.d,16).toRed(this.red);this.dd=this.d.redAdd(this.d);o(!this.twisted||this.c.fromRed().cmpn(1)===0);this.oneC=(e.c|0)===1}a(EdwardsCurve,s);e.exports=EdwardsCurve;EdwardsCurve.prototype._mulA=function _mulA(e){if(this.mOneA)return e.redNeg();else return this.a.redMul(e)};EdwardsCurve.prototype._mulC=function _mulC(e){if(this.oneC)return e;else return this.c.redMul(e)};EdwardsCurve.prototype.jpoint=function jpoint(e,t,r,i){return this.point(e,t,r,i)};EdwardsCurve.prototype.pointFromX=function pointFromX(e,t){e=new n(e,16);if(!e.red)e=e.toRed(this.red);var r=e.redSqr();var i=this.c2.redSub(this.a.redMul(r));var a=this.one.redSub(this.c2.redMul(this.d).redMul(r));var s=i.redMul(a.redInvm());var o=s.redSqrt();if(o.redSqr().redSub(s).cmp(this.zero)!==0)throw new Error(\"invalid point\");var h=o.fromRed().isOdd();if(t&&!h||!t&&h)o=o.redNeg();return this.point(e,o)};EdwardsCurve.prototype.pointFromY=function pointFromY(e,t){e=new n(e,16);if(!e.red)e=e.toRed(this.red);var r=e.redSqr();var i=r.redSub(this.c2);var a=r.redMul(this.d).redMul(this.c2).redSub(this.a);var s=i.redMul(a.redInvm());if(s.cmp(this.zero)===0){if(t)throw new Error(\"invalid point\");else return this.point(this.zero,e)}var o=s.redSqrt();if(o.redSqr().redSub(s).cmp(this.zero)!==0)throw new Error(\"invalid point\");if(o.fromRed().isOdd()!==t)o=o.redNeg();return this.point(o,e)};EdwardsCurve.prototype.validate=function validate(e){if(e.isInfinity())return true;e.normalize();var t=e.x.redSqr();var r=e.y.redSqr();var i=t.redMul(this.a).redAdd(r);var n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return i.cmp(n)===0};function Point(e,t,r,i,a){s.BasePoint.call(this,e,\"projective\");if(t===null&&r===null&&i===null){this.x=this.curve.zero;this.y=this.curve.one;this.z=this.curve.one;this.t=this.curve.zero;this.zOne=true}else{this.x=new n(t,16);this.y=new n(r,16);this.z=i?new n(i,16):this.curve.one;this.t=a&&new n(a,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);if(this.t&&!this.t.red)this.t=this.t.toRed(this.curve.red);this.zOne=this.z===this.curve.one;if(this.curve.extended&&!this.t){this.t=this.x.redMul(this.y);if(!this.zOne)this.t=this.t.redMul(this.z.redInvm())}}}a(Point,s.BasePoint);EdwardsCurve.prototype.pointFromJSON=function pointFromJSON(e){return Point.fromJSON(this,e)};EdwardsCurve.prototype.point=function point(e,t,r,i){return new Point(this,e,t,r,i)};Point.fromJSON=function fromJSON(e,t){return new Point(e,t[0],t[1],t[2])};Point.prototype.inspect=function inspect(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function isInfinity(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Point.prototype._extDbl=function _extDbl(){var e=this.x.redSqr();var t=this.y.redSqr();var r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e);var n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t);var a=i.redAdd(t);var s=a.redSub(r);var o=i.redSub(t);var h=n.redMul(s);var u=a.redMul(o);var d=n.redMul(o);var c=s.redMul(a);return this.curve.point(h,u,c,d)};Point.prototype._projDbl=function _projDbl(){var e=this.x.redAdd(this.y).redSqr();var t=this.x.redSqr();var r=this.y.redSqr();var i;var n;var a;if(this.curve.twisted){var s=this.curve._mulA(t);var o=s.redAdd(r);if(this.zOne){i=e.redSub(t).redSub(r).redMul(o.redSub(this.curve.two));n=o.redMul(s.redSub(r));a=o.redSqr().redSub(o).redSub(o)}else{var h=this.z.redSqr();var u=o.redSub(h).redISub(h);i=e.redSub(t).redISub(r).redMul(u);n=o.redMul(s.redSub(r));a=o.redMul(u)}}else{var s=t.redAdd(r);var h=this.curve._mulC(this.z).redSqr();var u=s.redSub(h).redSub(h);i=this.curve._mulC(e.redISub(s)).redMul(u);n=this.curve._mulC(s).redMul(t.redISub(r));a=s.redMul(u)}return this.curve.point(i,n,a)};Point.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.extended)return this._extDbl();else return this._projDbl()};Point.prototype._extAdd=function _extAdd(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x));var r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x));var i=this.t.redMul(this.curve.dd).redMul(e.t);var n=this.z.redMul(e.z.redAdd(e.z));var a=r.redSub(t);var s=n.redSub(i);var o=n.redAdd(i);var h=r.redAdd(t);var u=a.redMul(s);var d=o.redMul(h);var c=a.redMul(h);var l=s.redMul(o);return this.curve.point(u,d,l,c)};Point.prototype._projAdd=function _projAdd(e){var t=this.z.redMul(e.z);var r=t.redSqr();var i=this.x.redMul(e.x);var n=this.y.redMul(e.y);var a=this.curve.d.redMul(i).redMul(n);var s=r.redSub(a);var o=r.redAdd(a);var h=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(n);var u=t.redMul(s).redMul(h);var d;var c;if(this.curve.twisted){d=t.redMul(o).redMul(n.redSub(this.curve._mulA(i)));c=s.redMul(o)}else{d=t.redMul(o).redMul(n.redSub(i));c=this.curve._mulC(s).redMul(o)}return this.curve.point(u,d,c)};Point.prototype.add=function add(e){if(this.isInfinity())return e;if(e.isInfinity())return this;if(this.curve.extended)return this._extAdd(e);else return this._projAdd(e)};Point.prototype.mul=function mul(e){if(this._hasDoubles(e))return this.curve._fixedNafMul(this,e);else return this.curve._wnafMul(this,e)};Point.prototype.mulAdd=function mulAdd(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,false)};Point.prototype.jmulAdd=function jmulAdd(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,true)};Point.prototype.normalize=function normalize(){if(this.zOne)return this;var e=this.z.redInvm();this.x=this.x.redMul(e);this.y=this.y.redMul(e);if(this.t)this.t=this.t.redMul(e);this.z=this.curve.one;this.zOne=true;return this};Point.prototype.neg=function neg(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()};Point.prototype.getY=function getY(){this.normalize();return this.y.fromRed()};Point.prototype.eq=function eq(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};Point.prototype.eqXToP=function eqXToP(e){var t=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(t)===0)return true;var r=e.clone();var i=this.curve.redN.redMul(this.z);for(;;){r.iadd(this.curve.n);if(r.cmp(this.curve.p)>=0)return false;t.redIAdd(i);if(this.x.cmp(t)===0)return true}};Point.prototype.toP=Point.prototype.normalize;Point.prototype.mixedAdd=Point.prototype.add},9359:function(e,t,r){\"use strict\";var i=t;i.base=r(2727);i.short=r(4720);i.mont=r(6653);i.edwards=r(2705)},6653:function(e,t,r){\"use strict\";var i=r(711);var n=r(3782);var a=r(2727);var s=r(4401);function MontCurve(e){a.call(this,\"mont\",e);this.a=new i(e.a,16).toRed(this.red);this.b=new i(e.b,16).toRed(this.red);this.i4=new i(4).toRed(this.red).redInvm();this.two=new i(2).toRed(this.red);this.a24=this.i4.redMul(this.a.redAdd(this.two))}n(MontCurve,a);e.exports=MontCurve;MontCurve.prototype.validate=function validate(e){var t=e.normalize().x;var r=t.redSqr();var i=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);var n=i.redSqrt();return n.redSqr().cmp(i)===0};function Point(e,t,r){a.BasePoint.call(this,e,\"projective\");if(t===null&&r===null){this.x=this.curve.one;this.z=this.curve.zero}else{this.x=new i(t,16);this.z=new i(r,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red)}}n(Point,a.BasePoint);MontCurve.prototype.decodePoint=function decodePoint(e,t){return this.point(s.toArray(e,t),1)};MontCurve.prototype.point=function point(e,t){return new Point(this,e,t)};MontCurve.prototype.pointFromJSON=function pointFromJSON(e){return Point.fromJSON(this,e)};Point.prototype.precompute=function precompute(){};Point.prototype._encode=function _encode(){return this.getX().toArray(\"be\",this.curve.p.byteLength())};Point.fromJSON=function fromJSON(e,t){return new Point(e,t[0],t[1]||e.one)};Point.prototype.inspect=function inspect(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0};Point.prototype.dbl=function dbl(){var e=this.x.redAdd(this.z);var t=e.redSqr();var r=this.x.redSub(this.z);var i=r.redSqr();var n=t.redSub(i);var a=t.redMul(i);var s=n.redMul(i.redAdd(this.curve.a24.redMul(n)));return this.curve.point(a,s)};Point.prototype.add=function add(){throw new Error(\"Not supported on Montgomery curve\")};Point.prototype.diffAdd=function diffAdd(e,t){var r=this.x.redAdd(this.z);var i=this.x.redSub(this.z);var n=e.x.redAdd(e.z);var a=e.x.redSub(e.z);var s=a.redMul(r);var o=n.redMul(i);var h=t.z.redMul(s.redAdd(o).redSqr());var u=t.x.redMul(s.redISub(o).redSqr());return this.curve.point(h,u)};Point.prototype.mul=function mul(e){var t=e.clone();var r=this;var i=this.curve.point(null,null);var n=this;for(var a=[];t.cmpn(0)!==0;t.iushrn(1))a.push(t.andln(1));for(var s=a.length-1;s>=0;s--){if(a[s]===0){r=r.diffAdd(i,n);i=i.dbl()}else{i=r.diffAdd(i,n);r=r.dbl()}}return i};Point.prototype.mulAdd=function mulAdd(){throw new Error(\"Not supported on Montgomery curve\")};Point.prototype.jumlAdd=function jumlAdd(){throw new Error(\"Not supported on Montgomery curve\")};Point.prototype.eq=function eq(e){return this.getX().cmp(e.getX())===0};Point.prototype.normalize=function normalize(){this.x=this.x.redMul(this.z.redInvm());this.z=this.curve.one;return this};Point.prototype.getX=function getX(){this.normalize();return this.x.fromRed()}},4720:function(e,t,r){\"use strict\";var i=r(4401);var n=r(711);var a=r(3782);var s=r(2727);var o=i.assert;function ShortCurve(e){s.call(this,\"short\",e);this.a=new n(e.a,16).toRed(this.red);this.b=new n(e.b,16).toRed(this.red);this.tinv=this.two.redInvm();this.zeroA=this.a.fromRed().cmpn(0)===0;this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0;this.endo=this._getEndomorphism(e);this._endoWnafT1=new Array(4);this._endoWnafT2=new Array(4)}a(ShortCurve,s);e.exports=ShortCurve;ShortCurve.prototype._getEndomorphism=function _getEndomorphism(e){if(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)return;var t;var r;if(e.beta){t=new n(e.beta,16).toRed(this.red)}else{var i=this._getEndoRoots(this.p);t=i[0].cmp(i[1])<0?i[0]:i[1];t=t.toRed(this.red)}if(e.lambda){r=new n(e.lambda,16)}else{var a=this._getEndoRoots(this.n);if(this.g.mul(a[0]).x.cmp(this.g.x.redMul(t))===0){r=a[0]}else{r=a[1];o(this.g.mul(r).x.cmp(this.g.x.redMul(t))===0)}}var s;if(e.basis){s=e.basis.map((function(e){return{a:new n(e.a,16),b:new n(e.b,16)}}))}else{s=this._getEndoBasis(r)}return{beta:t,lambda:r,basis:s}};ShortCurve.prototype._getEndoRoots=function _getEndoRoots(e){var t=e===this.p?this.red:n.mont(e);var r=new n(2).toRed(t).redInvm();var i=r.redNeg();var a=new n(3).toRed(t).redNeg().redSqrt().redMul(r);var s=i.redAdd(a).fromRed();var o=i.redSub(a).fromRed();return[s,o]};ShortCurve.prototype._getEndoBasis=function _getEndoBasis(e){var t=this.n.ushrn(Math.floor(this.n.bitLength()/2));var r=e;var i=this.n.clone();var a=new n(1);var s=new n(0);var o=new n(0);var h=new n(1);var u;var d;var c;var l;var p;var v;var b;var m=0;var y;var g;while(r.cmpn(0)!==0){var _=i.div(r);y=i.sub(_.mul(r));g=o.sub(_.mul(a));var w=h.sub(_.mul(s));if(!c&&y.cmp(t)<0){u=b.neg();d=a;c=y.neg();l=g}else if(c&&++m===2){break}b=y;i=r;r=y;o=a;a=g;h=s;s=w}p=y.neg();v=g;var M=c.sqr().add(l.sqr());var B=p.sqr().add(v.sqr());if(B.cmp(M)>=0){p=u;v=d}if(c.negative){c=c.neg();l=l.neg()}if(p.negative){p=p.neg();v=v.neg()}return[{a:c,b:l},{a:p,b:v}]};ShortCurve.prototype._endoSplit=function _endoSplit(e){var t=this.endo.basis;var r=t[0];var i=t[1];var n=i.b.mul(e).divRound(this.n);var a=r.b.neg().mul(e).divRound(this.n);var s=n.mul(r.a);var o=a.mul(i.a);var h=n.mul(r.b);var u=a.mul(i.b);var d=e.sub(s).sub(o);var c=h.add(u).neg();return{k1:d,k2:c}};ShortCurve.prototype.pointFromX=function pointFromX(e,t){e=new n(e,16);if(!e.red)e=e.toRed(this.red);var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b);var i=r.redSqrt();if(i.redSqr().redSub(r).cmp(this.zero)!==0)throw new Error(\"invalid point\");var a=i.fromRed().isOdd();if(t&&!a||!t&&a)i=i.redNeg();return this.point(e,i)};ShortCurve.prototype.validate=function validate(e){if(e.inf)return true;var t=e.x;var r=e.y;var i=this.a.redMul(t);var n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return r.redSqr().redISub(n).cmpn(0)===0};ShortCurve.prototype._endoWnafMulAdd=function _endoWnafMulAdd(e,t,r){var i=this._endoWnafT1;var n=this._endoWnafT2;for(var a=0;a<e.length;a++){var s=this._endoSplit(t[a]);var o=e[a];var h=o._getBeta();if(s.k1.negative){s.k1.ineg();o=o.neg(true)}if(s.k2.negative){s.k2.ineg();h=h.neg(true)}i[a*2]=o;i[a*2+1]=h;n[a*2]=s.k1;n[a*2+1]=s.k2}var u=this._wnafMulAdd(1,i,n,a*2,r);for(var d=0;d<a*2;d++){i[d]=null;n[d]=null}return u};function Point(e,t,r,i){s.BasePoint.call(this,e,\"affine\");if(t===null&&r===null){this.x=null;this.y=null;this.inf=true}else{this.x=new n(t,16);this.y=new n(r,16);if(i){this.x.forceRed(this.curve.red);this.y.forceRed(this.curve.red)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);this.inf=false}}a(Point,s.BasePoint);ShortCurve.prototype.point=function point(e,t,r){return new Point(this,e,t,r)};ShortCurve.prototype.pointFromJSON=function pointFromJSON(e,t){return Point.fromJSON(this,e,t)};Point.prototype._getBeta=function _getBeta(){if(!this.curve.endo)return;var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var r=this.curve;var endoMul=function(e){return r.point(e.x.redMul(r.endo.beta),e.y)};e.beta=t;t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(endoMul)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(endoMul)}}}return t};Point.prototype.toJSON=function toJSON(){if(!this.precomputed)return[this.x,this.y];return[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]};Point.fromJSON=function fromJSON(e,t,r){if(typeof t===\"string\")t=JSON.parse(t);var i=e.point(t[0],t[1],r);if(!t[2])return i;function obj2point(t){return e.point(t[0],t[1],r)}var n=t[2];i.precomputed={beta:null,doubles:n.doubles&&{step:n.doubles.step,points:[i].concat(n.doubles.points.map(obj2point))},naf:n.naf&&{wnd:n.naf.wnd,points:[i].concat(n.naf.points.map(obj2point))}};return i};Point.prototype.inspect=function inspect(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function isInfinity(){return this.inf};Point.prototype.add=function add(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var t=this.y.redSub(e.y);if(t.cmpn(0)!==0)t=t.redMul(this.x.redSub(e.x).redInvm());var r=t.redSqr().redISub(this.x).redISub(e.x);var i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)};Point.prototype.dbl=function dbl(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var t=this.curve.a;var r=this.x.redSqr();var i=e.redInvm();var n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i);var a=n.redSqr().redISub(this.x.redAdd(this.x));var s=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,s)};Point.prototype.getX=function getX(){return this.x.fromRed()};Point.prototype.getY=function getY(){return this.y.fromRed()};Point.prototype.mul=function mul(e){e=new n(e,16);if(this.isInfinity())return this;else if(this._hasDoubles(e))return this.curve._fixedNafMul(this,e);else if(this.curve.endo)return this.curve._endoWnafMulAdd([this],[e]);else return this.curve._wnafMul(this,e)};Point.prototype.mulAdd=function mulAdd(e,t,r){var i=[this,t];var n=[e,r];if(this.curve.endo)return this.curve._endoWnafMulAdd(i,n);else return this.curve._wnafMulAdd(1,i,n,2)};Point.prototype.jmulAdd=function jmulAdd(e,t,r){var i=[this,t];var n=[e,r];if(this.curve.endo)return this.curve._endoWnafMulAdd(i,n,true);else return this.curve._wnafMulAdd(1,i,n,2,true)};Point.prototype.eq=function eq(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};Point.prototype.neg=function neg(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed;var negate=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(negate)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(negate)}}}return t};Point.prototype.toJ=function toJ(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function JPoint(e,t,r,i){s.BasePoint.call(this,e,\"jacobian\");if(t===null&&r===null&&i===null){this.x=this.curve.one;this.y=this.curve.one;this.z=new n(0)}else{this.x=new n(t,16);this.y=new n(r,16);this.z=new n(i,16)}if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);this.zOne=this.z===this.curve.one}a(JPoint,s.BasePoint);ShortCurve.prototype.jpoint=function jpoint(e,t,r){return new JPoint(this,e,t,r)};JPoint.prototype.toP=function toP(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm();var t=e.redSqr();var r=this.x.redMul(t);var i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)};JPoint.prototype.neg=function neg(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};JPoint.prototype.add=function add(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr();var r=this.z.redSqr();var i=this.x.redMul(t);var n=e.x.redMul(r);var a=this.y.redMul(t.redMul(e.z));var s=e.y.redMul(r.redMul(this.z));var o=i.redSub(n);var h=a.redSub(s);if(o.cmpn(0)===0){if(h.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var u=o.redSqr();var d=u.redMul(o);var c=i.redMul(u);var l=h.redSqr().redIAdd(d).redISub(c).redISub(c);var p=h.redMul(c.redISub(l)).redISub(a.redMul(d));var v=this.z.redMul(e.z).redMul(o);return this.curve.jpoint(l,p,v)};JPoint.prototype.mixedAdd=function mixedAdd(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr();var r=this.x;var i=e.x.redMul(t);var n=this.y;var a=e.y.redMul(t).redMul(this.z);var s=r.redSub(i);var o=n.redSub(a);if(s.cmpn(0)===0){if(o.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl()}var h=s.redSqr();var u=h.redMul(s);var d=r.redMul(h);var c=o.redSqr().redIAdd(u).redISub(d).redISub(d);var l=o.redMul(d.redISub(c)).redISub(n.redMul(u));var p=this.z.redMul(s);return this.curve.jpoint(c,l,p)};JPoint.prototype.dblp=function dblp(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){var t=this;for(var r=0;r<e;r++)t=t.dbl();return t}var i=this.curve.a;var n=this.curve.tinv;var a=this.x;var s=this.y;var o=this.z;var h=o.redSqr().redSqr();var u=s.redAdd(s);for(var r=0;r<e;r++){var d=a.redSqr();var c=u.redSqr();var l=c.redSqr();var p=d.redAdd(d).redIAdd(d).redIAdd(i.redMul(h));var v=a.redMul(c);var b=p.redSqr().redISub(v.redAdd(v));var m=v.redISub(b);var y=p.redMul(m);y=y.redIAdd(y).redISub(l);var g=u.redMul(o);if(r+1<e)h=h.redMul(l);a=b;o=g;u=y}return this.curve.jpoint(a,u.redMul(n),o)};JPoint.prototype.dbl=function dbl(){if(this.isInfinity())return this;if(this.curve.zeroA)return this._zeroDbl();else if(this.curve.threeA)return this._threeDbl();else return this._dbl()};JPoint.prototype._zeroDbl=function _zeroDbl(){var e;var t;var r;if(this.zOne){var i=this.x.redSqr();var n=this.y.redSqr();var a=n.redSqr();var s=this.x.redAdd(n).redSqr().redISub(i).redISub(a);s=s.redIAdd(s);var o=i.redAdd(i).redIAdd(i);var h=o.redSqr().redISub(s).redISub(s);var u=a.redIAdd(a);u=u.redIAdd(u);u=u.redIAdd(u);e=h;t=o.redMul(s.redISub(h)).redISub(u);r=this.y.redAdd(this.y)}else{var d=this.x.redSqr();var c=this.y.redSqr();var l=c.redSqr();var p=this.x.redAdd(c).redSqr().redISub(d).redISub(l);p=p.redIAdd(p);var v=d.redAdd(d).redIAdd(d);var b=v.redSqr();var m=l.redIAdd(l);m=m.redIAdd(m);m=m.redIAdd(m);e=b.redISub(p).redISub(p);t=v.redMul(p.redISub(e)).redISub(m);r=this.y.redMul(this.z);r=r.redIAdd(r)}return this.curve.jpoint(e,t,r)};JPoint.prototype._threeDbl=function _threeDbl(){var e;var t;var r;if(this.zOne){var i=this.x.redSqr();var n=this.y.redSqr();var a=n.redSqr();var s=this.x.redAdd(n).redSqr().redISub(i).redISub(a);s=s.redIAdd(s);var o=i.redAdd(i).redIAdd(i).redIAdd(this.curve.a);var h=o.redSqr().redISub(s).redISub(s);e=h;var u=a.redIAdd(a);u=u.redIAdd(u);u=u.redIAdd(u);t=o.redMul(s.redISub(h)).redISub(u);r=this.y.redAdd(this.y)}else{var d=this.z.redSqr();var c=this.y.redSqr();var l=this.x.redMul(c);var p=this.x.redSub(d).redMul(this.x.redAdd(d));p=p.redAdd(p).redIAdd(p);var v=l.redIAdd(l);v=v.redIAdd(v);var b=v.redAdd(v);e=p.redSqr().redISub(b);r=this.y.redAdd(this.z).redSqr().redISub(c).redISub(d);var m=c.redSqr();m=m.redIAdd(m);m=m.redIAdd(m);m=m.redIAdd(m);t=p.redMul(v.redISub(e)).redISub(m)}return this.curve.jpoint(e,t,r)};JPoint.prototype._dbl=function _dbl(){var e=this.curve.a;var t=this.x;var r=this.y;var i=this.z;var n=i.redSqr().redSqr();var a=t.redSqr();var s=r.redSqr();var o=a.redAdd(a).redIAdd(a).redIAdd(e.redMul(n));var h=t.redAdd(t);h=h.redIAdd(h);var u=h.redMul(s);var d=o.redSqr().redISub(u.redAdd(u));var c=u.redISub(d);var l=s.redSqr();l=l.redIAdd(l);l=l.redIAdd(l);l=l.redIAdd(l);var p=o.redMul(c).redISub(l);var v=r.redAdd(r).redMul(i);return this.curve.jpoint(d,p,v)};JPoint.prototype.trpl=function trpl(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr();var t=this.y.redSqr();var r=this.z.redSqr();var i=t.redSqr();var n=e.redAdd(e).redIAdd(e);var a=n.redSqr();var s=this.x.redAdd(t).redSqr().redISub(e).redISub(i);s=s.redIAdd(s);s=s.redAdd(s).redIAdd(s);s=s.redISub(a);var o=s.redSqr();var h=i.redIAdd(i);h=h.redIAdd(h);h=h.redIAdd(h);h=h.redIAdd(h);var u=n.redIAdd(s).redSqr().redISub(a).redISub(o).redISub(h);var d=t.redMul(u);d=d.redIAdd(d);d=d.redIAdd(d);var c=this.x.redMul(o).redISub(d);c=c.redIAdd(c);c=c.redIAdd(c);var l=this.y.redMul(u.redMul(h.redISub(u)).redISub(s.redMul(o)));l=l.redIAdd(l);l=l.redIAdd(l);l=l.redIAdd(l);var p=this.z.redAdd(s).redSqr().redISub(r).redISub(o);return this.curve.jpoint(c,l,p)};JPoint.prototype.mul=function mul(e,t){e=new n(e,t);return this.curve._wnafMul(this,e)};JPoint.prototype.eq=function eq(e){if(e.type===\"affine\")return this.eq(e.toJ());if(this===e)return true;var t=this.z.redSqr();var r=e.z.redSqr();if(this.x.redMul(r).redISub(e.x.redMul(t)).cmpn(0)!==0)return false;var i=t.redMul(this.z);var n=r.redMul(e.z);return this.y.redMul(n).redISub(e.y.redMul(i)).cmpn(0)===0};JPoint.prototype.eqXToP=function eqXToP(e){var t=this.z.redSqr();var r=e.toRed(this.curve.red).redMul(t);if(this.x.cmp(r)===0)return true;var i=e.clone();var n=this.curve.redN.redMul(t);for(;;){i.iadd(this.curve.n);if(i.cmp(this.curve.p)>=0)return false;r.redIAdd(n);if(this.x.cmp(r)===0)return true}};JPoint.prototype.inspect=function inspect(){if(this.isInfinity())return\"<EC JPoint Infinity>\";return\"<EC JPoint x: \"+this.x.toString(16,2)+\" y: \"+this.y.toString(16,2)+\" z: \"+this.z.toString(16,2)+\">\"};JPoint.prototype.isInfinity=function isInfinity(){return this.z.cmpn(0)===0}},6226:function(e,t,r){\"use strict\";var i=t;var n=r(7028);var a=r(9359);var s=r(4401);var o=s.assert;function PresetCurve(e){if(e.type===\"short\")this.curve=new a.short(e);else if(e.type===\"edwards\")this.curve=new a.edwards(e);else this.curve=new a.mont(e);this.g=this.curve.g;this.n=this.curve.n;this.hash=e.hash;o(this.g.validate(),\"Invalid curve\");o(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}i.PresetCurve=PresetCurve;function defineCurve(e,t){Object.defineProperty(i,e,{configurable:true,enumerable:true,get:function(){var r=new PresetCurve(t);Object.defineProperty(i,e,{configurable:true,enumerable:true,value:r});return r}})}defineCurve(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:n.sha256,gRed:false,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]});defineCurve(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:n.sha256,gRed:false,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]});defineCurve(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:n.sha256,gRed:false,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]});defineCurve(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f \"+\"5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 \"+\"f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:n.sha384,gRed:false,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 \"+\"5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 \"+\"0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]});defineCurve(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b \"+\"99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd \"+\"3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff \"+\"ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 \"+\"f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:n.sha512,gRed:false,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 \"+\"053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 \"+\"a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 \"+\"579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 \"+\"3fad0761 353c7086 a272c240 88be9476 9fd16650\"]});defineCurve(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"1\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:n.sha256,gRed:false,g:[\"9\"]});defineCurve(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:n.sha256,gRed:false,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var h;try{h=r(9702)}catch(e){h=undefined}defineCurve(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:n.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:false,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",h]})},4088:function(e,t,r){\"use strict\";var i=r(711);var n=r(4910);var a=r(4401);var s=r(6226);var o=r(3500);var h=a.assert;var u=r(4724);var d=r(7526);function EC(e){if(!(this instanceof EC))return new EC(e);if(typeof e===\"string\"){h(s.hasOwnProperty(e),\"Unknown curve \"+e);e=s[e]}if(e instanceof s.PresetCurve)e={curve:e};this.curve=e.curve.curve;this.n=this.curve.n;this.nh=this.n.ushrn(1);this.g=this.curve.g;this.g=e.curve.g;this.g.precompute(e.curve.n.bitLength()+1);this.hash=e.hash||e.curve.hash}e.exports=EC;EC.prototype.keyPair=function keyPair(e){return new u(this,e)};EC.prototype.keyFromPrivate=function keyFromPrivate(e,t){return u.fromPrivate(this,e,t)};EC.prototype.keyFromPublic=function keyFromPublic(e,t){return u.fromPublic(this,e,t)};EC.prototype.genKeyPair=function genKeyPair(e){if(!e)e={};var t=new n({hash:this.hash,pers:e.pers,persEnc:e.persEnc||\"utf8\",entropy:e.entropy||o(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||\"utf8\",nonce:this.n.toArray()});var r=this.n.byteLength();var a=this.n.sub(new i(2));do{var s=new i(t.generate(r));if(s.cmp(a)>0)continue;s.iaddn(1);return this.keyFromPrivate(s)}while(true)};EC.prototype._truncateToN=function truncateToN(e,t){var r=e.byteLength()*8-this.n.bitLength();if(r>0)e=e.ushrn(r);if(!t&&e.cmp(this.n)>=0)return e.sub(this.n);else return e};EC.prototype.sign=function sign(e,t,r,a){if(typeof r===\"object\"){a=r;r=null}if(!a)a={};t=this.keyFromPrivate(t,r);e=this._truncateToN(new i(e,16));var s=this.n.byteLength();var o=t.getPrivate().toArray(\"be\",s);var h=e.toArray(\"be\",s);var u=new n({hash:this.hash,entropy:o,nonce:h,pers:a.pers,persEnc:a.persEnc||\"utf8\"});var c=this.n.sub(new i(1));for(var l=0;true;l++){var p=a.k?a.k(l):new i(u.generate(this.n.byteLength()));p=this._truncateToN(p,true);if(p.cmpn(1)<=0||p.cmp(c)>=0)continue;var v=this.g.mul(p);if(v.isInfinity())continue;var b=v.getX();var m=b.umod(this.n);if(m.cmpn(0)===0)continue;var y=p.invm(this.n).mul(m.mul(t.getPrivate()).iadd(e));y=y.umod(this.n);if(y.cmpn(0)===0)continue;var g=(v.getY().isOdd()?1:0)|(b.cmp(m)!==0?2:0);if(a.canonical&&y.cmp(this.nh)>0){y=this.n.sub(y);g^=1}return new d({r:m,s:y,recoveryParam:g})}};EC.prototype.verify=function verify(e,t,r,n){e=this._truncateToN(new i(e,16));r=this.keyFromPublic(r,n);t=new d(t,\"hex\");var a=t.r;var s=t.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return false;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return false;var o=s.invm(this.n);var h=o.mul(e).umod(this.n);var u=o.mul(a).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(h,r.getPublic(),u);if(c.isInfinity())return false;return c.getX().umod(this.n).cmp(a)===0}var c=this.g.jmulAdd(h,r.getPublic(),u);if(c.isInfinity())return false;return c.eqXToP(a)};EC.prototype.recoverPubKey=function(e,t,r,n){h((3&r)===r,\"The recovery param is more than two bits\");t=new d(t,n);var a=this.n;var s=new i(e);var o=t.r;var u=t.s;var c=r&1;var l=r>>1;if(o.cmp(this.curve.p.umod(this.curve.n))>=0&&l)throw new Error(\"Unable to find sencond key candinate\");if(l)o=this.curve.pointFromX(o.add(this.curve.n),c);else o=this.curve.pointFromX(o,c);var p=t.r.invm(a);var v=a.sub(s).mul(p).umod(a);var b=u.mul(p).umod(a);return this.g.mulAdd(v,o,b)};EC.prototype.getKeyRecoveryParam=function(e,t,r,i){t=new d(t,i);if(t.recoveryParam!==null)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw new Error(\"Unable to find valid recovery factor\")}},4724:function(e,t,r){\"use strict\";var i=r(711);var n=r(4401);var a=n.assert;function KeyPair(e,t){this.ec=e;this.priv=null;this.pub=null;if(t.priv)this._importPrivate(t.priv,t.privEnc);if(t.pub)this._importPublic(t.pub,t.pubEnc)}e.exports=KeyPair;KeyPair.fromPublic=function fromPublic(e,t,r){if(t instanceof KeyPair)return t;return new KeyPair(e,{pub:t,pubEnc:r})};KeyPair.fromPrivate=function fromPrivate(e,t,r){if(t instanceof KeyPair)return t;return new KeyPair(e,{priv:t,privEnc:r})};KeyPair.prototype.validate=function validate(){var e=this.getPublic();if(e.isInfinity())return{result:false,reason:\"Invalid public key\"};if(!e.validate())return{result:false,reason:\"Public key is not a point\"};if(!e.mul(this.ec.curve.n).isInfinity())return{result:false,reason:\"Public key * N != O\"};return{result:true,reason:null}};KeyPair.prototype.getPublic=function getPublic(e,t){if(typeof e===\"string\"){t=e;e=null}if(!this.pub)this.pub=this.ec.g.mul(this.priv);if(!t)return this.pub;return this.pub.encode(t,e)};KeyPair.prototype.getPrivate=function getPrivate(e){if(e===\"hex\")return this.priv.toString(16,2);else return this.priv};KeyPair.prototype._importPrivate=function _importPrivate(e,t){this.priv=new i(e,t||16);this.priv=this.priv.umod(this.ec.curve.n)};KeyPair.prototype._importPublic=function _importPublic(e,t){if(e.x||e.y){if(this.ec.curve.type===\"mont\"){a(e.x,\"Need x coordinate\")}else if(this.ec.curve.type===\"short\"||this.ec.curve.type===\"edwards\"){a(e.x&&e.y,\"Need both x and y coordinate\")}this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,t)};KeyPair.prototype.derive=function derive(e){return e.mul(this.priv).getX()};KeyPair.prototype.sign=function sign(e,t,r){return this.ec.sign(e,this,t,r)};KeyPair.prototype.verify=function verify(e,t){return this.ec.verify(e,t,this)};KeyPair.prototype.inspect=function inspect(){return\"<Key priv: \"+(this.priv&&this.priv.toString(16,2))+\" pub: \"+(this.pub&&this.pub.inspect())+\" >\"}},7526:function(e,t,r){\"use strict\";var i=r(711);var n=r(4401);var a=n.assert;function Signature(e,t){if(e instanceof Signature)return e;if(this._importDER(e,t))return;a(e.r&&e.s,\"Signature without r or s\");this.r=new i(e.r,16);this.s=new i(e.s,16);if(e.recoveryParam===undefined)this.recoveryParam=null;else this.recoveryParam=e.recoveryParam}e.exports=Signature;function Position(){this.place=0}function getLength(e,t){var r=e[t.place++];if(!(r&128)){return r}var i=r&15;if(i===0||i>4){return false}var n=0;for(var a=0,s=t.place;a<i;a++,s++){n<<=8;n|=e[s];n>>>=0}if(n<=127){return false}t.place=s;return n}function rmPadding(e){var t=0;var r=e.length-1;while(!e[t]&&!(e[t+1]&128)&&t<r){t++}if(t===0){return e}return e.slice(t)}Signature.prototype._importDER=function _importDER(e,t){e=n.toArray(e,t);var r=new Position;if(e[r.place++]!==48){return false}var a=getLength(e,r);if(a===false){return false}if(a+r.place!==e.length){return false}if(e[r.place++]!==2){return false}var s=getLength(e,r);if(s===false){return false}var o=e.slice(r.place,s+r.place);r.place+=s;if(e[r.place++]!==2){return false}var h=getLength(e,r);if(h===false){return false}if(e.length!==h+r.place){return false}var u=e.slice(r.place,h+r.place);if(o[0]===0){if(o[1]&128){o=o.slice(1)}else{return false}}if(u[0]===0){if(u[1]&128){u=u.slice(1)}else{return false}}this.r=new i(o);this.s=new i(u);this.recoveryParam=null;return true};function constructLength(e,t){if(t<128){e.push(t);return}var r=1+(Math.log(t)/Math.LN2>>>3);e.push(r|128);while(--r){e.push(t>>>(r<<3)&255)}e.push(t)}Signature.prototype.toDER=function toDER(e){var t=this.r.toArray();var r=this.s.toArray();if(t[0]&128)t=[0].concat(t);if(r[0]&128)r=[0].concat(r);t=rmPadding(t);r=rmPadding(r);while(!r[0]&&!(r[1]&128)){r=r.slice(1)}var i=[2];constructLength(i,t.length);i=i.concat(t);i.push(2);constructLength(i,r.length);var a=i.concat(r);var s=[48];constructLength(s,a.length);s=s.concat(a);return n.encode(s,e)}},8511:function(e,t,r){\"use strict\";var i=r(7028);var n=r(6226);var a=r(4401);var s=a.assert;var o=a.parseBytes;var h=r(9917);var u=r(9314);function EDDSA(e){s(e===\"ed25519\",\"only tested with ed25519 so far\");if(!(this instanceof EDDSA))return new EDDSA(e);var e=n[e].curve;this.curve=e;this.g=e.g;this.g.precompute(e.n.bitLength()+1);this.pointClass=e.point().constructor;this.encodingLength=Math.ceil(e.n.bitLength()/8);this.hash=i.sha512}e.exports=EDDSA;EDDSA.prototype.sign=function sign(e,t){e=o(e);var r=this.keyFromSecret(t);var i=this.hashInt(r.messagePrefix(),e);var n=this.g.mul(i);var a=this.encodePoint(n);var s=this.hashInt(a,r.pubBytes(),e).mul(r.priv());var h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:a})};EDDSA.prototype.verify=function verify(e,t,r){e=o(e);t=this.makeSignature(t);var i=this.keyFromPublic(r);var n=this.hashInt(t.Rencoded(),i.pubBytes(),e);var a=this.g.mul(t.S());var s=t.R().add(i.pub().mul(n));return s.eq(a)};EDDSA.prototype.hashInt=function hashInt(){var e=this.hash();for(var t=0;t<arguments.length;t++)e.update(arguments[t]);return a.intFromLE(e.digest()).umod(this.curve.n)};EDDSA.prototype.keyFromPublic=function keyFromPublic(e){return h.fromPublic(this,e)};EDDSA.prototype.keyFromSecret=function keyFromSecret(e){return h.fromSecret(this,e)};EDDSA.prototype.makeSignature=function makeSignature(e){if(e instanceof u)return e;return new u(this,e)};EDDSA.prototype.encodePoint=function encodePoint(e){var t=e.getY().toArray(\"le\",this.encodingLength);t[this.encodingLength-1]|=e.getX().isOdd()?128:0;return t};EDDSA.prototype.decodePoint=function decodePoint(e){e=a.parseBytes(e);var t=e.length-1;var r=e.slice(0,t).concat(e[t]&~128);var i=(e[t]&128)!==0;var n=a.intFromLE(r);return this.curve.pointFromY(n,i)};EDDSA.prototype.encodeInt=function encodeInt(e){return e.toArray(\"le\",this.encodingLength)};EDDSA.prototype.decodeInt=function decodeInt(e){return a.intFromLE(e)};EDDSA.prototype.isPoint=function isPoint(e){return e instanceof this.pointClass}},9917:function(e,t,r){\"use strict\";var i=r(4401);var n=i.assert;var a=i.parseBytes;var s=i.cachedProperty;function KeyPair(e,t){this.eddsa=e;this._secret=a(t.secret);if(e.isPoint(t.pub))this._pub=t.pub;else this._pubBytes=a(t.pub)}KeyPair.fromPublic=function fromPublic(e,t){if(t instanceof KeyPair)return t;return new KeyPair(e,{pub:t})};KeyPair.fromSecret=function fromSecret(e,t){if(t instanceof KeyPair)return t;return new KeyPair(e,{secret:t})};KeyPair.prototype.secret=function secret(){return this._secret};s(KeyPair,\"pubBytes\",(function pubBytes(){return this.eddsa.encodePoint(this.pub())}));s(KeyPair,\"pub\",(function pub(){if(this._pubBytes)return this.eddsa.decodePoint(this._pubBytes);return this.eddsa.g.mul(this.priv())}));s(KeyPair,\"privBytes\",(function privBytes(){var e=this.eddsa;var t=this.hash();var r=e.encodingLength-1;var i=t.slice(0,e.encodingLength);i[0]&=248;i[r]&=127;i[r]|=64;return i}));s(KeyPair,\"priv\",(function priv(){return this.eddsa.decodeInt(this.privBytes())}));s(KeyPair,\"hash\",(function hash(){return this.eddsa.hash().update(this.secret()).digest()}));s(KeyPair,\"messagePrefix\",(function messagePrefix(){return this.hash().slice(this.eddsa.encodingLength)}));KeyPair.prototype.sign=function sign(e){n(this._secret,\"KeyPair can only verify\");return this.eddsa.sign(e,this)};KeyPair.prototype.verify=function verify(e,t){return this.eddsa.verify(e,t,this)};KeyPair.prototype.getSecret=function getSecret(e){n(this._secret,\"KeyPair is public only\");return i.encode(this.secret(),e)};KeyPair.prototype.getPublic=function getPublic(e){return i.encode(this.pubBytes(),e)};e.exports=KeyPair},9314:function(e,t,r){\"use strict\";var i=r(711);var n=r(4401);var a=n.assert;var s=n.cachedProperty;var o=n.parseBytes;function Signature(e,t){this.eddsa=e;if(typeof t!==\"object\")t=o(t);if(Array.isArray(t)){t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}}a(t.R&&t.S,\"Signature without R or S\");if(e.isPoint(t.R))this._R=t.R;if(t.S instanceof i)this._S=t.S;this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded;this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}s(Signature,\"S\",(function S(){return this.eddsa.decodeInt(this.Sencoded())}));s(Signature,\"R\",(function R(){return this.eddsa.decodePoint(this.Rencoded())}));s(Signature,\"Rencoded\",(function Rencoded(){return this.eddsa.encodePoint(this.R())}));s(Signature,\"Sencoded\",(function Sencoded(){return this.eddsa.encodeInt(this.S())}));Signature.prototype.toBytes=function toBytes(){return this.Rencoded().concat(this.Sencoded())};Signature.prototype.toHex=function toHex(){return n.encode(this.toBytes(),\"hex\").toUpperCase()};e.exports=Signature},9702:function(e){e.exports={doubles:{step:4,points:[[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\",\"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"],[\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\",\"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"],[\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\",\"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"],[\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\",\"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"],[\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\",\"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"],[\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\",\"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"],[\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\",\"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"],[\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\",\"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"],[\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\",\"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"],[\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\",\"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"],[\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\",\"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"],[\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\",\"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"],[\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\",\"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"],[\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\",\"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"],[\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\",\"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"],[\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\",\"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"],[\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\",\"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"],[\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\",\"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"],[\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\",\"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"],[\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\",\"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"],[\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\",\"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"],[\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\",\"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"],[\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\",\"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"],[\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\",\"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"],[\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\",\"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"],[\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\",\"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"],[\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\",\"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"],[\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\",\"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"],[\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\",\"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"],[\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\",\"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"],[\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\",\"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"],[\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\",\"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"],[\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\",\"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"],[\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\",\"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"],[\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\",\"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"],[\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\",\"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"],[\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\",\"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"],[\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\",\"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"],[\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\",\"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"],[\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\",\"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"],[\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\",\"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"],[\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\",\"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"],[\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\",\"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"],[\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\",\"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"],[\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\",\"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"],[\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\",\"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"],[\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\",\"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"],[\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\",\"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"],[\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\",\"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"],[\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\",\"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"],[\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\",\"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"],[\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\",\"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"],[\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\",\"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"],[\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\",\"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"],[\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\",\"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"],[\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\",\"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"],[\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\",\"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"],[\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\",\"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"],[\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\",\"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"],[\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\",\"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"],[\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\",\"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"],[\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\",\"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"],[\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\",\"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"],[\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\",\"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"],[\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\",\"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]},naf:{wnd:7,points:[[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\",\"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"],[\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\",\"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"],[\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\",\"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"],[\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\",\"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"],[\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\",\"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"],[\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\",\"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"],[\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\",\"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"],[\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\",\"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"],[\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\",\"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"],[\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\",\"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"],[\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\",\"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"],[\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\",\"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"],[\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\",\"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"],[\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\",\"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"],[\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\",\"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"],[\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\",\"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"],[\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\",\"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"],[\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\",\"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"],[\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\",\"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"],[\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\",\"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"],[\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\",\"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"],[\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\",\"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"],[\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\",\"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"],[\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\",\"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"],[\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\",\"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"],[\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\",\"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"],[\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\",\"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"],[\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\",\"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"],[\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\",\"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"],[\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\",\"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"],[\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\",\"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"],[\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\",\"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"],[\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\",\"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"],[\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\",\"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"],[\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\",\"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"],[\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\",\"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"],[\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\",\"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"],[\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\",\"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"],[\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\",\"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"],[\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\",\"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"],[\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\",\"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"],[\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\",\"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"],[\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\",\"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"],[\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\",\"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"],[\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\",\"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"],[\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\",\"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"],[\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\",\"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"],[\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\",\"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"],[\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\",\"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"],[\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\",\"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"],[\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\",\"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"],[\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\",\"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"],[\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\",\"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"],[\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\",\"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"],[\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\",\"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"],[\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\",\"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"],[\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\",\"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"],[\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\",\"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"],[\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\",\"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"],[\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\",\"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"],[\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\",\"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"],[\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\",\"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"],[\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\",\"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"],[\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\",\"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"],[\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\",\"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"],[\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\",\"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"],[\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\",\"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"],[\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\",\"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"],[\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\",\"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"],[\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\",\"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"],[\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\",\"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"],[\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\",\"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"],[\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\",\"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"],[\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\",\"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"],[\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\",\"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"],[\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\",\"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"],[\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\",\"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"],[\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\",\"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"],[\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\",\"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"],[\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\",\"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"],[\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\",\"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"],[\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\",\"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"],[\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\",\"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"],[\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\",\"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"],[\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\",\"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"],[\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\",\"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"],[\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\",\"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"],[\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\",\"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"],[\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\",\"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"],[\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\",\"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"],[\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\",\"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"],[\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\",\"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"],[\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\",\"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"],[\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\",\"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"],[\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\",\"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"],[\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\",\"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"],[\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\",\"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"],[\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\",\"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"],[\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\",\"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"],[\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\",\"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"],[\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\",\"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"],[\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\",\"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"],[\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\",\"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"],[\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\",\"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"],[\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\",\"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"],[\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\",\"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"],[\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\",\"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"],[\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\",\"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"],[\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\",\"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"],[\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\",\"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"],[\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\",\"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"],[\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\",\"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"],[\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\",\"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"],[\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\",\"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"],[\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\",\"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"],[\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\",\"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"],[\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\",\"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"],[\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\",\"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"],[\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\",\"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"],[\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\",\"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"],[\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\",\"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"],[\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\",\"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"],[\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\",\"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"],[\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\",\"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"],[\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\",\"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"],[\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\",\"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"],[\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\",\"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]}}},4401:function(e,t,r){\"use strict\";var i=t;var n=r(711);var a=r(3523);var s=r(6545);i.assert=a;i.toArray=s.toArray;i.zero2=s.zero2;i.toHex=s.toHex;i.encode=s.encode;function getNAF(e,t,r){var i=new Array(Math.max(e.bitLength(),r)+1);i.fill(0);var n=1<<t+1;var a=e.clone();for(var s=0;s<i.length;s++){var o;var h=a.andln(n-1);if(a.isOdd()){if(h>(n>>1)-1)o=(n>>1)-h;else o=h;a.isubn(o)}else{o=0}i[s]=o;a.iushrn(1)}return i}i.getNAF=getNAF;function getJSF(e,t){var r=[[],[]];e=e.clone();t=t.clone();var i=0;var n=0;while(e.cmpn(-i)>0||t.cmpn(-n)>0){var a=e.andln(3)+i&3;var s=t.andln(3)+n&3;if(a===3)a=-1;if(s===3)s=-1;var o;if((a&1)===0){o=0}else{var h=e.andln(7)+i&7;if((h===3||h===5)&&s===2)o=-a;else o=a}r[0].push(o);var u;if((s&1)===0){u=0}else{var h=t.andln(7)+n&7;if((h===3||h===5)&&a===2)u=-s;else u=s}r[1].push(u);if(2*i===o+1)i=1-i;if(2*n===u+1)n=1-n;e.iushrn(1);t.iushrn(1)}return r}i.getJSF=getJSF;function cachedProperty(e,t,r){var i=\"_\"+t;e.prototype[t]=function cachedProperty(){return this[i]!==undefined?this[i]:this[i]=r.call(this)}}i.cachedProperty=cachedProperty;function parseBytes(e){return typeof e===\"string\"?i.toArray(e,\"hex\"):e}i.parseBytes=parseBytes;function intFromLE(e){return new n(e,\"hex\",\"le\")}i.intFromLE=intFromLE},8368:function(e,t,r){var i=r(6911).Buffer;var n=r(3533);function EVP_BytesToKey(e,t,r,a){if(!i.isBuffer(e))e=i.from(e,\"binary\");if(t){if(!i.isBuffer(t))t=i.from(t,\"binary\");if(t.length!==8)throw new RangeError(\"salt should be Buffer with 8 byte length\")}var s=r/8;var o=i.alloc(s);var h=i.alloc(a||0);var u=i.alloc(0);while(s>0||a>0){var d=new n;d.update(u);d.update(e);if(t)d.update(t);u=d.digest();var c=0;if(s>0){var l=o.length-s;c=Math.min(s,u.length);u.copy(o,l,0,c);s-=c}if(c<u.length&&a>0){var p=h.length-a;var v=Math.min(a,u.length-c);u.copy(h,p,c,c+v);a-=v}}u.fill(0);return{key:o,iv:h}}e.exports=EVP_BytesToKey},9029:function(e,t,r){\"use strict\";var i=r(6911).Buffer;var n=r(3726).Transform;var a=r(3782);function throwIfNotStringOrBuffer(e,t){if(!i.isBuffer(e)&&typeof e!==\"string\"){throw new TypeError(t+\" must be a string or a buffer\")}}function HashBase(e){n.call(this);this._block=i.allocUnsafe(e);this._blockSize=e;this._blockOffset=0;this._length=[0,0,0,0];this._finalized=false}a(HashBase,n);HashBase.prototype._transform=function(e,t,r){var i=null;try{this.update(e,t)}catch(e){i=e}r(i)};HashBase.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)};HashBase.prototype.update=function(e,t){throwIfNotStringOrBuffer(e,\"Data\");if(this._finalized)throw new Error(\"Digest already called\");if(!i.isBuffer(e))e=i.from(e,t);var r=this._block;var n=0;while(this._blockOffset+e.length-n>=this._blockSize){for(var a=this._blockOffset;a<this._blockSize;)r[a++]=e[n++];this._update();this._blockOffset=0}while(n<e.length)r[this._blockOffset++]=e[n++];for(var s=0,o=e.length*8;o>0;++s){this._length[s]+=o;o=this._length[s]/4294967296|0;if(o>0)this._length[s]-=4294967296*o}return this};HashBase.prototype._update=function(){throw new Error(\"_update is not implemented\")};HashBase.prototype.digest=function(e){if(this._finalized)throw new Error(\"Digest already called\");this._finalized=true;var t=this._digest();if(e!==undefined)t=t.toString(e);this._block.fill(0);this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t};HashBase.prototype._digest=function(){throw new Error(\"_digest is not implemented\")};e.exports=HashBase},7028:function(e,t,r){var i=t;i.utils=r(263);i.common=r(1330);i.sha=r(301);i.ripemd=r(3079);i.hmac=r(3092);i.sha1=i.sha.sha1;i.sha256=i.sha.sha256;i.sha224=i.sha.sha224;i.sha384=i.sha.sha384;i.sha512=i.sha.sha512;i.ripemd160=i.ripemd.ripemd160},1330:function(e,t,r){\"use strict\";var i=r(263);var n=r(3523);function BlockHash(){this.pending=null;this.pendingTotal=0;this.blockSize=this.constructor.blockSize;this.outSize=this.constructor.outSize;this.hmacStrength=this.constructor.hmacStrength;this.padLength=this.constructor.padLength/8;this.endian=\"big\";this._delta8=this.blockSize/8;this._delta32=this.blockSize/32}t.BlockHash=BlockHash;BlockHash.prototype.update=function update(e,t){e=i.toArray(e,t);if(!this.pending)this.pending=e;else this.pending=this.pending.concat(e);this.pendingTotal+=e.length;if(this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length);if(this.pending.length===0)this.pending=null;e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n<e.length;n+=this._delta32)this._update(e,n,n+this._delta32)}return this};BlockHash.prototype.digest=function digest(e){this.update(this._pad());n(this.pending===null);return this._digest(e)};BlockHash.prototype._pad=function pad(){var e=this.pendingTotal;var t=this._delta8;var r=t-(e+this.padLength)%t;var i=new Array(r+this.padLength);i[0]=128;for(var n=1;n<r;n++)i[n]=0;e<<=3;if(this.endian===\"big\"){for(var a=8;a<this.padLength;a++)i[n++]=0;i[n++]=0;i[n++]=0;i[n++]=0;i[n++]=0;i[n++]=e>>>24&255;i[n++]=e>>>16&255;i[n++]=e>>>8&255;i[n++]=e&255}else{i[n++]=e&255;i[n++]=e>>>8&255;i[n++]=e>>>16&255;i[n++]=e>>>24&255;i[n++]=0;i[n++]=0;i[n++]=0;i[n++]=0;for(a=8;a<this.padLength;a++)i[n++]=0}return i}},3092:function(e,t,r){\"use strict\";var i=r(263);var n=r(3523);function Hmac(e,t,r){if(!(this instanceof Hmac))return new Hmac(e,t,r);this.Hash=e;this.blockSize=e.blockSize/8;this.outSize=e.outSize/8;this.inner=null;this.outer=null;this._init(i.toArray(t,r))}e.exports=Hmac;Hmac.prototype._init=function init(e){if(e.length>this.blockSize)e=(new this.Hash).update(e).digest();n(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;this.inner=(new this.Hash).update(e);for(t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)};Hmac.prototype.update=function update(e,t){this.inner.update(e,t);return this};Hmac.prototype.digest=function digest(e){this.outer.update(this.inner.digest());return this.outer.digest(e)}},3079:function(e,t,r){\"use strict\";var i=r(263);var n=r(1330);var a=i.rotl32;var s=i.sum32;var o=i.sum32_3;var h=i.sum32_4;var u=n.BlockHash;function RIPEMD160(){if(!(this instanceof RIPEMD160))return new RIPEMD160;u.call(this);this.h=[1732584193,4023233417,2562383102,271733878,3285377520];this.endian=\"little\"}i.inherits(RIPEMD160,u);t.ripemd160=RIPEMD160;RIPEMD160.blockSize=512;RIPEMD160.outSize=160;RIPEMD160.hmacStrength=192;RIPEMD160.padLength=64;RIPEMD160.prototype._update=function update(e,t){var r=this.h[0];var i=this.h[1];var n=this.h[2];var u=this.h[3];var v=this.h[4];var b=r;var m=i;var y=n;var g=u;var _=v;for(var w=0;w<80;w++){var M=s(a(h(r,f(w,i,n,u),e[d[w]+t],K(w)),l[w]),v);r=v;v=u;u=a(n,10);n=i;i=M;M=s(a(h(b,f(79-w,m,y,g),e[c[w]+t],Kh(w)),p[w]),_);b=_;_=g;g=a(y,10);y=m;m=M}M=o(this.h[1],n,g);this.h[1]=o(this.h[2],u,_);this.h[2]=o(this.h[3],v,b);this.h[3]=o(this.h[4],r,m);this.h[4]=o(this.h[0],i,y);this.h[0]=M};RIPEMD160.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h,\"little\");else return i.split32(this.h,\"little\")};function f(e,t,r,i){if(e<=15)return t^r^i;else if(e<=31)return t&r|~t&i;else if(e<=47)return(t|~r)^i;else if(e<=63)return t&i|r&~i;else return t^(r|~i)}function K(e){if(e<=15)return 0;else if(e<=31)return 1518500249;else if(e<=47)return 1859775393;else if(e<=63)return 2400959708;else return 2840853838}function Kh(e){if(e<=15)return 1352829926;else if(e<=31)return 1548603684;else if(e<=47)return 1836072691;else if(e<=63)return 2053994217;else return 0}var d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13];var c=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11];var l=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6];var p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},301:function(e,t,r){\"use strict\";t.sha1=r(2742);t.sha224=r(7105);t.sha256=r(1525);t.sha384=r(9948);t.sha512=r(1319)},2742:function(e,t,r){\"use strict\";var i=r(263);var n=r(1330);var a=r(2975);var s=i.rotl32;var o=i.sum32;var h=i.sum32_5;var u=a.ft_1;var d=n.BlockHash;var c=[1518500249,1859775393,2400959708,3395469782];function SHA1(){if(!(this instanceof SHA1))return new SHA1;d.call(this);this.h=[1732584193,4023233417,2562383102,271733878,3285377520];this.W=new Array(80)}i.inherits(SHA1,d);e.exports=SHA1;SHA1.blockSize=512;SHA1.outSize=160;SHA1.hmacStrength=80;SHA1.padLength=64;SHA1.prototype._update=function _update(e,t){var r=this.W;for(var i=0;i<16;i++)r[i]=e[t+i];for(;i<r.length;i++)r[i]=s(r[i-3]^r[i-8]^r[i-14]^r[i-16],1);var n=this.h[0];var a=this.h[1];var d=this.h[2];var l=this.h[3];var p=this.h[4];for(i=0;i<r.length;i++){var v=~~(i/20);var b=h(s(n,5),u(v,a,d,l),p,r[i],c[v]);p=l;l=d;d=s(a,30);a=n;n=b}this.h[0]=o(this.h[0],n);this.h[1]=o(this.h[1],a);this.h[2]=o(this.h[2],d);this.h[3]=o(this.h[3],l);this.h[4]=o(this.h[4],p)};SHA1.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h,\"big\");else return i.split32(this.h,\"big\")}},7105:function(e,t,r){\"use strict\";var i=r(263);var n=r(1525);function SHA224(){if(!(this instanceof SHA224))return new SHA224;n.call(this);this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(SHA224,n);e.exports=SHA224;SHA224.blockSize=512;SHA224.outSize=224;SHA224.hmacStrength=192;SHA224.padLength=64;SHA224.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h.slice(0,7),\"big\");else return i.split32(this.h.slice(0,7),\"big\")}},1525:function(e,t,r){\"use strict\";var i=r(263);var n=r(1330);var a=r(2975);var s=r(3523);var o=i.sum32;var h=i.sum32_4;var u=i.sum32_5;var d=a.ch32;var c=a.maj32;var l=a.s0_256;var p=a.s1_256;var v=a.g0_256;var b=a.g1_256;var m=n.BlockHash;var y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function SHA256(){if(!(this instanceof SHA256))return new SHA256;m.call(this);this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];this.k=y;this.W=new Array(64)}i.inherits(SHA256,m);e.exports=SHA256;SHA256.blockSize=512;SHA256.outSize=256;SHA256.hmacStrength=192;SHA256.padLength=64;SHA256.prototype._update=function _update(e,t){var r=this.W;for(var i=0;i<16;i++)r[i]=e[t+i];for(;i<r.length;i++)r[i]=h(b(r[i-2]),r[i-7],v(r[i-15]),r[i-16]);var n=this.h[0];var a=this.h[1];var m=this.h[2];var y=this.h[3];var g=this.h[4];var _=this.h[5];var w=this.h[6];var M=this.h[7];s(this.k.length===r.length);for(i=0;i<r.length;i++){var B=u(M,p(g),d(g,_,w),this.k[i],r[i]);var E=o(l(n),c(n,a,m));M=w;w=_;_=g;g=o(y,B);y=m;m=a;a=n;n=o(B,E)}this.h[0]=o(this.h[0],n);this.h[1]=o(this.h[1],a);this.h[2]=o(this.h[2],m);this.h[3]=o(this.h[3],y);this.h[4]=o(this.h[4],g);this.h[5]=o(this.h[5],_);this.h[6]=o(this.h[6],w);this.h[7]=o(this.h[7],M)};SHA256.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h,\"big\");else return i.split32(this.h,\"big\")}},9948:function(e,t,r){\"use strict\";var i=r(263);var n=r(1319);function SHA384(){if(!(this instanceof SHA384))return new SHA384;n.call(this);this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(SHA384,n);e.exports=SHA384;SHA384.blockSize=1024;SHA384.outSize=384;SHA384.hmacStrength=192;SHA384.padLength=128;SHA384.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h.slice(0,12),\"big\");else return i.split32(this.h.slice(0,12),\"big\")}},1319:function(e,t,r){\"use strict\";var i=r(263);var n=r(1330);var a=r(3523);var s=i.rotr64_hi;var o=i.rotr64_lo;var h=i.shr64_hi;var u=i.shr64_lo;var d=i.sum64;var c=i.sum64_hi;var l=i.sum64_lo;var p=i.sum64_4_hi;var v=i.sum64_4_lo;var b=i.sum64_5_hi;var m=i.sum64_5_lo;var y=n.BlockHash;var g=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function SHA512(){if(!(this instanceof SHA512))return new SHA512;y.call(this);this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209];this.k=g;this.W=new Array(160)}i.inherits(SHA512,y);e.exports=SHA512;SHA512.blockSize=1024;SHA512.outSize=512;SHA512.hmacStrength=192;SHA512.padLength=128;SHA512.prototype._prepareBlock=function _prepareBlock(e,t){var r=this.W;for(var i=0;i<32;i++)r[i]=e[t+i];for(;i<r.length;i+=2){var n=g1_512_hi(r[i-4],r[i-3]);var a=g1_512_lo(r[i-4],r[i-3]);var s=r[i-14];var o=r[i-13];var h=g0_512_hi(r[i-30],r[i-29]);var u=g0_512_lo(r[i-30],r[i-29]);var d=r[i-32];var c=r[i-31];r[i]=p(n,a,s,o,h,u,d,c);r[i+1]=v(n,a,s,o,h,u,d,c)}};SHA512.prototype._update=function _update(e,t){this._prepareBlock(e,t);var r=this.W;var i=this.h[0];var n=this.h[1];var s=this.h[2];var o=this.h[3];var h=this.h[4];var u=this.h[5];var p=this.h[6];var v=this.h[7];var y=this.h[8];var g=this.h[9];var _=this.h[10];var w=this.h[11];var M=this.h[12];var B=this.h[13];var E=this.h[14];var k=this.h[15];a(this.k.length===r.length);for(var A=0;A<r.length;A+=2){var N=E;var P=k;var x=s1_512_hi(y,g);var I=s1_512_lo(y,g);var C=ch64_hi(y,g,_,w,M,B);var D=ch64_lo(y,g,_,w,M,B);var T=this.k[A];var j=this.k[A+1];var q=r[A];var O=r[A+1];var H=b(N,P,x,I,C,D,T,j,q,O);var L=m(N,P,x,I,C,D,T,j,q,O);N=s0_512_hi(i,n);P=s0_512_lo(i,n);x=maj64_hi(i,n,s,o,h,u);I=maj64_lo(i,n,s,o,h,u);var z=c(N,P,x,I);var F=l(N,P,x,I);E=M;k=B;M=_;B=w;_=y;w=g;y=c(p,v,H,L);g=l(v,v,H,L);p=h;v=u;h=s;u=o;s=i;o=n;i=c(H,L,z,F);n=l(H,L,z,F)}d(this.h,0,i,n);d(this.h,2,s,o);d(this.h,4,h,u);d(this.h,6,p,v);d(this.h,8,y,g);d(this.h,10,_,w);d(this.h,12,M,B);d(this.h,14,E,k)};SHA512.prototype._digest=function digest(e){if(e===\"hex\")return i.toHex32(this.h,\"big\");else return i.split32(this.h,\"big\")};function ch64_hi(e,t,r,i,n){var a=e&r^~e&n;if(a<0)a+=4294967296;return a}function ch64_lo(e,t,r,i,n,a){var s=t&i^~t&a;if(s<0)s+=4294967296;return s}function maj64_hi(e,t,r,i,n){var a=e&r^e&n^r&n;if(a<0)a+=4294967296;return a}function maj64_lo(e,t,r,i,n,a){var s=t&i^t&a^i&a;if(s<0)s+=4294967296;return s}function s0_512_hi(e,t){var r=s(e,t,28);var i=s(t,e,2);var n=s(t,e,7);var a=r^i^n;if(a<0)a+=4294967296;return a}function s0_512_lo(e,t){var r=o(e,t,28);var i=o(t,e,2);var n=o(t,e,7);var a=r^i^n;if(a<0)a+=4294967296;return a}function s1_512_hi(e,t){var r=s(e,t,14);var i=s(e,t,18);var n=s(t,e,9);var a=r^i^n;if(a<0)a+=4294967296;return a}function s1_512_lo(e,t){var r=o(e,t,14);var i=o(e,t,18);var n=o(t,e,9);var a=r^i^n;if(a<0)a+=4294967296;return a}function g0_512_hi(e,t){var r=s(e,t,1);var i=s(e,t,8);var n=h(e,t,7);var a=r^i^n;if(a<0)a+=4294967296;return a}function g0_512_lo(e,t){var r=o(e,t,1);var i=o(e,t,8);var n=u(e,t,7);var a=r^i^n;if(a<0)a+=4294967296;return a}function g1_512_hi(e,t){var r=s(e,t,19);var i=s(t,e,29);var n=h(e,t,6);var a=r^i^n;if(a<0)a+=4294967296;return a}function g1_512_lo(e,t){var r=o(e,t,19);var i=o(t,e,29);var n=u(e,t,6);var a=r^i^n;if(a<0)a+=4294967296;return a}},2975:function(e,t,r){\"use strict\";var i=r(263);var n=i.rotr32;function ft_1(e,t,r,i){if(e===0)return ch32(t,r,i);if(e===1||e===3)return p32(t,r,i);if(e===2)return maj32(t,r,i)}t.ft_1=ft_1;function ch32(e,t,r){return e&t^~e&r}t.ch32=ch32;function maj32(e,t,r){return e&t^e&r^t&r}t.maj32=maj32;function p32(e,t,r){return e^t^r}t.p32=p32;function s0_256(e){return n(e,2)^n(e,13)^n(e,22)}t.s0_256=s0_256;function s1_256(e){return n(e,6)^n(e,11)^n(e,25)}t.s1_256=s1_256;function g0_256(e){return n(e,7)^n(e,18)^e>>>3}t.g0_256=g0_256;function g1_256(e){return n(e,17)^n(e,19)^e>>>10}t.g1_256=g1_256},263:function(e,t,r){\"use strict\";var i=r(3523);var n=r(3782);t.inherits=n;function isSurrogatePair(e,t){if((e.charCodeAt(t)&64512)!==55296){return false}if(t<0||t+1>=e.length){return false}return(e.charCodeAt(t+1)&64512)===56320}function toArray(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e===\"string\"){if(!t){var i=0;for(var n=0;n<e.length;n++){var a=e.charCodeAt(n);if(a<128){r[i++]=a}else if(a<2048){r[i++]=a>>6|192;r[i++]=a&63|128}else if(isSurrogatePair(e,n)){a=65536+((a&1023)<<10)+(e.charCodeAt(++n)&1023);r[i++]=a>>18|240;r[i++]=a>>12&63|128;r[i++]=a>>6&63|128;r[i++]=a&63|128}else{r[i++]=a>>12|224;r[i++]=a>>6&63|128;r[i++]=a&63|128}}}else if(t===\"hex\"){e=e.replace(/[^a-z0-9]+/gi,\"\");if(e.length%2!==0)e=\"0\"+e;for(n=0;n<e.length;n+=2)r.push(parseInt(e[n]+e[n+1],16))}}else{for(n=0;n<e.length;n++)r[n]=e[n]|0}return r}t.toArray=toArray;function toHex(e){var t=\"\";for(var r=0;r<e.length;r++)t+=zero2(e[r].toString(16));return t}t.toHex=toHex;function htonl(e){var t=e>>>24|e>>>8&65280|e<<8&16711680|(e&255)<<24;return t>>>0}t.htonl=htonl;function toHex32(e,t){var r=\"\";for(var i=0;i<e.length;i++){var n=e[i];if(t===\"little\")n=htonl(n);r+=zero8(n.toString(16))}return r}t.toHex32=toHex32;function zero2(e){if(e.length===1)return\"0\"+e;else return e}t.zero2=zero2;function zero8(e){if(e.length===7)return\"0\"+e;else if(e.length===6)return\"00\"+e;else if(e.length===5)return\"000\"+e;else if(e.length===4)return\"0000\"+e;else if(e.length===3)return\"00000\"+e;else if(e.length===2)return\"000000\"+e;else if(e.length===1)return\"0000000\"+e;else return e}t.zero8=zero8;function join32(e,t,r,n){var a=r-t;i(a%4===0);var s=new Array(a/4);for(var o=0,h=t;o<s.length;o++,h+=4){var u;if(n===\"big\")u=e[h]<<24|e[h+1]<<16|e[h+2]<<8|e[h+3];else u=e[h+3]<<24|e[h+2]<<16|e[h+1]<<8|e[h];s[o]=u>>>0}return s}t.join32=join32;function split32(e,t){var r=new Array(e.length*4);for(var i=0,n=0;i<e.length;i++,n+=4){var a=e[i];if(t===\"big\"){r[n]=a>>>24;r[n+1]=a>>>16&255;r[n+2]=a>>>8&255;r[n+3]=a&255}else{r[n+3]=a>>>24;r[n+2]=a>>>16&255;r[n+1]=a>>>8&255;r[n]=a&255}}return r}t.split32=split32;function rotr32(e,t){return e>>>t|e<<32-t}t.rotr32=rotr32;function rotl32(e,t){return e<<t|e>>>32-t}t.rotl32=rotl32;function sum32(e,t){return e+t>>>0}t.sum32=sum32;function sum32_3(e,t,r){return e+t+r>>>0}t.sum32_3=sum32_3;function sum32_4(e,t,r,i){return e+t+r+i>>>0}t.sum32_4=sum32_4;function sum32_5(e,t,r,i,n){return e+t+r+i+n>>>0}t.sum32_5=sum32_5;function sum64(e,t,r,i){var n=e[t];var a=e[t+1];var s=i+a>>>0;var o=(s<i?1:0)+r+n;e[t]=o>>>0;e[t+1]=s}t.sum64=sum64;function sum64_hi(e,t,r,i){var n=t+i>>>0;var a=(n<t?1:0)+e+r;return a>>>0}t.sum64_hi=sum64_hi;function sum64_lo(e,t,r,i){var n=t+i;return n>>>0}t.sum64_lo=sum64_lo;function sum64_4_hi(e,t,r,i,n,a,s,o){var h=0;var u=t;u=u+i>>>0;h+=u<t?1:0;u=u+a>>>0;h+=u<a?1:0;u=u+o>>>0;h+=u<o?1:0;var d=e+r+n+s+h;return d>>>0}t.sum64_4_hi=sum64_4_hi;function sum64_4_lo(e,t,r,i,n,a,s,o){var h=t+i+a+o;return h>>>0}t.sum64_4_lo=sum64_4_lo;function sum64_5_hi(e,t,r,i,n,a,s,o,h,u){var d=0;var c=t;c=c+i>>>0;d+=c<t?1:0;c=c+a>>>0;d+=c<a?1:0;c=c+o>>>0;d+=c<o?1:0;c=c+u>>>0;d+=c<u?1:0;var l=e+r+n+s+h+d;return l>>>0}t.sum64_5_hi=sum64_5_hi;function sum64_5_lo(e,t,r,i,n,a,s,o,h,u){var d=t+i+a+o+u;return d>>>0}t.sum64_5_lo=sum64_5_lo;function rotr64_hi(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}t.rotr64_hi=rotr64_hi;function rotr64_lo(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}t.rotr64_lo=rotr64_lo;function shr64_hi(e,t,r){return e>>>r}t.shr64_hi=shr64_hi;function shr64_lo(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}t.shr64_lo=shr64_lo},4910:function(e,t,r){\"use strict\";var i=r(7028);var n=r(6545);var a=r(3523);function HmacDRBG(e){if(!(this instanceof HmacDRBG))return new HmacDRBG(e);this.hash=e.hash;this.predResist=!!e.predResist;this.outLen=this.hash.outSize;this.minEntropy=e.minEntropy||this.hash.hmacStrength;this._reseed=null;this.reseedInterval=null;this.K=null;this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||\"hex\");var r=n.toArray(e.nonce,e.nonceEnc||\"hex\");var i=n.toArray(e.pers,e.persEnc||\"hex\");a(t.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\");this._init(t,r,i)}e.exports=HmacDRBG;HmacDRBG.prototype._init=function init(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8);this.V=new Array(this.outLen/8);for(var n=0;n<this.V.length;n++){this.K[n]=0;this.V[n]=1}this._update(i);this._reseed=1;this.reseedInterval=281474976710656};HmacDRBG.prototype._hmac=function hmac(){return new i.hmac(this.hash,this.K)};HmacDRBG.prototype._update=function update(e){var t=this._hmac().update(this.V).update([0]);if(e)t=t.update(e);this.K=t.digest();this.V=this._hmac().update(this.V).digest();if(!e)return;this.K=this._hmac().update(this.V).update([1]).update(e).digest();this.V=this._hmac().update(this.V).digest()};HmacDRBG.prototype.reseed=function reseed(e,t,r,i){if(typeof t!==\"string\"){i=r;r=t;t=null}e=n.toArray(e,t);r=n.toArray(r,i);a(e.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\");this._update(e.concat(r||[]));this._reseed=1};HmacDRBG.prototype.generate=function generate(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error(\"Reseed is required\");if(typeof t!==\"string\"){i=r;r=t;t=null}if(r){r=n.toArray(r,i||\"hex\");this._update(r)}var a=[];while(a.length<e){this.V=this._hmac().update(this.V).digest();a=a.concat(this.V)}var s=a.slice(0,e);this._update(r);this._reseed++;return n.encode(s,t)}},3782:function(e){if(typeof Object.create===\"function\"){e.exports=function inherits(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}}else{e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}}}},3533:function(e,t,r){\"use strict\";var i=r(3782);var n=r(9029);var a=r(6911).Buffer;var s=new Array(16);function MD5(){n.call(this,64);this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878}i(MD5,n);MD5.prototype._update=function(){var e=s;for(var t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a;var i=this._b;var n=this._c;var a=this._d;r=fnF(r,i,n,a,e[0],3614090360,7);a=fnF(a,r,i,n,e[1],3905402710,12);n=fnF(n,a,r,i,e[2],606105819,17);i=fnF(i,n,a,r,e[3],3250441966,22);r=fnF(r,i,n,a,e[4],4118548399,7);a=fnF(a,r,i,n,e[5],1200080426,12);n=fnF(n,a,r,i,e[6],2821735955,17);i=fnF(i,n,a,r,e[7],4249261313,22);r=fnF(r,i,n,a,e[8],1770035416,7);a=fnF(a,r,i,n,e[9],2336552879,12);n=fnF(n,a,r,i,e[10],4294925233,17);i=fnF(i,n,a,r,e[11],2304563134,22);r=fnF(r,i,n,a,e[12],1804603682,7);a=fnF(a,r,i,n,e[13],4254626195,12);n=fnF(n,a,r,i,e[14],2792965006,17);i=fnF(i,n,a,r,e[15],1236535329,22);r=fnG(r,i,n,a,e[1],4129170786,5);a=fnG(a,r,i,n,e[6],3225465664,9);n=fnG(n,a,r,i,e[11],643717713,14);i=fnG(i,n,a,r,e[0],3921069994,20);r=fnG(r,i,n,a,e[5],3593408605,5);a=fnG(a,r,i,n,e[10],38016083,9);n=fnG(n,a,r,i,e[15],3634488961,14);i=fnG(i,n,a,r,e[4],3889429448,20);r=fnG(r,i,n,a,e[9],568446438,5);a=fnG(a,r,i,n,e[14],3275163606,9);n=fnG(n,a,r,i,e[3],4107603335,14);i=fnG(i,n,a,r,e[8],1163531501,20);r=fnG(r,i,n,a,e[13],2850285829,5);a=fnG(a,r,i,n,e[2],4243563512,9);n=fnG(n,a,r,i,e[7],1735328473,14);i=fnG(i,n,a,r,e[12],2368359562,20);r=fnH(r,i,n,a,e[5],4294588738,4);a=fnH(a,r,i,n,e[8],2272392833,11);n=fnH(n,a,r,i,e[11],1839030562,16);i=fnH(i,n,a,r,e[14],4259657740,23);r=fnH(r,i,n,a,e[1],2763975236,4);a=fnH(a,r,i,n,e[4],1272893353,11);n=fnH(n,a,r,i,e[7],4139469664,16);i=fnH(i,n,a,r,e[10],3200236656,23);r=fnH(r,i,n,a,e[13],681279174,4);a=fnH(a,r,i,n,e[0],3936430074,11);n=fnH(n,a,r,i,e[3],3572445317,16);i=fnH(i,n,a,r,e[6],76029189,23);r=fnH(r,i,n,a,e[9],3654602809,4);a=fnH(a,r,i,n,e[12],3873151461,11);n=fnH(n,a,r,i,e[15],530742520,16);i=fnH(i,n,a,r,e[2],3299628645,23);r=fnI(r,i,n,a,e[0],4096336452,6);a=fnI(a,r,i,n,e[7],1126891415,10);n=fnI(n,a,r,i,e[14],2878612391,15);i=fnI(i,n,a,r,e[5],4237533241,21);r=fnI(r,i,n,a,e[12],1700485571,6);a=fnI(a,r,i,n,e[3],2399980690,10);n=fnI(n,a,r,i,e[10],4293915773,15);i=fnI(i,n,a,r,e[1],2240044497,21);r=fnI(r,i,n,a,e[8],1873313359,6);a=fnI(a,r,i,n,e[15],4264355552,10);n=fnI(n,a,r,i,e[6],2734768916,15);i=fnI(i,n,a,r,e[13],1309151649,21);r=fnI(r,i,n,a,e[4],4149444226,6);a=fnI(a,r,i,n,e[11],3174756917,10);n=fnI(n,a,r,i,e[2],718787259,15);i=fnI(i,n,a,r,e[9],3951481745,21);this._a=this._a+r|0;this._b=this._b+i|0;this._c=this._c+n|0;this._d=this._d+a|0};MD5.prototype._digest=function(){this._block[this._blockOffset++]=128;if(this._blockOffset>56){this._block.fill(0,this._blockOffset,64);this._update();this._blockOffset=0}this._block.fill(0,this._blockOffset,56);this._block.writeUInt32LE(this._length[0],56);this._block.writeUInt32LE(this._length[1],60);this._update();var e=a.allocUnsafe(16);e.writeInt32LE(this._a,0);e.writeInt32LE(this._b,4);e.writeInt32LE(this._c,8);e.writeInt32LE(this._d,12);return e};function rotl(e,t){return e<<t|e>>>32-t}function fnF(e,t,r,i,n,a,s){return rotl(e+(t&r|~t&i)+n+a|0,s)+t|0}function fnG(e,t,r,i,n,a,s){return rotl(e+(t&i|r&~i)+n+a|0,s)+t|0}function fnH(e,t,r,i,n,a,s){return rotl(e+(t^r^i)+n+a|0,s)+t|0}function fnI(e,t,r,i,n,a,s){return rotl(e+(r^(t|~i))+n+a|0,s)+t|0}e.exports=MD5},1354:function(e,t,r){var i=r(711);var n=r(3500);function MillerRabin(e){this.rand=e||new n.Rand}e.exports=MillerRabin;MillerRabin.create=function create(e){return new MillerRabin(e)};MillerRabin.prototype._randbelow=function _randbelow(e){var t=e.bitLength();var r=Math.ceil(t/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(e)>=0);return n};MillerRabin.prototype._randrange=function _randrange(e,t){var r=t.sub(e);return e.add(this._randbelow(r))};MillerRabin.prototype.test=function test(e,t,r){var n=e.bitLength();var a=i.mont(e);var s=new i(1).toRed(a);if(!t)t=Math.max(1,n/48|0);var o=e.subn(1);for(var h=0;!o.testn(h);h++){}var u=e.shrn(h);var d=o.toRed(a);var c=true;for(;t>0;t--){var l=this._randrange(new i(2),o);if(r)r(l);var p=l.toRed(a).redPow(u);if(p.cmp(s)===0||p.cmp(d)===0)continue;for(var v=1;v<h;v++){p=p.redSqr();if(p.cmp(s)===0)return false;if(p.cmp(d)===0)break}if(v===h)return false}return c};MillerRabin.prototype.getDivisor=function getDivisor(e,t){var r=e.bitLength();var n=i.mont(e);var a=new i(1).toRed(n);if(!t)t=Math.max(1,r/48|0);var s=e.subn(1);for(var o=0;!s.testn(o);o++){}var h=e.shrn(o);var u=s.toRed(n);for(;t>0;t--){var d=this._randrange(new i(2),s);var c=e.gcd(d);if(c.cmpn(1)!==0)return c;var l=d.toRed(n).redPow(h);if(l.cmp(a)===0||l.cmp(u)===0)continue;for(var p=1;p<o;p++){l=l.redSqr();if(l.cmp(a)===0)return l.fromRed().subn(1).gcd(e);if(l.cmp(u)===0)break}if(p===o){l=l.redSqr();return l.fromRed().subn(1).gcd(e)}}return false}},3523:function(e){e.exports=assert;function assert(e,t){if(!e)throw new Error(t||\"Assertion failed\")}assert.equal=function assertEqual(e,t,r){if(e!=t)throw new Error(r||\"Assertion failed: \"+e+\" != \"+t)}},6545:function(e,t){\"use strict\";var r=t;function toArray(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(typeof e!==\"string\"){for(var i=0;i<e.length;i++)r[i]=e[i]|0;return r}if(t===\"hex\"){e=e.replace(/[^a-z0-9]+/gi,\"\");if(e.length%2!==0)e=\"0\"+e;for(var i=0;i<e.length;i+=2)r.push(parseInt(e[i]+e[i+1],16))}else{for(var i=0;i<e.length;i++){var n=e.charCodeAt(i);var a=n>>8;var s=n&255;if(a)r.push(a,s);else r.push(s)}}return r}r.toArray=toArray;function zero2(e){if(e.length===1)return\"0\"+e;else return e}r.zero2=zero2;function toHex(e){var t=\"\";for(var r=0;r<e.length;r++)t+=zero2(e[r].toString(16));return t}r.toHex=toHex;r.encode=function encode(e,t){if(t===\"hex\")return toHex(e);else return e}},8687:function(e,t,r){\"use strict\";var i=r(7160);t.certificate=r(8782);var n=i.define(\"RSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())}));t.RSAPrivateKey=n;var a=i.define(\"RSAPublicKey\",(function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())}));t.RSAPublicKey=a;var s=i.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(o),this.key(\"subjectPublicKey\").bitstr())}));t.PublicKey=s;var o=i.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}));var h=i.define(\"PrivateKeyInfo\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(o),this.key(\"subjectPrivateKey\").octstr())}));t.PrivateKey=h;var u=i.define(\"EncryptedPrivateKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())}));t.EncryptedPrivateKey=u;var d=i.define(\"DSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())}));t.DSAPrivateKey=d;t.DSAparam=i.define(\"DSAparam\",(function(){this.int()}));var c=i.define(\"ECPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(l),this.key(\"publicKey\").optional().explicit(1).bitstr())}));t.ECPrivateKey=c;var l=i.define(\"ECParameters\",(function(){this.choice({namedCurve:this.objid()})}));t.signature=i.define(\"signature\",(function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())}))},8782:function(e,t,r){\"use strict\";var i=r(7160);var n=i.define(\"Time\",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}));var a=i.define(\"AttributeTypeValue\",(function(){this.seq().obj(this.key(\"type\").objid(),this.key(\"value\").any())}));var s=i.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"parameters\").optional(),this.key(\"curve\").objid().optional())}));var o=i.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(s),this.key(\"subjectPublicKey\").bitstr())}));var h=i.define(\"RelativeDistinguishedName\",(function(){this.setof(a)}));var u=i.define(\"RDNSequence\",(function(){this.seqof(h)}));var d=i.define(\"Name\",(function(){this.choice({rdnSequence:this.use(u)})}));var c=i.define(\"Validity\",(function(){this.seq().obj(this.key(\"notBefore\").use(n),this.key(\"notAfter\").use(n))}));var l=i.define(\"Extension\",(function(){this.seq().obj(this.key(\"extnID\").objid(),this.key(\"critical\").bool().def(false),this.key(\"extnValue\").octstr())}));var p=i.define(\"TBSCertificate\",(function(){this.seq().obj(this.key(\"version\").explicit(0).int().optional(),this.key(\"serialNumber\").int(),this.key(\"signature\").use(s),this.key(\"issuer\").use(d),this.key(\"validity\").use(c),this.key(\"subject\").use(d),this.key(\"subjectPublicKeyInfo\").use(o),this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(),this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(),this.key(\"extensions\").explicit(3).seqof(l).optional())}));var v=i.define(\"X509Certificate\",(function(){this.seq().obj(this.key(\"tbsCertificate\").use(p),this.key(\"signatureAlgorithm\").use(s),this.key(\"signatureValue\").bitstr())}));e.exports=v},6501:function(e,t,r){var i=/Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m;var n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;var a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m;var s=r(8368);var o=r(6594);var h=r(6911).Buffer;e.exports=function(e,t){var r=e.toString();var u=r.match(i);var d;if(!u){var c=r.match(a);d=new h(c[2].replace(/[\\r\\n]/g,\"\"),\"base64\")}else{var l=\"aes\"+u[1];var p=h.from(u[2],\"hex\");var v=h.from(u[3].replace(/[\\r\\n]/g,\"\"),\"base64\");var b=s(t,p.slice(0,8),parseInt(u[1],10)).key;var m=[];var y=o.createDecipheriv(l,b,p);m.push(y.update(v));m.push(y.final());d=h.concat(m)}var g=r.match(n)[1];return{tag:g,data:d}}},9902:function(e,t,r){var i=r(8687);var n=r(2510);var a=r(6501);var s=r(6594);var o=r(4978);var h=r(6911).Buffer;e.exports=parseKeys;function parseKeys(e){var t;if(typeof e===\"object\"&&!h.isBuffer(e)){t=e.passphrase;e=e.key}if(typeof e===\"string\"){e=h.from(e)}var r=a(e,t);var n=r.tag;var s=r.data;var o,u;switch(n){case\"CERTIFICATE\":u=i.certificate.decode(s,\"der\").tbsCertificate.subjectPublicKeyInfo;case\"PUBLIC KEY\":if(!u){u=i.PublicKey.decode(s,\"der\")}o=u.algorithm.algorithm.join(\".\");switch(o){case\"1.2.840.113549.1.1.1\":return i.RSAPublicKey.decode(u.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":u.subjectPrivateKey=u.subjectPublicKey;return{type:\"ec\",data:u};case\"1.2.840.10040.4.1\":u.algorithm.params.pub_key=i.DSAparam.decode(u.subjectPublicKey.data,\"der\");return{type:\"dsa\",data:u.algorithm.params};default:throw new Error(\"unknown key id \"+o)}throw new Error(\"unknown key type \"+n);case\"ENCRYPTED PRIVATE KEY\":s=i.EncryptedPrivateKey.decode(s,\"der\");s=decrypt(s,t);case\"PRIVATE KEY\":u=i.PrivateKey.decode(s,\"der\");o=u.algorithm.algorithm.join(\".\");switch(o){case\"1.2.840.113549.1.1.1\":return i.RSAPrivateKey.decode(u.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:u.algorithm.curve,privateKey:i.ECPrivateKey.decode(u.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":u.algorithm.params.priv_key=i.DSAparam.decode(u.subjectPrivateKey,\"der\");return{type:\"dsa\",params:u.algorithm.params};default:throw new Error(\"unknown key id \"+o)}throw new Error(\"unknown key type \"+n);case\"RSA PUBLIC KEY\":return i.RSAPublicKey.decode(s,\"der\");case\"RSA PRIVATE KEY\":return i.RSAPrivateKey.decode(s,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:i.DSAPrivateKey.decode(s,\"der\")};case\"EC PRIVATE KEY\":s=i.ECPrivateKey.decode(s,\"der\");return{curve:s.parameters.value,privateKey:s.privateKey};default:throw new Error(\"unknown key type \"+n)}}parseKeys.signature=i.signature;function decrypt(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt;var i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10);var a=n[e.algorithm.decrypt.cipher.algo.join(\".\")];var u=e.algorithm.decrypt.cipher.iv;var d=e.subjectPrivateKey;var c=parseInt(a.split(\"-\")[1],10)/8;var l=o.pbkdf2Sync(t,r,i,c,\"sha1\");var p=s.createDecipheriv(a,l,u);var v=[];v.push(p.update(d));v.push(p.final());return h.concat(v)}},4978:function(e,t,r){var i=r(6113);var n=r(5349);var a=r(7007);var s=r(5407);function nativePBKDF2(e,t,r,o,h,u){n(r,o);e=s(e,a,\"Password\");t=s(t,a,\"Salt\");if(typeof h===\"function\"){u=h;h=\"sha1\"}if(typeof u!==\"function\")throw new Error(\"No callback provided to pbkdf2\");return i.pbkdf2(e,t,r,o,h,u)}function nativePBKDF2Sync(e,t,r,o,h){n(r,o);e=s(e,a,\"Password\");t=s(t,a,\"Salt\");h=h||\"sha1\";return i.pbkdf2Sync(e,t,r,o,h)}if(!i.pbkdf2Sync||i.pbkdf2Sync.toString().indexOf(\"keylen, digest\")===-1){t.pbkdf2Sync=r(2127);t.pbkdf2=r(9601)}else{t.pbkdf2Sync=nativePBKDF2Sync;t.pbkdf2=nativePBKDF2}},9601:function(e,t,r){var i=r(6911).Buffer;var n=r(5349);var a=r(7007);var s=r(2127);var o=r(5407);var h;var u=__webpack_require__.g.crypto&&__webpack_require__.g.crypto.subtle;var d={sha:\"SHA-1\",\"sha-1\":\"SHA-1\",sha1:\"SHA-1\",sha256:\"SHA-256\",\"sha-256\":\"SHA-256\",sha384:\"SHA-384\",\"sha-384\":\"SHA-384\",\"sha-512\":\"SHA-512\",sha512:\"SHA-512\"};var c=[];function checkNative(e){if(__webpack_require__.g.process&&!__webpack_require__.g.process.browser){return Promise.resolve(false)}if(!u||!u.importKey||!u.deriveBits){return Promise.resolve(false)}if(c[e]!==undefined){return c[e]}h=h||i.alloc(8);var t=browserPbkdf2(h,h,10,128,e).then((function(){return true})).catch((function(){return false}));c[e]=t;return t}function browserPbkdf2(e,t,r,n,a){return u.importKey(\"raw\",e,{name:\"PBKDF2\"},false,[\"deriveBits\"]).then((function(e){return u.deriveBits({name:\"PBKDF2\",salt:t,iterations:r,hash:{name:a}},e,n<<3)})).then((function(e){return i.from(e)}))}function resolvePromise(e,t){e.then((function(e){process.nextTick((function(){t(null,e)}))}),(function(e){process.nextTick((function(){t(e)}))}))}e.exports=function(e,t,r,i,h,u){if(typeof h===\"function\"){u=h;h=undefined}h=h||\"sha1\";var c=d[h.toLowerCase()];if(!c||typeof __webpack_require__.g.Promise!==\"function\"){return process.nextTick((function(){var n;try{n=s(e,t,r,i,h)}catch(e){return u(e)}u(null,n)}))}n(r,i);e=o(e,a,\"Password\");t=o(t,a,\"Salt\");if(typeof u!==\"function\")throw new Error(\"No callback provided to pbkdf2\");resolvePromise(checkNative(c).then((function(n){if(n)return browserPbkdf2(e,t,r,i,c);return s(e,t,r,i,h)})),u)}},7007:function(e){var t;if(true){t=\"utf-8\"}else { var r; }e.exports=t},5349:function(e){var t=Math.pow(2,30)-1;e.exports=function(e,r){if(typeof e!==\"number\"){throw new TypeError(\"Iterations not a number\")}if(e<0){throw new TypeError(\"Bad iterations\")}if(typeof r!==\"number\"){throw new TypeError(\"Key length not a number\")}if(r<0||r>t||r!==r){throw new TypeError(\"Bad key length\")}}},2127:function(e,t,r){var i={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};var n=r(4873);var a=r(6911).Buffer;var s=r(5349);var o=r(7007);var h=r(5407);function pbkdf2(e,t,r,u,d){s(r,u);e=h(e,o,\"Password\");t=h(t,o,\"Salt\");d=d||\"sha1\";var c=a.allocUnsafe(u);var l=a.allocUnsafe(t.length+4);t.copy(l,0,0,t.length);var p=0;var v=i[d];var b=Math.ceil(u/v);for(var m=1;m<=b;m++){l.writeUInt32BE(m,t.length);var y=n(d,e).update(l).digest();var g=y;for(var _=1;_<r;_++){g=n(d,e).update(g).digest();for(var w=0;w<v;w++)y[w]^=g[w]}y.copy(c,p);p+=v}return c}e.exports=pbkdf2},5407:function(e,t,r){var i=r(6911).Buffer;e.exports=function(e,t,r){if(i.isBuffer(e)){return e}else if(typeof e===\"string\"){return i.from(e,t)}else if(ArrayBuffer.isView(e)){return i.from(e.buffer)}else{throw new TypeError(r+\" must be a string, a Buffer, a typed array or a DataView\")}}},9783:function(e,t,r){t.publicEncrypt=r(3995);t.privateDecrypt=r(4366);t.privateEncrypt=function privateEncrypt(e,r){return t.publicEncrypt(e,r,true)};t.publicDecrypt=function publicDecrypt(e,r){return t.privateDecrypt(e,r,true)}},5520:function(e,t,r){var i=r(9739);var n=r(6911).Buffer;e.exports=function(e,t){var r=n.alloc(0);var a=0;var s;while(r.length<t){s=i2ops(a++);r=n.concat([r,i(\"sha1\").update(e).update(s).digest()])}return r.slice(0,t)};function i2ops(e){var t=n.allocUnsafe(4);t.writeUInt32BE(e,0);return t}},4366:function(e,t,r){var i=r(9902);var n=r(5520);var a=r(6386);var s=r(711);var o=r(7166);var h=r(9739);var u=r(1607);var d=r(6911).Buffer;e.exports=function privateDecrypt(e,t,r){var n;if(e.padding){n=e.padding}else if(r){n=1}else{n=4}var a=i(e);var h=a.modulus.byteLength();if(t.length>h||new s(t).cmp(a.modulus)>=0){throw new Error(\"decryption error\")}var c;if(r){c=u(new s(t),a)}else{c=o(t,a)}var l=d.alloc(h-c.length);c=d.concat([l,c],h);if(n===4){return oaep(a,c)}else if(n===1){return pkcs1(a,c,r)}else if(n===3){return c}else{throw new Error(\"unknown padding\")}};function oaep(e,t){var r=e.modulus.byteLength();var i=h(\"sha1\").update(d.alloc(0)).digest();var s=i.length;if(t[0]!==0){throw new Error(\"decryption error\")}var o=t.slice(1,s+1);var u=t.slice(s+1);var c=a(o,n(u,s));var l=a(u,n(c,r-s-1));if(compare(i,l.slice(0,s))){throw new Error(\"decryption error\")}var p=s;while(l[p]===0){p++}if(l[p++]!==1){throw new Error(\"decryption error\")}return l.slice(p)}function pkcs1(e,t,r){var i=t.slice(0,2);var n=2;var a=0;while(t[n++]!==0){if(n>=t.length){a++;break}}var s=t.slice(2,n-1);if(i.toString(\"hex\")!==\"0002\"&&!r||i.toString(\"hex\")!==\"0001\"&&r){a++}if(s.length<8){a++}if(a){throw new Error(\"decryption error\")}return t.slice(n)}function compare(e,t){e=d.from(e);t=d.from(t);var r=0;var i=e.length;if(e.length!==t.length){r++;i=Math.min(e.length,t.length)}var n=-1;while(++n<i){r+=e[n]^t[n]}return r}},3995:function(e,t,r){var i=r(9902);var n=r(7223);var a=r(9739);var s=r(5520);var o=r(6386);var h=r(711);var u=r(1607);var d=r(7166);var c=r(6911).Buffer;e.exports=function publicEncrypt(e,t,r){var n;if(e.padding){n=e.padding}else if(r){n=1}else{n=4}var a=i(e);var s;if(n===4){s=oaep(a,t)}else if(n===1){s=pkcs1(a,t,r)}else if(n===3){s=new h(t);if(s.cmp(a.modulus)>=0){throw new Error(\"data too long for modulus\")}}else{throw new Error(\"unknown padding\")}if(r){return d(s,a)}else{return u(s,a)}};function oaep(e,t){var r=e.modulus.byteLength();var i=t.length;var u=a(\"sha1\").update(c.alloc(0)).digest();var d=u.length;var l=2*d;if(i>r-l-2){throw new Error(\"message too long\")}var p=c.alloc(r-i-l-2);var v=r-d-1;var b=n(d);var m=o(c.concat([u,p,c.alloc(1,1),t],v),s(b,v));var y=o(b,s(m,d));return new h(c.concat([c.alloc(1),y,m],r))}function pkcs1(e,t,r){var i=t.length;var n=e.modulus.byteLength();if(i>n-11){throw new Error(\"message too long\")}var a;if(r){a=c.alloc(n-i-3,255)}else{a=nonZero(n-i-3)}return new h(c.concat([c.from([0,r?1:2]),a,c.alloc(1),t],n))}function nonZero(e){var t=c.allocUnsafe(e);var r=0;var i=n(e*2);var a=0;var s;while(r<e){if(a===i.length){i=n(e*2);a=0}s=i[a++];if(s){t[r++]=s}}return t}},1607:function(e,t,r){var i=r(711);var n=r(6911).Buffer;function withPublic(e,t){return n.from(e.toRed(i.mont(t.modulus)).redPow(new i(t.publicExponent)).fromRed().toArray())}e.exports=withPublic},6386:function(e){e.exports=function xor(e,t){var r=e.length;var i=-1;while(++i<r){e[i]^=t[i]}return e}},7223:function(e,t,r){\"use strict\";var i=65536;var n=4294967295;function oldBrowser(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}var a=r(6911).Buffer;var s=__webpack_require__.g.crypto||__webpack_require__.g.msCrypto;if(s&&s.getRandomValues){e.exports=randomBytes}else{e.exports=oldBrowser}function randomBytes(e,t){if(e>n)throw new RangeError(\"requested too many random bytes\");var r=a.allocUnsafe(e);if(e>0){if(e>i){for(var o=0;o<e;o+=i){s.getRandomValues(r.slice(o,o+i))}}else{s.getRandomValues(r)}}if(typeof t===\"function\"){return process.nextTick((function(){t(null,r)}))}return r}},6445:function(e,t,r){\"use strict\";function oldBrowser(){throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\")}var i=r(6911);var n=r(7223);var a=i.Buffer;var s=i.kMaxLength;var o=__webpack_require__.g.crypto||__webpack_require__.g.msCrypto;var h=Math.pow(2,32)-1;function assertOffset(e,t){if(typeof e!==\"number\"||e!==e){throw new TypeError(\"offset must be a number\")}if(e>h||e<0){throw new TypeError(\"offset must be a uint32\")}if(e>s||e>t){throw new RangeError(\"offset out of range\")}}function assertSize(e,t,r){if(typeof e!==\"number\"||e!==e){throw new TypeError(\"size must be a number\")}if(e>h||e<0){throw new TypeError(\"size must be a uint32\")}if(e+t>r||e>s){throw new RangeError(\"buffer too small\")}}if(o&&o.getRandomValues||!true){t.randomFill=randomFill;t.randomFillSync=randomFillSync}else{t.randomFill=oldBrowser;t.randomFillSync=oldBrowser}function randomFill(e,t,r,i){if(!a.isBuffer(e)&&!(e instanceof __webpack_require__.g.Uint8Array)){throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')}if(typeof t===\"function\"){i=t;t=0;r=e.length}else if(typeof r===\"function\"){i=r;r=e.length-t}else if(typeof i!==\"function\"){throw new TypeError('\"cb\" argument must be a function')}assertOffset(t,e.length);assertSize(r,t,e.length);return actualFill(e,t,r,i)}function actualFill(e,t,r,i){if(true){var a=e.buffer;var s=new Uint8Array(a,t,r);o.getRandomValues(s);if(i){process.nextTick((function(){i(null,e)}));return}return e}if(i){n(r,(function(r,n){if(r){return i(r)}n.copy(e,t);i(null,e)}));return}var h=n(r);h.copy(e,t);return e}function randomFillSync(e,t,r){if(typeof t===\"undefined\"){t=0}if(!a.isBuffer(e)&&!(e instanceof __webpack_require__.g.Uint8Array)){throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')}assertOffset(t,e.length);if(r===undefined)r=e.length-t;assertSize(r,t,e.length);return actualFill(e,t,r)}},4646:function(e){\"use strict\";const t={};function createErrorType(e,r,i){if(!i){i=Error}function getMessage(e,t,i){if(typeof r===\"string\"){return r}else{return r(e,t,i)}}class NodeError extends i{constructor(e,t,r){super(getMessage(e,t,r))}}NodeError.prototype.name=i.name;NodeError.prototype.code=e;t[e]=NodeError}function oneOf(e,t){if(Array.isArray(e)){const r=e.length;e=e.map((e=>String(e)));if(r>2){return`one of ${t} ${e.slice(0,r-1).join(\", \")}, or `+e[r-1]}else if(r===2){return`one of ${t} ${e[0]} or ${e[1]}`}else{return`of ${t} ${e[0]}`}}else{return`of ${t} ${String(e)}`}}function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function endsWith(e,t,r){if(r===undefined||r>e.length){r=e.length}return e.substring(r-t.length,r)===t}function includes(e,t,r){if(typeof r!==\"number\"){r=0}if(r+t.length>e.length){return false}else{return e.indexOf(t,r)!==-1}}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError);createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){let i;if(typeof t===\"string\"&&startsWith(t,\"not \")){i=\"must not be\";t=t.replace(/^not /,\"\")}else{i=\"must be\"}let n;if(endsWith(e,\" argument\")){n=`The ${e} ${i} ${oneOf(t,\"type\")}`}else{const r=includes(e,\".\")?\"property\":\"argument\";n=`The \"${e}\" ${r} ${i} ${oneOf(t,\"type\")}`}n+=`. Received type ${typeof r}`;return n}),TypeError);createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"}));createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");createErrorType(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"}));createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError);createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");e.exports.q=t},2403:function(e,t,r){\"use strict\";var i=Object.keys||function(e){var t=[];for(var r in e){t.push(r)}return t};e.exports=Duplex;var n=r(1709);var a=r(7337);r(3782)(Duplex,n);{var s=i(a.prototype);for(var o=0;o<s.length;o++){var h=s[o];if(!Duplex.prototype[h])Duplex.prototype[h]=a.prototype[h]}}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);n.call(this,e);a.call(this,e);this.allowHalfOpen=true;if(e){if(e.readable===false)this.readable=false;if(e.writable===false)this.writable=false;if(e.allowHalfOpen===false){this.allowHalfOpen=false;this.once(\"end\",onend)}}}Object.defineProperty(Duplex.prototype,\"writableHighWaterMark\",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});Object.defineProperty(Duplex.prototype,\"writableBuffer\",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(Duplex.prototype,\"writableLength\",{enumerable:false,get:function get(){return this._writableState.length}});function onend(){if(this._writableState.ended)return;process.nextTick(onEndNT,this)}function onEndNT(e){e.end()}Object.defineProperty(Duplex.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._readableState===undefined||this._writableState===undefined){return false}return this._readableState.destroyed&&this._writableState.destroyed},set:function set(e){if(this._readableState===undefined||this._writableState===undefined){return}this._readableState.destroyed=e;this._writableState.destroyed=e}})},7889:function(e,t,r){\"use strict\";e.exports=PassThrough;var i=r(1170);r(3782)(PassThrough,i);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);i.call(this,e)}PassThrough.prototype._transform=function(e,t,r){r(null,e)}},1709:function(e,t,r){\"use strict\";e.exports=Readable;var i;Readable.ReadableState=ReadableState;var n=r(2361).EventEmitter;var a=function EElistenerCount(e,t){return e.listeners(t).length};var s=r(4678);var o=r(4300).Buffer;var h=__webpack_require__.g.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return o.from(e)}function _isUint8Array(e){return o.isBuffer(e)||e instanceof h}var u=r(3837);var d;if(u&&u.debuglog){d=u.debuglog(\"stream\")}else{d=function debug(){}}var c=r(4379);var l=r(7025);var p=r(6776),v=p.getHighWaterMark;var b=r(4646).q,m=b.ERR_INVALID_ARG_TYPE,y=b.ERR_STREAM_PUSH_AFTER_EOF,g=b.ERR_METHOD_NOT_IMPLEMENTED,_=b.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;var w;var M;var B;r(3782)(Readable,s);var E=l.errorOrDestroy;var k=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function prependListener(e,t,r){if(typeof e.prependListener===\"function\")return e.prependListener(t,r);if(!e._events||!e._events[t])e.on(t,r);else if(Array.isArray(e._events[t]))e._events[t].unshift(r);else e._events[t]=[r,e._events[t]]}function ReadableState(e,t,n){i=i||r(2403);e=e||{};if(typeof n!==\"boolean\")n=t instanceof i;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.readableObjectMode;this.highWaterMark=v(this,e,\"readableHighWaterMark\",n);this.buffer=new c;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.paused=true;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||\"utf8\";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!w)w=r(3704).s;this.decoder=new w(e.encoding);this.encoding=e.encoding}}function Readable(e){i=i||r(2403);if(!(this instanceof Readable))return new Readable(e);var t=this instanceof i;this._readableState=new ReadableState(e,this,t);this.readable=true;if(e){if(typeof e.read===\"function\")this._read=e.read;if(typeof e.destroy===\"function\")this._destroy=e.destroy}s.call(this)}Object.defineProperty(Readable.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function set(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=l.destroy;Readable.prototype._undestroy=l.undestroy;Readable.prototype._destroy=function(e,t){t(e)};Readable.prototype.push=function(e,t){var r=this._readableState;var i;if(!r.objectMode){if(typeof e===\"string\"){t=t||r.defaultEncoding;if(t!==r.encoding){e=o.from(e,t);t=\"\"}i=true}}else{i=true}return readableAddChunk(this,e,t,false,i)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,r,i,n){d(\"readableAddChunk\",t);var a=e._readableState;if(t===null){a.reading=false;onEofChunk(e,a)}else{var s;if(!n)s=chunkInvalid(a,t);if(s){E(e,s)}else if(a.objectMode||t&&t.length>0){if(typeof t!==\"string\"&&!a.objectMode&&Object.getPrototypeOf(t)!==o.prototype){t=_uint8ArrayToBuffer(t)}if(i){if(a.endEmitted)E(e,new _);else addChunk(e,a,t,true)}else if(a.ended){E(e,new y)}else if(a.destroyed){return false}else{a.reading=false;if(a.decoder&&!r){t=a.decoder.write(t);if(a.objectMode||t.length!==0)addChunk(e,a,t,false);else maybeReadMore(e,a)}else{addChunk(e,a,t,false)}}}else if(!i){a.reading=false;maybeReadMore(e,a)}}return!a.ended&&(a.length<a.highWaterMark||a.length===0)}function addChunk(e,t,r,i){if(t.flowing&&t.length===0&&!t.sync){t.awaitDrain=0;e.emit(\"data\",r)}else{t.length+=t.objectMode?1:r.length;if(i)t.buffer.unshift(r);else t.buffer.push(r);if(t.needReadable)emitReadable(e)}maybeReadMore(e,t)}function chunkInvalid(e,t){var r;if(!_isUint8Array(t)&&typeof t!==\"string\"&&t!==undefined&&!e.objectMode){r=new m(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t)}return r}Readable.prototype.isPaused=function(){return this._readableState.flowing===false};Readable.prototype.setEncoding=function(e){if(!w)w=r(3704).s;var t=new w(e);this._readableState.decoder=t;this._readableState.encoding=this._readableState.decoder.encoding;var i=this._readableState.buffer.head;var n=\"\";while(i!==null){n+=t.write(i.data);i=i.next}this._readableState.buffer.clear();if(n!==\"\")this._readableState.buffer.push(n);this._readableState.length=n.length;return this};var A=1073741824;function computeNewHighWaterMark(e){if(e>=A){e=A}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){d(\"read\",e);e=parseInt(e,10);var t=this._readableState;var r=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended)){d(\"read: emitReadable\",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var i=t.needReadable;d(\"need readable\",i);if(t.length===0||t.length-e<t.highWaterMark){i=true;d(\"length less than watermark\",i)}if(t.ended||t.reading){i=false;d(\"reading or ended\",i)}else if(i){d(\"do read\");t.reading=true;t.sync=true;if(t.length===0)t.needReadable=true;this._read(t.highWaterMark);t.sync=false;if(!t.reading)e=howMuchToRead(r,t)}var n;if(e>0)n=fromList(e,t);else n=null;if(n===null){t.needReadable=t.length<=t.highWaterMark;e=0}else{t.length-=e;t.awaitDrain=0}if(t.length===0){if(!t.ended)t.needReadable=true;if(r!==e&&t.ended)endReadable(this)}if(n!==null)this.emit(\"data\",n);return n};function onEofChunk(e,t){d(\"onEofChunk\");if(t.ended)return;if(t.decoder){var r=t.decoder.end();if(r&&r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;if(t.sync){emitReadable(e)}else{t.needReadable=false;if(!t.emittedReadable){t.emittedReadable=true;emitReadable_(e)}}}function emitReadable(e){var t=e._readableState;d(\"emitReadable\",t.needReadable,t.emittedReadable);t.needReadable=false;if(!t.emittedReadable){d(\"emitReadable\",t.flowing);t.emittedReadable=true;process.nextTick(emitReadable_,e)}}function emitReadable_(e){var t=e._readableState;d(\"emitReadable_\",t.destroyed,t.length,t.ended);if(!t.destroyed&&(t.length||t.ended)){e.emit(\"readable\");t.emittedReadable=false}t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark;flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;process.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){while(!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&t.length===0)){var r=t.length;d(\"maybeReadMore read 0\");e.read(0);if(r===t.length)break}t.readingMore=false}Readable.prototype._read=function(e){E(this,new g(\"_read()\"))};Readable.prototype.pipe=function(e,t){var r=this;var i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e);break}i.pipesCount+=1;d(\"pipe count=%d opts=%j\",i.pipesCount,t);var n=(!t||t.end!==false)&&e!==process.stdout&&e!==process.stderr;var s=n?onend:unpipe;if(i.endEmitted)process.nextTick(s);else r.once(\"end\",s);e.on(\"unpipe\",onunpipe);function onunpipe(e,t){d(\"onunpipe\");if(e===r){if(t&&t.hasUnpiped===false){t.hasUnpiped=true;cleanup()}}}function onend(){d(\"onend\");e.end()}var o=pipeOnDrain(r);e.on(\"drain\",o);var h=false;function cleanup(){d(\"cleanup\");e.removeListener(\"close\",onclose);e.removeListener(\"finish\",onfinish);e.removeListener(\"drain\",o);e.removeListener(\"error\",onerror);e.removeListener(\"unpipe\",onunpipe);r.removeListener(\"end\",onend);r.removeListener(\"end\",unpipe);r.removeListener(\"data\",ondata);h=true;if(i.awaitDrain&&(!e._writableState||e._writableState.needDrain))o()}r.on(\"data\",ondata);function ondata(t){d(\"ondata\");var n=e.write(t);d(\"dest.write\",n);if(n===false){if((i.pipesCount===1&&i.pipes===e||i.pipesCount>1&&indexOf(i.pipes,e)!==-1)&&!h){d(\"false write response, pause\",i.awaitDrain);i.awaitDrain++}r.pause()}}function onerror(t){d(\"onerror\",t);unpipe();e.removeListener(\"error\",onerror);if(a(e,\"error\")===0)E(e,t)}prependListener(e,\"error\",onerror);function onclose(){e.removeListener(\"finish\",onfinish);unpipe()}e.once(\"close\",onclose);function onfinish(){d(\"onfinish\");e.removeListener(\"close\",onclose);unpipe()}e.once(\"finish\",onfinish);function unpipe(){d(\"unpipe\");r.unpipe(e)}e.emit(\"pipe\",r);if(!i.flowing){d(\"pipe resume\");r.resume()}return e};function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;d(\"pipeOnDrain\",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&a(e,\"data\")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var r={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit(\"unpipe\",this,r);return this}if(!e){var i=t.pipes;var n=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var a=0;a<n;a++){i[a].emit(\"unpipe\",this,{hasUnpiped:false})}return this}var s=indexOf(t.pipes,e);if(s===-1)return this;t.pipes.splice(s,1);t.pipesCount-=1;if(t.pipesCount===1)t.pipes=t.pipes[0];e.emit(\"unpipe\",this,r);return this};Readable.prototype.on=function(e,t){var r=s.prototype.on.call(this,e,t);var i=this._readableState;if(e===\"data\"){i.readableListening=this.listenerCount(\"readable\")>0;if(i.flowing!==false)this.resume()}else if(e===\"readable\"){if(!i.endEmitted&&!i.readableListening){i.readableListening=i.needReadable=true;i.flowing=false;i.emittedReadable=false;d(\"on readable\",i.length,i.reading);if(i.length){emitReadable(this)}else if(!i.reading){process.nextTick(nReadingNextTick,this)}}}return r};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(e,t){var r=s.prototype.removeListener.call(this,e,t);if(e===\"readable\"){process.nextTick(updateReadableListening,this)}return r};Readable.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);if(e===\"readable\"||e===undefined){process.nextTick(updateReadableListening,this)}return t};function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0;if(t.resumeScheduled&&!t.paused){t.flowing=true}else if(e.listenerCount(\"data\")>0){e.resume()}}function nReadingNextTick(e){d(\"readable nexttick read 0\");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){d(\"resume\");e.flowing=!e.readableListening;resume(this,e)}e.paused=false;return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;process.nextTick(resume_,e,t)}}function resume_(e,t){d(\"resume\",t.reading);if(!t.reading){e.read(0)}t.resumeScheduled=false;e.emit(\"resume\");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){d(\"call pause flowing=%j\",this._readableState.flowing);if(this._readableState.flowing!==false){d(\"pause\");this._readableState.flowing=false;this.emit(\"pause\")}this._readableState.paused=true;return this};function flow(e){var t=e._readableState;d(\"flow\",t.flowing);while(t.flowing&&e.read()!==null){}}Readable.prototype.wrap=function(e){var t=this;var r=this._readableState;var i=false;e.on(\"end\",(function(){d(\"wrapped end\");if(r.decoder&&!r.ended){var e=r.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on(\"data\",(function(n){d(\"wrapped data\");if(r.decoder)n=r.decoder.write(n);if(r.objectMode&&(n===null||n===undefined))return;else if(!r.objectMode&&(!n||!n.length))return;var a=t.push(n);if(!a){i=true;e.pause()}}));for(var n in e){if(this[n]===undefined&&typeof e[n]===\"function\"){this[n]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(n)}}for(var a=0;a<k.length;a++){e.on(k[a],this.emit.bind(this,k[a]))}this._read=function(t){d(\"wrapped _read\",t);if(i){i=false;e.resume()}};return this};if(typeof Symbol===\"function\"){Readable.prototype[Symbol.asyncIterator]=function(){if(M===undefined){M=r(6871)}return M(this)}}Object.defineProperty(Readable.prototype,\"readableHighWaterMark\",{enumerable:false,get:function get(){return this._readableState.highWaterMark}});Object.defineProperty(Readable.prototype,\"readableBuffer\",{enumerable:false,get:function get(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Readable.prototype,\"readableFlowing\",{enumerable:false,get:function get(){return this._readableState.flowing},set:function set(e){if(this._readableState){this._readableState.flowing=e}}});Readable._fromList=fromList;Object.defineProperty(Readable.prototype,\"readableLength\",{enumerable:false,get:function get(){return this._readableState.length}});function fromList(e,t){if(t.length===0)return null;var r;if(t.objectMode)r=t.buffer.shift();else if(!e||e>=t.length){if(t.decoder)r=t.buffer.join(\"\");else if(t.buffer.length===1)r=t.buffer.first();else r=t.buffer.concat(t.length);t.buffer.clear()}else{r=t.buffer.consume(e,t.decoder)}return r}function endReadable(e){var t=e._readableState;d(\"endReadable\",t.endEmitted);if(!t.endEmitted){t.ended=true;process.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){d(\"endReadableNT\",e.endEmitted,e.length);if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit(\"end\");if(e.autoDestroy){var r=t._writableState;if(!r||r.autoDestroy&&r.finished){t.destroy()}}}}if(typeof Symbol===\"function\"){Readable.from=function(e,t){if(B===undefined){B=r(9727)}return B(Readable,e,t)}}function indexOf(e,t){for(var r=0,i=e.length;r<i;r++){if(e[r]===t)return r}return-1}},1170:function(e,t,r){\"use strict\";e.exports=Transform;var i=r(4646).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,a=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,o=i.ERR_TRANSFORM_WITH_LENGTH_0;var h=r(2403);r(3782)(Transform,h);function afterTransform(e,t){var r=this._transformState;r.transforming=false;var i=r.writecb;if(i===null){return this.emit(\"error\",new a)}r.writechunk=null;r.writecb=null;if(t!=null)this.push(t);i(e);var n=this._readableState;n.reading=false;if(n.needReadable||n.length<n.highWaterMark){this._read(n.highWaterMark)}}function Transform(e){if(!(this instanceof Transform))return new Transform(e);h.call(this,e);this._transformState={afterTransform:afterTransform.bind(this),needTransform:false,transforming:false,writecb:null,writechunk:null,writeencoding:null};this._readableState.needReadable=true;this._readableState.sync=false;if(e){if(typeof e.transform===\"function\")this._transform=e.transform;if(typeof e.flush===\"function\")this._flush=e.flush}this.on(\"prefinish\",prefinish)}function prefinish(){var e=this;if(typeof this._flush===\"function\"&&!this._readableState.destroyed){this._flush((function(t,r){done(e,t,r)}))}else{done(this,null,null)}}Transform.prototype.push=function(e,t){this._transformState.needTransform=false;return h.prototype.push.call(this,e,t)};Transform.prototype._transform=function(e,t,r){r(new n(\"_transform()\"))};Transform.prototype._write=function(e,t,r){var i=this._transformState;i.writecb=r;i.writechunk=e;i.writeencoding=t;if(!i.transforming){var n=this._readableState;if(i.needTransform||n.needReadable||n.length<n.highWaterMark)this._read(n.highWaterMark)}};Transform.prototype._read=function(e){var t=this._transformState;if(t.writechunk!==null&&!t.transforming){t.transforming=true;this._transform(t.writechunk,t.writeencoding,t.afterTransform)}else{t.needTransform=true}};Transform.prototype._destroy=function(e,t){h.prototype._destroy.call(this,e,(function(e){t(e)}))};function done(e,t,r){if(t)return e.emit(\"error\",t);if(r!=null)e.push(r);if(e._writableState.length)throw new o;if(e._transformState.transforming)throw new s;return e.push(null)}},7337:function(e,t,r){\"use strict\";e.exports=Writable;function WriteReq(e,t,r){this.chunk=e;this.encoding=t;this.callback=r;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var i;Writable.WritableState=WritableState;var n={deprecate:r(6769)};var a=r(4678);var s=r(4300).Buffer;var o=__webpack_require__.g.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return s.from(e)}function _isUint8Array(e){return s.isBuffer(e)||e instanceof o}var h=r(7025);var u=r(6776),d=u.getHighWaterMark;var c=r(4646).q,l=c.ERR_INVALID_ARG_TYPE,p=c.ERR_METHOD_NOT_IMPLEMENTED,v=c.ERR_MULTIPLE_CALLBACK,b=c.ERR_STREAM_CANNOT_PIPE,m=c.ERR_STREAM_DESTROYED,y=c.ERR_STREAM_NULL_VALUES,g=c.ERR_STREAM_WRITE_AFTER_END,_=c.ERR_UNKNOWN_ENCODING;var w=h.errorOrDestroy;r(3782)(Writable,a);function nop(){}function WritableState(e,t,n){i=i||r(2403);e=e||{};if(typeof n!==\"boolean\")n=t instanceof i;this.objectMode=!!e.objectMode;if(n)this.objectMode=this.objectMode||!!e.writableObjectMode;this.highWaterMark=d(this,e,\"writableHighWaterMark\",n);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var a=e.decodeStrings===false;this.decodeStrings=!a;this.defaultEncoding=e.defaultEncoding||\"utf8\";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,\"buffer\",{get:n.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer \"+\"instead.\",\"DEP0003\")})}catch(e){}})();var M;if(typeof Symbol===\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]===\"function\"){M=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(e){if(M.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{M=function realHasInstance(e){return e instanceof this}}function Writable(e){i=i||r(2403);var t=this instanceof i;if(!t&&!M.call(Writable,this))return new Writable(e);this._writableState=new WritableState(e,this,t);this.writable=true;if(e){if(typeof e.write===\"function\")this._write=e.write;if(typeof e.writev===\"function\")this._writev=e.writev;if(typeof e.destroy===\"function\")this._destroy=e.destroy;if(typeof e.final===\"function\")this._final=e.final}a.call(this)}Writable.prototype.pipe=function(){w(this,new b)};function writeAfterEnd(e,t){var r=new g;w(e,r);process.nextTick(t,r)}function validChunk(e,t,r,i){var n;if(r===null){n=new y}else if(typeof r!==\"string\"&&!t.objectMode){n=new l(\"chunk\",[\"string\",\"Buffer\"],r)}if(n){w(e,n);process.nextTick(i,n);return false}return true}Writable.prototype.write=function(e,t,r){var i=this._writableState;var n=false;var a=!i.objectMode&&_isUint8Array(e);if(a&&!s.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t===\"function\"){r=t;t=null}if(a)t=\"buffer\";else if(!t)t=i.defaultEncoding;if(typeof r!==\"function\")r=nop;if(i.ending)writeAfterEnd(this,r);else if(a||validChunk(this,i,e,r)){i.pendingcb++;n=writeOrBuffer(this,i,a,e,t,r)}return n};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e===\"string\")e=e.toLowerCase();if(!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new _(e);this._writableState.defaultEncoding=e;return this};Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(e,t,r){if(!e.objectMode&&e.decodeStrings!==false&&typeof t===\"string\"){t=s.from(t,r)}return t}Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,r,i,n,a){if(!r){var s=decodeChunk(t,i,n);if(i!==s){r=true;n=\"buffer\";i=s}}var o=t.objectMode?1:i.length;t.length+=o;var h=t.length<t.highWaterMark;if(!h)t.needDrain=true;if(t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:i,encoding:n,isBuf:r,callback:a,next:null};if(u){u.next=t.lastBufferedRequest}else{t.bufferedRequest=t.lastBufferedRequest}t.bufferedRequestCount+=1}else{doWrite(e,t,false,o,i,n,a)}return h}function doWrite(e,t,r,i,n,a,s){t.writelen=i;t.writecb=s;t.writing=true;t.sync=true;if(t.destroyed)t.onwrite(new m(\"write\"));else if(r)e._writev(n,t.onwrite);else e._write(n,a,t.onwrite);t.sync=false}function onwriteError(e,t,r,i,n){--t.pendingcb;if(r){process.nextTick(n,i);process.nextTick(finishMaybe,e,t);e._writableState.errorEmitted=true;w(e,i)}else{n(i);e._writableState.errorEmitted=true;w(e,i);finishMaybe(e,t)}}function onwriteStateUpdate(e){e.writing=false;e.writecb=null;e.length-=e.writelen;e.writelen=0}function onwrite(e,t){var r=e._writableState;var i=r.sync;var n=r.writecb;if(typeof n!==\"function\")throw new v;onwriteStateUpdate(r);if(t)onwriteError(e,r,i,t,n);else{var a=needFinish(r)||e.destroyed;if(!a&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest){clearBuffer(e,r)}if(i){process.nextTick(afterWrite,e,r,a,n)}else{afterWrite(e,r,a,n)}}}function afterWrite(e,t,r,i){if(!r)onwriteDrain(e,t);t.pendingcb--;i();finishMaybe(e,t)}function onwriteDrain(e,t){if(t.length===0&&t.needDrain){t.needDrain=false;e.emit(\"drain\")}}function clearBuffer(e,t){t.bufferProcessing=true;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var i=t.bufferedRequestCount;var n=new Array(i);var a=t.corkedRequestsFree;a.entry=r;var s=0;var o=true;while(r){n[s]=r;if(!r.isBuf)o=false;r=r.next;s+=1}n.allBuffers=o;doWrite(e,t,true,t.length,n,\"\",a.finish);t.pendingcb++;t.lastBufferedRequest=null;if(a.next){t.corkedRequestsFree=a.next;a.next=null}else{t.corkedRequestsFree=new CorkedRequest(t)}t.bufferedRequestCount=0}else{while(r){var h=r.chunk;var u=r.encoding;var d=r.callback;var c=t.objectMode?1:h.length;doWrite(e,t,false,c,h,u,d);r=r.next;t.bufferedRequestCount--;if(t.writing){break}}if(r===null)t.lastBufferedRequest=null}t.bufferedRequest=r;t.bufferProcessing=false}Writable.prototype._write=function(e,t,r){r(new p(\"_write()\"))};Writable.prototype._writev=null;Writable.prototype.end=function(e,t,r){var i=this._writableState;if(typeof e===\"function\"){r=e;e=null;t=null}else if(typeof t===\"function\"){r=t;t=null}if(e!==null&&e!==undefined)this.write(e,t);if(i.corked){i.corked=1;this.uncork()}if(!i.ending)endWritable(this,i,r);return this};Object.defineProperty(Writable.prototype,\"writableLength\",{enumerable:false,get:function get(){return this._writableState.length}});function needFinish(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function callFinal(e,t){e._final((function(r){t.pendingcb--;if(r){w(e,r)}t.prefinished=true;e.emit(\"prefinish\");finishMaybe(e,t)}))}function prefinish(e,t){if(!t.prefinished&&!t.finalCalled){if(typeof e._final===\"function\"&&!t.destroyed){t.pendingcb++;t.finalCalled=true;process.nextTick(callFinal,e,t)}else{t.prefinished=true;e.emit(\"prefinish\")}}}function finishMaybe(e,t){var r=needFinish(t);if(r){prefinish(e,t);if(t.pendingcb===0){t.finished=true;e.emit(\"finish\");if(t.autoDestroy){var i=e._readableState;if(!i||i.autoDestroy&&i.endEmitted){e.destroy()}}}}return r}function endWritable(e,t,r){t.ending=true;finishMaybe(e,t);if(r){if(t.finished)process.nextTick(r);else e.once(\"finish\",r)}t.ended=true;e.writable=false}function onCorkedFinish(e,t,r){var i=e.entry;e.entry=null;while(i){var n=i.callback;t.pendingcb--;n(r);i=i.next}t.corkedRequestsFree.next=e}Object.defineProperty(Writable.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._writableState===undefined){return false}return this._writableState.destroyed},set:function set(e){if(!this._writableState){return}this._writableState.destroyed=e}});Writable.prototype.destroy=h.destroy;Writable.prototype._undestroy=h.undestroy;Writable.prototype._destroy=function(e,t){t(e)}},6871:function(e,t,r){\"use strict\";var i;function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}var n=r(9698);var a=Symbol(\"lastResolve\");var s=Symbol(\"lastReject\");var o=Symbol(\"error\");var h=Symbol(\"ended\");var u=Symbol(\"lastPromise\");var d=Symbol(\"handlePromise\");var c=Symbol(\"stream\");function createIterResult(e,t){return{value:e,done:t}}function readAndResolve(e){var t=e[a];if(t!==null){var r=e[c].read();if(r!==null){e[u]=null;e[a]=null;e[s]=null;t(createIterResult(r,false))}}}function onReadable(e){process.nextTick(readAndResolve,e)}function wrapForNext(e,t){return function(r,i){e.then((function(){if(t[h]){r(createIterResult(undefined,true));return}t[d](r,i)}),i)}}var l=Object.getPrototypeOf((function(){}));var p=Object.setPrototypeOf((i={get stream(){return this[c]},next:function next(){var e=this;var t=this[o];if(t!==null){return Promise.reject(t)}if(this[h]){return Promise.resolve(createIterResult(undefined,true))}if(this[c].destroyed){return new Promise((function(t,r){process.nextTick((function(){if(e[o]){r(e[o])}else{t(createIterResult(undefined,true))}}))}))}var r=this[u];var i;if(r){i=new Promise(wrapForNext(r,this))}else{var n=this[c].read();if(n!==null){return Promise.resolve(createIterResult(n,false))}i=new Promise(this[d])}this[u]=i;return i}},_defineProperty(i,Symbol.asyncIterator,(function(){return this})),_defineProperty(i,\"return\",(function _return(){var e=this;return new Promise((function(t,r){e[c].destroy(null,(function(e){if(e){r(e);return}t(createIterResult(undefined,true))}))}))})),i),l);var v=function createReadableStreamAsyncIterator(e){var t;var r=Object.create(p,(t={},_defineProperty(t,c,{value:e,writable:true}),_defineProperty(t,a,{value:null,writable:true}),_defineProperty(t,s,{value:null,writable:true}),_defineProperty(t,o,{value:null,writable:true}),_defineProperty(t,h,{value:e._readableState.endEmitted,writable:true}),_defineProperty(t,d,{value:function value(e,t){var i=r[c].read();if(i){r[u]=null;r[a]=null;r[s]=null;e(createIterResult(i,false))}else{r[a]=e;r[s]=t}},writable:true}),t));r[u]=null;n(e,(function(e){if(e&&e.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var t=r[s];if(t!==null){r[u]=null;r[a]=null;r[s]=null;t(e)}r[o]=e;return}var i=r[a];if(i!==null){r[u]=null;r[a]=null;r[s]=null;i(createIterResult(undefined,true))}r[h]=true}));e.on(\"readable\",onReadable.bind(null,r));return r};e.exports=v},4379:function(e,t,r){\"use strict\";function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);if(t)i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}));r.push.apply(r,i)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};if(t%2){ownKeys(Object(r),true).forEach((function(t){_defineProperty(e,t,r[t])}))}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}}return e}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||false;i.configurable=true;if(\"value\"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}function _createClass(e,t,r){if(t)_defineProperties(e.prototype,t);if(r)_defineProperties(e,r);return e}var i=r(4300),n=i.Buffer;var a=r(3837),s=a.inspect;var o=s&&s.custom||\"inspect\";function copyBuffer(e,t,r){n.prototype.copy.call(e,t,r)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}_createClass(BufferList,[{key:\"push\",value:function push(e){var t={data:e,next:null};if(this.length>0)this.tail.next=t;else this.head=t;this.tail=t;++this.length}},{key:\"unshift\",value:function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length}},{key:\"shift\",value:function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e}},{key:\"clear\",value:function clear(){this.head=this.tail=null;this.length=0}},{key:\"join\",value:function join(e){if(this.length===0)return\"\";var t=this.head;var r=\"\"+t.data;while(t=t.next){r+=e+t.data}return r}},{key:\"concat\",value:function concat(e){if(this.length===0)return n.alloc(0);var t=n.allocUnsafe(e>>>0);var r=this.head;var i=0;while(r){copyBuffer(r.data,t,i);i+=r.data.length;r=r.next}return t}},{key:\"consume\",value:function consume(e,t){var r;if(e<this.head.data.length){r=this.head.data.slice(0,e);this.head.data=this.head.data.slice(e)}else if(e===this.head.data.length){r=this.shift()}else{r=t?this._getString(e):this._getBuffer(e)}return r}},{key:\"first\",value:function first(){return this.head.data}},{key:\"_getString\",value:function _getString(e){var t=this.head;var r=1;var i=t.data;e-=i.length;while(t=t.next){var n=t.data;var a=e>n.length?n.length:e;if(a===n.length)i+=n;else i+=n.slice(0,e);e-=a;if(e===0){if(a===n.length){++r;if(t.next)this.head=t.next;else this.head=this.tail=null}else{this.head=t;t.data=n.slice(a)}break}++r}this.length-=r;return i}},{key:\"_getBuffer\",value:function _getBuffer(e){var t=n.allocUnsafe(e);var r=this.head;var i=1;r.data.copy(t);e-=r.data.length;while(r=r.next){var a=r.data;var s=e>a.length?a.length:e;a.copy(t,t.length-e,0,s);e-=s;if(e===0){if(s===a.length){++i;if(r.next)this.head=r.next;else this.head=this.tail=null}else{this.head=r;r.data=a.slice(s)}break}++i}this.length-=i;return t}},{key:o,value:function value(e,t){return s(this,_objectSpread({},t,{depth:0,customInspect:false}))}}]);return BufferList}()},7025:function(e){\"use strict\";function destroy(e,t){var r=this;var i=this._readableState&&this._readableState.destroyed;var n=this._writableState&&this._writableState.destroyed;if(i||n){if(t){t(e)}else if(e){if(!this._writableState){process.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!r._writableState){process.nextTick(emitErrorAndCloseNT,r,e)}else if(!r._writableState.errorEmitted){r._writableState.errorEmitted=true;process.nextTick(emitErrorAndCloseNT,r,e)}else{process.nextTick(emitCloseNT,r)}}else if(t){process.nextTick(emitCloseNT,r);t(e)}else{process.nextTick(emitCloseNT,r)}}));return this}function emitErrorAndCloseNT(e,t){emitErrorNT(e,t);emitCloseNT(e)}function emitCloseNT(e){if(e._writableState&&!e._writableState.emitClose)return;if(e._readableState&&!e._readableState.emitClose)return;e.emit(\"close\")}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit(\"error\",t)}function errorOrDestroy(e,t){var r=e._readableState;var i=e._writableState;if(r&&r.autoDestroy||i&&i.autoDestroy)e.destroy(t);else e.emit(\"error\",t)}e.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},9698:function(e,t,r){\"use strict\";var i=r(4646).q.ERR_STREAM_PREMATURE_CLOSE;function once(e){var t=false;return function(){if(t)return;t=true;for(var r=arguments.length,i=new Array(r),n=0;n<r;n++){i[n]=arguments[n]}e.apply(this,i)}}function noop(){}function isRequest(e){return e.setHeader&&typeof e.abort===\"function\"}function eos(e,t,r){if(typeof t===\"function\")return eos(e,null,t);if(!t)t={};r=once(r||noop);var n=t.readable||t.readable!==false&&e.readable;var a=t.writable||t.writable!==false&&e.writable;var s=function onlegacyfinish(){if(!e.writable)h()};var o=e._writableState&&e._writableState.finished;var h=function onfinish(){a=false;o=true;if(!n)r.call(e)};var u=e._readableState&&e._readableState.endEmitted;var d=function onend(){n=false;u=true;if(!a)r.call(e)};var c=function onerror(t){r.call(e,t)};var l=function onclose(){var t;if(n&&!u){if(!e._readableState||!e._readableState.ended)t=new i;return r.call(e,t)}if(a&&!o){if(!e._writableState||!e._writableState.ended)t=new i;return r.call(e,t)}};var p=function onrequest(){e.req.on(\"finish\",h)};if(isRequest(e)){e.on(\"complete\",h);e.on(\"abort\",l);if(e.req)p();else e.on(\"request\",p)}else if(a&&!e._writableState){e.on(\"end\",s);e.on(\"close\",s)}e.on(\"end\",d);e.on(\"finish\",h);if(t.error!==false)e.on(\"error\",c);e.on(\"close\",l);return function(){e.removeListener(\"complete\",h);e.removeListener(\"abort\",l);e.removeListener(\"request\",p);if(e.req)e.req.removeListener(\"finish\",h);e.removeListener(\"end\",s);e.removeListener(\"close\",s);e.removeListener(\"finish\",h);e.removeListener(\"end\",d);e.removeListener(\"error\",c);e.removeListener(\"close\",l)}}e.exports=eos},9727:function(e,t,r){\"use strict\";function asyncGeneratorStep(e,t,r,i,n,a,s){try{var o=e[a](s);var h=o.value}catch(e){r(e);return}if(o.done){t(h)}else{Promise.resolve(h).then(i,n)}}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(i,n){var a=e.apply(t,r);function _next(e){asyncGeneratorStep(a,i,n,_next,_throw,\"next\",e)}function _throw(e){asyncGeneratorStep(a,i,n,_next,_throw,\"throw\",e)}_next(undefined)}))}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);if(t)i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}));r.push.apply(r,i)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};if(t%2){ownKeys(Object(r),true).forEach((function(t){_defineProperty(e,t,r[t])}))}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}}return e}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}var i=r(4646).q.ERR_INVALID_ARG_TYPE;function from(e,t,r){var n;if(t&&typeof t.next===\"function\"){n=t}else if(t&&t[Symbol.asyncIterator])n=t[Symbol.asyncIterator]();else if(t&&t[Symbol.iterator])n=t[Symbol.iterator]();else throw new i(\"iterable\",[\"Iterable\"],t);var a=new e(_objectSpread({objectMode:true},r));var s=false;a._read=function(){if(!s){s=true;next()}};function next(){return _next2.apply(this,arguments)}function _next2(){_next2=_asyncToGenerator((function*(){try{var e=yield n.next(),t=e.value,r=e.done;if(r){a.push(null)}else if(a.push(yield t)){next()}else{s=false}}catch(e){a.destroy(e)}}));return _next2.apply(this,arguments)}return a}e.exports=from},8442:function(e,t,r){\"use strict\";var i;function once(e){var t=false;return function(){if(t)return;t=true;e.apply(void 0,arguments)}}var n=r(4646).q,a=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function noop(e){if(e)throw e}function isRequest(e){return e.setHeader&&typeof e.abort===\"function\"}function destroyer(e,t,n,a){a=once(a);var o=false;e.on(\"close\",(function(){o=true}));if(i===undefined)i=r(9698);i(e,{readable:t,writable:n},(function(e){if(e)return a(e);o=true;a()}));var h=false;return function(t){if(o)return;if(h)return;h=true;if(isRequest(e))return e.abort();if(typeof e.destroy===\"function\")return e.destroy();a(t||new s(\"pipe\"))}}function call(e){e()}function pipe(e,t){return e.pipe(t)}function popCallback(e){if(!e.length)return noop;if(typeof e[e.length-1]!==\"function\")return noop;return e.pop()}function pipeline(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++){t[r]=arguments[r]}var i=popCallback(t);if(Array.isArray(t[0]))t=t[0];if(t.length<2){throw new a(\"streams\")}var n;var s=t.map((function(e,r){var a=r<t.length-1;var o=r>0;return destroyer(e,a,o,(function(e){if(!n)n=e;if(e)s.forEach(call);if(a)return;s.forEach(call);i(n)}))}));return t.reduce(pipe)}e.exports=pipeline},6776:function(e,t,r){\"use strict\";var i=r(4646).q.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function getHighWaterMark(e,t,r,n){var a=highWaterMarkFrom(t,n,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var s=n?r:\"highWaterMark\";throw new i(s,a)}return Math.floor(a)}return e.objectMode?16:16*1024}e.exports={getHighWaterMark:getHighWaterMark}},4678:function(e,t,r){e.exports=r(2781)},3726:function(e,t,r){var i=r(2781);if(process.env.READABLE_STREAM===\"disable\"&&i){e.exports=i.Readable;Object.assign(e.exports,i);e.exports.Stream=i}else{t=e.exports=r(1709);t.Stream=i||t;t.Readable=t;t.Writable=r(7337);t.Duplex=r(2403);t.Transform=r(1170);t.PassThrough=r(7889);t.finished=r(9698);t.pipeline=r(8442)}},3225:function(e,t,r){\"use strict\";var i=r(4300).Buffer;var n=r(3782);var a=r(9029);var s=new Array(16);var o=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13];var h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11];var u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6];var d=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11];var c=[0,1518500249,1859775393,2400959708,2840853838];var l=[1352829926,1548603684,1836072691,2053994217,0];function RIPEMD160(){a.call(this,64);this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520}n(RIPEMD160,a);RIPEMD160.prototype._update=function(){var e=s;for(var t=0;t<16;++t)e[t]=this._block.readInt32LE(t*4);var r=this._a|0;var i=this._b|0;var n=this._c|0;var a=this._d|0;var p=this._e|0;var v=this._a|0;var b=this._b|0;var m=this._c|0;var y=this._d|0;var g=this._e|0;for(var _=0;_<80;_+=1){var w;var M;if(_<16){w=fn1(r,i,n,a,p,e[o[_]],c[0],u[_]);M=fn5(v,b,m,y,g,e[h[_]],l[0],d[_])}else if(_<32){w=fn2(r,i,n,a,p,e[o[_]],c[1],u[_]);M=fn4(v,b,m,y,g,e[h[_]],l[1],d[_])}else if(_<48){w=fn3(r,i,n,a,p,e[o[_]],c[2],u[_]);M=fn3(v,b,m,y,g,e[h[_]],l[2],d[_])}else if(_<64){w=fn4(r,i,n,a,p,e[o[_]],c[3],u[_]);M=fn2(v,b,m,y,g,e[h[_]],l[3],d[_])}else{w=fn5(r,i,n,a,p,e[o[_]],c[4],u[_]);M=fn1(v,b,m,y,g,e[h[_]],l[4],d[_])}r=p;p=a;a=rotl(n,10);n=i;i=w;v=g;g=y;y=rotl(m,10);m=b;b=M}var B=this._b+n+y|0;this._b=this._c+a+g|0;this._c=this._d+p+v|0;this._d=this._e+r+b|0;this._e=this._a+i+m|0;this._a=B};RIPEMD160.prototype._digest=function(){this._block[this._blockOffset++]=128;if(this._blockOffset>56){this._block.fill(0,this._blockOffset,64);this._update();this._blockOffset=0}this._block.fill(0,this._blockOffset,56);this._block.writeUInt32LE(this._length[0],56);this._block.writeUInt32LE(this._length[1],60);this._update();var e=i.alloc?i.alloc(20):new i(20);e.writeInt32LE(this._a,0);e.writeInt32LE(this._b,4);e.writeInt32LE(this._c,8);e.writeInt32LE(this._d,12);e.writeInt32LE(this._e,16);return e};function rotl(e,t){return e<<t|e>>>32-t}function fn1(e,t,r,i,n,a,s,o){return rotl(e+(t^r^i)+a+s|0,o)+n|0}function fn2(e,t,r,i,n,a,s,o){return rotl(e+(t&r|~t&i)+a+s|0,o)+n|0}function fn3(e,t,r,i,n,a,s,o){return rotl(e+((t|~r)^i)+a+s|0,o)+n|0}function fn4(e,t,r,i,n,a,s,o){return rotl(e+(t&i|r&~i)+a+s|0,o)+n|0}function fn5(e,t,r,i,n,a,s,o){return rotl(e+(t^(r|~i))+a+s|0,o)+n|0}e.exports=RIPEMD160},5055:function(e,t,r){var i=r(4300);var n=i.Buffer;function copyProps(e,t){for(var r in e){t[r]=e[r]}}if(n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow){e.exports=i}else{copyProps(i,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,r){return n(e,t,r)}SafeBuffer.prototype=Object.create(n.prototype);copyProps(n,SafeBuffer);SafeBuffer.from=function(e,t,r){if(typeof e===\"number\"){throw new TypeError(\"Argument must not be a number\")}return n(e,t,r)};SafeBuffer.alloc=function(e,t,r){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}var i=n(e);if(t!==undefined){if(typeof r===\"string\"){i.fill(t,r)}else{i.fill(t)}}else{i.fill(0)}return i};SafeBuffer.allocUnsafe=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i.SlowBuffer(e)}},6911:function(e,t,r){\n/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nvar i=r(4300);var n=i.Buffer;function copyProps(e,t){for(var r in e){t[r]=e[r]}}if(n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow){e.exports=i}else{copyProps(i,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,r){return n(e,t,r)}SafeBuffer.prototype=Object.create(n.prototype);copyProps(n,SafeBuffer);SafeBuffer.from=function(e,t,r){if(typeof e===\"number\"){throw new TypeError(\"Argument must not be a number\")}return n(e,t,r)};SafeBuffer.alloc=function(e,t,r){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}var i=n(e);if(t!==undefined){if(typeof r===\"string\"){i.fill(t,r)}else{i.fill(t)}}else{i.fill(0)}return i};SafeBuffer.allocUnsafe=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i.SlowBuffer(e)}},2858:function(e,t,r){var i=r(6911).Buffer;function Hash(e,t){this._block=i.alloc(e);this._finalSize=t;this._blockSize=e;this._len=0}Hash.prototype.update=function(e,t){if(typeof e===\"string\"){t=t||\"utf8\";e=i.from(e,t)}var r=this._block;var n=this._blockSize;var a=e.length;var s=this._len;for(var o=0;o<a;){var h=s%n;var u=Math.min(a-o,n-h);for(var d=0;d<u;d++){r[h+d]=e[o+d]}s+=u;o+=u;if(s%n===0){this._update(r)}}this._len+=a;return this};Hash.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128;this._block.fill(0,t+1);if(t>=this._finalSize){this._update(this._block);this._block.fill(0)}var r=this._len*8;if(r<=4294967295){this._block.writeUInt32BE(r,this._blockSize-4)}else{var i=(r&4294967295)>>>0;var n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8);this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return e?a.toString(e):a};Hash.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")};e.exports=Hash},4371:function(e,t,r){var i=e.exports=function SHA(e){e=e.toLowerCase();var t=i[e];if(!t)throw new Error(e+\" is not supported (we accept pull requests)\");return new t};i.sha=r(4018);i.sha1=r(4179);i.sha224=r(532);i.sha256=r(1843);i.sha384=r(7455);i.sha512=r(9934)},4018:function(e,t,r){var i=r(3782);var n=r(2858);var a=r(6911).Buffer;var s=[1518500249,1859775393,2400959708|0,3395469782|0];var o=new Array(80);function Sha(){this.init();this._w=o;n.call(this,64,56)}i(Sha,n);Sha.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl5(e){return e<<5|e>>>27}function rotl30(e){return e<<30|e>>>2}function ft(e,t,r,i){if(e===0)return t&r|~t&i;if(e===2)return t&r|t&i|r&i;return t^r^i}Sha.prototype._update=function(e){var t=this._w;var r=this._a|0;var i=this._b|0;var n=this._c|0;var a=this._d|0;var o=this._e|0;for(var h=0;h<16;++h)t[h]=e.readInt32BE(h*4);for(;h<80;++h)t[h]=t[h-3]^t[h-8]^t[h-14]^t[h-16];for(var u=0;u<80;++u){var d=~~(u/20);var c=rotl5(r)+ft(d,i,n,a)+o+t[u]+s[d]|0;o=a;a=n;n=rotl30(i);i=r;r=c}this._a=r+this._a|0;this._b=i+this._b|0;this._c=n+this._c|0;this._d=a+this._d|0;this._e=o+this._e|0};Sha.prototype._hash=function(){var e=a.allocUnsafe(20);e.writeInt32BE(this._a|0,0);e.writeInt32BE(this._b|0,4);e.writeInt32BE(this._c|0,8);e.writeInt32BE(this._d|0,12);e.writeInt32BE(this._e|0,16);return e};e.exports=Sha},4179:function(e,t,r){var i=r(3782);var n=r(2858);var a=r(6911).Buffer;var s=[1518500249,1859775393,2400959708|0,3395469782|0];var o=new Array(80);function Sha1(){this.init();this._w=o;n.call(this,64,56)}i(Sha1,n);Sha1.prototype.init=function(){this._a=1732584193;this._b=4023233417;this._c=2562383102;this._d=271733878;this._e=3285377520;return this};function rotl1(e){return e<<1|e>>>31}function rotl5(e){return e<<5|e>>>27}function rotl30(e){return e<<30|e>>>2}function ft(e,t,r,i){if(e===0)return t&r|~t&i;if(e===2)return t&r|t&i|r&i;return t^r^i}Sha1.prototype._update=function(e){var t=this._w;var r=this._a|0;var i=this._b|0;var n=this._c|0;var a=this._d|0;var o=this._e|0;for(var h=0;h<16;++h)t[h]=e.readInt32BE(h*4);for(;h<80;++h)t[h]=rotl1(t[h-3]^t[h-8]^t[h-14]^t[h-16]);for(var u=0;u<80;++u){var d=~~(u/20);var c=rotl5(r)+ft(d,i,n,a)+o+t[u]+s[d]|0;o=a;a=n;n=rotl30(i);i=r;r=c}this._a=r+this._a|0;this._b=i+this._b|0;this._c=n+this._c|0;this._d=a+this._d|0;this._e=o+this._e|0};Sha1.prototype._hash=function(){var e=a.allocUnsafe(20);e.writeInt32BE(this._a|0,0);e.writeInt32BE(this._b|0,4);e.writeInt32BE(this._c|0,8);e.writeInt32BE(this._d|0,12);e.writeInt32BE(this._e|0,16);return e};e.exports=Sha1},532:function(e,t,r){var i=r(3782);var n=r(1843);var a=r(2858);var s=r(6911).Buffer;var o=new Array(64);function Sha224(){this.init();this._w=o;a.call(this,64,56)}i(Sha224,n);Sha224.prototype.init=function(){this._a=3238371032;this._b=914150663;this._c=812702999;this._d=4144912697;this._e=4290775857;this._f=1750603025;this._g=1694076839;this._h=3204075428;return this};Sha224.prototype._hash=function(){var e=s.allocUnsafe(28);e.writeInt32BE(this._a,0);e.writeInt32BE(this._b,4);e.writeInt32BE(this._c,8);e.writeInt32BE(this._d,12);e.writeInt32BE(this._e,16);e.writeInt32BE(this._f,20);e.writeInt32BE(this._g,24);return e};e.exports=Sha224},1843:function(e,t,r){var i=r(3782);var n=r(2858);var a=r(6911).Buffer;var s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var o=new Array(64);function Sha256(){this.init();this._w=o;n.call(this,64,56)}i(Sha256,n);Sha256.prototype.init=function(){this._a=1779033703;this._b=3144134277;this._c=1013904242;this._d=2773480762;this._e=1359893119;this._f=2600822924;this._g=528734635;this._h=1541459225;return this};function ch(e,t,r){return r^e&(t^r)}function maj(e,t,r){return e&t|r&(e|t)}function sigma0(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function sigma1(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function gamma0(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function gamma1(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}Sha256.prototype._update=function(e){var t=this._w;var r=this._a|0;var i=this._b|0;var n=this._c|0;var a=this._d|0;var o=this._e|0;var h=this._f|0;var u=this._g|0;var d=this._h|0;for(var c=0;c<16;++c)t[c]=e.readInt32BE(c*4);for(;c<64;++c)t[c]=gamma1(t[c-2])+t[c-7]+gamma0(t[c-15])+t[c-16]|0;for(var l=0;l<64;++l){var p=d+sigma1(o)+ch(o,h,u)+s[l]+t[l]|0;var v=sigma0(r)+maj(r,i,n)|0;d=u;u=h;h=o;o=a+p|0;a=n;n=i;i=r;r=p+v|0}this._a=r+this._a|0;this._b=i+this._b|0;this._c=n+this._c|0;this._d=a+this._d|0;this._e=o+this._e|0;this._f=h+this._f|0;this._g=u+this._g|0;this._h=d+this._h|0};Sha256.prototype._hash=function(){var e=a.allocUnsafe(32);e.writeInt32BE(this._a,0);e.writeInt32BE(this._b,4);e.writeInt32BE(this._c,8);e.writeInt32BE(this._d,12);e.writeInt32BE(this._e,16);e.writeInt32BE(this._f,20);e.writeInt32BE(this._g,24);e.writeInt32BE(this._h,28);return e};e.exports=Sha256},7455:function(e,t,r){var i=r(3782);var n=r(9934);var a=r(2858);var s=r(6911).Buffer;var o=new Array(160);function Sha384(){this.init();this._w=o;a.call(this,128,112)}i(Sha384,n);Sha384.prototype.init=function(){this._ah=3418070365;this._bh=1654270250;this._ch=2438529370;this._dh=355462360;this._eh=1731405415;this._fh=2394180231;this._gh=3675008525;this._hh=1203062813;this._al=3238371032;this._bl=914150663;this._cl=812702999;this._dl=4144912697;this._el=4290775857;this._fl=1750603025;this._gl=1694076839;this._hl=3204075428;return this};Sha384.prototype._hash=function(){var e=s.allocUnsafe(48);function writeInt64BE(t,r,i){e.writeInt32BE(t,i);e.writeInt32BE(r,i+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);return e};e.exports=Sha384},9934:function(e,t,r){var i=r(3782);var n=r(2858);var a=r(6911).Buffer;var s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];var o=new Array(160);function Sha512(){this.init();this._w=o;n.call(this,128,112)}i(Sha512,n);Sha512.prototype.init=function(){this._ah=1779033703;this._bh=3144134277;this._ch=1013904242;this._dh=2773480762;this._eh=1359893119;this._fh=2600822924;this._gh=528734635;this._hh=1541459225;this._al=4089235720;this._bl=2227873595;this._cl=4271175723;this._dl=1595750129;this._el=2917565137;this._fl=725511199;this._gl=4215389547;this._hl=327033209;return this};function Ch(e,t,r){return r^e&(t^r)}function maj(e,t,r){return e&t|r&(e|t)}function sigma0(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function sigma1(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function Gamma0(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function Gamma0l(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function Gamma1(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function Gamma1l(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function getCarry(e,t){return e>>>0<t>>>0?1:0}Sha512.prototype._update=function(e){var t=this._w;var r=this._ah|0;var i=this._bh|0;var n=this._ch|0;var a=this._dh|0;var o=this._eh|0;var h=this._fh|0;var u=this._gh|0;var d=this._hh|0;var c=this._al|0;var l=this._bl|0;var p=this._cl|0;var v=this._dl|0;var b=this._el|0;var m=this._fl|0;var y=this._gl|0;var g=this._hl|0;for(var _=0;_<32;_+=2){t[_]=e.readInt32BE(_*4);t[_+1]=e.readInt32BE(_*4+4)}for(;_<160;_+=2){var w=t[_-15*2];var M=t[_-15*2+1];var B=Gamma0(w,M);var E=Gamma0l(M,w);w=t[_-2*2];M=t[_-2*2+1];var k=Gamma1(w,M);var A=Gamma1l(M,w);var N=t[_-7*2];var P=t[_-7*2+1];var x=t[_-16*2];var I=t[_-16*2+1];var C=E+P|0;var D=B+N+getCarry(C,E)|0;C=C+A|0;D=D+k+getCarry(C,A)|0;C=C+I|0;D=D+x+getCarry(C,I)|0;t[_]=D;t[_+1]=C}for(var T=0;T<160;T+=2){D=t[T];C=t[T+1];var j=maj(r,i,n);var q=maj(c,l,p);var O=sigma0(r,c);var H=sigma0(c,r);var L=sigma1(o,b);var z=sigma1(b,o);var F=s[T];var U=s[T+1];var W=Ch(o,h,u);var V=Ch(b,m,y);var G=g+z|0;var J=d+L+getCarry(G,g)|0;G=G+V|0;J=J+W+getCarry(G,V)|0;G=G+U|0;J=J+F+getCarry(G,U)|0;G=G+C|0;J=J+D+getCarry(G,C)|0;var Z=H+q|0;var X=O+j+getCarry(Z,H)|0;d=u;g=y;u=h;y=m;h=o;m=b;b=v+G|0;o=a+J+getCarry(b,v)|0;a=n;v=p;n=i;p=l;i=r;l=c;c=G+Z|0;r=J+X+getCarry(c,G)|0}this._al=this._al+c|0;this._bl=this._bl+l|0;this._cl=this._cl+p|0;this._dl=this._dl+v|0;this._el=this._el+b|0;this._fl=this._fl+m|0;this._gl=this._gl+y|0;this._hl=this._hl+g|0;this._ah=this._ah+r+getCarry(this._al,c)|0;this._bh=this._bh+i+getCarry(this._bl,l)|0;this._ch=this._ch+n+getCarry(this._cl,p)|0;this._dh=this._dh+a+getCarry(this._dl,v)|0;this._eh=this._eh+o+getCarry(this._el,b)|0;this._fh=this._fh+h+getCarry(this._fl,m)|0;this._gh=this._gh+u+getCarry(this._gl,y)|0;this._hh=this._hh+d+getCarry(this._hl,g)|0};Sha512.prototype._hash=function(){var e=a.allocUnsafe(64);function writeInt64BE(t,r,i){e.writeInt32BE(t,i);e.writeInt32BE(r,i+4)}writeInt64BE(this._ah,this._al,0);writeInt64BE(this._bh,this._bl,8);writeInt64BE(this._ch,this._cl,16);writeInt64BE(this._dh,this._dl,24);writeInt64BE(this._eh,this._el,32);writeInt64BE(this._fh,this._fl,40);writeInt64BE(this._gh,this._gl,48);writeInt64BE(this._hh,this._hl,56);return e};e.exports=Sha512},3704:function(e,t,r){\"use strict\";var i=r(5055).Buffer;var n=i.isEncoding||function(e){e=\"\"+e;switch(e&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return true;default:return false}};function _normalizeEncoding(e){if(!e)return\"utf8\";var t;while(true){switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!==\"string\"&&(i.isEncoding===n||!n(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}t.s=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case\"utf16le\":this.text=utf16Text;this.end=utf16End;t=4;break;case\"utf8\":this.fillLast=utf8FillLast;t=4;break;case\"base64\":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=i.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return\"\";var t;var r;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return\"\";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r<e.length)return t?t+this.text(e,r):this.text(e,r);return t||\"\"};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(e){if(this.lastNeed<=e.length){e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length);this.lastNeed-=e.length};function utf8CheckByte(e){if(e<=127)return 0;else if(e>>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,r){var i=t.length-1;if(i<r)return 0;var n=utf8CheckByte(t[i]);if(n>=0){if(n>0)e.lastNeed=n-1;return n}if(--i<r||n===-2)return 0;n=utf8CheckByte(t[i]);if(n>=0){if(n>0)e.lastNeed=n-2;return n}if(--i<r||n===-2)return 0;n=utf8CheckByte(t[i]);if(n>=0){if(n>0){if(n===2)n=0;else e.lastNeed=n-3}return n}return 0}function utf8CheckExtraBytes(e,t,r){if((t[0]&192)!==128){e.lastNeed=0;return\"<22>\"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return\"<22>\"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return\"<22>\"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,e,t);if(r!==undefined)return r;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var r=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var i=e.length-(r-this.lastNeed);e.copy(this.lastChar,0,i);return e.toString(\"utf8\",t,i)}function utf8End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+\"<22>\";return t}function utf16Text(e,t){if((e.length-t)%2===0){var r=e.toString(\"utf16le\",t);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString(\"utf16le\",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function base64Text(e,t){var r=(e.length-t)%3;if(r===0)return e.toString(\"base64\",t);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString(\"base64\",t,e.length-r)}function base64End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):\"\"}},6769:function(e){e.exports=deprecate;function deprecate(e,t){if(config(\"noDeprecation\")){return e}var r=false;function deprecated(){if(!r){if(config(\"throwDeprecation\")){throw new Error(t)}else if(config(\"traceDeprecation\")){console.trace(t)}else{console.warn(t)}r=true}return e.apply(this,arguments)}return deprecated}function config(e){try{if(!__webpack_require__.g.localStorage)return false}catch(e){return false}var t=__webpack_require__.g.localStorage[e];if(null==t)return false;return String(t).toLowerCase()===\"true\"}},4300:function(e){\"use strict\";e.exports=__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")},6113:function(e){\"use strict\";e.exports=__webpack_require__(/*! crypto */ \"./node_modules/next/dist/compiled/crypto-browserify/index.js\")},2361:function(e){\"use strict\";e.exports=__webpack_require__(/*! events */ \"./node_modules/next/dist/compiled/events/events.js\")},2781:function(e){\"use strict\";e.exports=__webpack_require__(/*! stream */ \"./node_modules/next/dist/compiled/stream-browserify/index.js\")},1576:function(e){\"use strict\";e.exports=__webpack_require__(/*! string_decoder */ \"./node_modules/next/dist/compiled/string_decoder/string_decoder.js\")},3837:function(e){\"use strict\";e.exports=__webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\")},6144:function(e){\"use strict\";e.exports=__webpack_require__(/*! vm */ \"./node_modules/next/dist/compiled/vm-browserify/index.js\")},5866:function(e){\"use strict\";e.exports=JSON.parse('{\"aes-128-ecb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-192-ecb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-256-ecb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":0,\"mode\":\"ECB\",\"type\":\"block\"},\"aes-128-cbc\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-192-cbc\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-256-cbc\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes128\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes192\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes256\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CBC\",\"type\":\"block\"},\"aes-128-cfb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-192-cfb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-256-cfb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB\",\"type\":\"stream\"},\"aes-128-cfb8\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-192-cfb8\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-256-cfb8\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB8\",\"type\":\"stream\"},\"aes-128-cfb1\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-192-cfb1\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-256-cfb1\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CFB1\",\"type\":\"stream\"},\"aes-128-ofb\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-192-ofb\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-256-ofb\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"OFB\",\"type\":\"stream\"},\"aes-128-ctr\":{\"cipher\":\"AES\",\"key\":128,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-192-ctr\":{\"cipher\":\"AES\",\"key\":192,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-256-ctr\":{\"cipher\":\"AES\",\"key\":256,\"iv\":16,\"mode\":\"CTR\",\"type\":\"stream\"},\"aes-128-gcm\":{\"cipher\":\"AES\",\"key\":128,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"},\"aes-192-gcm\":{\"cipher\":\"AES\",\"key\":192,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"},\"aes-256-gcm\":{\"cipher\":\"AES\",\"key\":256,\"iv\":12,\"mode\":\"GCM\",\"type\":\"auth\"}}')},2908:function(e){\"use strict\";e.exports=JSON.parse('{\"sha224WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha224\",\"id\":\"302d300d06096086480165030402040500041c\"},\"RSA-SHA224\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha224\",\"id\":\"302d300d06096086480165030402040500041c\"},\"sha256WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha256\",\"id\":\"3031300d060960864801650304020105000420\"},\"RSA-SHA256\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha256\",\"id\":\"3031300d060960864801650304020105000420\"},\"sha384WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha384\",\"id\":\"3041300d060960864801650304020205000430\"},\"RSA-SHA384\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha384\",\"id\":\"3041300d060960864801650304020205000430\"},\"sha512WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"sha512\",\"id\":\"3051300d060960864801650304020305000440\"},\"RSA-SHA512\":{\"sign\":\"ecdsa/rsa\",\"hash\":\"sha512\",\"id\":\"3051300d060960864801650304020305000440\"},\"RSA-SHA1\":{\"sign\":\"rsa\",\"hash\":\"sha1\",\"id\":\"3021300906052b0e03021a05000414\"},\"ecdsa-with-SHA1\":{\"sign\":\"ecdsa\",\"hash\":\"sha1\",\"id\":\"\"},\"sha256\":{\"sign\":\"ecdsa\",\"hash\":\"sha256\",\"id\":\"\"},\"sha224\":{\"sign\":\"ecdsa\",\"hash\":\"sha224\",\"id\":\"\"},\"sha384\":{\"sign\":\"ecdsa\",\"hash\":\"sha384\",\"id\":\"\"},\"sha512\":{\"sign\":\"ecdsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-SHA\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA-SHA1\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA\":{\"sign\":\"dsa\",\"hash\":\"sha1\",\"id\":\"\"},\"DSA-WITH-SHA224\":{\"sign\":\"dsa\",\"hash\":\"sha224\",\"id\":\"\"},\"DSA-SHA224\":{\"sign\":\"dsa\",\"hash\":\"sha224\",\"id\":\"\"},\"DSA-WITH-SHA256\":{\"sign\":\"dsa\",\"hash\":\"sha256\",\"id\":\"\"},\"DSA-SHA256\":{\"sign\":\"dsa\",\"hash\":\"sha256\",\"id\":\"\"},\"DSA-WITH-SHA384\":{\"sign\":\"dsa\",\"hash\":\"sha384\",\"id\":\"\"},\"DSA-SHA384\":{\"sign\":\"dsa\",\"hash\":\"sha384\",\"id\":\"\"},\"DSA-WITH-SHA512\":{\"sign\":\"dsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-SHA512\":{\"sign\":\"dsa\",\"hash\":\"sha512\",\"id\":\"\"},\"DSA-RIPEMD160\":{\"sign\":\"dsa\",\"hash\":\"rmd160\",\"id\":\"\"},\"ripemd160WithRSA\":{\"sign\":\"rsa\",\"hash\":\"rmd160\",\"id\":\"3021300906052b2403020105000414\"},\"RSA-RIPEMD160\":{\"sign\":\"rsa\",\"hash\":\"rmd160\",\"id\":\"3021300906052b2403020105000414\"},\"md5WithRSAEncryption\":{\"sign\":\"rsa\",\"hash\":\"md5\",\"id\":\"3020300c06082a864886f70d020505000410\"},\"RSA-MD5\":{\"sign\":\"rsa\",\"hash\":\"md5\",\"id\":\"3020300c06082a864886f70d020505000410\"}}')},9267:function(e){\"use strict\";e.exports=JSON.parse('{\"1.3.132.0.10\":\"secp256k1\",\"1.3.132.0.33\":\"p224\",\"1.2.840.10045.3.1.1\":\"p192\",\"1.2.840.10045.3.1.7\":\"p256\",\"1.3.132.0.34\":\"p384\",\"1.3.132.0.35\":\"p521\"}')},7992:function(e){\"use strict\";e.exports=JSON.parse('{\"modp1\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},\"modp2\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},\"modp5\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},\"modp14\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},\"modp15\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},\"modp16\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"},\"modp17\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},\"modp18\":{\"gen\":\"02\",\"prime\":\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}')},2531:function(e){\"use strict\";e.exports={i8:\"6.5.3\"}},2510:function(e){\"use strict\";e.exports=JSON.parse('{\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}')}};var t={};function __nccwpck_require__(r){var i=t[r];if(i!==undefined){return i.exports}var n=t[r]={id:r,loaded:false,exports:{}};var a=true;try{e[r].call(n.exports,n,n.exports,__nccwpck_require__);a=false}finally{if(a)delete t[r]}n.loaded=true;return n.exports}!function(){__nccwpck_require__.nmd=function(e){e.paths=[];if(!e.children)e.children=[];return e}}();if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};!function(){\"use strict\";var e=r;e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=__nccwpck_require__(7223);e.createHash=e.Hash=__nccwpck_require__(9739);e.createHmac=e.Hmac=__nccwpck_require__(4873);var t=__nccwpck_require__(9276);var i=Object.keys(t);var n=[\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"md5\",\"rmd160\"].concat(i);e.getHashes=function(){return n};var a=__nccwpck_require__(4978);e.pbkdf2=a.pbkdf2;e.pbkdf2Sync=a.pbkdf2Sync;var s=__nccwpck_require__(8996);e.Cipher=s.Cipher;e.createCipher=s.createCipher;e.Cipheriv=s.Cipheriv;e.createCipheriv=s.createCipheriv;e.Decipher=s.Decipher;e.createDecipher=s.createDecipher;e.Decipheriv=s.Decipheriv;e.createDecipheriv=s.createDecipheriv;e.getCiphers=s.getCiphers;e.listCiphers=s.listCiphers;var o=__nccwpck_require__(6587);e.DiffieHellmanGroup=o.DiffieHellmanGroup;e.createDiffieHellmanGroup=o.createDiffieHellmanGroup;e.getDiffieHellman=o.getDiffieHellman;e.createDiffieHellman=o.createDiffieHellman;e.DiffieHellman=o.DiffieHellman;var h=__nccwpck_require__(4078);e.createSign=h.createSign;e.Sign=h.Sign;e.createVerify=h.createVerify;e.Verify=h.Verify;e.createECDH=__nccwpck_require__(9942);var u=__nccwpck_require__(9783);e.publicEncrypt=u.publicEncrypt;e.privateEncrypt=u.privateEncrypt;e.publicDecrypt=u.publicDecrypt;e.privateDecrypt=u.privateDecrypt;var d=__nccwpck_require__(6445);e.randomFill=d.randomFill;e.randomFillSync=d.randomFillSync;e.createCredentials=function(){throw new Error([\"sorry, createCredentials is not implemented yet\",\"we accept pull requests\",\"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"))};e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}}();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2NyeXB0by1icm93c2VyaWZ5L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7OztBQUFBLFlBQVksT0FBTyxxQkFBcUIsUUFBUSxnQkFBZ0IsdUJBQXVCLGNBQWMsb0JBQW9CLG1CQUFtQixtQkFBbUIscUJBQXFCLGNBQWMsY0FBYyxRQUFRLDhCQUE4Qix3QkFBd0IscUJBQXFCLFlBQVksWUFBWSxpQkFBaUIsaUJBQWlCLHNEQUFzRCxNQUFNLElBQUksNkRBQTZELCtCQUErQixNQUFNLElBQUksU0FBUyxjQUFjLG9CQUFvQixPQUFPLDZDQUE2QyxnQkFBZ0Isb0JBQW9CLHFEQUFxRCxXQUFXLHNGQUFzRix5QkFBeUIsK0NBQStDLHdDQUF3QyxxREFBcUQsV0FBVyxzRkFBc0YseUJBQXlCLCtDQUErQyx3Q0FBd0Msc0JBQXNCLGNBQWMsc0JBQXNCLHFCQUFxQiw0QkFBNEIsZUFBZSxtQkFBbUIsK0JBQStCLE9BQU8sWUFBWSxjQUFjLHFCQUFxQixtQkFBbUIsa0JBQWtCLDZDQUE2QyxPQUFPLDBEQUEwRCxvREFBb0QsbUNBQW1DLGtCQUFrQixxQkFBcUIscUJBQXFCLDBDQUEwQyxVQUFVLG1EQUFtRCxrQ0FBa0Msd0RBQXdELDZFQUE2RSxvREFBb0QsZ0RBQWdELCtFQUErRSxtQ0FBbUMscUNBQXFDLHFCQUFxQix1QkFBdUIsZUFBZSxVQUFVLDRDQUE0Qyw0REFBNEQsNEJBQTRCLHFCQUFxQixjQUFjLDhCQUE4QiwwREFBMEQsc0JBQXNCLFNBQVMsUUFBUSw2QkFBNkIsa0VBQWtFLGFBQWEsY0FBYyw2QkFBNkIsYUFBYSw0QkFBNEIsdUJBQXVCLGFBQWEscUJBQXFCLEtBQUssK0NBQStDLGtCQUFrQixnREFBZ0QsMkJBQTJCLFVBQVUsNEJBQTRCLDhCQUE4QixnQ0FBZ0MsWUFBWSxZQUFZLEdBQUcsS0FBSyxnREFBZ0QsMkRBQTJELG9EQUFvRCxlQUFlLFVBQVUscUJBQXFCLFFBQVEscUJBQXFCLDBCQUEwQiww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QUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsaUJBQWlCLGlCQUFpQixxQkFBcUIsaUJBQWlCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsaUJBQWlCLGlCQUFpQixxQkFBcUIsaUJBQWlCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsaUJBQWlCLGlCQUFpQixxQkFBcUIsaUJBQWlCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsaUJBQWlCLGlCQUFpQixxQkFBcUIsaUJBQWlCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Isc0JBQXNCLGtCQUFrQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsa0JBQWtCLGtCQUFrQixzQkFBc0Isa0JBQWtCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Isc0JBQXNCLGtCQUFrQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Isc0JBQXNCLGtCQUFrQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixnQ0FBZ0MsNkJBQTZCLGFBQWEsa0JBQWtCLGtCQUFrQixzQkFBc0Isa0JBQWtCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Isc0JBQXNCLGtCQUFrQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Is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aUJBQWlCLHFCQUFxQixpQkFBaUIsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLGdDQUFnQyw2QkFBNkIsYUFBYSxpQkFBaUIsaUJBQWlCLHFCQUFxQixpQkFBaUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLGdDQUFnQyw2QkFBNkIsYUFBYSxpQkFBaUIsaUJBQWlCLHFCQUFxQixpQkFBaUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLGdDQUFnQyw2QkFBNkIsYUFBYSxpQkFBaUIsaUJBQWlCLHFCQUFxQixpQkFBaUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIscUJBQXFCLHFCQUFxQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGlCQUFpQixpQkFBaUIscUJBQXFCLGlCQUFpQixxQkFBcUIscUJBQXFCLHFCQUFxQixxQkFBcUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLGdDQUFnQyw2QkFBNkIsYUFBYSxpQkFBaUIsaUJBQWlCLHFCQUFxQixpQkFBaUIsc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLGdDQUFnQyw2QkFBNkIsYUFBYSxrQkFBa0Isa0JBQWtCLHNCQUFzQixrQkFBa0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0IsZ0NBQWdDLDZCQUE2QixhQUFhLGtCQUFrQixrQkFBa0Isc0JBQXNCLGtCQUFrQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLGdDQUFnQyw2QkFBNkIsYUFBYSxrQkFBa0Isa0JBQWtCLHNCQUFzQixrQkFBa0Isc0JBQXNCLHNCQUFzQixzQkFBc0Isc0JBQXNCLHNCQUFz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QkFBMEIsc0NBQXNDLDBCQUEwQiw0QkFBNEIsZ0NBQWdDLDBDQUEwQyxzREFBc0Qsc0NBQXNDLDRDQUE0QyxnQ0FBZ0MsZ0NBQWdDLDBCQUEwQixjQUFjLDhCQUE4QixrQkFBa0IsdUNBQXVDLGdDQUFnQyxnQ0FBZ0Msa0NBQWtDLGdDQUFnQyxrQ0FBa0MsZ0NBQWdDLDBCQUEwQixrQ0FBa0MsK0JBQStCLG9LQUFvSyxhQUFhLGtXQUFrVyxHQUFHLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2NyeXB0by1icm93c2VyaWZ5L2luZGV4LmpzPzQyOWMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIGU9ezcxNjA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXQ7aS5iaWdudW09cig3MTEpO2kuZGVmaW5lPXIoNDk1KS5kZWZpbmU7aS5iYXNlPXIoODUzKTtpLmNvbnN0YW50cz1yKDczMzUpO2kuZGVjb2RlcnM9cig2NzAxKTtpLmVuY29kZXJzPXIoMzQxOCl9LDQ5NTpmdW5jdGlvbihlLHQscil7dmFyIGk9cig3MTYwKTt2YXIgbj1yKDM3ODIpO3ZhciBhPXQ7YS5kZWZpbmU9ZnVuY3Rpb24gZGVmaW5lKGUsdCl7cmV0dXJuIG5ldyBFbnRpdHkoZSx0KX07ZnVuY3Rpb24gRW50aXR5KGUsdCl7dGhpcy5uYW1lPWU7dGhpcy5ib2R5PXQ7dGhpcy5kZWNvZGVycz17fTt0aGlzLmVuY29kZXJzPXt9fUVudGl0eS5wcm90b3R5cGUuX2NyZWF0ZU5hbWVkPWZ1bmN0aW9uIGNyZWF0ZU5hbWVkKGUpe3ZhciB0O3RyeXt0PXIoNjE0NCkucnVuSW5UaGlzQ29udGV4dChcIihmdW5jdGlvbiBcIit0aGlzLm5hbWUrXCIoZW50aXR5KSB7XFxuXCIrXCIgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xcblwiK1wifSlcIil9Y2F0Y2goZSl7dD1mdW5jdGlvbihlKXt0aGlzLl9pbml0TmFtZWQoZSl9fW4odCxlKTt0LnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uIGluaXRuYW1lZCh0KXtlLmNhbGwodGhpcyx0KX07cmV0dXJuIG5ldyB0KHRoaXMpfTtFbnRpdHkucHJvdG90eXBlLl9nZXREZWNvZGVyPWZ1bmN0aW9uIF9nZXREZWNvZGVyKGUpe2U9ZXx8XCJkZXJcIjtpZighdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShlKSl0aGlzLmRlY29kZXJzW2VdPXRoaXMuX2NyZWF0ZU5hbWVkKGkuZGVjb2RlcnNbZV0pO3JldHVybiB0aGlzLmRlY29kZXJzW2VdfTtFbnRpdHkucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbiBkZWNvZGUoZSx0LHIpe3JldHVybiB0aGlzLl9nZXREZWNvZGVyKHQpLmRlY29kZShlLHIpfTtFbnRpdHkucHJvdG90eXBlLl9nZXRFbmNvZGVyPWZ1bmN0aW9uIF9nZXRFbmNvZGVyKGUpe2U9ZXx8XCJkZXJcIjtpZighdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShlKSl0aGlzLmVuY29kZXJzW2VdPXRoaXMuX2NyZWF0ZU5hbWVkKGkuZW5jb2RlcnNbZV0pO3JldHVybiB0aGlzLmVuY29kZXJzW2VdfTtFbnRpdHkucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbiBlbmNvZGUoZSx0LHIpe3JldHVybiB0aGlzLl9nZXRFbmNvZGVyKHQpLmVuY29kZShlLHIpfX0sNjQ4MzpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDg1MykuUmVwb3J0ZXI7dmFyIGE9cig0MzAwKS5CdWZmZXI7ZnVuY3Rpb24gRGVjb2RlckJ1ZmZlcihlLHQpe24uY2FsbCh0aGlzLHQpO2lmKCFhLmlzQnVmZmVyKGUpKXt0aGlzLmVycm9yKFwiSW5wdXQgbm90IEJ1ZmZlclwiKTtyZXR1cm59dGhpcy5iYXNlPWU7dGhpcy5vZmZzZXQ9MDt0aGlzLmxlbmd0aD1lLmxlbmd0aH1pKERlY29kZXJCdWZmZXIsbik7dC5DPURlY29kZXJCdWZmZXI7RGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbiBzYXZlKCl7cmV0dXJue29mZnNldDp0aGlzLm9mZnNldCxyZXBvcnRlcjpuLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcyl9fTtEZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uIHJlc3RvcmUoZSl7dmFyIHQ9bmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTt0Lm9mZnNldD1lLm9mZnNldDt0Lmxlbmd0aD10aGlzLm9mZnNldDt0aGlzLm9mZnNldD1lLm9mZnNldDtuLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcyxlLnJlcG9ydGVyKTtyZXR1cm4gdH07RGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbiBpc0VtcHR5KCl7cmV0dXJuIHRoaXMub2Zmc2V0PT09dGhpcy5sZW5ndGh9O0RlY29kZXJCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbiByZWFkVUludDgoZSl7aWYodGhpcy5vZmZzZXQrMTw9dGhpcy5sZW5ndGgpcmV0dXJuIHRoaXMuYmFzZS5yZWFkVUludDgodGhpcy5vZmZzZXQrKyx0cnVlKTtlbHNlIHJldHVybiB0aGlzLmVycm9yKGV8fFwiRGVjb2RlckJ1ZmZlciBvdmVycnVuXCIpfTtEZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwPWZ1bmN0aW9uIHNraXAoZSx0KXtpZighKHRoaXMub2Zmc2V0K2U8PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5lcnJvcih0fHxcIkRlY29kZXJCdWZmZXIgb3ZlcnJ1blwiKTt2YXIgcj1uZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO3IuX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZTtyLm9mZnNldD10aGlzLm9mZnNldDtyLmxlbmd0aD10aGlzLm9mZnNldCtlO3RoaXMub2Zmc2V0Kz1lO3JldHVybiByfTtEZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXc9ZnVuY3Rpb24gcmF3KGUpe3JldHVybiB0aGlzLmJhc2Uuc2xpY2UoZT9lLm9mZnNldDp0aGlzLm9mZnNldCx0aGlzLmxlbmd0aCl9O2Z1bmN0aW9uIEVuY29kZXJCdWZmZXIoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXt0aGlzLmxlbmd0aD0wO3RoaXMudmFsdWU9ZS5tYXAoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEVuY29kZXJCdWZmZXIpKWU9bmV3IEVuY29kZXJCdWZmZXIoZSx0KTt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7cmV0dXJuIGV9KSx0aGlzKX1lbHNlIGlmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7aWYoISgwPD1lJiZlPD0yNTUpKXJldHVybiB0LmVycm9yKFwibm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZVwiKTt0aGlzLnZhbHVlPWU7dGhpcy5sZW5ndGg9MX1lbHNlIGlmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7dGhpcy52YWx1ZT1lO3RoaXMubGVuZ3RoPWEuYnl0ZUxlbmd0aChlKX1lbHNlIGlmKGEuaXNCdWZmZXIoZSkpe3RoaXMudmFsdWU9ZTt0aGlzLmxlbmd0aD1lLmxlbmd0aH1lbHNle3JldHVybiB0LmVycm9yKFwiVW5zdXBwb3J0ZWQgdHlwZTogXCIrdHlwZW9mIGUpfX10LlI9RW5jb2RlckJ1ZmZlcjtFbmNvZGVyQnVmZmVyLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uIGpvaW4oZSx0KXtpZighZSllPW5ldyBhKHRoaXMubGVuZ3RoKTtpZighdCl0PTA7aWYodGhpcy5sZW5ndGg9PT0wKXJldHVybiBlO2lmKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpe3RoaXMudmFsdWUuZm9yRWFjaCgoZnVuY3Rpb24ocil7ci5qb2luKGUsdCk7dCs9ci5sZW5ndGh9KSl9ZWxzZXtpZih0eXBlb2YgdGhpcy52YWx1ZT09PVwibnVtYmVyXCIpZVt0XT10aGlzLnZhbHVlO2Vsc2UgaWYodHlwZW9mIHRoaXMudmFsdWU9PT1cInN0cmluZ1wiKWUud3JpdGUodGhpcy52YWx1ZSx0KTtlbHNlIGlmKGEuaXNCdWZmZXIodGhpcy52YWx1ZSkpdGhpcy52YWx1ZS5jb3B5KGUsdCk7dCs9dGhpcy5sZW5ndGh9cmV0dXJuIGV9fSw4NTM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXQ7aS5SZXBvcnRlcj1yKDEyOTMpLmI7aS5EZWNvZGVyQnVmZmVyPXIoNjQ4MykuQztpLkVuY29kZXJCdWZmZXI9cig2NDgzKS5SO2kuTm9kZT1yKDkzNzQpfSw5Mzc0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDg1MykuUmVwb3J0ZXI7dmFyIG49cig4NTMpLkVuY29kZXJCdWZmZXI7dmFyIGE9cig4NTMpLkRlY29kZXJCdWZmZXI7dmFyIHM9cigzNTIzKTt2YXIgbz1bXCJzZXFcIixcInNlcW9mXCIsXCJzZXRcIixcInNldG9mXCIsXCJvYmppZFwiLFwiYm9vbFwiLFwiZ2VudGltZVwiLFwidXRjdGltZVwiLFwibnVsbF9cIixcImVudW1cIixcImludFwiLFwib2JqRGVzY1wiLFwiYml0c3RyXCIsXCJibXBzdHJcIixcImNoYXJzdHJcIixcImdlbnN0clwiLFwiZ3JhcGhzdHJcIixcImlhNXN0clwiLFwiaXNvNjQ2c3RyXCIsXCJudW1zdHJcIixcIm9jdHN0clwiLFwicHJpbnRzdHJcIixcInQ2MXN0clwiLFwidW5pc3RyXCIsXCJ1dGY4c3RyXCIsXCJ2aWRlb3N0clwiXTt2YXIgaD1bXCJrZXlcIixcIm9ialwiLFwidXNlXCIsXCJvcHRpb25hbFwiLFwiZXhwbGljaXRcIixcImltcGxpY2l0XCIsXCJkZWZcIixcImNob2ljZVwiLFwiYW55XCIsXCJjb250YWluc1wiXS5jb25jYXQobyk7dmFyIHU9W1wiX3BlZWtUYWdcIixcIl9kZWNvZGVUYWdcIixcIl91c2VcIixcIl9kZWNvZGVTdHJcIixcIl9kZWNvZGVPYmppZFwiLFwiX2RlY29kZVRpbWVcIixcIl9kZWNvZGVOdWxsXCIsXCJfZGVjb2RlSW50XCIsXCJfZGVjb2RlQm9vbFwiLFwiX2RlY29kZUxpc3RcIixcIl9lbmNvZGVDb21wb3NpdGVcIixcIl9lbmNvZGVTdHJcIixcIl9lbmNvZGVPYmppZFwiLFwiX2VuY29kZVRpbWVcIixcIl9lbmNvZGVOdWxsXCIsXCJfZW5jb2RlSW50XCIsXCJfZW5jb2RlQm9vbFwiXTtmdW5jdGlvbiBOb2RlKGUsdCl7dmFyIHI9e307dGhpcy5fYmFzZVN0YXRlPXI7ci5lbmM9ZTtyLnBhcmVudD10fHxudWxsO3IuY2hpbGRyZW49bnVsbDtyLnRhZz1udWxsO3IuYXJncz1udWxsO3IucmV2ZXJzZUFyZ3M9bnVsbDtyLmNob2ljZT1udWxsO3Iub3B0aW9uYWw9ZmFsc2U7ci5hbnk9ZmFsc2U7ci5vYmo9ZmFsc2U7ci51c2U9bnVsbDtyLnVzZURlY29kZXI9bnVsbDtyLmtleT1udWxsO3JbXCJkZWZhdWx0XCJdPW51bGw7ci5leHBsaWNpdD1udWxsO3IuaW1wbGljaXQ9bnVsbDtyLmNvbnRhaW5zPW51bGw7aWYoIXIucGFyZW50KXtyLmNoaWxkcmVuPVtdO3RoaXMuX3dyYXAoKX19ZS5leHBvcnRzPU5vZGU7dmFyIGQ9W1wiZW5jXCIsXCJwYXJlbnRcIixcImNoaWxkcmVuXCIsXCJ0YWdcIixcImFyZ3NcIixcInJldmVyc2VBcmdzXCIsXCJjaG9pY2VcIixcIm9wdGlvbmFsXCIsXCJhbnlcIixcIm9ialwiLFwidXNlXCIsXCJhbHRlcmVkVXNlXCIsXCJrZXlcIixcImRlZmF1bHRcIixcImV4cGxpY2l0XCIsXCJpbXBsaWNpdFwiLFwiY29udGFpbnNcIl07Tm9kZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24gY2xvbmUoKXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7dmFyIHQ9e307ZC5mb3JFYWNoKChmdW5jdGlvbihyKXt0W3JdPWVbcl19KSk7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IodC5wYXJlbnQpO3IuX2Jhc2VTdGF0ZT10O3JldHVybiByfTtOb2RlLnByb3RvdHlwZS5fd3JhcD1mdW5jdGlvbiB3cmFwKCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO2guZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpc1t0XT1mdW5jdGlvbiBfd3JhcHBlZE1ldGhvZCgpe3ZhciByPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO2UuY2hpbGRyZW4ucHVzaChyKTtyZXR1cm4gclt0XS5hcHBseShyLGFyZ3VtZW50cyl9fSksdGhpcyl9O05vZGUucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uIGluaXQoZSl7dmFyIHQ9dGhpcy5fYmFzZVN0YXRlO3ModC5wYXJlbnQ9PT1udWxsKTtlLmNhbGwodGhpcyk7dC5jaGlsZHJlbj10LmNoaWxkcmVuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2Jhc2VTdGF0ZS5wYXJlbnQ9PT10aGlzfSksdGhpcyk7cy5lcXVhbCh0LmNoaWxkcmVuLmxlbmd0aCwxLFwiUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkXCIpfTtOb2RlLnByb3RvdHlwZS5fdXNlQXJncz1mdW5jdGlvbiB1c2VBcmdzKGUpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTt2YXIgcj1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSksdGhpcyk7ZT1lLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIShlIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcil9KSx0aGlzKTtpZihyLmxlbmd0aCE9PTApe3ModC5jaGlsZHJlbj09PW51bGwpO3QuY2hpbGRyZW49cjtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30pLHRoaXMpfWlmKGUubGVuZ3RoIT09MCl7cyh0LmFyZ3M9PT1udWxsKTt0LmFyZ3M9ZTt0LnJldmVyc2VBcmdzPWUubWFwKChmdW5jdGlvbihlKXtpZih0eXBlb2YgZSE9PVwib2JqZWN0XCJ8fGUuY29uc3RydWN0b3IhPT1PYmplY3QpcmV0dXJuIGU7dmFyIHQ9e307T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7aWYocj09KHJ8MCkpcnw9MDt2YXIgaT1lW3JdO3RbaV09cn0pKTtyZXR1cm4gdH0pKX19O3UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Tm9kZS5wcm90b3R5cGVbZV09ZnVuY3Rpb24gX292ZXJyaWRlZCgpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTt0aHJvdyBuZXcgRXJyb3IoZStcIiBub3QgaW1wbGVtZW50ZWQgZm9yIGVuY29kaW5nOiBcIit0LmVuYyl9fSkpO28uZm9yRWFjaCgoZnVuY3Rpb24oZSl7Tm9kZS5wcm90b3R5cGVbZV09ZnVuY3Rpb24gX3RhZ01ldGhvZCgpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3ModC50YWc9PT1udWxsKTt0LnRhZz1lO3RoaXMuX3VzZUFyZ3Mocik7cmV0dXJuIHRoaXN9fSkpO05vZGUucHJvdG90eXBlLnVzZT1mdW5jdGlvbiB1c2UoZSl7cyhlKTt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cyh0LnVzZT09PW51bGwpO3QudXNlPWU7cmV0dXJuIHRoaXN9O05vZGUucHJvdG90eXBlLm9wdGlvbmFsPWZ1bmN0aW9uIG9wdGlvbmFsKCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO2Uub3B0aW9uYWw9dHJ1ZTtyZXR1cm4gdGhpc307Tm9kZS5wcm90b3R5cGUuZGVmPWZ1bmN0aW9uIGRlZihlKXt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cyh0W1wiZGVmYXVsdFwiXT09PW51bGwpO3RbXCJkZWZhdWx0XCJdPWU7dC5vcHRpb25hbD10cnVlO3JldHVybiB0aGlzfTtOb2RlLnByb3RvdHlwZS5leHBsaWNpdD1mdW5jdGlvbiBleHBsaWNpdChlKXt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cyh0LmV4cGxpY2l0PT09bnVsbCYmdC5pbXBsaWNpdD09PW51bGwpO3QuZXhwbGljaXQ9ZTtyZXR1cm4gdGhpc307Tm9kZS5wcm90b3R5cGUuaW1wbGljaXQ9ZnVuY3Rpb24gaW1wbGljaXQoZSl7dmFyIHQ9dGhpcy5fYmFzZVN0YXRlO3ModC5leHBsaWNpdD09PW51bGwmJnQuaW1wbGljaXQ9PT1udWxsKTt0LmltcGxpY2l0PWU7cmV0dXJuIHRoaXN9O05vZGUucHJvdG90eXBlLm9iaj1mdW5jdGlvbiBvYmooKXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtlLm9iaj10cnVlO2lmKHQubGVuZ3RoIT09MCl0aGlzLl91c2VBcmdzKHQpO3JldHVybiB0aGlzfTtOb2RlLnByb3RvdHlwZS5rZXk9ZnVuY3Rpb24ga2V5KGUpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTtzKHQua2V5PT09bnVsbCk7dC5rZXk9ZTtyZXR1cm4gdGhpc307Tm9kZS5wcm90b3R5cGUuYW55PWZ1bmN0aW9uIGFueSgpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtlLmFueT10cnVlO3JldHVybiB0aGlzfTtOb2RlLnByb3RvdHlwZS5jaG9pY2U9ZnVuY3Rpb24gY2hvaWNlKGUpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTtzKHQuY2hvaWNlPT09bnVsbCk7dC5jaG9pY2U9ZTt0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSkpO3JldHVybiB0aGlzfTtOb2RlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbiBjb250YWlucyhlKXt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cyh0LnVzZT09PW51bGwpO3QuY29udGFpbnM9ZTtyZXR1cm4gdGhpc307Tm9kZS5wcm90b3R5cGUuX2RlY29kZT1mdW5jdGlvbiBkZWNvZGUoZSx0KXt2YXIgcj10aGlzLl9iYXNlU3RhdGU7aWYoci5wYXJlbnQ9PT1udWxsKXJldHVybiBlLndyYXBSZXN1bHQoci5jaGlsZHJlblswXS5fZGVjb2RlKGUsdCkpO3ZhciBpPXJbXCJkZWZhdWx0XCJdO3ZhciBuPXRydWU7dmFyIHM9bnVsbDtpZihyLmtleSE9PW51bGwpcz1lLmVudGVyS2V5KHIua2V5KTtpZihyLm9wdGlvbmFsKXt2YXIgbz1udWxsO2lmKHIuZXhwbGljaXQhPT1udWxsKW89ci5leHBsaWNpdDtlbHNlIGlmKHIuaW1wbGljaXQhPT1udWxsKW89ci5pbXBsaWNpdDtlbHNlIGlmKHIudGFnIT09bnVsbClvPXIudGFnO2lmKG89PT1udWxsJiYhci5hbnkpe3ZhciBoPWUuc2F2ZSgpO3RyeXtpZihyLmNob2ljZT09PW51bGwpdGhpcy5fZGVjb2RlR2VuZXJpYyhyLnRhZyxlLHQpO2Vsc2UgdGhpcy5fZGVjb2RlQ2hvaWNlKGUsdCk7bj10cnVlfWNhdGNoKGUpe249ZmFsc2V9ZS5yZXN0b3JlKGgpfWVsc2V7bj10aGlzLl9wZWVrVGFnKGUsbyxyLmFueSk7aWYoZS5pc0Vycm9yKG4pKXJldHVybiBufX12YXIgdTtpZihyLm9iaiYmbil1PWUuZW50ZXJPYmplY3QoKTtpZihuKXtpZihyLmV4cGxpY2l0IT09bnVsbCl7dmFyIGQ9dGhpcy5fZGVjb2RlVGFnKGUsci5leHBsaWNpdCk7aWYoZS5pc0Vycm9yKGQpKXJldHVybiBkO2U9ZH12YXIgYz1lLm9mZnNldDtpZihyLnVzZT09PW51bGwmJnIuY2hvaWNlPT09bnVsbCl7aWYoci5hbnkpdmFyIGg9ZS5zYXZlKCk7dmFyIGw9dGhpcy5fZGVjb2RlVGFnKGUsci5pbXBsaWNpdCE9PW51bGw/ci5pbXBsaWNpdDpyLnRhZyxyLmFueSk7aWYoZS5pc0Vycm9yKGwpKXJldHVybiBsO2lmKHIuYW55KWk9ZS5yYXcoaCk7ZWxzZSBlPWx9aWYodCYmdC50cmFjayYmci50YWchPT1udWxsKXQudHJhY2soZS5wYXRoKCksYyxlLmxlbmd0aCxcInRhZ2dlZFwiKTtpZih0JiZ0LnRyYWNrJiZyLnRhZyE9PW51bGwpdC50cmFjayhlLnBhdGgoKSxlLm9mZnNldCxlLmxlbmd0aCxcImNvbnRlbnRcIik7aWYoci5hbnkpaT1pO2Vsc2UgaWYoci5jaG9pY2U9PT1udWxsKWk9dGhpcy5fZGVjb2RlR2VuZXJpYyhyLnRhZyxlLHQpO2Vsc2UgaT10aGlzLl9kZWNvZGVDaG9pY2UoZSx0KTtpZihlLmlzRXJyb3IoaSkpcmV0dXJuIGk7aWYoIXIuYW55JiZyLmNob2ljZT09PW51bGwmJnIuY2hpbGRyZW4hPT1udWxsKXtyLmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKHIpe3IuX2RlY29kZShlLHQpfSkpfWlmKHIuY29udGFpbnMmJihyLnRhZz09PVwib2N0c3RyXCJ8fHIudGFnPT09XCJiaXRzdHJcIikpe3ZhciBwPW5ldyBhKGkpO2k9dGhpcy5fZ2V0VXNlKHIuY29udGFpbnMsZS5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUocCx0KX19aWYoci5vYmomJm4paT1lLmxlYXZlT2JqZWN0KHUpO2lmKHIua2V5IT09bnVsbCYmKGkhPT1udWxsfHxuPT09dHJ1ZSkpZS5sZWF2ZUtleShzLHIua2V5LGkpO2Vsc2UgaWYocyE9PW51bGwpZS5leGl0S2V5KHMpO3JldHVybiBpfTtOb2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYz1mdW5jdGlvbiBkZWNvZGVHZW5lcmljKGUsdCxyKXt2YXIgaT10aGlzLl9iYXNlU3RhdGU7aWYoZT09PVwic2VxXCJ8fGU9PT1cInNldFwiKXJldHVybiBudWxsO2lmKGU9PT1cInNlcW9mXCJ8fGU9PT1cInNldG9mXCIpcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QodCxlLGkuYXJnc1swXSxyKTtlbHNlIGlmKC9zdHIkLy50ZXN0KGUpKXJldHVybiB0aGlzLl9kZWNvZGVTdHIodCxlLHIpO2Vsc2UgaWYoZT09PVwib2JqaWRcIiYmaS5hcmdzKXJldHVybiB0aGlzLl9kZWNvZGVPYmppZCh0LGkuYXJnc1swXSxpLmFyZ3NbMV0scik7ZWxzZSBpZihlPT09XCJvYmppZFwiKXJldHVybiB0aGlzLl9kZWNvZGVPYmppZCh0LG51bGwsbnVsbCxyKTtlbHNlIGlmKGU9PT1cImdlbnRpbWVcInx8ZT09PVwidXRjdGltZVwiKXJldHVybiB0aGlzLl9kZWNvZGVUaW1lKHQsZSxyKTtlbHNlIGlmKGU9PT1cIm51bGxfXCIpcmV0dXJuIHRoaXMuX2RlY29kZU51bGwodCxyKTtlbHNlIGlmKGU9PT1cImJvb2xcIilyZXR1cm4gdGhpcy5fZGVjb2RlQm9vbCh0LHIpO2Vsc2UgaWYoZT09PVwib2JqRGVzY1wiKXJldHVybiB0aGlzLl9kZWNvZGVTdHIodCxlLHIpO2Vsc2UgaWYoZT09PVwiaW50XCJ8fGU9PT1cImVudW1cIilyZXR1cm4gdGhpcy5fZGVjb2RlSW50KHQsaS5hcmdzJiZpLmFyZ3NbMF0scik7aWYoaS51c2UhPT1udWxsKXtyZXR1cm4gdGhpcy5fZ2V0VXNlKGkudXNlLHQuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKHQscil9ZWxzZXtyZXR1cm4gdC5lcnJvcihcInVua25vd24gdGFnOiBcIitlKX19O05vZGUucHJvdG90eXBlLl9nZXRVc2U9ZnVuY3Rpb24gX2dldFVzZShlLHQpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTtyLnVzZURlY29kZXI9dGhpcy5fdXNlKGUsdCk7cyhyLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5wYXJlbnQ9PT1udWxsKTtyLnVzZURlY29kZXI9ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07aWYoci5pbXBsaWNpdCE9PXIudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KXtyLnVzZURlY29kZXI9ci51c2VEZWNvZGVyLmNsb25lKCk7ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQ9ci5pbXBsaWNpdH1yZXR1cm4gci51c2VEZWNvZGVyfTtOb2RlLnByb3RvdHlwZS5fZGVjb2RlQ2hvaWNlPWZ1bmN0aW9uIGRlY29kZUNob2ljZShlLHQpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTt2YXIgaT1udWxsO3ZhciBuPWZhbHNlO09iamVjdC5rZXlzKHIuY2hvaWNlKS5zb21lKChmdW5jdGlvbihhKXt2YXIgcz1lLnNhdmUoKTt2YXIgbz1yLmNob2ljZVthXTt0cnl7dmFyIGg9by5fZGVjb2RlKGUsdCk7aWYoZS5pc0Vycm9yKGgpKXJldHVybiBmYWxzZTtpPXt0eXBlOmEsdmFsdWU6aH07bj10cnVlfWNhdGNoKHQpe2UucmVzdG9yZShzKTtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9KSx0aGlzKTtpZighbilyZXR1cm4gZS5lcnJvcihcIkNob2ljZSBub3QgbWF0Y2hlZFwiKTtyZXR1cm4gaX07Tm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXI9ZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihlKXtyZXR1cm4gbmV3IG4oZSx0aGlzLnJlcG9ydGVyKX07Tm9kZS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbiBlbmNvZGUoZSx0LHIpe3ZhciBpPXRoaXMuX2Jhc2VTdGF0ZTtpZihpW1wiZGVmYXVsdFwiXSE9PW51bGwmJmlbXCJkZWZhdWx0XCJdPT09ZSlyZXR1cm47dmFyIG49dGhpcy5fZW5jb2RlVmFsdWUoZSx0LHIpO2lmKG49PT11bmRlZmluZWQpcmV0dXJuO2lmKHRoaXMuX3NraXBEZWZhdWx0KG4sdCxyKSlyZXR1cm47cmV0dXJuIG59O05vZGUucHJvdG90eXBlLl9lbmNvZGVWYWx1ZT1mdW5jdGlvbiBlbmNvZGUoZSx0LHIpe3ZhciBuPXRoaXMuX2Jhc2VTdGF0ZTtpZihuLnBhcmVudD09PW51bGwpcmV0dXJuIG4uY2hpbGRyZW5bMF0uX2VuY29kZShlLHR8fG5ldyBpKTt2YXIgYT1udWxsO3RoaXMucmVwb3J0ZXI9dDtpZihuLm9wdGlvbmFsJiZlPT09dW5kZWZpbmVkKXtpZihuW1wiZGVmYXVsdFwiXSE9PW51bGwpZT1uW1wiZGVmYXVsdFwiXTtlbHNlIHJldHVybn12YXIgcz1udWxsO3ZhciBvPWZhbHNlO2lmKG4uYW55KXthPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZSl9ZWxzZSBpZihuLmNob2ljZSl7YT10aGlzLl9lbmNvZGVDaG9pY2UoZSx0KX1lbHNlIGlmKG4uY29udGFpbnMpe3M9dGhpcy5fZ2V0VXNlKG4uY29udGFpbnMscikuX2VuY29kZShlLHQpO289dHJ1ZX1lbHNlIGlmKG4uY2hpbGRyZW4pe3M9bi5jaGlsZHJlbi5tYXAoKGZ1bmN0aW9uKHIpe2lmKHIuX2Jhc2VTdGF0ZS50YWc9PT1cIm51bGxfXCIpcmV0dXJuIHIuX2VuY29kZShudWxsLHQsZSk7aWYoci5fYmFzZVN0YXRlLmtleT09PW51bGwpcmV0dXJuIHQuZXJyb3IoXCJDaGlsZCBzaG91bGQgaGF2ZSBhIGtleVwiKTt2YXIgaT10LmVudGVyS2V5KHIuX2Jhc2VTdGF0ZS5rZXkpO2lmKHR5cGVvZiBlIT09XCJvYmplY3RcIilyZXR1cm4gdC5lcnJvcihcIkNoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdFwiKTt2YXIgbj1yLl9lbmNvZGUoZVtyLl9iYXNlU3RhdGUua2V5XSx0LGUpO3QubGVhdmVLZXkoaSk7cmV0dXJuIG59KSx0aGlzKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpO3M9dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzKX1lbHNle2lmKG4udGFnPT09XCJzZXFvZlwifHxuLnRhZz09PVwic2V0b2ZcIil7aWYoIShuLmFyZ3MmJm4uYXJncy5sZW5ndGg9PT0xKSlyZXR1cm4gdC5lcnJvcihcIlRvbyBtYW55IGFyZ3MgZm9yIDogXCIrbi50YWcpO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0LmVycm9yKFwic2Vxb2Yvc2V0b2YsIGJ1dCBkYXRhIGlzIG5vdCBBcnJheVwiKTt2YXIgaD10aGlzLmNsb25lKCk7aC5fYmFzZVN0YXRlLmltcGxpY2l0PW51bGw7cz10aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGUubWFwKChmdW5jdGlvbihyKXt2YXIgaT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIHRoaXMuX2dldFVzZShpLmFyZ3NbMF0sZSkuX2VuY29kZShyLHQpfSksaCkpfWVsc2UgaWYobi51c2UhPT1udWxsKXthPXRoaXMuX2dldFVzZShuLnVzZSxyKS5fZW5jb2RlKGUsdCl9ZWxzZXtzPXRoaXMuX2VuY29kZVByaW1pdGl2ZShuLnRhZyxlKTtvPXRydWV9fXZhciBhO2lmKCFuLmFueSYmbi5jaG9pY2U9PT1udWxsKXt2YXIgdT1uLmltcGxpY2l0IT09bnVsbD9uLmltcGxpY2l0Om4udGFnO3ZhciBkPW4uaW1wbGljaXQ9PT1udWxsP1widW5pdmVyc2FsXCI6XCJjb250ZXh0XCI7aWYodT09PW51bGwpe2lmKG4udXNlPT09bnVsbCl0LmVycm9yKFwiVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpXCIpfWVsc2V7aWYobi51c2U9PT1udWxsKWE9dGhpcy5fZW5jb2RlQ29tcG9zaXRlKHUsbyxkLHMpfX1pZihuLmV4cGxpY2l0IT09bnVsbClhPXRoaXMuX2VuY29kZUNvbXBvc2l0ZShuLmV4cGxpY2l0LGZhbHNlLFwiY29udGV4dFwiLGEpO3JldHVybiBhfTtOb2RlLnByb3RvdHlwZS5fZW5jb2RlQ2hvaWNlPWZ1bmN0aW9uIGVuY29kZUNob2ljZShlLHQpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTt2YXIgaT1yLmNob2ljZVtlLnR5cGVdO2lmKCFpKXtzKGZhbHNlLGUudHlwZStcIiBub3QgZm91bmQgaW4gXCIrSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoci5jaG9pY2UpKSl9cmV0dXJuIGkuX2VuY29kZShlLnZhbHVlLHQpfTtOb2RlLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlPWZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZShlLHQpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTtpZigvc3RyJC8udGVzdChlKSlyZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHQsZSk7ZWxzZSBpZihlPT09XCJvYmppZFwiJiZyLmFyZ3MpcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKHQsci5yZXZlcnNlQXJnc1swXSxyLmFyZ3NbMV0pO2Vsc2UgaWYoZT09PVwib2JqaWRcIilyZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQodCxudWxsLG51bGwpO2Vsc2UgaWYoZT09PVwiZ2VudGltZVwifHxlPT09XCJ1dGN0aW1lXCIpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUodCxlKTtlbHNlIGlmKGU9PT1cIm51bGxfXCIpcmV0dXJuIHRoaXMuX2VuY29kZU51bGwoKTtlbHNlIGlmKGU9PT1cImludFwifHxlPT09XCJlbnVtXCIpcmV0dXJuIHRoaXMuX2VuY29kZUludCh0LHIuYXJncyYmci5yZXZlcnNlQXJnc1swXSk7ZWxzZSBpZihlPT09XCJib29sXCIpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2wodCk7ZWxzZSBpZihlPT09XCJvYmpEZXNjXCIpcmV0dXJuIHRoaXMuX2VuY29kZVN0cih0LGUpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgdGFnOiBcIitlKX07Tm9kZS5wcm90b3R5cGUuX2lzTnVtc3RyPWZ1bmN0aW9uIGlzTnVtc3RyKGUpe3JldHVybi9eWzAtOSBdKiQvLnRlc3QoZSl9O05vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyPWZ1bmN0aW9uIGlzUHJpbnRzdHIoZSl7cmV0dXJuL15bQS1aYS16MC05ICdcXChcXClcXCssXFwtXFwuXFwvOj1cXD9dKiQvLnRlc3QoZSl9fSwxMjkzOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDM3ODIpO2Z1bmN0aW9uIFJlcG9ydGVyKGUpe3RoaXMuX3JlcG9ydGVyU3RhdGU9e29iajpudWxsLHBhdGg6W10sb3B0aW9uczplfHx7fSxlcnJvcnM6W119fXQuYj1SZXBvcnRlcjtSZXBvcnRlci5wcm90b3R5cGUuaXNFcnJvcj1mdW5jdGlvbiBpc0Vycm9yKGUpe3JldHVybiBlIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcn07UmVwb3J0ZXIucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24gc2F2ZSgpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajplLm9iaixwYXRoTGVuOmUucGF0aC5sZW5ndGh9fTtSZXBvcnRlci5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbiByZXN0b3JlKGUpe3ZhciB0PXRoaXMuX3JlcG9ydGVyU3RhdGU7dC5vYmo9ZS5vYmo7dC5wYXRoPXQucGF0aC5zbGljZSgwLGUucGF0aExlbil9O1JlcG9ydGVyLnByb3RvdHlwZS5lbnRlcktleT1mdW5jdGlvbiBlbnRlcktleShlKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLnB1c2goZSl9O1JlcG9ydGVyLnByb3RvdHlwZS5leGl0S2V5PWZ1bmN0aW9uIGV4aXRLZXkoZSl7dmFyIHQ9dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0LnBhdGg9dC5wYXRoLnNsaWNlKDAsZS0xKX07UmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5PWZ1bmN0aW9uIGxlYXZlS2V5KGUsdCxyKXt2YXIgaT10aGlzLl9yZXBvcnRlclN0YXRlO3RoaXMuZXhpdEtleShlKTtpZihpLm9iaiE9PW51bGwpaS5vYmpbdF09cn07UmVwb3J0ZXIucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24gcGF0aCgpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGguam9pbihcIi9cIil9O1JlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdD1mdW5jdGlvbiBlbnRlck9iamVjdCgpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7dmFyIHQ9ZS5vYmo7ZS5vYmo9e307cmV0dXJuIHR9O1JlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdD1mdW5jdGlvbiBsZWF2ZU9iamVjdChlKXt2YXIgdD10aGlzLl9yZXBvcnRlclN0YXRlO3ZhciByPXQub2JqO3Qub2JqPWU7cmV0dXJuIHJ9O1JlcG9ydGVyLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbiBlcnJvcihlKXt2YXIgdDt2YXIgcj10aGlzLl9yZXBvcnRlclN0YXRlO3ZhciBpPWUgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO2lmKGkpe3Q9ZX1lbHNle3Q9bmV3IFJlcG9ydGVyRXJyb3Ioci5wYXRoLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuXCJbXCIrSlNPTi5zdHJpbmdpZnkoZSkrXCJdXCJ9KSkuam9pbihcIlwiKSxlLm1lc3NhZ2V8fGUsZS5zdGFjayl9aWYoIXIub3B0aW9ucy5wYXJ0aWFsKXRocm93IHQ7aWYoIWkpci5lcnJvcnMucHVzaCh0KTtyZXR1cm4gdH07UmVwb3J0ZXIucHJvdG90eXBlLndyYXBSZXN1bHQ9ZnVuY3Rpb24gd3JhcFJlc3VsdChlKXt2YXIgdD10aGlzLl9yZXBvcnRlclN0YXRlO2lmKCF0Lm9wdGlvbnMucGFydGlhbClyZXR1cm4gZTtyZXR1cm57cmVzdWx0OnRoaXMuaXNFcnJvcihlKT9udWxsOmUsZXJyb3JzOnQuZXJyb3JzfX07ZnVuY3Rpb24gUmVwb3J0ZXJFcnJvcihlLHQpe3RoaXMucGF0aD1lO3RoaXMucmV0aHJvdyh0KX1pKFJlcG9ydGVyRXJyb3IsRXJyb3IpO1JlcG9ydGVyRXJyb3IucHJvdG90eXBlLnJldGhyb3c9ZnVuY3Rpb24gcmV0aHJvdyhlKXt0aGlzLm1lc3NhZ2U9ZStcIiBhdDogXCIrKHRoaXMucGF0aHx8XCIoc2hhbGxvdylcIik7aWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcyxSZXBvcnRlckVycm9yKTtpZighdGhpcy5zdGFjayl7dHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKGUpe3RoaXMuc3RhY2s9ZS5zdGFja319cmV0dXJuIHRoaXN9fSw5NzkxOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDczMzUpO3QudGFnQ2xhc3M9ezA6XCJ1bml2ZXJzYWxcIiwxOlwiYXBwbGljYXRpb25cIiwyOlwiY29udGV4dFwiLDM6XCJwcml2YXRlXCJ9O3QudGFnQ2xhc3NCeU5hbWU9aS5fcmV2ZXJzZSh0LnRhZ0NsYXNzKTt0LnRhZz17MDpcImVuZFwiLDE6XCJib29sXCIsMjpcImludFwiLDM6XCJiaXRzdHJcIiw0Olwib2N0c3RyXCIsNTpcIm51bGxfXCIsNjpcIm9iamlkXCIsNzpcIm9iakRlc2NcIiw4OlwiZXh0ZXJuYWxcIiw5OlwicmVhbFwiLDEwOlwiZW51bVwiLDExOlwiZW1iZWRcIiwxMjpcInV0ZjhzdHJcIiwxMzpcInJlbGF0aXZlT2lkXCIsMTY6XCJzZXFcIiwxNzpcInNldFwiLDE4OlwibnVtc3RyXCIsMTk6XCJwcmludHN0clwiLDIwOlwidDYxc3RyXCIsMjE6XCJ2aWRlb3N0clwiLDIyOlwiaWE1c3RyXCIsMjM6XCJ1dGN0aW1lXCIsMjQ6XCJnZW50aW1lXCIsMjU6XCJncmFwaHN0clwiLDI2OlwiaXNvNjQ2c3RyXCIsMjc6XCJnZW5zdHJcIiwyODpcInVuaXN0clwiLDI5OlwiY2hhcnN0clwiLDMwOlwiYm1wc3RyXCJ9O3QudGFnQnlOYW1lPWkuX3JldmVyc2UodC50YWcpfSw3MzM1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10O2kuX3JldmVyc2U9ZnVuY3Rpb24gcmV2ZXJzZShlKXt2YXIgdD17fTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXtpZigocnwwKT09cilyPXJ8MDt2YXIgaT1lW3JdO3RbaV09cn0pKTtyZXR1cm4gdH07aS5kZXI9cig5NzkxKX0sMjI1OTpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDcxNjApO3ZhciBhPW4uYmFzZTt2YXIgcz1uLmJpZ251bTt2YXIgbz1uLmNvbnN0YW50cy5kZXI7ZnVuY3Rpb24gREVSRGVjb2RlcihlKXt0aGlzLmVuYz1cImRlclwiO3RoaXMubmFtZT1lLm5hbWU7dGhpcy5lbnRpdHk9ZTt0aGlzLnRyZWU9bmV3IERFUk5vZGU7dGhpcy50cmVlLl9pbml0KGUuYm9keSl9ZS5leHBvcnRzPURFUkRlY29kZXI7REVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uIGRlY29kZShlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIGEuRGVjb2RlckJ1ZmZlcikpZT1uZXcgYS5EZWNvZGVyQnVmZmVyKGUsdCk7cmV0dXJuIHRoaXMudHJlZS5fZGVjb2RlKGUsdCl9O2Z1bmN0aW9uIERFUk5vZGUoZSl7YS5Ob2RlLmNhbGwodGhpcyxcImRlclwiLGUpfWkoREVSTm9kZSxhLk5vZGUpO0RFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnPWZ1bmN0aW9uIHBlZWtUYWcoZSx0LHIpe2lmKGUuaXNFbXB0eSgpKXJldHVybiBmYWxzZTt2YXIgaT1lLnNhdmUoKTt2YXIgbj1kZXJEZWNvZGVUYWcoZSwnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicrdCsnXCInKTtpZihlLmlzRXJyb3IobikpcmV0dXJuIG47ZS5yZXN0b3JlKGkpO3JldHVybiBuLnRhZz09PXR8fG4udGFnU3RyPT09dHx8bi50YWdTdHIrXCJvZlwiPT09dHx8cn07REVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRhZz1mdW5jdGlvbiBkZWNvZGVUYWcoZSx0LHIpe3ZhciBpPWRlckRlY29kZVRhZyhlLCdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicrdCsnXCInKTtpZihlLmlzRXJyb3IoaSkpcmV0dXJuIGk7dmFyIG49ZGVyRGVjb2RlTGVuKGUsaS5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJyt0KydcIicpO2lmKGUuaXNFcnJvcihuKSlyZXR1cm4gbjtpZighciYmaS50YWchPT10JiZpLnRhZ1N0ciE9PXQmJmkudGFnU3RyK1wib2ZcIiE9PXQpe3JldHVybiBlLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiBcIicrdCsnXCInKX1pZihpLnByaW1pdGl2ZXx8biE9PW51bGwpcmV0dXJuIGUuc2tpcChuLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInK3QrJ1wiJyk7dmFyIGE9ZS5zYXZlKCk7dmFyIHM9dGhpcy5fc2tpcFVudGlsRW5kKGUsJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6IFwiJyt0aGlzLnRhZysnXCInKTtpZihlLmlzRXJyb3IocykpcmV0dXJuIHM7bj1lLm9mZnNldC1hLm9mZnNldDtlLnJlc3RvcmUoYSk7cmV0dXJuIGUuc2tpcChuLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInK3QrJ1wiJyl9O0RFUk5vZGUucHJvdG90eXBlLl9za2lwVW50aWxFbmQ9ZnVuY3Rpb24gc2tpcFVudGlsRW5kKGUsdCl7d2hpbGUodHJ1ZSl7dmFyIHI9ZGVyRGVjb2RlVGFnKGUsdCk7aWYoZS5pc0Vycm9yKHIpKXJldHVybiByO3ZhciBpPWRlckRlY29kZUxlbihlLHIucHJpbWl0aXZlLHQpO2lmKGUuaXNFcnJvcihpKSlyZXR1cm4gaTt2YXIgbjtpZihyLnByaW1pdGl2ZXx8aSE9PW51bGwpbj1lLnNraXAoaSk7ZWxzZSBuPXRoaXMuX3NraXBVbnRpbEVuZChlLHQpO2lmKGUuaXNFcnJvcihuKSlyZXR1cm4gbjtpZihyLnRhZ1N0cj09PVwiZW5kXCIpYnJlYWt9fTtERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbiBkZWNvZGVMaXN0KGUsdCxyLGkpe3ZhciBuPVtdO3doaWxlKCFlLmlzRW1wdHkoKSl7dmFyIGE9dGhpcy5fcGVla1RhZyhlLFwiZW5kXCIpO2lmKGUuaXNFcnJvcihhKSlyZXR1cm4gYTt2YXIgcz1yLmRlY29kZShlLFwiZGVyXCIsaSk7aWYoZS5pc0Vycm9yKHMpJiZhKWJyZWFrO24ucHVzaChzKX1yZXR1cm4gbn07REVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0cj1mdW5jdGlvbiBkZWNvZGVTdHIoZSx0KXtpZih0PT09XCJiaXRzdHJcIil7dmFyIHI9ZS5yZWFkVUludDgoKTtpZihlLmlzRXJyb3IocikpcmV0dXJuIHI7cmV0dXJue3VudXNlZDpyLGRhdGE6ZS5yYXcoKX19ZWxzZSBpZih0PT09XCJibXBzdHJcIil7dmFyIGk9ZS5yYXcoKTtpZihpLmxlbmd0aCUyPT09MSlyZXR1cm4gZS5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBibXBzdHIgbGVuZ3RoIG1pc21hdGNoXCIpO3ZhciBuPVwiXCI7Zm9yKHZhciBhPTA7YTxpLmxlbmd0aC8yO2ErKyl7bis9U3RyaW5nLmZyb21DaGFyQ29kZShpLnJlYWRVSW50MTZCRShhKjIpKX1yZXR1cm4gbn1lbHNlIGlmKHQ9PT1cIm51bXN0clwiKXt2YXIgcz1lLnJhdygpLnRvU3RyaW5nKFwiYXNjaWlcIik7aWYoIXRoaXMuX2lzTnVtc3RyKHMpKXtyZXR1cm4gZS5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBcIitcIm51bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzXCIpfXJldHVybiBzfWVsc2UgaWYodD09PVwib2N0c3RyXCIpe3JldHVybiBlLnJhdygpfWVsc2UgaWYodD09PVwib2JqRGVzY1wiKXtyZXR1cm4gZS5yYXcoKX1lbHNlIGlmKHQ9PT1cInByaW50c3RyXCIpe3ZhciBvPWUucmF3KCkudG9TdHJpbmcoXCJhc2NpaVwiKTtpZighdGhpcy5faXNQcmludHN0cihvKSl7cmV0dXJuIGUuZXJyb3IoXCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogXCIrXCJwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzXCIpfXJldHVybiBvfWVsc2UgaWYoL3N0ciQvLnRlc3QodCkpe3JldHVybiBlLnJhdygpLnRvU3RyaW5nKCl9ZWxzZXtyZXR1cm4gZS5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBcIit0K1wiIHVuc3VwcG9ydGVkXCIpfX07REVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU9iamlkPWZ1bmN0aW9uIGRlY29kZU9iamlkKGUsdCxyKXt2YXIgaTt2YXIgbj1bXTt2YXIgYT0wO3doaWxlKCFlLmlzRW1wdHkoKSl7dmFyIHM9ZS5yZWFkVUludDgoKTthPDw9NzthfD1zJjEyNztpZigocyYxMjgpPT09MCl7bi5wdXNoKGEpO2E9MH19aWYocyYxMjgpbi5wdXNoKGEpO3ZhciBvPW5bMF0vNDB8MDt2YXIgaD1uWzBdJTQwO2lmKHIpaT1uO2Vsc2UgaT1bbyxoXS5jb25jYXQobi5zbGljZSgxKSk7aWYodCl7dmFyIHU9dFtpLmpvaW4oXCIgXCIpXTtpZih1PT09dW5kZWZpbmVkKXU9dFtpLmpvaW4oXCIuXCIpXTtpZih1IT09dW5kZWZpbmVkKWk9dX1yZXR1cm4gaX07REVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWU9ZnVuY3Rpb24gZGVjb2RlVGltZShlLHQpe3ZhciByPWUucmF3KCkudG9TdHJpbmcoKTtpZih0PT09XCJnZW50aW1lXCIpe3ZhciBpPXIuc2xpY2UoMCw0KXwwO3ZhciBuPXIuc2xpY2UoNCw2KXwwO3ZhciBhPXIuc2xpY2UoNiw4KXwwO3ZhciBzPXIuc2xpY2UoOCwxMCl8MDt2YXIgbz1yLnNsaWNlKDEwLDEyKXwwO3ZhciBoPXIuc2xpY2UoMTIsMTQpfDB9ZWxzZSBpZih0PT09XCJ1dGN0aW1lXCIpe3ZhciBpPXIuc2xpY2UoMCwyKXwwO3ZhciBuPXIuc2xpY2UoMiw0KXwwO3ZhciBhPXIuc2xpY2UoNCw2KXwwO3ZhciBzPXIuc2xpY2UoNiw4KXwwO3ZhciBvPXIuc2xpY2UoOCwxMCl8MDt2YXIgaD1yLnNsaWNlKDEwLDEyKXwwO2lmKGk8NzApaT0yZTMraTtlbHNlIGk9MTkwMCtpfWVsc2V7cmV0dXJuIGUuZXJyb3IoXCJEZWNvZGluZyBcIit0K1wiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIil9cmV0dXJuIERhdGUuVVRDKGksbi0xLGEscyxvLGgsMCl9O0RFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVOdWxsPWZ1bmN0aW9uIGRlY29kZU51bGwoZSl7cmV0dXJuIG51bGx9O0RFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sPWZ1bmN0aW9uIGRlY29kZUJvb2woZSl7dmFyIHQ9ZS5yZWFkVUludDgoKTtpZihlLmlzRXJyb3IodCkpcmV0dXJuIHQ7ZWxzZSByZXR1cm4gdCE9PTB9O0RFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQ9ZnVuY3Rpb24gZGVjb2RlSW50KGUsdCl7dmFyIHI9ZS5yYXcoKTt2YXIgaT1uZXcgcyhyKTtpZih0KWk9dFtpLnRvU3RyaW5nKDEwKV18fGk7cmV0dXJuIGl9O0RFUk5vZGUucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24gdXNlKGUsdCl7aWYodHlwZW9mIGU9PT1cImZ1bmN0aW9uXCIpZT1lKHQpO3JldHVybiBlLl9nZXREZWNvZGVyKFwiZGVyXCIpLnRyZWV9O2Z1bmN0aW9uIGRlckRlY29kZVRhZyhlLHQpe3ZhciByPWUucmVhZFVJbnQ4KHQpO2lmKGUuaXNFcnJvcihyKSlyZXR1cm4gcjt2YXIgaT1vLnRhZ0NsYXNzW3I+PjZdO3ZhciBuPShyJjMyKT09PTA7aWYoKHImMzEpPT09MzEpe3ZhciBhPXI7cj0wO3doaWxlKChhJjEyOCk9PT0xMjgpe2E9ZS5yZWFkVUludDgodCk7aWYoZS5pc0Vycm9yKGEpKXJldHVybiBhO3I8PD03O3J8PWEmMTI3fX1lbHNle3ImPTMxfXZhciBzPW8udGFnW3JdO3JldHVybntjbHM6aSxwcmltaXRpdmU6bix0YWc6cix0YWdTdHI6c319ZnVuY3Rpb24gZGVyRGVjb2RlTGVuKGUsdCxyKXt2YXIgaT1lLnJlYWRVSW50OChyKTtpZihlLmlzRXJyb3IoaSkpcmV0dXJuIGk7aWYoIXQmJmk9PT0xMjgpcmV0dXJuIG51bGw7aWYoKGkmMTI4KT09PTApe3JldHVybiBpfXZhciBuPWkmMTI3O2lmKG4+NClyZXR1cm4gZS5lcnJvcihcImxlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmdcIik7aT0wO2Zvcih2YXIgYT0wO2E8bjthKyspe2k8PD04O3ZhciBzPWUucmVhZFVJbnQ4KHIpO2lmKGUuaXNFcnJvcihzKSlyZXR1cm4gcztpfD1zfXJldHVybiBpfX0sNjcwMTpmdW5jdGlvbihlLHQscil7dmFyIGk9dDtpLmRlcj1yKDIyNTkpO2kucGVtPXIoODUyNyl9LDg1Mjc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoMzc4Mik7dmFyIG49cig0MzAwKS5CdWZmZXI7dmFyIGE9cigyMjU5KTtmdW5jdGlvbiBQRU1EZWNvZGVyKGUpe2EuY2FsbCh0aGlzLGUpO3RoaXMuZW5jPVwicGVtXCJ9aShQRU1EZWNvZGVyLGEpO2UuZXhwb3J0cz1QRU1EZWNvZGVyO1BFTURlY29kZXIucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbiBkZWNvZGUoZSx0KXt2YXIgcj1lLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTt2YXIgaT10LmxhYmVsLnRvVXBwZXJDYXNlKCk7dmFyIHM9L14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO3ZhciBvPS0xO3ZhciBoPS0xO2Zvcih2YXIgdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgZD1yW3VdLm1hdGNoKHMpO2lmKGQ9PT1udWxsKWNvbnRpbnVlO2lmKGRbMl0hPT1pKWNvbnRpbnVlO2lmKG89PT0tMSl7aWYoZFsxXSE9PVwiQkVHSU5cIilicmVhaztvPXV9ZWxzZXtpZihkWzFdIT09XCJFTkRcIilicmVhaztoPXU7YnJlYWt9fWlmKG89PT0tMXx8aD09PS0xKXRocm93IG5ldyBFcnJvcihcIlBFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6IFwiK2kpO3ZhciBjPXIuc2xpY2UobysxLGgpLmpvaW4oXCJcIik7Yy5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSxcIlwiKTt2YXIgbD1uZXcgbihjLFwiYmFzZTY0XCIpO3JldHVybiBhLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLGwsdCl9fSw3ODA0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDM3ODIpO3ZhciBuPXIoNDMwMCkuQnVmZmVyO3ZhciBhPXIoNzE2MCk7dmFyIHM9YS5iYXNlO3ZhciBvPWEuY29uc3RhbnRzLmRlcjtmdW5jdGlvbiBERVJFbmNvZGVyKGUpe3RoaXMuZW5jPVwiZGVyXCI7dGhpcy5uYW1lPWUubmFtZTt0aGlzLmVudGl0eT1lO3RoaXMudHJlZT1uZXcgREVSTm9kZTt0aGlzLnRyZWUuX2luaXQoZS5ib2R5KX1lLmV4cG9ydHM9REVSRW5jb2RlcjtERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24gZW5jb2RlKGUsdCl7cmV0dXJuIHRoaXMudHJlZS5fZW5jb2RlKGUsdCkuam9pbigpfTtmdW5jdGlvbiBERVJOb2RlKGUpe3MuTm9kZS5jYWxsKHRoaXMsXCJkZXJcIixlKX1pKERFUk5vZGUscy5Ob2RlKTtERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlPWZ1bmN0aW9uIGVuY29kZUNvbXBvc2l0ZShlLHQscixpKXt2YXIgYT1lbmNvZGVUYWcoZSx0LHIsdGhpcy5yZXBvcnRlcik7aWYoaS5sZW5ndGg8MTI4KXt2YXIgcz1uZXcgbigyKTtzWzBdPWE7c1sxXT1pLmxlbmd0aDtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbcyxpXSl9dmFyIG89MTtmb3IodmFyIGg9aS5sZW5ndGg7aD49MjU2O2g+Pj04KW8rKzt2YXIgcz1uZXcgbigxKzErbyk7c1swXT1hO3NbMV09MTI4fG87Zm9yKHZhciBoPTErbyx1PWkubGVuZ3RoO3U+MDtoLS0sdT4+PTgpc1toXT11JjI1NTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbcyxpXSl9O0RFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVTdHI9ZnVuY3Rpb24gZW5jb2RlU3RyKGUsdCl7aWYodD09PVwiYml0c3RyXCIpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtlLnVudXNlZHwwLGUuZGF0YV0pfWVsc2UgaWYodD09PVwiYm1wc3RyXCIpe3ZhciByPW5ldyBuKGUubGVuZ3RoKjIpO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXtyLndyaXRlVUludDE2QkUoZS5jaGFyQ29kZUF0KGkpLGkqMil9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIocil9ZWxzZSBpZih0PT09XCJudW1zdHJcIil7aWYoIXRoaXMuX2lzTnVtc3RyKGUpKXtyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgXCIrXCJvbmx5IGRpZ2l0cyBhbmQgc3BhY2VcIil9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZSl9ZWxzZSBpZih0PT09XCJwcmludHN0clwiKXtpZighdGhpcy5faXNQcmludHN0cihlKSl7cmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgXCIrXCJvbmx5IGxhdGluIHVwcGVyIGFuZCBsb3dlciBjYXNlIGxldHRlcnMsIFwiK1wiZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggXCIrXCJwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBcIitcImRvdCwgc2xhc2gsIGNvbG9uLCBlcXVhbCBzaWduLCBcIitcInF1ZXN0aW9uIG1hcmtcIil9cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZSl9ZWxzZSBpZigvc3RyJC8udGVzdCh0KSl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoZSl9ZWxzZSBpZih0PT09XCJvYmpEZXNjXCIpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGUpfWVsc2V7cmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogXCIrdCtcIiB1bnN1cHBvcnRlZFwiKX19O0RFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5jdGlvbiBlbmNvZGVPYmppZChlLHQscil7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtpZighdClyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcInN0cmluZyBvYmppZCBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAgZm91bmRcIik7aWYoIXQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcFwiKTtlPXRbZV0uc3BsaXQoL1tcXHNcXC5dKy9nKTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyllW2ldfD0wfWVsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7ZT1lLnNsaWNlKCk7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspZVtpXXw9MH1pZighQXJyYXkuaXNBcnJheShlKSl7cmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCBcIitcImdvdDogXCIrSlNPTi5zdHJpbmdpZnkoZSkpfWlmKCFyKXtpZihlWzFdPj00MClyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcIlNlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQlwiKTtlLnNwbGljZSgwLDIsZVswXSo0MCtlWzFdKX12YXIgYT0wO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgcz1lW2ldO2ZvcihhKys7cz49MTI4O3M+Pj03KWErK312YXIgbz1uZXcgbihhKTt2YXIgaD1vLmxlbmd0aC0xO2Zvcih2YXIgaT1lLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgcz1lW2ldO29baC0tXT1zJjEyNzt3aGlsZSgocz4+PTcpPjApb1toLS1dPTEyOHxzJjEyN31yZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvKX07ZnVuY3Rpb24gdHdvKGUpe2lmKGU8MTApcmV0dXJuXCIwXCIrZTtlbHNlIHJldHVybiBlfURFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVUaW1lPWZ1bmN0aW9uIGVuY29kZVRpbWUoZSx0KXt2YXIgcjt2YXIgaT1uZXcgRGF0ZShlKTtpZih0PT09XCJnZW50aW1lXCIpe3I9W3R3byhpLmdldEZ1bGxZZWFyKCkpLHR3byhpLmdldFVUQ01vbnRoKCkrMSksdHdvKGkuZ2V0VVRDRGF0ZSgpKSx0d28oaS5nZXRVVENIb3VycygpKSx0d28oaS5nZXRVVENNaW51dGVzKCkpLHR3byhpLmdldFVUQ1NlY29uZHMoKSksXCJaXCJdLmpvaW4oXCJcIil9ZWxzZSBpZih0PT09XCJ1dGN0aW1lXCIpe3I9W3R3byhpLmdldEZ1bGxZZWFyKCklMTAwKSx0d28oaS5nZXRVVENNb250aCgpKzEpLHR3byhpLmdldFVUQ0RhdGUoKSksdHdvKGkuZ2V0VVRDSG91cnMoKSksdHdvKGkuZ2V0VVRDTWludXRlcygpKSx0d28oaS5nZXRVVENTZWNvbmRzKCkpLFwiWlwiXS5qb2luKFwiXCIpfWVsc2V7dGhpcy5yZXBvcnRlci5lcnJvcihcIkVuY29kaW5nIFwiK3QrXCIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKX1yZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHIsXCJvY3RzdHJcIil9O0RFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVOdWxsPWZ1bmN0aW9uIGVuY29kZU51bGwoKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihcIlwiKX07REVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUludD1mdW5jdGlvbiBlbmNvZGVJbnQoZSx0KXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2lmKCF0KXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwiU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcFwiKTtpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl7cmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJWYWx1ZXMgbWFwIGRvZXNuJ3QgY29udGFpbjogXCIrSlNPTi5zdHJpbmdpZnkoZSkpfWU9dFtlXX1pZih0eXBlb2YgZSE9PVwibnVtYmVyXCImJiFuLmlzQnVmZmVyKGUpKXt2YXIgcj1lLnRvQXJyYXkoKTtpZighZS5zaWduJiZyWzBdJjEyOCl7ci51bnNoaWZ0KDApfWU9bmV3IG4ocil9aWYobi5pc0J1ZmZlcihlKSl7dmFyIGk9ZS5sZW5ndGg7aWYoZS5sZW5ndGg9PT0wKWkrKzt2YXIgYT1uZXcgbihpKTtlLmNvcHkoYSk7aWYoZS5sZW5ndGg9PT0wKWFbMF09MDtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihhKX1pZihlPDEyOClyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihlKTtpZihlPDI1NilyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCxlXSk7dmFyIGk9MTtmb3IodmFyIHM9ZTtzPj0yNTY7cz4+PTgpaSsrO3ZhciBhPW5ldyBBcnJheShpKTtmb3IodmFyIHM9YS5sZW5ndGgtMTtzPj0wO3MtLSl7YVtzXT1lJjI1NTtlPj49OH1pZihhWzBdJjEyOCl7YS51bnNoaWZ0KDApfXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG5ldyBuKGEpKX07REVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24gZW5jb2RlQm9vbChlKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihlPzI1NTowKX07REVSTm9kZS5wcm90b3R5cGUuX3VzZT1mdW5jdGlvbiB1c2UoZSx0KXtpZih0eXBlb2YgZT09PVwiZnVuY3Rpb25cIillPWUodCk7cmV0dXJuIGUuX2dldEVuY29kZXIoXCJkZXJcIikudHJlZX07REVSTm9kZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uIHNraXBEZWZhdWx0KGUsdCxyKXt2YXIgaT10aGlzLl9iYXNlU3RhdGU7dmFyIG47aWYoaVtcImRlZmF1bHRcIl09PT1udWxsKXJldHVybiBmYWxzZTt2YXIgYT1lLmpvaW4oKTtpZihpLmRlZmF1bHRCdWZmZXI9PT11bmRlZmluZWQpaS5kZWZhdWx0QnVmZmVyPXRoaXMuX2VuY29kZVZhbHVlKGlbXCJkZWZhdWx0XCJdLHQscikuam9pbigpO2lmKGEubGVuZ3RoIT09aS5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4gZmFsc2U7Zm9yKG49MDtuPGEubGVuZ3RoO24rKylpZihhW25dIT09aS5kZWZhdWx0QnVmZmVyW25dKXJldHVybiBmYWxzZTtyZXR1cm4gdHJ1ZX07ZnVuY3Rpb24gZW5jb2RlVGFnKGUsdCxyLGkpe3ZhciBuO2lmKGU9PT1cInNlcW9mXCIpZT1cInNlcVwiO2Vsc2UgaWYoZT09PVwic2V0b2ZcIillPVwic2V0XCI7aWYoby50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkoZSkpbj1vLnRhZ0J5TmFtZVtlXTtlbHNlIGlmKHR5cGVvZiBlPT09XCJudW1iZXJcIiYmKGV8MCk9PT1lKW49ZTtlbHNlIHJldHVybiBpLmVycm9yKFwiVW5rbm93biB0YWc6IFwiK2UpO2lmKG4+PTMxKXJldHVybiBpLmVycm9yKFwiTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkXCIpO2lmKCF0KW58PTMyO258PW8udGFnQ2xhc3NCeU5hbWVbcnx8XCJ1bml2ZXJzYWxcIl08PDY7cmV0dXJuIG59fSwzNDE4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10O2kuZGVyPXIoNzgwNCk7aS5wZW09cigxNTY0KX0sMTU2NDpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDc4MDQpO2Z1bmN0aW9uIFBFTUVuY29kZXIoZSl7bi5jYWxsKHRoaXMsZSk7dGhpcy5lbmM9XCJwZW1cIn1pKFBFTUVuY29kZXIsbik7ZS5leHBvcnRzPVBFTUVuY29kZXI7UEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uIGVuY29kZShlLHQpe3ZhciByPW4ucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsZSk7dmFyIGk9ci50b1N0cmluZyhcImJhc2U2NFwiKTt2YXIgYT1bXCItLS0tLUJFR0lOIFwiK3QubGFiZWwrXCItLS0tLVwiXTtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrPTY0KWEucHVzaChpLnNsaWNlKHMscys2NCkpO2EucHVzaChcIi0tLS0tRU5EIFwiK3QubGFiZWwrXCItLS0tLVwiKTtyZXR1cm4gYS5qb2luKFwiXFxuXCIpfX0sNzExOmZ1bmN0aW9uKGUsdCxyKXtlPXIubm1kKGUpOyhmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0fHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gaW5oZXJpdHMoZSx0KXtlLnN1cGVyXz10O3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPXQucHJvdG90eXBlO2UucHJvdG90eXBlPW5ldyBUZW1wQ3RvcjtlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIEJOKGUsdCxyKXtpZihCTi5pc0JOKGUpKXtyZXR1cm4gZX10aGlzLm5lZ2F0aXZlPTA7dGhpcy53b3Jkcz1udWxsO3RoaXMubGVuZ3RoPTA7dGhpcy5yZWQ9bnVsbDtpZihlIT09bnVsbCl7aWYodD09PVwibGVcInx8dD09PVwiYmVcIil7cj10O3Q9MTB9dGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fFwiYmVcIil9fWlmKHR5cGVvZiBlPT09XCJvYmplY3RcIil7ZS5leHBvcnRzPUJOfWVsc2V7dC5CTj1CTn1CTi5CTj1CTjtCTi53b3JkU2l6ZT0yNjt2YXIgaTt0cnl7aT1yKDQzMDApLkJ1ZmZlcn1jYXRjaChlKXt9Qk4uaXNCTj1mdW5jdGlvbiBpc0JOKGUpe2lmKGUgaW5zdGFuY2VvZiBCTil7cmV0dXJuIHRydWV9cmV0dXJuIGUhPT1udWxsJiZ0eXBlb2YgZT09PVwib2JqZWN0XCImJmUuY29uc3RydWN0b3Iud29yZFNpemU9PT1CTi53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX07Qk4ubWF4PWZ1bmN0aW9uIG1heChlLHQpe2lmKGUuY21wKHQpPjApcmV0dXJuIGU7cmV0dXJuIHR9O0JOLm1pbj1mdW5jdGlvbiBtaW4oZSx0KXtpZihlLmNtcCh0KTwwKXJldHVybiBlO3JldHVybiB0fTtCTi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChlLHQscil7aWYodHlwZW9mIGU9PT1cIm51bWJlclwiKXtyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscil9aWYodHlwZW9mIGU9PT1cIm9iamVjdFwiKXtyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKX1pZih0PT09XCJoZXhcIil7dD0xNn1hc3NlcnQodD09PSh0fDApJiZ0Pj0yJiZ0PD0zNik7ZT1lLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLFwiXCIpO3ZhciBpPTA7aWYoZVswXT09PVwiLVwiKXtpKyt9aWYodD09PTE2KXt0aGlzLl9wYXJzZUhleChlLGkpfWVsc2V7dGhpcy5fcGFyc2VCYXNlKGUsdCxpKX1pZihlWzBdPT09XCItXCIpe3RoaXMubmVnYXRpdmU9MX10aGlzLnN0cmlwKCk7aWYociE9PVwibGVcIilyZXR1cm47dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9O0JOLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbiBfaW5pdE51bWJlcihlLHQscil7aWYoZTwwKXt0aGlzLm5lZ2F0aXZlPTE7ZT0tZX1pZihlPDY3MTA4ODY0KXt0aGlzLndvcmRzPVtlJjY3MTA4ODYzXTt0aGlzLmxlbmd0aD0xfWVsc2UgaWYoZTw0NTAzNTk5NjI3MzcwNDk2KXt0aGlzLndvcmRzPVtlJjY3MTA4ODYzLGUvNjcxMDg4NjQmNjcxMDg4NjNdO3RoaXMubGVuZ3RoPTJ9ZWxzZXthc3NlcnQoZTw5MDA3MTk5MjU0NzQwOTkyKTt0aGlzLndvcmRzPVtlJjY3MTA4ODYzLGUvNjcxMDg4NjQmNjcxMDg4NjMsMV07dGhpcy5sZW5ndGg9M31pZihyIT09XCJsZVwiKXJldHVybjt0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKX07Qk4ucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24gX2luaXRBcnJheShlLHQscil7YXNzZXJ0KHR5cGVvZiBlLmxlbmd0aD09PVwibnVtYmVyXCIpO2lmKGUubGVuZ3RoPD0wKXt0aGlzLndvcmRzPVswXTt0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfXRoaXMubGVuZ3RoPU1hdGguY2VpbChlLmxlbmd0aC8zKTt0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09MH12YXIgbixhO3ZhciBzPTA7aWYocj09PVwiYmVcIil7Zm9yKGk9ZS5sZW5ndGgtMSxuPTA7aT49MDtpLT0zKXthPWVbaV18ZVtpLTFdPDw4fGVbaS0yXTw8MTY7dGhpcy53b3Jkc1tuXXw9YTw8cyY2NzEwODg2Mzt0aGlzLndvcmRzW24rMV09YT4+PjI2LXMmNjcxMDg4NjM7cys9MjQ7aWYocz49MjYpe3MtPTI2O24rK319fWVsc2UgaWYocj09PVwibGVcIil7Zm9yKGk9MCxuPTA7aTxlLmxlbmd0aDtpKz0zKXthPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTY7dGhpcy53b3Jkc1tuXXw9YTw8cyY2NzEwODg2Mzt0aGlzLndvcmRzW24rMV09YT4+PjI2LXMmNjcxMDg4NjM7cys9MjQ7aWYocz49MjYpe3MtPTI2O24rK319fXJldHVybiB0aGlzLnN0cmlwKCl9O2Z1bmN0aW9uIHBhcnNlSGV4KGUsdCxyKXt2YXIgaT0wO3ZhciBuPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8bjthKyspe3ZhciBzPWUuY2hhckNvZGVBdChhKS00ODtpPDw9NDtpZihzPj00OSYmczw9NTQpe2l8PXMtNDkrMTB9ZWxzZSBpZihzPj0xNyYmczw9MjIpe2l8PXMtMTcrMTB9ZWxzZXtpfD1zJjE1fX1yZXR1cm4gaX1CTi5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uIF9wYXJzZUhleChlLHQpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNik7dGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXt0aGlzLndvcmRzW3JdPTB9dmFyIGksbjt2YXIgYT0wO2ZvcihyPWUubGVuZ3RoLTYsaT0wO3I+PXQ7ci09Nil7bj1wYXJzZUhleChlLHIscis2KTt0aGlzLndvcmRzW2ldfD1uPDxhJjY3MTA4ODYzO3RoaXMud29yZHNbaSsxXXw9bj4+PjI2LWEmNDE5NDMwMzthKz0yNDtpZihhPj0yNil7YS09MjY7aSsrfX1pZihyKzYhPT10KXtuPXBhcnNlSGV4KGUsdCxyKzYpO3RoaXMud29yZHNbaV18PW48PGEmNjcxMDg4NjM7dGhpcy53b3Jkc1tpKzFdfD1uPj4+MjYtYSY0MTk0MzAzfXRoaXMuc3RyaXAoKX07ZnVuY3Rpb24gcGFyc2VCYXNlKGUsdCxyLGkpe3ZhciBuPTA7dmFyIGE9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBzPXQ7czxhO3MrKyl7dmFyIG89ZS5jaGFyQ29kZUF0KHMpLTQ4O24qPWk7aWYobz49NDkpe24rPW8tNDkrMTB9ZWxzZSBpZihvPj0xNyl7bis9by0xNysxMH1lbHNle24rPW99fXJldHVybiBufUJOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uIF9wYXJzZUJhc2UoZSx0LHIpe3RoaXMud29yZHM9WzBdO3RoaXMubGVuZ3RoPTE7Zm9yKHZhciBpPTAsbj0xO248PTY3MTA4ODYzO24qPXQpe2krK31pLS07bj1uL3R8MDt2YXIgYT1lLmxlbmd0aC1yO3ZhciBzPWElaTt2YXIgbz1NYXRoLm1pbihhLGEtcykrcjt2YXIgaD0wO2Zvcih2YXIgdT1yO3U8bzt1Kz1pKXtoPXBhcnNlQmFzZShlLHUsdStpLHQpO3RoaXMuaW11bG4obik7aWYodGhpcy53b3Jkc1swXStoPDY3MTA4ODY0KXt0aGlzLndvcmRzWzBdKz1ofWVsc2V7dGhpcy5faWFkZG4oaCl9fWlmKHMhPT0wKXt2YXIgZD0xO2g9cGFyc2VCYXNlKGUsdSxlLmxlbmd0aCx0KTtmb3IodT0wO3U8czt1Kyspe2QqPXR9dGhpcy5pbXVsbihkKTtpZih0aGlzLndvcmRzWzBdK2g8NjcxMDg4NjQpe3RoaXMud29yZHNbMF0rPWh9ZWxzZXt0aGlzLl9pYWRkbihoKX19fTtCTi5wcm90b3R5cGUuY29weT1mdW5jdGlvbiBjb3B5KGUpe2Uud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7ZS53b3Jkc1t0XT10aGlzLndvcmRzW3RdfWUubGVuZ3RoPXRoaXMubGVuZ3RoO2UubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZTtlLnJlZD10aGlzLnJlZH07Qk4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uIGNsb25lKCl7dmFyIGU9bmV3IEJOKG51bGwpO3RoaXMuY29weShlKTtyZXR1cm4gZX07Qk4ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24gX2V4cGFuZChlKXt3aGlsZSh0aGlzLmxlbmd0aDxlKXt0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTB9cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbiBzdHJpcCgpe3doaWxlKHRoaXMubGVuZ3RoPjEmJnRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV09PT0wKXt0aGlzLmxlbmd0aC0tfXJldHVybiB0aGlzLl9ub3JtU2lnbigpfTtCTi5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uIF9ub3JtU2lnbigpe2lmKHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXT09PTApe3RoaXMubmVnYXRpdmU9MH1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24gaW5zcGVjdCgpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifTt2YXIgbj1bXCJcIixcIjBcIixcIjAwXCIsXCIwMDBcIixcIjAwMDBcIixcIjAwMDAwXCIsXCIwMDAwMDBcIixcIjAwMDAwMDBcIixcIjAwMDAwMDAwXCIsXCIwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl07dmFyIGE9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV07dmFyIHM9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07Qk4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uIHRvU3RyaW5nKGUsdCl7ZT1lfHwxMDt0PXR8MHx8MTt2YXIgcjtpZihlPT09MTZ8fGU9PT1cImhleFwiKXtyPVwiXCI7dmFyIGk9MDt2YXIgbz0wO2Zvcih2YXIgaD0wO2g8dGhpcy5sZW5ndGg7aCsrKXt2YXIgdT10aGlzLndvcmRzW2hdO3ZhciBkPSgodTw8aXxvKSYxNjc3NzIxNSkudG9TdHJpbmcoMTYpO289dT4+PjI0LWkmMTY3NzcyMTU7aWYobyE9PTB8fGghPT10aGlzLmxlbmd0aC0xKXtyPW5bNi1kLmxlbmd0aF0rZCtyfWVsc2V7cj1kK3J9aSs9MjtpZihpPj0yNil7aS09MjY7aC0tfX1pZihvIT09MCl7cj1vLnRvU3RyaW5nKDE2KStyfXdoaWxlKHIubGVuZ3RoJXQhPT0wKXtyPVwiMFwiK3J9aWYodGhpcy5uZWdhdGl2ZSE9PTApe3I9XCItXCIrcn1yZXR1cm4gcn1pZihlPT09KGV8MCkmJmU+PTImJmU8PTM2KXt2YXIgYz1hW2VdO3ZhciBsPXNbZV07cj1cIlwiO3ZhciBwPXRoaXMuY2xvbmUoKTtwLm5lZ2F0aXZlPTA7d2hpbGUoIXAuaXNaZXJvKCkpe3ZhciB2PXAubW9kbihsKS50b1N0cmluZyhlKTtwPXAuaWRpdm4obCk7aWYoIXAuaXNaZXJvKCkpe3I9bltjLXYubGVuZ3RoXSt2K3J9ZWxzZXtyPXYrcn19aWYodGhpcy5pc1plcm8oKSl7cj1cIjBcIityfXdoaWxlKHIubGVuZ3RoJXQhPT0wKXtyPVwiMFwiK3J9aWYodGhpcy5uZWdhdGl2ZSE9PTApe3I9XCItXCIrcn1yZXR1cm4gcn1hc3NlcnQoZmFsc2UsXCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2XCIpfTtCTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24gdG9OdW1iZXIoKXt2YXIgZT10aGlzLndvcmRzWzBdO2lmKHRoaXMubGVuZ3RoPT09Mil7ZSs9dGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPT09MyYmdGhpcy53b3Jkc1syXT09PTEpe2UrPTQ1MDM1OTk2MjczNzA0OTYrdGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPjIpe2Fzc2VydChmYWxzZSxcIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0c1wiKX1yZXR1cm4gdGhpcy5uZWdhdGl2ZSE9PTA/LWU6ZX07Qk4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9O0JOLnByb3RvdHlwZS50b0J1ZmZlcj1mdW5jdGlvbiB0b0J1ZmZlcihlLHQpe2Fzc2VydCh0eXBlb2YgaSE9PVwidW5kZWZpbmVkXCIpO3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKGksZSx0KX07Qk4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24gdG9BcnJheShlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9O0JOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbiB0b0FycmF5TGlrZShlLHQscil7dmFyIGk9dGhpcy5ieXRlTGVuZ3RoKCk7dmFyIG49cnx8TWF0aC5tYXgoMSxpKTthc3NlcnQoaTw9bixcImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGhcIik7YXNzZXJ0KG4+MCxcIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMFwiKTt0aGlzLnN0cmlwKCk7dmFyIGE9dD09PVwibGVcIjt2YXIgcz1uZXcgZShuKTt2YXIgbyxoO3ZhciB1PXRoaXMuY2xvbmUoKTtpZighYSl7Zm9yKGg9MDtoPG4taTtoKyspe3NbaF09MH1mb3IoaD0wOyF1LmlzWmVybygpO2grKyl7bz11LmFuZGxuKDI1NSk7dS5pdXNocm4oOCk7c1tuLWgtMV09b319ZWxzZXtmb3IoaD0wOyF1LmlzWmVybygpO2grKyl7bz11LmFuZGxuKDI1NSk7dS5pdXNocm4oOCk7c1toXT1vfWZvcig7aDxuO2grKyl7c1toXT0wfX1yZXR1cm4gc307aWYoTWF0aC5jbHozMil7Qk4ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24gX2NvdW50Qml0cyhlKXtyZXR1cm4gMzItTWF0aC5jbHozMihlKX19ZWxzZXtCTi5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbiBfY291bnRCaXRzKGUpe3ZhciB0PWU7dmFyIHI9MDtpZih0Pj00MDk2KXtyKz0xMzt0Pj4+PTEzfWlmKHQ+PTY0KXtyKz03O3Q+Pj49N31pZih0Pj04KXtyKz00O3Q+Pj49NH1pZih0Pj0yKXtyKz0yO3Q+Pj49Mn1yZXR1cm4gcit0fX1CTi5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uIF96ZXJvQml0cyhlKXtpZihlPT09MClyZXR1cm4gMjY7dmFyIHQ9ZTt2YXIgcj0wO2lmKCh0JjgxOTEpPT09MCl7cis9MTM7dD4+Pj0xM31pZigodCYxMjcpPT09MCl7cis9Nzt0Pj4+PTd9aWYoKHQmMTUpPT09MCl7cis9NDt0Pj4+PTR9aWYoKHQmMyk9PT0wKXtyKz0yO3Q+Pj49Mn1pZigodCYxKT09PTApe3IrK31yZXR1cm4gcn07Qk4ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbiBiaXRMZW5ndGgoKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdO3ZhciB0PXRoaXMuX2NvdW50Qml0cyhlKTtyZXR1cm4odGhpcy5sZW5ndGgtMSkqMjYrdH07ZnVuY3Rpb24gdG9CaXRBcnJheShlKXt2YXIgdD1uZXcgQXJyYXkoZS5iaXRMZW5ndGgoKSk7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBpPXIvMjZ8MDt2YXIgbj1yJTI2O3Rbcl09KGUud29yZHNbaV0mMTw8bik+Pj5ufXJldHVybiB0fUJOLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbiB6ZXJvQml0cygpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7dmFyIGU9MDtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7ZSs9cjtpZihyIT09MjYpYnJlYWt9cmV0dXJuIGV9O0JOLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uIGJ5dGVMZW5ndGgoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9O0JOLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24gdG9Ud29zKGUpe2lmKHRoaXMubmVnYXRpdmUhPT0wKXtyZXR1cm4gdGhpcy5hYnMoKS5pbm90bihlKS5pYWRkbigxKX1yZXR1cm4gdGhpcy5jbG9uZSgpfTtCTi5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24gZnJvbVR3b3MoZSl7aWYodGhpcy50ZXN0bihlLTEpKXtyZXR1cm4gdGhpcy5ub3RuKGUpLmlhZGRuKDEpLmluZWcoKX1yZXR1cm4gdGhpcy5jbG9uZSgpfTtCTi5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24gaXNOZWcoKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZSE9PTB9O0JOLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24gbmVnKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9O0JOLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uIGluZWcoKXtpZighdGhpcy5pc1plcm8oKSl7dGhpcy5uZWdhdGl2ZV49MX1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24gaXVvcihlKXt3aGlsZSh0aGlzLmxlbmd0aDxlLmxlbmd0aCl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wfWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt0aGlzLndvcmRzW3RdPXRoaXMud29yZHNbdF18ZS53b3Jkc1t0XX1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uIGlvcihlKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8ZS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdW9yKGUpfTtCTi5wcm90b3R5cGUub3I9ZnVuY3Rpb24gb3IoZSl7aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IoZSk7cmV0dXJuIGUuY2xvbmUoKS5pb3IodGhpcyl9O0JOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24gdW9yKGUpe2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXVvcihlKTtyZXR1cm4gZS5jbG9uZSgpLml1b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbiBpdWFuZChlKXt2YXIgdDtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aCl7dD1lfWVsc2V7dD10aGlzfWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mZS53b3Jkc1tyXX10aGlzLmxlbmd0aD10Lmxlbmd0aDtyZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbiBpYW5kKGUpe2Fzc2VydCgodGhpcy5uZWdhdGl2ZXxlLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1YW5kKGUpfTtCTi5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uIGFuZChlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQoZSk7cmV0dXJuIGUuY2xvbmUoKS5pYW5kKHRoaXMpfTtCTi5wcm90b3R5cGUudWFuZD1mdW5jdGlvbiB1YW5kKGUpe2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQoZSk7cmV0dXJuIGUuY2xvbmUoKS5pdWFuZCh0aGlzKX07Qk4ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uIGl1eG9yKGUpe3ZhciB0O3ZhciByO2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXt0PXRoaXM7cj1lfWVsc2V7dD1lO3I9dGhpc31mb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7dGhpcy53b3Jkc1tpXT10LndvcmRzW2ldXnIud29yZHNbaV19aWYodGhpcyE9PXQpe2Zvcig7aTx0Lmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dC53b3Jkc1tpXX19dGhpcy5sZW5ndGg9dC5sZW5ndGg7cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24gaXhvcihlKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8ZS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdXhvcihlKX07Qk4ucHJvdG90eXBlLnhvcj1mdW5jdGlvbiB4b3IoZSl7aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKGUpO3JldHVybiBlLmNsb25lKCkuaXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24gdXhvcihlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKGUpO3JldHVybiBlLmNsb25lKCkuaXV4b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbiBpbm90bihlKXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgdD1NYXRoLmNlaWwoZS8yNil8MDt2YXIgcj1lJTI2O3RoaXMuX2V4cGFuZCh0KTtpZihyPjApe3QtLX1mb3IodmFyIGk9MDtpPHQ7aSsrKXt0aGlzLndvcmRzW2ldPX50aGlzLndvcmRzW2ldJjY3MTA4ODYzfWlmKHI+MCl7dGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtcn1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUubm90bj1mdW5jdGlvbiBub3RuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZSl9O0JOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uIHNldG4oZSx0KXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgcj1lLzI2fDA7dmFyIGk9ZSUyNjt0aGlzLl9leHBhbmQocisxKTtpZih0KXt0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl18MTw8aX1lbHNle3RoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZ+KDE8PGkpfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uIGlhZGQoZSl7dmFyIHQ7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJmUubmVnYXRpdmU9PT0wKXt0aGlzLm5lZ2F0aXZlPTA7dD10aGlzLmlzdWIoZSk7dGhpcy5uZWdhdGl2ZV49MTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX1lbHNlIGlmKHRoaXMubmVnYXRpdmU9PT0wJiZlLm5lZ2F0aXZlIT09MCl7ZS5uZWdhdGl2ZT0wO3Q9dGhpcy5pc3ViKGUpO2UubmVnYXRpdmU9MTtyZXR1cm4gdC5fbm9ybVNpZ24oKX12YXIgcixpO2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXtyPXRoaXM7aT1lfWVsc2V7cj1lO2k9dGhpc312YXIgbj0wO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKXt0PShyLndvcmRzW2FdfDApKyhpLndvcmRzW2FdfDApK247dGhpcy53b3Jkc1thXT10JjY3MTA4ODYzO249dD4+PjI2fWZvcig7biE9PTAmJmE8ci5sZW5ndGg7YSsrKXt0PShyLndvcmRzW2FdfDApK247dGhpcy53b3Jkc1thXT10JjY3MTA4ODYzO249dD4+PjI2fXRoaXMubGVuZ3RoPXIubGVuZ3RoO2lmKG4hPT0wKXt0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1uO3RoaXMubGVuZ3RoKyt9ZWxzZSBpZihyIT09dGhpcyl7Zm9yKDthPHIubGVuZ3RoO2ErKyl7dGhpcy53b3Jkc1thXT1yLndvcmRzW2FdfX1yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmFkZD1mdW5jdGlvbiBhZGQoZSl7dmFyIHQ7aWYoZS5uZWdhdGl2ZSE9PTAmJnRoaXMubmVnYXRpdmU9PT0wKXtlLm5lZ2F0aXZlPTA7dD10aGlzLnN1YihlKTtlLm5lZ2F0aXZlXj0xO3JldHVybiB0fWVsc2UgaWYoZS5uZWdhdGl2ZT09PTAmJnRoaXMubmVnYXRpdmUhPT0wKXt0aGlzLm5lZ2F0aXZlPTA7dD1lLnN1Yih0aGlzKTt0aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHR9aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKGUpO3JldHVybiBlLmNsb25lKCkuaWFkZCh0aGlzKX07Qk4ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24gaXN1YihlKXtpZihlLm5lZ2F0aXZlIT09MCl7ZS5uZWdhdGl2ZT0wO3ZhciB0PXRoaXMuaWFkZChlKTtlLm5lZ2F0aXZlPTE7cmV0dXJuIHQuX25vcm1TaWduKCl9ZWxzZSBpZih0aGlzLm5lZ2F0aXZlIT09MCl7dGhpcy5uZWdhdGl2ZT0wO3RoaXMuaWFkZChlKTt0aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9dmFyIHI9dGhpcy5jbXAoZSk7aWYocj09PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmxlbmd0aD0xO3RoaXMud29yZHNbMF09MDtyZXR1cm4gdGhpc312YXIgaSxuO2lmKHI+MCl7aT10aGlzO249ZX1lbHNle2k9ZTtuPXRoaXN9dmFyIGE9MDtmb3IodmFyIHM9MDtzPG4ubGVuZ3RoO3MrKyl7dD0oaS53b3Jkc1tzXXwwKS0obi53b3Jkc1tzXXwwKSthO2E9dD4+MjY7dGhpcy53b3Jkc1tzXT10JjY3MTA4ODYzfWZvcig7YSE9PTAmJnM8aS5sZW5ndGg7cysrKXt0PShpLndvcmRzW3NdfDApK2E7YT10Pj4yNjt0aGlzLndvcmRzW3NdPXQmNjcxMDg4NjN9aWYoYT09PTAmJnM8aS5sZW5ndGgmJmkhPT10aGlzKXtmb3IoO3M8aS5sZW5ndGg7cysrKXt0aGlzLndvcmRzW3NdPWkud29yZHNbc119fXRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLHMpO2lmKGkhPT10aGlzKXt0aGlzLm5lZ2F0aXZlPTF9cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbiBzdWIoZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKGUpfTtmdW5jdGlvbiBzbWFsbE11bFRvKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgaT1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPWk7aT1pLTF8MDt2YXIgbj1lLndvcmRzWzBdfDA7dmFyIGE9dC53b3Jkc1swXXwwO3ZhciBzPW4qYTt2YXIgbz1zJjY3MTA4ODYzO3ZhciBoPXMvNjcxMDg4NjR8MDtyLndvcmRzWzBdPW87Zm9yKHZhciB1PTE7dTxpO3UrKyl7dmFyIGQ9aD4+PjI2O3ZhciBjPWgmNjcxMDg4NjM7dmFyIGw9TWF0aC5taW4odSx0Lmxlbmd0aC0xKTtmb3IodmFyIHA9TWF0aC5tYXgoMCx1LWUubGVuZ3RoKzEpO3A8PWw7cCsrKXt2YXIgdj11LXB8MDtuPWUud29yZHNbdl18MDthPXQud29yZHNbcF18MDtzPW4qYStjO2QrPXMvNjcxMDg4NjR8MDtjPXMmNjcxMDg4NjN9ci53b3Jkc1t1XT1jfDA7aD1kfDB9aWYoaCE9PTApe3Iud29yZHNbdV09aHwwfWVsc2V7ci5sZW5ndGgtLX1yZXR1cm4gci5zdHJpcCgpfXZhciBvPWZ1bmN0aW9uIGNvbWIxME11bFRvKGUsdCxyKXt2YXIgaT1lLndvcmRzO3ZhciBuPXQud29yZHM7dmFyIGE9ci53b3Jkczt2YXIgcz0wO3ZhciBvO3ZhciBoO3ZhciB1O3ZhciBkPWlbMF18MDt2YXIgYz1kJjgxOTE7dmFyIGw9ZD4+PjEzO3ZhciBwPWlbMV18MDt2YXIgdj1wJjgxOTE7dmFyIGI9cD4+PjEzO3ZhciBtPWlbMl18MDt2YXIgeT1tJjgxOTE7dmFyIGc9bT4+PjEzO3ZhciBfPWlbM118MDt2YXIgdz1fJjgxOTE7dmFyIE09Xz4+PjEzO3ZhciBCPWlbNF18MDt2YXIgRT1CJjgxOTE7dmFyIGs9Qj4+PjEzO3ZhciBBPWlbNV18MDt2YXIgTj1BJjgxOTE7dmFyIFA9QT4+PjEzO3ZhciB4PWlbNl18MDt2YXIgST14JjgxOTE7dmFyIEM9eD4+PjEzO3ZhciBEPWlbN118MDt2YXIgVD1EJjgxOTE7dmFyIGo9RD4+PjEzO3ZhciBxPWlbOF18MDt2YXIgTz1xJjgxOTE7dmFyIEg9cT4+PjEzO3ZhciBMPWlbOV18MDt2YXIgej1MJjgxOTE7dmFyIEY9TD4+PjEzO3ZhciBVPW5bMF18MDt2YXIgVz1VJjgxOTE7dmFyIFY9VT4+PjEzO3ZhciBHPW5bMV18MDt2YXIgSj1HJjgxOTE7dmFyIFo9Rz4+PjEzO3ZhciBYPW5bMl18MDt2YXIgWT1YJjgxOTE7dmFyICQ9WD4+PjEzO3ZhciBRPW5bM118MDt2YXIgZWU9USY4MTkxO3ZhciB0ZT1RPj4+MTM7dmFyIHJlPW5bNF18MDt2YXIgaWU9cmUmODE5MTt2YXIgbmU9cmU+Pj4xMzt2YXIgYWU9bls1XXwwO3ZhciBmZT1hZSY4MTkxO3ZhciBzZT1hZT4+PjEzO3ZhciBvZT1uWzZdfDA7dmFyIGhlPW9lJjgxOTE7dmFyIHVlPW9lPj4+MTM7dmFyIGRlPW5bN118MDt2YXIgY2U9ZGUmODE5MTt2YXIgbGU9ZGU+Pj4xMzt2YXIgcGU9bls4XXwwO3ZhciB2ZT1wZSY4MTkxO3ZhciBiZT1wZT4+PjEzO3ZhciBtZT1uWzldfDA7dmFyIHllPW1lJjgxOTE7dmFyIGdlPW1lPj4+MTM7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7ci5sZW5ndGg9MTk7bz1NYXRoLmltdWwoYyxXKTtoPU1hdGguaW11bChjLFYpO2g9aCtNYXRoLmltdWwobCxXKXwwO3U9TWF0aC5pbXVsKGwsVik7dmFyIF9lPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhfZT4+PjI2KXwwO19lJj02NzEwODg2MztvPU1hdGguaW11bCh2LFcpO2g9TWF0aC5pbXVsKHYsVik7aD1oK01hdGguaW11bChiLFcpfDA7dT1NYXRoLmltdWwoYixWKTtvPW8rTWF0aC5pbXVsKGMsSil8MDtoPWgrTWF0aC5pbXVsKGMsWil8MDtoPWgrTWF0aC5pbXVsKGwsSil8MDt1PXUrTWF0aC5pbXVsKGwsWil8MDt2YXIgd2U9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKHdlPj4+MjYpfDA7d2UmPTY3MTA4ODYzO289TWF0aC5pbXVsKHksVyk7aD1NYXRoLmltdWwoeSxWKTtoPWgrTWF0aC5pbXVsKGcsVyl8MDt1PU1hdGguaW11bChnLFYpO289bytNYXRoLmltdWwodixKKXwwO2g9aCtNYXRoLmltdWwodixaKXwwO2g9aCtNYXRoLmltdWwoYixKKXwwO3U9dStNYXRoLmltdWwoYixaKXwwO289bytNYXRoLmltdWwoYyxZKXwwO2g9aCtNYXRoLmltdWwoYywkKXwwO2g9aCtNYXRoLmltdWwobCxZKXwwO3U9dStNYXRoLmltdWwobCwkKXwwO3ZhciBNZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoTWU+Pj4yNil8MDtNZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwodyxXKTtoPU1hdGguaW11bCh3LFYpO2g9aCtNYXRoLmltdWwoTSxXKXwwO3U9TWF0aC5pbXVsKE0sVik7bz1vK01hdGguaW11bCh5LEopfDA7aD1oK01hdGguaW11bCh5LFopfDA7aD1oK01hdGguaW11bChnLEopfDA7dT11K01hdGguaW11bChnLFopfDA7bz1vK01hdGguaW11bCh2LFkpfDA7aD1oK01hdGguaW11bCh2LCQpfDA7aD1oK01hdGguaW11bChiLFkpfDA7dT11K01hdGguaW11bChiLCQpfDA7bz1vK01hdGguaW11bChjLGVlKXwwO2g9aCtNYXRoLmltdWwoYyx0ZSl8MDtoPWgrTWF0aC5pbXVsKGwsZWUpfDA7dT11K01hdGguaW11bChsLHRlKXwwO3ZhciBTZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoU2U+Pj4yNil8MDtTZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoRSxXKTtoPU1hdGguaW11bChFLFYpO2g9aCtNYXRoLmltdWwoayxXKXwwO3U9TWF0aC5pbXVsKGssVik7bz1vK01hdGguaW11bCh3LEopfDA7aD1oK01hdGguaW11bCh3LFopfDA7aD1oK01hdGguaW11bChNLEopfDA7dT11K01hdGguaW11bChNLFopfDA7bz1vK01hdGguaW11bCh5LFkpfDA7aD1oK01hdGguaW11bCh5LCQpfDA7aD1oK01hdGguaW11bChnLFkpfDA7dT11K01hdGguaW11bChnLCQpfDA7bz1vK01hdGguaW11bCh2LGVlKXwwO2g9aCtNYXRoLmltdWwodix0ZSl8MDtoPWgrTWF0aC5pbXVsKGIsZWUpfDA7dT11K01hdGguaW11bChiLHRlKXwwO289bytNYXRoLmltdWwoYyxpZSl8MDtoPWgrTWF0aC5pbXVsKGMsbmUpfDA7aD1oK01hdGguaW11bChsLGllKXwwO3U9dStNYXRoLmltdWwobCxuZSl8MDt2YXIgQmU9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKEJlPj4+MjYpfDA7QmUmPTY3MTA4ODYzO289TWF0aC5pbXVsKE4sVyk7aD1NYXRoLmltdWwoTixWKTtoPWgrTWF0aC5pbXVsKFAsVyl8MDt1PU1hdGguaW11bChQLFYpO289bytNYXRoLmltdWwoRSxKKXwwO2g9aCtNYXRoLmltdWwoRSxaKXwwO2g9aCtNYXRoLmltdWwoayxKKXwwO3U9dStNYXRoLmltdWwoayxaKXwwO289bytNYXRoLmltdWwodyxZKXwwO2g9aCtNYXRoLmltdWwodywkKXwwO2g9aCtNYXRoLmltdWwoTSxZKXwwO3U9dStNYXRoLmltdWwoTSwkKXwwO289bytNYXRoLmltdWwoeSxlZSl8MDtoPWgrTWF0aC5pbXVsKHksdGUpfDA7aD1oK01hdGguaW11bChnLGVlKXwwO3U9dStNYXRoLmltdWwoZyx0ZSl8MDtvPW8rTWF0aC5pbXVsKHYsaWUpfDA7aD1oK01hdGguaW11bCh2LG5lKXwwO2g9aCtNYXRoLmltdWwoYixpZSl8MDt1PXUrTWF0aC5pbXVsKGIsbmUpfDA7bz1vK01hdGguaW11bChjLGZlKXwwO2g9aCtNYXRoLmltdWwoYyxzZSl8MDtoPWgrTWF0aC5pbXVsKGwsZmUpfDA7dT11K01hdGguaW11bChsLHNlKXwwO3ZhciBFZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoRWU+Pj4yNil8MDtFZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoSSxXKTtoPU1hdGguaW11bChJLFYpO2g9aCtNYXRoLmltdWwoQyxXKXwwO3U9TWF0aC5pbXVsKEMsVik7bz1vK01hdGguaW11bChOLEopfDA7aD1oK01hdGguaW11bChOLFopfDA7aD1oK01hdGguaW11bChQLEopfDA7dT11K01hdGguaW11bChQLFopfDA7bz1vK01hdGguaW11bChFLFkpfDA7aD1oK01hdGguaW11bChFLCQpfDA7aD1oK01hdGguaW11bChrLFkpfDA7dT11K01hdGguaW11bChrLCQpfDA7bz1vK01hdGguaW11bCh3LGVlKXwwO2g9aCtNYXRoLmltdWwodyx0ZSl8MDtoPWgrTWF0aC5pbXVsKE0sZWUpfDA7dT11K01hdGguaW11bChNLHRlKXwwO289bytNYXRoLmltdWwoeSxpZSl8MDtoPWgrTWF0aC5pbXVsKHksbmUpfDA7aD1oK01hdGguaW11bChnLGllKXwwO3U9dStNYXRoLmltdWwoZyxuZSl8MDtvPW8rTWF0aC5pbXVsKHYsZmUpfDA7aD1oK01hdGguaW11bCh2LHNlKXwwO2g9aCtNYXRoLmltdWwoYixmZSl8MDt1PXUrTWF0aC5pbXVsKGIsc2UpfDA7bz1vK01hdGguaW11bChjLGhlKXwwO2g9aCtNYXRoLmltdWwoYyx1ZSl8MDtoPWgrTWF0aC5pbXVsKGwsaGUpfDA7dT11K01hdGguaW11bChsLHVlKXwwO3ZhciBrZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoa2U+Pj4yNil8MDtrZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoVCxXKTtoPU1hdGguaW11bChULFYpO2g9aCtNYXRoLmltdWwoaixXKXwwO3U9TWF0aC5pbXVsKGosVik7bz1vK01hdGguaW11bChJLEopfDA7aD1oK01hdGguaW11bChJLFopfDA7aD1oK01hdGguaW11bChDLEopfDA7dT11K01hdGguaW11bChDLFopfDA7bz1vK01hdGguaW11bChOLFkpfDA7aD1oK01hdGguaW11bChOLCQpfDA7aD1oK01hdGguaW11bChQLFkpfDA7dT11K01hdGguaW11bChQLCQpfDA7bz1vK01hdGguaW11bChFLGVlKXwwO2g9aCtNYXRoLmltdWwoRSx0ZSl8MDtoPWgrTWF0aC5pbXVsKGssZWUpfDA7dT11K01hdGguaW11bChrLHRlKXwwO289bytNYXRoLmltdWwodyxpZSl8MDtoPWgrTWF0aC5pbXVsKHcsbmUpfDA7aD1oK01hdGguaW11bChNLGllKXwwO3U9dStNYXRoLmltdWwoTSxuZSl8MDtvPW8rTWF0aC5pbXVsKHksZmUpfDA7aD1oK01hdGguaW11bCh5LHNlKXwwO2g9aCtNYXRoLmltdWwoZyxmZSl8MDt1PXUrTWF0aC5pbXVsKGcsc2UpfDA7bz1vK01hdGguaW11bCh2LGhlKXwwO2g9aCtNYXRoLmltdWwodix1ZSl8MDtoPWgrTWF0aC5pbXVsKGIsaGUpfDA7dT11K01hdGguaW11bChiLHVlKXwwO289bytNYXRoLmltdWwoYyxjZSl8MDtoPWgrTWF0aC5pbXVsKGMsbGUpfDA7aD1oK01hdGguaW11bChsLGNlKXwwO3U9dStNYXRoLmltdWwobCxsZSl8MDt2YXIgQWU9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKEFlPj4+MjYpfDA7QWUmPTY3MTA4ODYzO289TWF0aC5pbXVsKE8sVyk7aD1NYXRoLmltdWwoTyxWKTtoPWgrTWF0aC5pbXVsKEgsVyl8MDt1PU1hdGguaW11bChILFYpO289bytNYXRoLmltdWwoVCxKKXwwO2g9aCtNYXRoLmltdWwoVCxaKXwwO2g9aCtNYXRoLmltdWwoaixKKXwwO3U9dStNYXRoLmltdWwoaixaKXwwO289bytNYXRoLmltdWwoSSxZKXwwO2g9aCtNYXRoLmltdWwoSSwkKXwwO2g9aCtNYXRoLmltdWwoQyxZKXwwO3U9dStNYXRoLmltdWwoQywkKXwwO289bytNYXRoLmltdWwoTixlZSl8MDtoPWgrTWF0aC5pbXVsKE4sdGUpfDA7aD1oK01hdGguaW11bChQLGVlKXwwO3U9dStNYXRoLmltdWwoUCx0ZSl8MDtvPW8rTWF0aC5pbXVsKEUsaWUpfDA7aD1oK01hdGguaW11bChFLG5lKXwwO2g9aCtNYXRoLmltdWwoayxpZSl8MDt1PXUrTWF0aC5pbXVsKGssbmUpfDA7bz1vK01hdGguaW11bCh3LGZlKXwwO2g9aCtNYXRoLmltdWwodyxzZSl8MDtoPWgrTWF0aC5pbXVsKE0sZmUpfDA7dT11K01hdGguaW11bChNLHNlKXwwO289bytNYXRoLmltdWwoeSxoZSl8MDtoPWgrTWF0aC5pbXVsKHksdWUpfDA7aD1oK01hdGguaW11bChnLGhlKXwwO3U9dStNYXRoLmltdWwoZyx1ZSl8MDtvPW8rTWF0aC5pbXVsKHYsY2UpfDA7aD1oK01hdGguaW11bCh2LGxlKXwwO2g9aCtNYXRoLmltdWwoYixjZSl8MDt1PXUrTWF0aC5pbXVsKGIsbGUpfDA7bz1vK01hdGguaW11bChjLHZlKXwwO2g9aCtNYXRoLmltdWwoYyxiZSl8MDtoPWgrTWF0aC5pbXVsKGwsdmUpfDA7dT11K01hdGguaW11bChsLGJlKXwwO3ZhciBOZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoTmU+Pj4yNil8MDtOZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixXKTtoPU1hdGguaW11bCh6LFYpO2g9aCtNYXRoLmltdWwoRixXKXwwO3U9TWF0aC5pbXVsKEYsVik7bz1vK01hdGguaW11bChPLEopfDA7aD1oK01hdGguaW11bChPLFopfDA7aD1oK01hdGguaW11bChILEopfDA7dT11K01hdGguaW11bChILFopfDA7bz1vK01hdGguaW11bChULFkpfDA7aD1oK01hdGguaW11bChULCQpfDA7aD1oK01hdGguaW11bChqLFkpfDA7dT11K01hdGguaW11bChqLCQpfDA7bz1vK01hdGguaW11bChJLGVlKXwwO2g9aCtNYXRoLmltdWwoSSx0ZSl8MDtoPWgrTWF0aC5pbXVsKEMsZWUpfDA7dT11K01hdGguaW11bChDLHRlKXwwO289bytNYXRoLmltdWwoTixpZSl8MDtoPWgrTWF0aC5pbXVsKE4sbmUpfDA7aD1oK01hdGguaW11bChQLGllKXwwO3U9dStNYXRoLmltdWwoUCxuZSl8MDtvPW8rTWF0aC5pbXVsKEUsZmUpfDA7aD1oK01hdGguaW11bChFLHNlKXwwO2g9aCtNYXRoLmltdWwoayxmZSl8MDt1PXUrTWF0aC5pbXVsKGssc2UpfDA7bz1vK01hdGguaW11bCh3LGhlKXwwO2g9aCtNYXRoLmltdWwodyx1ZSl8MDtoPWgrTWF0aC5pbXVsKE0saGUpfDA7dT11K01hdGguaW11bChNLHVlKXwwO289bytNYXRoLmltdWwoeSxjZSl8MDtoPWgrTWF0aC5pbXVsKHksbGUpfDA7aD1oK01hdGguaW11bChnLGNlKXwwO3U9dStNYXRoLmltdWwoZyxsZSl8MDtvPW8rTWF0aC5pbXVsKHYsdmUpfDA7aD1oK01hdGguaW11bCh2LGJlKXwwO2g9aCtNYXRoLmltdWwoYix2ZSl8MDt1PXUrTWF0aC5pbXVsKGIsYmUpfDA7bz1vK01hdGguaW11bChjLHllKXwwO2g9aCtNYXRoLmltdWwoYyxnZSl8MDtoPWgrTWF0aC5pbXVsKGwseWUpfDA7dT11K01hdGguaW11bChsLGdlKXwwO3ZhciBSZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoUmU+Pj4yNil8MDtSZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixKKTtoPU1hdGguaW11bCh6LFopO2g9aCtNYXRoLmltdWwoRixKKXwwO3U9TWF0aC5pbXVsKEYsWik7bz1vK01hdGguaW11bChPLFkpfDA7aD1oK01hdGguaW11bChPLCQpfDA7aD1oK01hdGguaW11bChILFkpfDA7dT11K01hdGguaW11bChILCQpfDA7bz1vK01hdGguaW11bChULGVlKXwwO2g9aCtNYXRoLmltdWwoVCx0ZSl8MDtoPWgrTWF0aC5pbXVsKGosZWUpfDA7dT11K01hdGguaW11bChqLHRlKXwwO289bytNYXRoLmltdWwoSSxpZSl8MDtoPWgrTWF0aC5pbXVsKEksbmUpfDA7aD1oK01hdGguaW11bChDLGllKXwwO3U9dStNYXRoLmltdWwoQyxuZSl8MDtvPW8rTWF0aC5pbXVsKE4sZmUpfDA7aD1oK01hdGguaW11bChOLHNlKXwwO2g9aCtNYXRoLmltdWwoUCxmZSl8MDt1PXUrTWF0aC5pbXVsKFAsc2UpfDA7bz1vK01hdGguaW11bChFLGhlKXwwO2g9aCtNYXRoLmltdWwoRSx1ZSl8MDtoPWgrTWF0aC5pbXVsKGssaGUpfDA7dT11K01hdGguaW11bChrLHVlKXwwO289bytNYXRoLmltdWwodyxjZSl8MDtoPWgrTWF0aC5pbXVsKHcsbGUpfDA7aD1oK01hdGguaW11bChNLGNlKXwwO3U9dStNYXRoLmltdWwoTSxsZSl8MDtvPW8rTWF0aC5pbXVsKHksdmUpfDA7aD1oK01hdGguaW11bCh5LGJlKXwwO2g9aCtNYXRoLmltdWwoZyx2ZSl8MDt1PXUrTWF0aC5pbXVsKGcsYmUpfDA7bz1vK01hdGguaW11bCh2LHllKXwwO2g9aCtNYXRoLmltdWwodixnZSl8MDtoPWgrTWF0aC5pbXVsKGIseWUpfDA7dT11K01hdGguaW11bChiLGdlKXwwO3ZhciBQZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoUGU+Pj4yNil8MDtQZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixZKTtoPU1hdGguaW11bCh6LCQpO2g9aCtNYXRoLmltdWwoRixZKXwwO3U9TWF0aC5pbXVsKEYsJCk7bz1vK01hdGguaW11bChPLGVlKXwwO2g9aCtNYXRoLmltdWwoTyx0ZSl8MDtoPWgrTWF0aC5pbXVsKEgsZWUpfDA7dT11K01hdGguaW11bChILHRlKXwwO289bytNYXRoLmltdWwoVCxpZSl8MDtoPWgrTWF0aC5pbXVsKFQsbmUpfDA7aD1oK01hdGguaW11bChqLGllKXwwO3U9dStNYXRoLmltdWwoaixuZSl8MDtvPW8rTWF0aC5pbXVsKEksZmUpfDA7aD1oK01hdGguaW11bChJLHNlKXwwO2g9aCtNYXRoLmltdWwoQyxmZSl8MDt1PXUrTWF0aC5pbXVsKEMsc2UpfDA7bz1vK01hdGguaW11bChOLGhlKXwwO2g9aCtNYXRoLmltdWwoTix1ZSl8MDtoPWgrTWF0aC5pbXVsKFAsaGUpfDA7dT11K01hdGguaW11bChQLHVlKXwwO289bytNYXRoLmltdWwoRSxjZSl8MDtoPWgrTWF0aC5pbXVsKEUsbGUpfDA7aD1oK01hdGguaW11bChrLGNlKXwwO3U9dStNYXRoLmltdWwoayxsZSl8MDtvPW8rTWF0aC5pbXVsKHcsdmUpfDA7aD1oK01hdGguaW11bCh3LGJlKXwwO2g9aCtNYXRoLmltdWwoTSx2ZSl8MDt1PXUrTWF0aC5pbXVsKE0sYmUpfDA7bz1vK01hdGguaW11bCh5LHllKXwwO2g9aCtNYXRoLmltdWwoeSxnZSl8MDtoPWgrTWF0aC5pbXVsKGcseWUpfDA7dT11K01hdGguaW11bChnLGdlKXwwO3ZhciB4ZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoeGU+Pj4yNil8MDt4ZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixlZSk7aD1NYXRoLmltdWwoeix0ZSk7aD1oK01hdGguaW11bChGLGVlKXwwO3U9TWF0aC5pbXVsKEYsdGUpO289bytNYXRoLmltdWwoTyxpZSl8MDtoPWgrTWF0aC5pbXVsKE8sbmUpfDA7aD1oK01hdGguaW11bChILGllKXwwO3U9dStNYXRoLmltdWwoSCxuZSl8MDtvPW8rTWF0aC5pbXVsKFQsZmUpfDA7aD1oK01hdGguaW11bChULHNlKXwwO2g9aCtNYXRoLmltdWwoaixmZSl8MDt1PXUrTWF0aC5pbXVsKGosc2UpfDA7bz1vK01hdGguaW11bChJLGhlKXwwO2g9aCtNYXRoLmltdWwoSSx1ZSl8MDtoPWgrTWF0aC5pbXVsKEMsaGUpfDA7dT11K01hdGguaW11bChDLHVlKXwwO289bytNYXRoLmltdWwoTixjZSl8MDtoPWgrTWF0aC5pbXVsKE4sbGUpfDA7aD1oK01hdGguaW11bChQLGNlKXwwO3U9dStNYXRoLmltdWwoUCxsZSl8MDtvPW8rTWF0aC5pbXVsKEUsdmUpfDA7aD1oK01hdGguaW11bChFLGJlKXwwO2g9aCtNYXRoLmltdWwoayx2ZSl8MDt1PXUrTWF0aC5pbXVsKGssYmUpfDA7bz1vK01hdGguaW11bCh3LHllKXwwO2g9aCtNYXRoLmltdWwodyxnZSl8MDtoPWgrTWF0aC5pbXVsKE0seWUpfDA7dT11K01hdGguaW11bChNLGdlKXwwO3ZhciBJZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoSWU+Pj4yNil8MDtJZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixpZSk7aD1NYXRoLmltdWwoeixuZSk7aD1oK01hdGguaW11bChGLGllKXwwO3U9TWF0aC5pbXVsKEYsbmUpO289bytNYXRoLmltdWwoTyxmZSl8MDtoPWgrTWF0aC5pbXVsKE8sc2UpfDA7aD1oK01hdGguaW11bChILGZlKXwwO3U9dStNYXRoLmltdWwoSCxzZSl8MDtvPW8rTWF0aC5pbXVsKFQsaGUpfDA7aD1oK01hdGguaW11bChULHVlKXwwO2g9aCtNYXRoLmltdWwoaixoZSl8MDt1PXUrTWF0aC5pbXVsKGosdWUpfDA7bz1vK01hdGguaW11bChJLGNlKXwwO2g9aCtNYXRoLmltdWwoSSxsZSl8MDtoPWgrTWF0aC5pbXVsKEMsY2UpfDA7dT11K01hdGguaW11bChDLGxlKXwwO289bytNYXRoLmltdWwoTix2ZSl8MDtoPWgrTWF0aC5pbXVsKE4sYmUpfDA7aD1oK01hdGguaW11bChQLHZlKXwwO3U9dStNYXRoLmltdWwoUCxiZSl8MDtvPW8rTWF0aC5pbXVsKEUseWUpfDA7aD1oK01hdGguaW11bChFLGdlKXwwO2g9aCtNYXRoLmltdWwoayx5ZSl8MDt1PXUrTWF0aC5pbXVsKGssZ2UpfDA7dmFyIENlPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhDZT4+PjI2KXwwO0NlJj02NzEwODg2MztvPU1hdGguaW11bCh6LGZlKTtoPU1hdGguaW11bCh6LHNlKTtoPWgrTWF0aC5pbXVsKEYsZmUpfDA7dT1NYXRoLmltdWwoRixzZSk7bz1vK01hdGguaW11bChPLGhlKXwwO2g9aCtNYXRoLmltdWwoTyx1ZSl8MDtoPWgrTWF0aC5pbXVsKEgsaGUpfDA7dT11K01hdGguaW11bChILHVlKXwwO289bytNYXRoLmltdWwoVCxjZSl8MDtoPWgrTWF0aC5pbXVsKFQsbGUpfDA7aD1oK01hdGguaW11bChqLGNlKXwwO3U9dStNYXRoLmltdWwoaixsZSl8MDtvPW8rTWF0aC5pbXVsKEksdmUpfDA7aD1oK01hdGguaW11bChJLGJlKXwwO2g9aCtNYXRoLmltdWwoQyx2ZSl8MDt1PXUrTWF0aC5pbXVsKEMsYmUpfDA7bz1vK01hdGguaW11bChOLHllKXwwO2g9aCtNYXRoLmltdWwoTixnZSl8MDtoPWgrTWF0aC5pbXVsKFAseWUpfDA7dT11K01hdGguaW11bChQLGdlKXwwO3ZhciBEZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoRGU+Pj4yNil8MDtEZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixoZSk7aD1NYXRoLmltdWwoeix1ZSk7aD1oK01hdGguaW11bChGLGhlKXwwO3U9TWF0aC5pbXVsKEYsdWUpO289bytNYXRoLmltdWwoTyxjZSl8MDtoPWgrTWF0aC5pbXVsKE8sbGUpfDA7aD1oK01hdGguaW11bChILGNlKXwwO3U9dStNYXRoLmltdWwoSCxsZSl8MDtvPW8rTWF0aC5pbXVsKFQsdmUpfDA7aD1oK01hdGguaW11bChULGJlKXwwO2g9aCtNYXRoLmltdWwoaix2ZSl8MDt1PXUrTWF0aC5pbXVsKGosYmUpfDA7bz1vK01hdGguaW11bChJLHllKXwwO2g9aCtNYXRoLmltdWwoSSxnZSl8MDtoPWgrTWF0aC5pbXVsKEMseWUpfDA7dT11K01hdGguaW11bChDLGdlKXwwO3ZhciBUZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoVGU+Pj4yNil8MDtUZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixjZSk7aD1NYXRoLmltdWwoeixsZSk7aD1oK01hdGguaW11bChGLGNlKXwwO3U9TWF0aC5pbXVsKEYsbGUpO289bytNYXRoLmltdWwoTyx2ZSl8MDtoPWgrTWF0aC5pbXVsKE8sYmUpfDA7aD1oK01hdGguaW11bChILHZlKXwwO3U9dStNYXRoLmltdWwoSCxiZSl8MDtvPW8rTWF0aC5pbXVsKFQseWUpfDA7aD1oK01hdGguaW11bChULGdlKXwwO2g9aCtNYXRoLmltdWwoaix5ZSl8MDt1PXUrTWF0aC5pbXVsKGosZ2UpfDA7dmFyIGplPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhqZT4+PjI2KXwwO2plJj02NzEwODg2MztvPU1hdGguaW11bCh6LHZlKTtoPU1hdGguaW11bCh6LGJlKTtoPWgrTWF0aC5pbXVsKEYsdmUpfDA7dT1NYXRoLmltdWwoRixiZSk7bz1vK01hdGguaW11bChPLHllKXwwO2g9aCtNYXRoLmltdWwoTyxnZSl8MDtoPWgrTWF0aC5pbXVsKEgseWUpfDA7dT11K01hdGguaW11bChILGdlKXwwO3ZhciBxZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsocWU+Pj4yNil8MDtxZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeix5ZSk7aD1NYXRoLmltdWwoeixnZSk7aD1oK01hdGguaW11bChGLHllKXwwO3U9TWF0aC5pbXVsKEYsZ2UpO3ZhciBPZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoT2U+Pj4yNil8MDtPZSY9NjcxMDg4NjM7YVswXT1fZTthWzFdPXdlO2FbMl09TWU7YVszXT1TZTthWzRdPUJlO2FbNV09RWU7YVs2XT1rZTthWzddPUFlO2FbOF09TmU7YVs5XT1SZTthWzEwXT1QZTthWzExXT14ZTthWzEyXT1JZTthWzEzXT1DZTthWzE0XT1EZTthWzE1XT1UZTthWzE2XT1qZTthWzE3XT1xZTthWzE4XT1PZTtpZihzIT09MCl7YVsxOV09cztyLmxlbmd0aCsrfXJldHVybiByfTtpZighTWF0aC5pbXVsKXtvPXNtYWxsTXVsVG99ZnVuY3Rpb24gYmlnTXVsVG8oZSx0LHIpe3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlO3IubGVuZ3RoPWUubGVuZ3RoK3QubGVuZ3RoO3ZhciBpPTA7dmFyIG49MDtmb3IodmFyIGE9MDthPHIubGVuZ3RoLTE7YSsrKXt2YXIgcz1uO249MDt2YXIgbz1pJjY3MTA4ODYzO3ZhciBoPU1hdGgubWluKGEsdC5sZW5ndGgtMSk7Zm9yKHZhciB1PU1hdGgubWF4KDAsYS1lLmxlbmd0aCsxKTt1PD1oO3UrKyl7dmFyIGQ9YS11O3ZhciBjPWUud29yZHNbZF18MDt2YXIgbD10LndvcmRzW3VdfDA7dmFyIHA9YypsO3ZhciB2PXAmNjcxMDg4NjM7cz1zKyhwLzY3MTA4ODY0fDApfDA7dj12K298MDtvPXYmNjcxMDg4NjM7cz1zKyh2Pj4+MjYpfDA7bis9cz4+PjI2O3MmPTY3MTA4ODYzfXIud29yZHNbYV09bztpPXM7cz1ufWlmKGkhPT0wKXtyLndvcmRzW2FdPWl9ZWxzZXtyLmxlbmd0aC0tfXJldHVybiByLnN0cmlwKCl9ZnVuY3Rpb24ganVtYm9NdWxUbyhlLHQscil7dmFyIGk9bmV3IEZGVE07cmV0dXJuIGkubXVscChlLHQscil9Qk4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uIG11bFRvKGUsdCl7dmFyIHI7dmFyIGk9dGhpcy5sZW5ndGgrZS5sZW5ndGg7aWYodGhpcy5sZW5ndGg9PT0xMCYmZS5sZW5ndGg9PT0xMCl7cj1vKHRoaXMsZSx0KX1lbHNlIGlmKGk8NjMpe3I9c21hbGxNdWxUbyh0aGlzLGUsdCl9ZWxzZSBpZihpPDEwMjQpe3I9YmlnTXVsVG8odGhpcyxlLHQpfWVsc2V7cj1qdW1ib011bFRvKHRoaXMsZSx0KX1yZXR1cm4gcn07ZnVuY3Rpb24gRkZUTShlLHQpe3RoaXMueD1lO3RoaXMueT10fUZGVE0ucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24gbWFrZVJCVChlKXt2YXIgdD1uZXcgQXJyYXkoZSk7dmFyIHI9Qk4ucHJvdG90eXBlLl9jb3VudEJpdHMoZSktMTtmb3IodmFyIGk9MDtpPGU7aSsrKXt0W2ldPXRoaXMucmV2QmluKGkscixlKX1yZXR1cm4gdH07RkZUTS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uIHJldkJpbihlLHQscil7aWYoZT09PTB8fGU9PT1yLTEpcmV0dXJuIGU7dmFyIGk9MDtmb3IodmFyIG49MDtuPHQ7bisrKXtpfD0oZSYxKTw8dC1uLTE7ZT4+PTF9cmV0dXJuIGl9O0ZGVE0ucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24gcGVybXV0ZShlLHQscixpLG4sYSl7Zm9yKHZhciBzPTA7czxhO3MrKyl7aVtzXT10W2Vbc11dO25bc109cltlW3NdXX19O0ZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbiB0cmFuc2Zvcm0oZSx0LHIsaSxuLGEpe3RoaXMucGVybXV0ZShhLGUsdCxyLGksbik7Zm9yKHZhciBzPTE7czxuO3M8PD0xKXt2YXIgbz1zPDwxO3ZhciBoPU1hdGguY29zKDIqTWF0aC5QSS9vKTt2YXIgdT1NYXRoLnNpbigyKk1hdGguUEkvbyk7Zm9yKHZhciBkPTA7ZDxuO2QrPW8pe3ZhciBjPWg7dmFyIGw9dTtmb3IodmFyIHA9MDtwPHM7cCsrKXt2YXIgdj1yW2QrcF07dmFyIGI9aVtkK3BdO3ZhciBtPXJbZCtwK3NdO3ZhciB5PWlbZCtwK3NdO3ZhciBnPWMqbS1sKnk7eT1jKnkrbCptO209ZztyW2QrcF09dittO2lbZCtwXT1iK3k7cltkK3Arc109di1tO2lbZCtwK3NdPWIteTtpZihwIT09byl7Zz1oKmMtdSpsO2w9aCpsK3UqYztjPWd9fX19fTtGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbiBndWVzc0xlbjEzYihlLHQpe3ZhciByPU1hdGgubWF4KHQsZSl8MTt2YXIgaT1yJjE7dmFyIG49MDtmb3Iocj1yLzJ8MDtyO3I9cj4+PjEpe24rK31yZXR1cm4gMTw8bisxK2l9O0ZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbiBjb25qdWdhdGUoZSx0LHIpe2lmKHI8PTEpcmV0dXJuO2Zvcih2YXIgaT0wO2k8ci8yO2krKyl7dmFyIG49ZVtpXTtlW2ldPWVbci1pLTFdO2Vbci1pLTFdPW47bj10W2ldO3RbaV09LXRbci1pLTFdO3Rbci1pLTFdPS1ufX07RkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uIG5vcm1hbGl6ZTEzYihlLHQpe3ZhciByPTA7Zm9yKHZhciBpPTA7aTx0LzI7aSsrKXt2YXIgbj1NYXRoLnJvdW5kKGVbMippKzFdL3QpKjgxOTIrTWF0aC5yb3VuZChlWzIqaV0vdCkrcjtlW2ldPW4mNjcxMDg4NjM7aWYobjw2NzEwODg2NCl7cj0wfWVsc2V7cj1uLzY3MTA4ODY0fDB9fXJldHVybiBlfTtGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uIGNvbnZlcnQxM2IoZSx0LHIsaSl7dmFyIG49MDtmb3IodmFyIGE9MDthPHQ7YSsrKXtuPW4rKGVbYV18MCk7clsyKmFdPW4mODE5MTtuPW4+Pj4xMztyWzIqYSsxXT1uJjgxOTE7bj1uPj4+MTN9Zm9yKGE9Mip0O2E8aTsrK2Epe3JbYV09MH1hc3NlcnQobj09PTApO2Fzc2VydCgobiZ+ODE5MSk9PT0wKX07RkZUTS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbiBzdHViKGUpe3ZhciB0PW5ldyBBcnJheShlKTtmb3IodmFyIHI9MDtyPGU7cisrKXt0W3JdPTB9cmV0dXJuIHR9O0ZGVE0ucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24gbXVscChlLHQscil7dmFyIGk9Mip0aGlzLmd1ZXNzTGVuMTNiKGUubGVuZ3RoLHQubGVuZ3RoKTt2YXIgbj10aGlzLm1ha2VSQlQoaSk7dmFyIGE9dGhpcy5zdHViKGkpO3ZhciBzPW5ldyBBcnJheShpKTt2YXIgbz1uZXcgQXJyYXkoaSk7dmFyIGg9bmV3IEFycmF5KGkpO3ZhciB1PW5ldyBBcnJheShpKTt2YXIgZD1uZXcgQXJyYXkoaSk7dmFyIGM9bmV3IEFycmF5KGkpO3ZhciBsPXIud29yZHM7bC5sZW5ndGg9aTt0aGlzLmNvbnZlcnQxM2IoZS53b3JkcyxlLmxlbmd0aCxzLGkpO3RoaXMuY29udmVydDEzYih0LndvcmRzLHQubGVuZ3RoLHUsaSk7dGhpcy50cmFuc2Zvcm0ocyxhLG8saCxpLG4pO3RoaXMudHJhbnNmb3JtKHUsYSxkLGMsaSxuKTtmb3IodmFyIHA9MDtwPGk7cCsrKXt2YXIgdj1vW3BdKmRbcF0taFtwXSpjW3BdO2hbcF09b1twXSpjW3BdK2hbcF0qZFtwXTtvW3BdPXZ9dGhpcy5jb25qdWdhdGUobyxoLGkpO3RoaXMudHJhbnNmb3JtKG8saCxsLGEsaSxuKTt0aGlzLmNvbmp1Z2F0ZShsLGEsaSk7dGhpcy5ub3JtYWxpemUxM2IobCxpKTtyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZTtyLmxlbmd0aD1lLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gci5zdHJpcCgpfTtCTi5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChlKXt2YXIgdD1uZXcgQk4obnVsbCk7dC53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgrZS5sZW5ndGgpO3JldHVybiB0aGlzLm11bFRvKGUsdCl9O0JOLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uIG11bGYoZSl7dmFyIHQ9bmV3IEJOKG51bGwpO3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2UubGVuZ3RoKTtyZXR1cm4ganVtYm9NdWxUbyh0aGlzLGUsdCl9O0JOLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uIGltdWwoZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhlLHRoaXMpfTtCTi5wcm90b3R5cGUuaW11bG49ZnVuY3Rpb24gaW11bG4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7YXNzZXJ0KGU8NjcxMDg4NjQpO3ZhciB0PTA7Zm9yKHZhciByPTA7cjx0aGlzLmxlbmd0aDtyKyspe3ZhciBpPSh0aGlzLndvcmRzW3JdfDApKmU7dmFyIG49KGkmNjcxMDg4NjMpKyh0JjY3MTA4ODYzKTt0Pj49MjY7dCs9aS82NzEwODg2NHwwO3QrPW4+Pj4yNjt0aGlzLndvcmRzW3JdPW4mNjcxMDg4NjN9aWYodCE9PTApe3RoaXMud29yZHNbcl09dDt0aGlzLmxlbmd0aCsrfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUubXVsbj1mdW5jdGlvbiBtdWxuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4oZSl9O0JOLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24gc3FyKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfTtCTi5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbiBpc3FyKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfTtCTi5wcm90b3R5cGUucG93PWZ1bmN0aW9uIHBvdyhlKXt2YXIgdD10b0JpdEFycmF5KGUpO2lmKHQubGVuZ3RoPT09MClyZXR1cm4gbmV3IEJOKDEpO3ZhciByPXRoaXM7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKysscj1yLnNxcigpKXtpZih0W2ldIT09MClicmVha31pZigrK2k8dC5sZW5ndGgpe2Zvcih2YXIgbj1yLnNxcigpO2k8dC5sZW5ndGg7aSsrLG49bi5zcXIoKSl7aWYodFtpXT09PTApY29udGludWU7cj1yLm11bChuKX19cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24gaXVzaGxuKGUpe2Fzc2VydCh0eXBlb2YgZT09PVwibnVtYmVyXCImJmU+PTApO3ZhciB0PWUlMjY7dmFyIHI9KGUtdCkvMjY7dmFyIGk9NjcxMDg4NjM+Pj4yNi10PDwyNi10O3ZhciBuO2lmKHQhPT0wKXt2YXIgYT0wO2ZvcihuPTA7bjx0aGlzLmxlbmd0aDtuKyspe3ZhciBzPXRoaXMud29yZHNbbl0maTt2YXIgbz0odGhpcy53b3Jkc1tuXXwwKS1zPDx0O3RoaXMud29yZHNbbl09b3xhO2E9cz4+PjI2LXR9aWYoYSl7dGhpcy53b3Jkc1tuXT1hO3RoaXMubGVuZ3RoKyt9fWlmKHIhPT0wKXtmb3Iobj10aGlzLmxlbmd0aC0xO24+PTA7bi0tKXt0aGlzLndvcmRzW24rcl09dGhpcy53b3Jkc1tuXX1mb3Iobj0wO248cjtuKyspe3RoaXMud29yZHNbbl09MH10aGlzLmxlbmd0aCs9cn1yZXR1cm4gdGhpcy5zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24gaXNobG4oZSl7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wKTtyZXR1cm4gdGhpcy5pdXNobG4oZSl9O0JOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24gaXVzaHJuKGUsdCxyKXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgaTtpZih0KXtpPSh0LXQlMjYpLzI2fWVsc2V7aT0wfXZhciBuPWUlMjY7dmFyIGE9TWF0aC5taW4oKGUtbikvMjYsdGhpcy5sZW5ndGgpO3ZhciBzPTY3MTA4ODYzXjY3MTA4ODYzPj4+bjw8bjt2YXIgbz1yO2ktPWE7aT1NYXRoLm1heCgwLGkpO2lmKG8pe2Zvcih2YXIgaD0wO2g8YTtoKyspe28ud29yZHNbaF09dGhpcy53b3Jkc1toXX1vLmxlbmd0aD1hfWlmKGE9PT0wKXt9ZWxzZSBpZih0aGlzLmxlbmd0aD5hKXt0aGlzLmxlbmd0aC09YTtmb3IoaD0wO2g8dGhpcy5sZW5ndGg7aCsrKXt0aGlzLndvcmRzW2hdPXRoaXMud29yZHNbaCthXX19ZWxzZXt0aGlzLndvcmRzWzBdPTA7dGhpcy5sZW5ndGg9MX12YXIgdT0wO2ZvcihoPXRoaXMubGVuZ3RoLTE7aD49MCYmKHUhPT0wfHxoPj1pKTtoLS0pe3ZhciBkPXRoaXMud29yZHNbaF18MDt0aGlzLndvcmRzW2hdPXU8PDI2LW58ZD4+Pm47dT1kJnN9aWYobyYmdSE9PTApe28ud29yZHNbby5sZW5ndGgrK109dX1pZih0aGlzLmxlbmd0aD09PTApe3RoaXMud29yZHNbMF09MDt0aGlzLmxlbmd0aD0xfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbiBpc2hybihlLHQscil7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wKTtyZXR1cm4gdGhpcy5pdXNocm4oZSx0LHIpfTtCTi5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbiBzaGxuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4oZSl9O0JOLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbiB1c2hsbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihlKX07Qk4ucHJvdG90eXBlLnNocm49ZnVuY3Rpb24gc2hybihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGUpfTtCTi5wcm90b3R5cGUudXNocm49ZnVuY3Rpb24gdXNocm4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oZSl9O0JOLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbiB0ZXN0bihlKXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgdD1lJTI2O3ZhciByPShlLXQpLzI2O3ZhciBpPTE8PHQ7aWYodGhpcy5sZW5ndGg8PXIpcmV0dXJuIGZhbHNlO3ZhciBuPXRoaXMud29yZHNbcl07cmV0dXJuISEobiZpKX07Qk4ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbiBpbWFza24oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIiYmZT49MCk7dmFyIHQ9ZSUyNjt2YXIgcj0oZS10KS8yNjthc3NlcnQodGhpcy5uZWdhdGl2ZT09PTAsXCJpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnNcIik7aWYodGhpcy5sZW5ndGg8PXIpe3JldHVybiB0aGlzfWlmKHQhPT0wKXtyKyt9dGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCk7aWYodCE9PTApe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+dDw8dDt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbiBtYXNrbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihlKX07Qk4ucHJvdG90eXBlLmlhZGRuPWZ1bmN0aW9uIGlhZGRuKGUpe2Fzc2VydCh0eXBlb2YgZT09PVwibnVtYmVyXCIpO2Fzc2VydChlPDY3MTA4ODY0KTtpZihlPDApcmV0dXJuIHRoaXMuaXN1Ym4oLWUpO2lmKHRoaXMubmVnYXRpdmUhPT0wKXtpZih0aGlzLmxlbmd0aD09PTEmJih0aGlzLndvcmRzWzBdfDApPGUpe3RoaXMud29yZHNbMF09ZS0odGhpcy53b3Jkc1swXXwwKTt0aGlzLm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXN9dGhpcy5uZWdhdGl2ZT0wO3RoaXMuaXN1Ym4oZSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzfXJldHVybiB0aGlzLl9pYWRkbihlKX07Qk4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbiBfaWFkZG4oZSl7dGhpcy53b3Jkc1swXSs9ZTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3RdPj02NzEwODg2NDt0Kyspe3RoaXMud29yZHNbdF0tPTY3MTA4ODY0O2lmKHQ9PT10aGlzLmxlbmd0aC0xKXt0aGlzLndvcmRzW3QrMV09MX1lbHNle3RoaXMud29yZHNbdCsxXSsrfX10aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx0KzEpO3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24gaXN1Ym4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7YXNzZXJ0KGU8NjcxMDg4NjQpO2lmKGU8MClyZXR1cm4gdGhpcy5pYWRkbigtZSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGRuKGUpO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gdGhpc310aGlzLndvcmRzWzBdLT1lO2lmKHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXTwwKXt0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdO3RoaXMubmVnYXRpdmU9MX1lbHNle2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbdF08MDt0Kyspe3RoaXMud29yZHNbdF0rPTY3MTA4ODY0O3RoaXMud29yZHNbdCsxXS09MX19cmV0dXJuIHRoaXMuc3RyaXAoKX07Qk4ucHJvdG90eXBlLmFkZG49ZnVuY3Rpb24gYWRkbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGUpfTtCTi5wcm90b3R5cGUuc3Vibj1mdW5jdGlvbiBzdWJuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oZSl9O0JOLnByb3RvdHlwZS5pYWJzPWZ1bmN0aW9uIGlhYnMoKXt0aGlzLm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5hYnM9ZnVuY3Rpb24gYWJzKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9O0JOLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24gX2lzaGxuc3VibXVsKGUsdCxyKXt2YXIgaT1lLmxlbmd0aCtyO3ZhciBuO3RoaXMuX2V4cGFuZChpKTt2YXIgYTt2YXIgcz0wO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspe2E9KHRoaXMud29yZHNbbityXXwwKStzO3ZhciBvPShlLndvcmRzW25dfDApKnQ7YS09byY2NzEwODg2MztzPShhPj4yNiktKG8vNjcxMDg4NjR8MCk7dGhpcy53b3Jkc1tuK3JdPWEmNjcxMDg4NjN9Zm9yKDtuPHRoaXMubGVuZ3RoLXI7bisrKXthPSh0aGlzLndvcmRzW24rcl18MCkrcztzPWE+PjI2O3RoaXMud29yZHNbbityXT1hJjY3MTA4ODYzfWlmKHM9PT0wKXJldHVybiB0aGlzLnN0cmlwKCk7YXNzZXJ0KHM9PT0tMSk7cz0wO2ZvcihuPTA7bjx0aGlzLmxlbmd0aDtuKyspe2E9LSh0aGlzLndvcmRzW25dfDApK3M7cz1hPj4yNjt0aGlzLndvcmRzW25dPWEmNjcxMDg4NjN9dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbiBfd29yZERpdihlLHQpe3ZhciByPXRoaXMubGVuZ3RoLWUubGVuZ3RoO3ZhciBpPXRoaXMuY2xvbmUoKTt2YXIgbj1lO3ZhciBhPW4ud29yZHNbbi5sZW5ndGgtMV18MDt2YXIgcz10aGlzLl9jb3VudEJpdHMoYSk7cj0yNi1zO2lmKHIhPT0wKXtuPW4udXNobG4ocik7aS5pdXNobG4ocik7YT1uLndvcmRzW24ubGVuZ3RoLTFdfDB9dmFyIG89aS5sZW5ndGgtbi5sZW5ndGg7dmFyIGg7aWYodCE9PVwibW9kXCIpe2g9bmV3IEJOKG51bGwpO2gubGVuZ3RoPW8rMTtoLndvcmRzPW5ldyBBcnJheShoLmxlbmd0aCk7Zm9yKHZhciB1PTA7dTxoLmxlbmd0aDt1Kyspe2gud29yZHNbdV09MH19dmFyIGQ9aS5jbG9uZSgpLl9pc2hsbnN1Ym11bChuLDEsbyk7aWYoZC5uZWdhdGl2ZT09PTApe2k9ZDtpZihoKXtoLndvcmRzW29dPTF9fWZvcih2YXIgYz1vLTE7Yz49MDtjLS0pe3ZhciBsPShpLndvcmRzW24ubGVuZ3RoK2NdfDApKjY3MTA4ODY0KyhpLndvcmRzW24ubGVuZ3RoK2MtMV18MCk7bD1NYXRoLm1pbihsL2F8MCw2NzEwODg2Myk7aS5faXNobG5zdWJtdWwobixsLGMpO3doaWxlKGkubmVnYXRpdmUhPT0wKXtsLS07aS5uZWdhdGl2ZT0wO2kuX2lzaGxuc3VibXVsKG4sMSxjKTtpZighaS5pc1plcm8oKSl7aS5uZWdhdGl2ZV49MX19aWYoaCl7aC53b3Jkc1tjXT1sfX1pZihoKXtoLnN0cmlwKCl9aS5zdHJpcCgpO2lmKHQhPT1cImRpdlwiJiZyIT09MCl7aS5pdXNocm4ocil9cmV0dXJue2RpdjpofHxudWxsLG1vZDppfX07Qk4ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbiBkaXZtb2QoZSx0LHIpe2Fzc2VydCghZS5pc1plcm8oKSk7aWYodGhpcy5pc1plcm8oKSl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOm5ldyBCTigwKX19dmFyIGksbixhO2lmKHRoaXMubmVnYXRpdmUhPT0wJiZlLm5lZ2F0aXZlPT09MCl7YT10aGlzLm5lZygpLmRpdm1vZChlLHQpO2lmKHQhPT1cIm1vZFwiKXtpPWEuZGl2Lm5lZygpfWlmKHQhPT1cImRpdlwiKXtuPWEubW9kLm5lZygpO2lmKHImJm4ubmVnYXRpdmUhPT0wKXtuLmlhZGQoZSl9fXJldHVybntkaXY6aSxtb2Q6bn19aWYodGhpcy5uZWdhdGl2ZT09PTAmJmUubmVnYXRpdmUhPT0wKXthPXRoaXMuZGl2bW9kKGUubmVnKCksdCk7aWYodCE9PVwibW9kXCIpe2k9YS5kaXYubmVnKCl9cmV0dXJue2RpdjppLG1vZDphLm1vZH19aWYoKHRoaXMubmVnYXRpdmUmZS5uZWdhdGl2ZSkhPT0wKXthPXRoaXMubmVnKCkuZGl2bW9kKGUubmVnKCksdCk7aWYodCE9PVwiZGl2XCIpe249YS5tb2QubmVnKCk7aWYociYmbi5uZWdhdGl2ZSE9PTApe24uaXN1YihlKX19cmV0dXJue2RpdjphLmRpdixtb2Q6bn19aWYoZS5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKGUpPDApe3JldHVybntkaXY6bmV3IEJOKDApLG1vZDp0aGlzfX1pZihlLmxlbmd0aD09PTEpe2lmKHQ9PT1cImRpdlwiKXtyZXR1cm57ZGl2OnRoaXMuZGl2bihlLndvcmRzWzBdKSxtb2Q6bnVsbH19aWYodD09PVwibW9kXCIpe3JldHVybntkaXY6bnVsbCxtb2Q6bmV3IEJOKHRoaXMubW9kbihlLndvcmRzWzBdKSl9fXJldHVybntkaXY6dGhpcy5kaXZuKGUud29yZHNbMF0pLG1vZDpuZXcgQk4odGhpcy5tb2RuKGUud29yZHNbMF0pKX19cmV0dXJuIHRoaXMuX3dvcmREaXYoZSx0KX07Qk4ucHJvdG90eXBlLmRpdj1mdW5jdGlvbiBkaXYoZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsXCJkaXZcIixmYWxzZSkuZGl2fTtCTi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uIG1vZChlKXtyZXR1cm4gdGhpcy5kaXZtb2QoZSxcIm1vZFwiLGZhbHNlKS5tb2R9O0JOLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uIHVtb2QoZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsXCJtb2RcIix0cnVlKS5tb2R9O0JOLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbiBkaXZSb3VuZChlKXt2YXIgdD10aGlzLmRpdm1vZChlKTtpZih0Lm1vZC5pc1plcm8oKSlyZXR1cm4gdC5kaXY7dmFyIHI9dC5kaXYubmVnYXRpdmUhPT0wP3QubW9kLmlzdWIoZSk6dC5tb2Q7dmFyIGk9ZS51c2hybigxKTt2YXIgbj1lLmFuZGxuKDEpO3ZhciBhPXIuY21wKGkpO2lmKGE8MHx8bj09PTEmJmE9PT0wKXJldHVybiB0LmRpdjtyZXR1cm4gdC5kaXYubmVnYXRpdmUhPT0wP3QuZGl2LmlzdWJuKDEpOnQuZGl2LmlhZGRuKDEpfTtCTi5wcm90b3R5cGUubW9kbj1mdW5jdGlvbiBtb2RuKGUpe2Fzc2VydChlPD02NzEwODg2Myk7dmFyIHQ9KDE8PDI2KSVlO3ZhciByPTA7Zm9yKHZhciBpPXRoaXMubGVuZ3RoLTE7aT49MDtpLS0pe3I9KHQqcisodGhpcy53b3Jkc1tpXXwwKSklZX1yZXR1cm4gcn07Qk4ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uIGlkaXZuKGUpe2Fzc2VydChlPD02NzEwODg2Myk7dmFyIHQ9MDtmb3IodmFyIHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIGk9KHRoaXMud29yZHNbcl18MCkrdCo2NzEwODg2NDt0aGlzLndvcmRzW3JdPWkvZXwwO3Q9aSVlfXJldHVybiB0aGlzLnN0cmlwKCl9O0JOLnByb3RvdHlwZS5kaXZuPWZ1bmN0aW9uIGRpdm4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihlKX07Qk4ucHJvdG90eXBlLmVnY2Q9ZnVuY3Rpb24gZWdjZChlKXthc3NlcnQoZS5uZWdhdGl2ZT09PTApO2Fzc2VydCghZS5pc1plcm8oKSk7dmFyIHQ9dGhpczt2YXIgcj1lLmNsb25lKCk7aWYodC5uZWdhdGl2ZSE9PTApe3Q9dC51bW9kKGUpfWVsc2V7dD10LmNsb25lKCl9dmFyIGk9bmV3IEJOKDEpO3ZhciBuPW5ldyBCTigwKTt2YXIgYT1uZXcgQk4oMCk7dmFyIHM9bmV3IEJOKDEpO3ZhciBvPTA7d2hpbGUodC5pc0V2ZW4oKSYmci5pc0V2ZW4oKSl7dC5pdXNocm4oMSk7ci5pdXNocm4oMSk7KytvfXZhciBoPXIuY2xvbmUoKTt2YXIgdT10LmNsb25lKCk7d2hpbGUoIXQuaXNaZXJvKCkpe2Zvcih2YXIgZD0wLGM9MTsodC53b3Jkc1swXSZjKT09PTAmJmQ8MjY7KytkLGM8PD0xKTtpZihkPjApe3QuaXVzaHJuKGQpO3doaWxlKGQtLSA+MCl7aWYoaS5pc09kZCgpfHxuLmlzT2RkKCkpe2kuaWFkZChoKTtuLmlzdWIodSl9aS5pdXNocm4oMSk7bi5pdXNocm4oMSl9fWZvcih2YXIgbD0wLHA9MTsoci53b3Jkc1swXSZwKT09PTAmJmw8MjY7KytsLHA8PD0xKTtpZihsPjApe3IuaXVzaHJuKGwpO3doaWxlKGwtLSA+MCl7aWYoYS5pc09kZCgpfHxzLmlzT2RkKCkpe2EuaWFkZChoKTtzLmlzdWIodSl9YS5pdXNocm4oMSk7cy5pdXNocm4oMSl9fWlmKHQuY21wKHIpPj0wKXt0LmlzdWIocik7aS5pc3ViKGEpO24uaXN1YihzKX1lbHNle3IuaXN1Yih0KTthLmlzdWIoaSk7cy5pc3ViKG4pfX1yZXR1cm57YTphLGI6cyxnY2Q6ci5pdXNobG4obyl9fTtCTi5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uIF9pbnZtcChlKXthc3NlcnQoZS5uZWdhdGl2ZT09PTApO2Fzc2VydCghZS5pc1plcm8oKSk7dmFyIHQ9dGhpczt2YXIgcj1lLmNsb25lKCk7aWYodC5uZWdhdGl2ZSE9PTApe3Q9dC51bW9kKGUpfWVsc2V7dD10LmNsb25lKCl9dmFyIGk9bmV3IEJOKDEpO3ZhciBuPW5ldyBCTigwKTt2YXIgYT1yLmNsb25lKCk7d2hpbGUodC5jbXBuKDEpPjAmJnIuY21wbigxKT4wKXtmb3IodmFyIHM9MCxvPTE7KHQud29yZHNbMF0mbyk9PT0wJiZzPDI2OysrcyxvPDw9MSk7aWYocz4wKXt0Lml1c2hybihzKTt3aGlsZShzLS0gPjApe2lmKGkuaXNPZGQoKSl7aS5pYWRkKGEpfWkuaXVzaHJuKDEpfX1mb3IodmFyIGg9MCx1PTE7KHIud29yZHNbMF0mdSk9PT0wJiZoPDI2OysraCx1PDw9MSk7aWYoaD4wKXtyLml1c2hybihoKTt3aGlsZShoLS0gPjApe2lmKG4uaXNPZGQoKSl7bi5pYWRkKGEpfW4uaXVzaHJuKDEpfX1pZih0LmNtcChyKT49MCl7dC5pc3ViKHIpO2kuaXN1YihuKX1lbHNle3IuaXN1Yih0KTtuLmlzdWIoaSl9fXZhciBkO2lmKHQuY21wbigxKT09PTApe2Q9aX1lbHNle2Q9bn1pZihkLmNtcG4oMCk8MCl7ZC5pYWRkKGUpfXJldHVybiBkfTtCTi5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uIGdjZChlKXtpZih0aGlzLmlzWmVybygpKXJldHVybiBlLmFicygpO2lmKGUuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIHQ9dGhpcy5jbG9uZSgpO3ZhciByPWUuY2xvbmUoKTt0Lm5lZ2F0aXZlPTA7ci5uZWdhdGl2ZT0wO2Zvcih2YXIgaT0wO3QuaXNFdmVuKCkmJnIuaXNFdmVuKCk7aSsrKXt0Lml1c2hybigxKTtyLml1c2hybigxKX1kb3t3aGlsZSh0LmlzRXZlbigpKXt0Lml1c2hybigxKX13aGlsZShyLmlzRXZlbigpKXtyLml1c2hybigxKX12YXIgbj10LmNtcChyKTtpZihuPDApe3ZhciBhPXQ7dD1yO3I9YX1lbHNlIGlmKG49PT0wfHxyLmNtcG4oMSk9PT0wKXticmVha310LmlzdWIocil9d2hpbGUodHJ1ZSk7cmV0dXJuIHIuaXVzaGxuKGkpfTtCTi5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKGUpe3JldHVybiB0aGlzLmVnY2QoZSkuYS51bW9kKGUpfTtCTi5wcm90b3R5cGUuaXNFdmVuPWZ1bmN0aW9uIGlzRXZlbigpe3JldHVybih0aGlzLndvcmRzWzBdJjEpPT09MH07Qk4ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uIGlzT2RkKCl7cmV0dXJuKHRoaXMud29yZHNbMF0mMSk9PT0xfTtCTi5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24gYW5kbG4oZSl7cmV0dXJuIHRoaXMud29yZHNbMF0mZX07Qk4ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uIGJpbmNuKGUpe2Fzc2VydCh0eXBlb2YgZT09PVwibnVtYmVyXCIpO3ZhciB0PWUlMjY7dmFyIHI9KGUtdCkvMjY7dmFyIGk9MTw8dDtpZih0aGlzLmxlbmd0aDw9cil7dGhpcy5fZXhwYW5kKHIrMSk7dGhpcy53b3Jkc1tyXXw9aTtyZXR1cm4gdGhpc312YXIgbj1pO2Zvcih2YXIgYT1yO24hPT0wJiZhPHRoaXMubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy53b3Jkc1thXXwwO3MrPW47bj1zPj4+MjY7cyY9NjcxMDg4NjM7dGhpcy53b3Jkc1thXT1zfWlmKG4hPT0wKXt0aGlzLndvcmRzW2FdPW47dGhpcy5sZW5ndGgrK31yZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbiBpc1plcm8oKXtyZXR1cm4gdGhpcy5sZW5ndGg9PT0xJiZ0aGlzLndvcmRzWzBdPT09MH07Qk4ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24gY21wbihlKXt2YXIgdD1lPDA7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJiF0KXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZ0KXJldHVybiAxO3RoaXMuc3RyaXAoKTt2YXIgcjtpZih0aGlzLmxlbmd0aD4xKXtyPTF9ZWxzZXtpZih0KXtlPS1lfWFzc2VydChlPD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPXRoaXMud29yZHNbMF18MDtyPWk9PT1lPzA6aTxlPy0xOjF9aWYodGhpcy5uZWdhdGl2ZSE9PTApcmV0dXJuLXJ8MDtyZXR1cm4gcn07Qk4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbiBjbXAoZSl7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJmUubmVnYXRpdmU9PT0wKXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZlLm5lZ2F0aXZlIT09MClyZXR1cm4gMTt2YXIgdD10aGlzLnVjbXAoZSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApcmV0dXJuLXR8MDtyZXR1cm4gdH07Qk4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24gdWNtcChlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxlLmxlbmd0aClyZXR1cm4tMTt2YXIgdD0wO2Zvcih2YXIgcj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT10aGlzLndvcmRzW3JdfDA7dmFyIG49ZS53b3Jkc1tyXXwwO2lmKGk9PT1uKWNvbnRpbnVlO2lmKGk8bil7dD0tMX1lbHNlIGlmKGk+bil7dD0xfWJyZWFrfXJldHVybiB0fTtCTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uIGd0bihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPT09MX07Qk4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uIGd0KGUpe3JldHVybiB0aGlzLmNtcChlKT09PTF9O0JOLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uIGd0ZW4oZSl7cmV0dXJuIHRoaXMuY21wbihlKT49MH07Qk4ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbiBndGUoZSl7cmV0dXJuIHRoaXMuY21wKGUpPj0wfTtCTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uIGx0bihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPT09LTF9O0JOLnByb3RvdHlwZS5sdD1mdW5jdGlvbiBsdChlKXtyZXR1cm4gdGhpcy5jbXAoZSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24gbHRlbihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPD0wfTtCTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uIGx0ZShlKXtyZXR1cm4gdGhpcy5jbXAoZSk8PTB9O0JOLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24gZXFuKGUpe3JldHVybiB0aGlzLmNtcG4oZSk9PT0wfTtCTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEoZSl7cmV0dXJuIHRoaXMuY21wKGUpPT09MH07Qk4ucmVkPWZ1bmN0aW9uIHJlZChlKXtyZXR1cm4gbmV3IFJlZChlKX07Qk4ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uIHRvUmVkKGUpe2Fzc2VydCghdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpO3JldHVybiBlLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZSl9O0JOLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uIGZyb21SZWQoKXthc3NlcnQodGhpcy5yZWQsXCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO3JldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX07Qk4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbiBfZm9yY2VSZWQoZSl7dGhpcy5yZWQ9ZTtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uIGZvcmNlUmVkKGUpe2Fzc2VydCghdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO3JldHVybiB0aGlzLl9mb3JjZVJlZChlKX07Qk4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbiByZWRBZGQoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uIHJlZElBZGQoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7cmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcyxlKX07Qk4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbiByZWRTdWIoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uIHJlZElTdWIoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7cmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcyxlKX07Qk4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbiByZWRTaGwoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24gcmVkTXVsKGUpe2Fzc2VydCh0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxlKTtyZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uIHJlZElNdWwoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGUpO3JldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24gcmVkU3FyKCl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbiByZWRJU3FyKCl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uIHJlZFNxcnQoKXthc3NlcnQodGhpcy5yZWQsXCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKX07Qk4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24gcmVkSW52bSgpe2Fzc2VydCh0aGlzLnJlZCxcInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uIHJlZE5lZygpe2Fzc2VydCh0aGlzLnJlZCxcInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKX07Qk4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbiByZWRQb3coZSl7YXNzZXJ0KHRoaXMucmVkJiYhZS5yZWQsXCJyZWRQb3cobm9ybWFsTnVtKVwiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsZSl9O3ZhciBoPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gTVByaW1lKGUsdCl7dGhpcy5uYW1lPWU7dGhpcy5wPW5ldyBCTih0LDE2KTt0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpO3RoaXMuaz1uZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO3RoaXMudG1wPXRoaXMuX3RtcCgpfU1QcmltZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbiBfdG1wKCl7dmFyIGU9bmV3IEJOKG51bGwpO2Uud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKTtyZXR1cm4gZX07TVByaW1lLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uIGlyZWR1Y2UoZSl7dmFyIHQ9ZTt2YXIgcjtkb3t0aGlzLnNwbGl0KHQsdGhpcy50bXApO3Q9dGhpcy5pbXVsSyh0KTt0PXQuaWFkZCh0aGlzLnRtcCk7cj10LmJpdExlbmd0aCgpfXdoaWxlKHI+dGhpcy5uKTt2YXIgaT1yPHRoaXMubj8tMTp0LnVjbXAodGhpcy5wKTtpZihpPT09MCl7dC53b3Jkc1swXT0wO3QubGVuZ3RoPTF9ZWxzZSBpZihpPjApe3QuaXN1Yih0aGlzLnApfWVsc2V7aWYodC5zdHJpcCE9PXVuZGVmaW5lZCl7dC5zdHJpcCgpfWVsc2V7dC5fc3RyaXAoKX19cmV0dXJuIHR9O01QcmltZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24gc3BsaXQoZSx0KXtlLml1c2hybih0aGlzLm4sMCx0KX07TVByaW1lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbiBpbXVsSyhlKXtyZXR1cm4gZS5pbXVsKHRoaXMuayl9O2Z1bmN0aW9uIEsyNTYoKXtNUHJpbWUuY2FsbCh0aGlzLFwiazI1NlwiLFwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmZcIil9aW5oZXJpdHMoSzI1NixNUHJpbWUpO0syNTYucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uIHNwbGl0KGUsdCl7dmFyIHI9NDE5NDMwMzt2YXIgaT1NYXRoLm1pbihlLmxlbmd0aCw5KTtmb3IodmFyIG49MDtuPGk7bisrKXt0LndvcmRzW25dPWUud29yZHNbbl19dC5sZW5ndGg9aTtpZihlLmxlbmd0aDw9OSl7ZS53b3Jkc1swXT0wO2UubGVuZ3RoPTE7cmV0dXJufXZhciBhPWUud29yZHNbOV07dC53b3Jkc1t0Lmxlbmd0aCsrXT1hJnI7Zm9yKG49MTA7bjxlLmxlbmd0aDtuKyspe3ZhciBzPWUud29yZHNbbl18MDtlLndvcmRzW24tMTBdPShzJnIpPDw0fGE+Pj4yMjthPXN9YT4+Pj0yMjtlLndvcmRzW24tMTBdPWE7aWYoYT09PTAmJmUubGVuZ3RoPjEwKXtlLmxlbmd0aC09MTB9ZWxzZXtlLmxlbmd0aC09OX19O0syNTYucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uIGltdWxLKGUpe2Uud29yZHNbZS5sZW5ndGhdPTA7ZS53b3Jkc1tlLmxlbmd0aCsxXT0wO2UubGVuZ3RoKz0yO3ZhciB0PTA7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWUud29yZHNbcl18MDt0Kz1pKjk3NztlLndvcmRzW3JdPXQmNjcxMDg4NjM7dD1pKjY0Kyh0LzY3MTA4ODY0fDApfWlmKGUud29yZHNbZS5sZW5ndGgtMV09PT0wKXtlLmxlbmd0aC0tO2lmKGUud29yZHNbZS5sZW5ndGgtMV09PT0wKXtlLmxlbmd0aC0tfX1yZXR1cm4gZX07ZnVuY3Rpb24gUDIyNCgpe01QcmltZS5jYWxsKHRoaXMsXCJwMjI0XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiKX1pbmhlcml0cyhQMjI0LE1QcmltZSk7ZnVuY3Rpb24gUDE5Migpe01QcmltZS5jYWxsKHRoaXMsXCJwMTkyXCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiKX1pbmhlcml0cyhQMTkyLE1QcmltZSk7ZnVuY3Rpb24gUDI1NTE5KCl7TVByaW1lLmNhbGwodGhpcyxcIjI1NTE5XCIsXCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkXCIpfWluaGVyaXRzKFAyNTUxOSxNUHJpbWUpO1AyNTUxOS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsoZSl7dmFyIHQ9MDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9KGUud29yZHNbcl18MCkqMTkrdDt2YXIgbj1pJjY3MTA4ODYzO2k+Pj49MjY7ZS53b3Jkc1tyXT1uO3Q9aX1pZih0IT09MCl7ZS53b3Jkc1tlLmxlbmd0aCsrXT10fXJldHVybiBlfTtCTi5fcHJpbWU9ZnVuY3Rpb24gcHJpbWUoZSl7aWYoaFtlXSlyZXR1cm4gaFtlXTt2YXIgcHJpbWU7aWYoZT09PVwiazI1NlwiKXtwcmltZT1uZXcgSzI1Nn1lbHNlIGlmKGU9PT1cInAyMjRcIil7cHJpbWU9bmV3IFAyMjR9ZWxzZSBpZihlPT09XCJwMTkyXCIpe3ByaW1lPW5ldyBQMTkyfWVsc2UgaWYoZT09PVwicDI1NTE5XCIpe3ByaW1lPW5ldyBQMjU1MTl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHByaW1lIFwiK2UpfWhbZV09cHJpbWU7cmV0dXJuIHByaW1lfTtmdW5jdGlvbiBSZWQoZSl7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXt2YXIgdD1CTi5fcHJpbWUoZSk7dGhpcy5tPXQucDt0aGlzLnByaW1lPXR9ZWxzZXthc3NlcnQoZS5ndG4oMSksXCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDFcIik7dGhpcy5tPWU7dGhpcy5wcmltZT1udWxsfX1SZWQucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uIF92ZXJpZnkxKGUpe2Fzc2VydChlLm5lZ2F0aXZlPT09MCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpO2Fzc2VydChlLnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9O1JlZC5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24gX3ZlcmlmeTIoZSx0KXthc3NlcnQoKGUubmVnYXRpdmV8dC5uZWdhdGl2ZSk9PT0wLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIik7YXNzZXJ0KGUucmVkJiZlLnJlZD09PXQucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX07UmVkLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uIGltb2QoZSl7aWYodGhpcy5wcmltZSlyZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGUpLl9mb3JjZVJlZCh0aGlzKTtyZXR1cm4gZS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoZSl7aWYoZS5pc1plcm8oKSl7cmV0dXJuIGUuY2xvbmUoKX1yZXR1cm4gdGhpcy5tLnN1YihlKS5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIGFkZChlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmFkZCh0KTtpZihyLmNtcCh0aGlzLm0pPj0wKXtyLmlzdWIodGhpcy5tKX1yZXR1cm4gci5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbiBpYWRkKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3ZhciByPWUuaWFkZCh0KTtpZihyLmNtcCh0aGlzLm0pPj0wKXtyLmlzdWIodGhpcy5tKX1yZXR1cm4gcn07UmVkLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24gc3ViKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3ZhciByPWUuc3ViKHQpO2lmKHIuY21wbigwKTwwKXtyLmlhZGQodGhpcy5tKX1yZXR1cm4gci5fZm9yY2VSZWQodGhpcyl9O1JlZC5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbiBpc3ViKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3ZhciByPWUuaXN1Yih0KTtpZihyLmNtcG4oMCk8MCl7ci5pYWRkKHRoaXMubSl9cmV0dXJuIHJ9O1JlZC5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uIHNobChlLHQpe3RoaXMuX3ZlcmlmeTEoZSk7cmV0dXJuIHRoaXMuaW1vZChlLnVzaGxuKHQpKX07UmVkLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uIGltdWwoZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7cmV0dXJuIHRoaXMuaW1vZChlLmltdWwodCkpfTtSZWQucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7cmV0dXJuIHRoaXMuaW1vZChlLm11bCh0KSl9O1JlZC5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbiBpc3FyKGUpe3JldHVybiB0aGlzLmltdWwoZSxlLmNsb25lKCkpfTtSZWQucHJvdG90eXBlLnNxcj1mdW5jdGlvbiBzcXIoZSl7cmV0dXJuIHRoaXMubXVsKGUsZSl9O1JlZC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbiBzcXJ0KGUpe2lmKGUuaXNaZXJvKCkpcmV0dXJuIGUuY2xvbmUoKTt2YXIgdD10aGlzLm0uYW5kbG4oMyk7YXNzZXJ0KHQlMj09PTEpO2lmKHQ9PT0zKXt2YXIgcj10aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyhlLHIpfXZhciBpPXRoaXMubS5zdWJuKDEpO3ZhciBuPTA7d2hpbGUoIWkuaXNaZXJvKCkmJmkuYW5kbG4oMSk9PT0wKXtuKys7aS5pdXNocm4oMSl9YXNzZXJ0KCFpLmlzWmVybygpKTt2YXIgYT1uZXcgQk4oMSkudG9SZWQodGhpcyk7dmFyIHM9YS5yZWROZWcoKTt2YXIgbz10aGlzLm0uc3VibigxKS5pdXNocm4oMSk7dmFyIGg9dGhpcy5tLmJpdExlbmd0aCgpO2g9bmV3IEJOKDIqaCpoKS50b1JlZCh0aGlzKTt3aGlsZSh0aGlzLnBvdyhoLG8pLmNtcChzKSE9PTApe2gucmVkSUFkZChzKX12YXIgdT10aGlzLnBvdyhoLGkpO3ZhciBkPXRoaXMucG93KGUsaS5hZGRuKDEpLml1c2hybigxKSk7dmFyIGM9dGhpcy5wb3coZSxpKTt2YXIgbD1uO3doaWxlKGMuY21wKGEpIT09MCl7dmFyIHA9Yztmb3IodmFyIHY9MDtwLmNtcChhKSE9PTA7disrKXtwPXAucmVkU3FyKCl9YXNzZXJ0KHY8bCk7dmFyIGI9dGhpcy5wb3codSxuZXcgQk4oMSkuaXVzaGxuKGwtdi0xKSk7ZD1kLnJlZE11bChiKTt1PWIucmVkU3FyKCk7Yz1jLnJlZE11bCh1KTtsPXZ9cmV0dXJuIGR9O1JlZC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKGUpe3ZhciB0PWUuX2ludm1wKHRoaXMubSk7aWYodC5uZWdhdGl2ZSE9PTApe3QubmVnYXRpdmU9MDtyZXR1cm4gdGhpcy5pbW9kKHQpLnJlZE5lZygpfWVsc2V7cmV0dXJuIHRoaXMuaW1vZCh0KX19O1JlZC5wcm90b3R5cGUucG93PWZ1bmN0aW9uIHBvdyhlLHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtpZih0LmNtcG4oMSk9PT0wKXJldHVybiBlLmNsb25lKCk7dmFyIHI9NDt2YXIgaT1uZXcgQXJyYXkoMTw8cik7aVswXT1uZXcgQk4oMSkudG9SZWQodGhpcyk7aVsxXT1lO2Zvcih2YXIgbj0yO248aS5sZW5ndGg7bisrKXtpW25dPXRoaXMubXVsKGlbbi0xXSxlKX12YXIgYT1pWzBdO3ZhciBzPTA7dmFyIG89MDt2YXIgaD10LmJpdExlbmd0aCgpJTI2O2lmKGg9PT0wKXtoPTI2fWZvcihuPXQubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciB1PXQud29yZHNbbl07Zm9yKHZhciBkPWgtMTtkPj0wO2QtLSl7dmFyIGM9dT4+ZCYxO2lmKGEhPT1pWzBdKXthPXRoaXMuc3FyKGEpfWlmKGM9PT0wJiZzPT09MCl7bz0wO2NvbnRpbnVlfXM8PD0xO3N8PWM7bysrO2lmKG8hPT1yJiYobiE9PTB8fGQhPT0wKSljb250aW51ZTthPXRoaXMubXVsKGEsaVtzXSk7bz0wO3M9MH1oPTI2fXJldHVybiBhfTtSZWQucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbiBjb252ZXJ0VG8oZSl7dmFyIHQ9ZS51bW9kKHRoaXMubSk7cmV0dXJuIHQ9PT1lP3QuY2xvbmUoKTp0fTtSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uIGNvbnZlcnRGcm9tKGUpe3ZhciB0PWUuY2xvbmUoKTt0LnJlZD1udWxsO3JldHVybiB0fTtCTi5tb250PWZ1bmN0aW9uIG1vbnQoZSl7cmV0dXJuIG5ldyBNb250KGUpfTtmdW5jdGlvbiBNb250KGUpe1JlZC5jYWxsKHRoaXMsZSk7dGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCk7aWYodGhpcy5zaGlmdCUyNiE9PTApe3RoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjZ9dGhpcy5yPW5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7dGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKTt0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pO3RoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7dGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMucik7dGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX1pbmhlcml0cyhNb250LFJlZCk7TW9udC5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uIGNvbnZlcnRUbyhlKXtyZXR1cm4gdGhpcy5pbW9kKGUudXNobG4odGhpcy5zaGlmdCkpfTtNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbiBjb252ZXJ0RnJvbShlKXt2YXIgdD10aGlzLmltb2QoZS5tdWwodGhpcy5yaW52KSk7dC5yZWQ9bnVsbDtyZXR1cm4gdH07TW9udC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKGUsdCl7aWYoZS5pc1plcm8oKXx8dC5pc1plcm8oKSl7ZS53b3Jkc1swXT0wO2UubGVuZ3RoPTE7cmV0dXJuIGV9dmFyIHI9ZS5pbXVsKHQpO3ZhciBpPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO3ZhciBuPXIuaXN1YihpKS5pdXNocm4odGhpcy5zaGlmdCk7dmFyIGE9bjtpZihuLmNtcCh0aGlzLm0pPj0wKXthPW4uaXN1Yih0aGlzLm0pfWVsc2UgaWYobi5jbXBuKDApPDApe2E9bi5pYWRkKHRoaXMubSl9cmV0dXJuIGEuX2ZvcmNlUmVkKHRoaXMpfTtNb250LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGUsdCl7aWYoZS5pc1plcm8oKXx8dC5pc1plcm8oKSlyZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgcj1lLm11bCh0KTt2YXIgaT1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTt2YXIgbj1yLmlzdWIoaSkuaXVzaHJuKHRoaXMuc2hpZnQpO3ZhciBhPW47aWYobi5jbXAodGhpcy5tKT49MCl7YT1uLmlzdWIodGhpcy5tKX1lbHNlIGlmKG4uY21wbigwKTwwKXthPW4uaWFkZCh0aGlzLm0pfXJldHVybiBhLl9mb3JjZVJlZCh0aGlzKX07TW9udC5wcm90b3R5cGUuaW52bT1mdW5jdGlvbiBpbnZtKGUpe3ZhciB0PXRoaXMuaW1vZChlLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7cmV0dXJuIHQuX2ZvcmNlUmVkKHRoaXMpfX0pKGZhbHNlfHxlLHRoaXMpfSwxNjcwOmZ1bmN0aW9uKGUsdCxyKXtlPXIubm1kKGUpOyhmdW5jdGlvbihlLHQpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0fHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gaW5oZXJpdHMoZSx0KXtlLnN1cGVyXz10O3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPXQucHJvdG90eXBlO2UucHJvdG90eXBlPW5ldyBUZW1wQ3RvcjtlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIEJOKGUsdCxyKXtpZihCTi5pc0JOKGUpKXtyZXR1cm4gZX10aGlzLm5lZ2F0aXZlPTA7dGhpcy53b3Jkcz1udWxsO3RoaXMubGVuZ3RoPTA7dGhpcy5yZWQ9bnVsbDtpZihlIT09bnVsbCl7aWYodD09PVwibGVcInx8dD09PVwiYmVcIil7cj10O3Q9MTB9dGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fFwiYmVcIil9fWlmKHR5cGVvZiBlPT09XCJvYmplY3RcIil7ZS5leHBvcnRzPUJOfWVsc2V7dC5CTj1CTn1CTi5CTj1CTjtCTi53b3JkU2l6ZT0yNjt2YXIgaTt0cnl7aT1yKDQzMDApLkJ1ZmZlcn1jYXRjaChlKXt9Qk4uaXNCTj1mdW5jdGlvbiBpc0JOKGUpe2lmKGUgaW5zdGFuY2VvZiBCTil7cmV0dXJuIHRydWV9cmV0dXJuIGUhPT1udWxsJiZ0eXBlb2YgZT09PVwib2JqZWN0XCImJmUuY29uc3RydWN0b3Iud29yZFNpemU9PT1CTi53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX07Qk4ubWF4PWZ1bmN0aW9uIG1heChlLHQpe2lmKGUuY21wKHQpPjApcmV0dXJuIGU7cmV0dXJuIHR9O0JOLm1pbj1mdW5jdGlvbiBtaW4oZSx0KXtpZihlLmNtcCh0KTwwKXJldHVybiBlO3JldHVybiB0fTtCTi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChlLHQscil7aWYodHlwZW9mIGU9PT1cIm51bWJlclwiKXtyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscil9aWYodHlwZW9mIGU9PT1cIm9iamVjdFwiKXtyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKX1pZih0PT09XCJoZXhcIil7dD0xNn1hc3NlcnQodD09PSh0fDApJiZ0Pj0yJiZ0PD0zNik7ZT1lLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLFwiXCIpO3ZhciBpPTA7aWYoZVswXT09PVwiLVwiKXtpKyt9aWYodD09PTE2KXt0aGlzLl9wYXJzZUhleChlLGkpfWVsc2V7dGhpcy5fcGFyc2VCYXNlKGUsdCxpKX1pZihlWzBdPT09XCItXCIpe3RoaXMubmVnYXRpdmU9MX10aGlzLl9zdHJpcCgpO2lmKHIhPT1cImxlXCIpcmV0dXJuO3RoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSx0LHIpfTtCTi5wcm90b3R5cGUuX2luaXROdW1iZXI9ZnVuY3Rpb24gX2luaXROdW1iZXIoZSx0LHIpe2lmKGU8MCl7dGhpcy5uZWdhdGl2ZT0xO2U9LWV9aWYoZTw2NzEwODg2NCl7dGhpcy53b3Jkcz1bZSY2NzEwODg2M107dGhpcy5sZW5ndGg9MX1lbHNlIGlmKGU8NDUwMzU5OTYyNzM3MDQ5Nil7dGhpcy53b3Jkcz1bZSY2NzEwODg2MyxlLzY3MTA4ODY0JjY3MTA4ODYzXTt0aGlzLmxlbmd0aD0yfWVsc2V7YXNzZXJ0KGU8OTAwNzE5OTI1NDc0MDk5Mik7dGhpcy53b3Jkcz1bZSY2NzEwODg2MyxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdO3RoaXMubGVuZ3RoPTN9aWYociE9PVwibGVcIilyZXR1cm47dGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9O0JOLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uIF9pbml0QXJyYXkoZSx0LHIpe2Fzc2VydCh0eXBlb2YgZS5sZW5ndGg9PT1cIm51bWJlclwiKTtpZihlLmxlbmd0aDw9MCl7dGhpcy53b3Jkcz1bMF07dGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc310aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyk7dGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPTB9dmFyIG4sYTt2YXIgcz0wO2lmKHI9PT1cImJlXCIpe2ZvcihpPWUubGVuZ3RoLTEsbj0wO2k+PTA7aS09Myl7YT1lW2ldfGVbaS0xXTw8OHxlW2ktMl08PDE2O3RoaXMud29yZHNbbl18PWE8PHMmNjcxMDg4NjM7dGhpcy53b3Jkc1tuKzFdPWE+Pj4yNi1zJjY3MTA4ODYzO3MrPTI0O2lmKHM+PTI2KXtzLT0yNjtuKyt9fX1lbHNlIGlmKHI9PT1cImxlXCIpe2ZvcihpPTAsbj0wO2k8ZS5sZW5ndGg7aSs9Myl7YT1lW2ldfGVbaSsxXTw8OHxlW2krMl08PDE2O3RoaXMud29yZHNbbl18PWE8PHMmNjcxMDg4NjM7dGhpcy53b3Jkc1tuKzFdPWE+Pj4yNi1zJjY3MTA4ODYzO3MrPTI0O2lmKHM+PTI2KXtzLT0yNjtuKyt9fX1yZXR1cm4gdGhpcy5fc3RyaXAoKX07ZnVuY3Rpb24gcGFyc2VIZXgoZSx0LHIpe3ZhciBpPTA7dmFyIG49TWF0aC5taW4oZS5sZW5ndGgscik7dmFyIGE9MDtmb3IodmFyIHM9dDtzPG47cysrKXt2YXIgbz1lLmNoYXJDb2RlQXQocyktNDg7aTw8PTQ7dmFyIGg7aWYobz49NDkmJm88PTU0KXtoPW8tNDkrMTB9ZWxzZSBpZihvPj0xNyYmbzw9MjIpe2g9by0xNysxMH1lbHNle2g9b31pfD1oO2F8PWh9YXNzZXJ0KCEoYSYyNDApLFwiSW52YWxpZCBjaGFyYWN0ZXIgaW4gXCIrZSk7cmV0dXJuIGl9Qk4ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbiBfcGFyc2VIZXgoZSx0KXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKGUubGVuZ3RoLXQpLzYpO3RoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl7dGhpcy53b3Jkc1tyXT0wfXZhciBpLG47dmFyIGE9MDtmb3Iocj1lLmxlbmd0aC02LGk9MDtyPj10O3ItPTYpe249cGFyc2VIZXgoZSxyLHIrNik7dGhpcy53b3Jkc1tpXXw9bjw8YSY2NzEwODg2Mzt0aGlzLndvcmRzW2krMV18PW4+Pj4yNi1hJjQxOTQzMDM7YSs9MjQ7aWYoYT49MjYpe2EtPTI2O2krK319aWYocis2IT09dCl7bj1wYXJzZUhleChlLHQscis2KTt0aGlzLndvcmRzW2ldfD1uPDxhJjY3MTA4ODYzO3RoaXMud29yZHNbaSsxXXw9bj4+PjI2LWEmNDE5NDMwM310aGlzLl9zdHJpcCgpfTtmdW5jdGlvbiBwYXJzZUJhc2UoZSx0LHIsaSl7dmFyIG49MDt2YXIgYT0wO3ZhciBzPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbz10O288cztvKyspe3ZhciBoPWUuY2hhckNvZGVBdChvKS00ODtuKj1pO2lmKGg+PTQ5KXthPWgtNDkrMTB9ZWxzZSBpZihoPj0xNyl7YT1oLTE3KzEwfWVsc2V7YT1ofWFzc2VydChoPj0wJiZhPGksXCJJbnZhbGlkIGNoYXJhY3RlclwiKTtuKz1hfXJldHVybiBufUJOLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uIF9wYXJzZUJhc2UoZSx0LHIpe3RoaXMud29yZHM9WzBdO3RoaXMubGVuZ3RoPTE7Zm9yKHZhciBpPTAsbj0xO248PTY3MTA4ODYzO24qPXQpe2krK31pLS07bj1uL3R8MDt2YXIgYT1lLmxlbmd0aC1yO3ZhciBzPWElaTt2YXIgbz1NYXRoLm1pbihhLGEtcykrcjt2YXIgaD0wO2Zvcih2YXIgdT1yO3U8bzt1Kz1pKXtoPXBhcnNlQmFzZShlLHUsdStpLHQpO3RoaXMuaW11bG4obik7aWYodGhpcy53b3Jkc1swXStoPDY3MTA4ODY0KXt0aGlzLndvcmRzWzBdKz1ofWVsc2V7dGhpcy5faWFkZG4oaCl9fWlmKHMhPT0wKXt2YXIgZD0xO2g9cGFyc2VCYXNlKGUsdSxlLmxlbmd0aCx0KTtmb3IodT0wO3U8czt1Kyspe2QqPXR9dGhpcy5pbXVsbihkKTtpZih0aGlzLndvcmRzWzBdK2g8NjcxMDg4NjQpe3RoaXMud29yZHNbMF0rPWh9ZWxzZXt0aGlzLl9pYWRkbihoKX19fTtCTi5wcm90b3R5cGUuY29weT1mdW5jdGlvbiBjb3B5KGUpe2Uud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7ZS53b3Jkc1t0XT10aGlzLndvcmRzW3RdfWUubGVuZ3RoPXRoaXMubGVuZ3RoO2UubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZTtlLnJlZD10aGlzLnJlZH07ZnVuY3Rpb24gbW92ZShlLHQpe2Uud29yZHM9dC53b3JkcztlLmxlbmd0aD10Lmxlbmd0aDtlLm5lZ2F0aXZlPXQubmVnYXRpdmU7ZS5yZWQ9dC5yZWR9Qk4ucHJvdG90eXBlLl9tb3ZlPWZ1bmN0aW9uIF9tb3ZlKGUpe21vdmUoZSx0aGlzKX07Qk4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uIGNsb25lKCl7dmFyIGU9bmV3IEJOKG51bGwpO3RoaXMuY29weShlKTtyZXR1cm4gZX07Qk4ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24gX2V4cGFuZChlKXt3aGlsZSh0aGlzLmxlbmd0aDxlKXt0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTB9cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5fc3RyaXA9ZnVuY3Rpb24gc3RyaXAoKXt3aGlsZSh0aGlzLmxlbmd0aD4xJiZ0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdPT09MCl7dGhpcy5sZW5ndGgtLX1yZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX07Qk4ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbiBfbm9ybVNpZ24oKXtpZih0aGlzLmxlbmd0aD09PTEmJnRoaXMud29yZHNbMF09PT0wKXt0aGlzLm5lZ2F0aXZlPTB9cmV0dXJuIHRoaXN9O2lmKHR5cGVvZiBTeW1ib2whPT1cInVuZGVmaW5lZFwiJiZ0eXBlb2YgU3ltYm9sLmZvcj09PVwiZnVuY3Rpb25cIil7Qk4ucHJvdG90eXBlW1N5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKV09aW5zcGVjdH1lbHNle0JOLnByb3RvdHlwZS5pbnNwZWN0PWluc3BlY3R9ZnVuY3Rpb24gaW5zcGVjdCgpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifXZhciBuPVtcIlwiLFwiMFwiLFwiMDBcIixcIjAwMFwiLFwiMDAwMFwiLFwiMDAwMDBcIixcIjAwMDAwMFwiLFwiMDAwMDAwMFwiLFwiMDAwMDAwMDBcIixcIjAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiXTt2YXIgYT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XTt2YXIgcz1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtCTi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24gdG9TdHJpbmcoZSx0KXtlPWV8fDEwO3Q9dHwwfHwxO3ZhciByO2lmKGU9PT0xNnx8ZT09PVwiaGV4XCIpe3I9XCJcIjt2YXIgaT0wO3ZhciBvPTA7Zm9yKHZhciBoPTA7aDx0aGlzLmxlbmd0aDtoKyspe3ZhciB1PXRoaXMud29yZHNbaF07dmFyIGQ9KCh1PDxpfG8pJjE2Nzc3MjE1KS50b1N0cmluZygxNik7bz11Pj4+MjQtaSYxNjc3NzIxNTtpZihvIT09MHx8aCE9PXRoaXMubGVuZ3RoLTEpe3I9bls2LWQubGVuZ3RoXStkK3J9ZWxzZXtyPWQrcn1pKz0yO2lmKGk+PTI2KXtpLT0yNjtoLS19fWlmKG8hPT0wKXtyPW8udG9TdHJpbmcoMTYpK3J9d2hpbGUoci5sZW5ndGgldCE9PTApe3I9XCIwXCIrcn1pZih0aGlzLm5lZ2F0aXZlIT09MCl7cj1cIi1cIityfXJldHVybiByfWlmKGU9PT0oZXwwKSYmZT49MiYmZTw9MzYpe3ZhciBjPWFbZV07dmFyIGw9c1tlXTtyPVwiXCI7dmFyIHA9dGhpcy5jbG9uZSgpO3AubmVnYXRpdmU9MDt3aGlsZSghcC5pc1plcm8oKSl7dmFyIHY9cC5tb2RybihsKS50b1N0cmluZyhlKTtwPXAuaWRpdm4obCk7aWYoIXAuaXNaZXJvKCkpe3I9bltjLXYubGVuZ3RoXSt2K3J9ZWxzZXtyPXYrcn19aWYodGhpcy5pc1plcm8oKSl7cj1cIjBcIityfXdoaWxlKHIubGVuZ3RoJXQhPT0wKXtyPVwiMFwiK3J9aWYodGhpcy5uZWdhdGl2ZSE9PTApe3I9XCItXCIrcn1yZXR1cm4gcn1hc3NlcnQoZmFsc2UsXCJCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2XCIpfTtCTi5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24gdG9OdW1iZXIoKXt2YXIgZT10aGlzLndvcmRzWzBdO2lmKHRoaXMubGVuZ3RoPT09Mil7ZSs9dGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPT09MyYmdGhpcy53b3Jkc1syXT09PTEpe2UrPTQ1MDM1OTk2MjczNzA0OTYrdGhpcy53b3Jkc1sxXSo2NzEwODg2NH1lbHNlIGlmKHRoaXMubGVuZ3RoPjIpe2Fzc2VydChmYWxzZSxcIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0c1wiKX1yZXR1cm4gdGhpcy5uZWdhdGl2ZSE9PTA/LWU6ZX07Qk4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNiwyKX07aWYoaSl7Qk4ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uIHRvQnVmZmVyKGUsdCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoaSxlLHQpfX1CTi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbiB0b0FycmF5KGUsdCl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksZSx0KX07dmFyIG89ZnVuY3Rpb24gYWxsb2NhdGUoZSx0KXtpZihlLmFsbG9jVW5zYWZlKXtyZXR1cm4gZS5hbGxvY1Vuc2FmZSh0KX1yZXR1cm4gbmV3IGUodCl9O0JOLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbiB0b0FycmF5TGlrZShlLHQscil7dGhpcy5fc3RyaXAoKTt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKTt2YXIgbj1yfHxNYXRoLm1heCgxLGkpO2Fzc2VydChpPD1uLFwiYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aFwiKTthc3NlcnQobj4wLFwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwXCIpO3ZhciBhPW8oZSxuKTt2YXIgcz10PT09XCJsZVwiP1wiTEVcIjpcIkJFXCI7dGhpc1tcIl90b0FycmF5TGlrZVwiK3NdKGEsaSk7cmV0dXJuIGF9O0JOLnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRT1mdW5jdGlvbiBfdG9BcnJheUxpa2VMRShlLHQpe3ZhciByPTA7dmFyIGk9MDtmb3IodmFyIG49MCxhPTA7bjx0aGlzLmxlbmd0aDtuKyspe3ZhciBzPXRoaXMud29yZHNbbl08PGF8aTtlW3IrK109cyYyNTU7aWYocjxlLmxlbmd0aCl7ZVtyKytdPXM+PjgmMjU1fWlmKHI8ZS5sZW5ndGgpe2VbcisrXT1zPj4xNiYyNTV9aWYoYT09PTYpe2lmKHI8ZS5sZW5ndGgpe2VbcisrXT1zPj4yNCYyNTV9aT0wO2E9MH1lbHNle2k9cz4+PjI0O2ErPTJ9fWlmKHI8ZS5sZW5ndGgpe2VbcisrXT1pO3doaWxlKHI8ZS5sZW5ndGgpe2VbcisrXT0wfX19O0JOLnByb3RvdHlwZS5fdG9BcnJheUxpa2VCRT1mdW5jdGlvbiBfdG9BcnJheUxpa2VCRShlLHQpe3ZhciByPWUubGVuZ3RoLTE7dmFyIGk9MDtmb3IodmFyIG49MCxhPTA7bjx0aGlzLmxlbmd0aDtuKyspe3ZhciBzPXRoaXMud29yZHNbbl08PGF8aTtlW3ItLV09cyYyNTU7aWYocj49MCl7ZVtyLS1dPXM+PjgmMjU1fWlmKHI+PTApe2Vbci0tXT1zPj4xNiYyNTV9aWYoYT09PTYpe2lmKHI+PTApe2Vbci0tXT1zPj4yNCYyNTV9aT0wO2E9MH1lbHNle2k9cz4+PjI0O2ErPTJ9fWlmKHI+PTApe2Vbci0tXT1pO3doaWxlKHI+PTApe2Vbci0tXT0wfX19O2lmKE1hdGguY2x6MzIpe0JOLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uIF9jb3VudEJpdHMoZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9fWVsc2V7Qk4ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24gX2NvdW50Qml0cyhlKXt2YXIgdD1lO3ZhciByPTA7aWYodD49NDA5Nil7cis9MTM7dD4+Pj0xM31pZih0Pj02NCl7cis9Nzt0Pj4+PTd9aWYodD49OCl7cis9NDt0Pj4+PTR9aWYodD49Mil7cis9Mjt0Pj4+PTJ9cmV0dXJuIHIrdH19Qk4ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbiBfemVyb0JpdHMoZSl7aWYoZT09PTApcmV0dXJuIDI2O3ZhciB0PWU7dmFyIHI9MDtpZigodCY4MTkxKT09PTApe3IrPTEzO3Q+Pj49MTN9aWYoKHQmMTI3KT09PTApe3IrPTc7dD4+Pj03fWlmKCh0JjE1KT09PTApe3IrPTQ7dD4+Pj00fWlmKCh0JjMpPT09MCl7cis9Mjt0Pj4+PTJ9aWYoKHQmMSk9PT0wKXtyKyt9cmV0dXJuIHJ9O0JOLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24gYml0TGVuZ3RoKCl7dmFyIGU9dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTt2YXIgdD10aGlzLl9jb3VudEJpdHMoZSk7cmV0dXJuKHRoaXMubGVuZ3RoLTEpKjI2K3R9O2Z1bmN0aW9uIHRvQml0QXJyYXkoZSl7dmFyIHQ9bmV3IEFycmF5KGUuYml0TGVuZ3RoKCkpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT1yLzI2fDA7dmFyIG49ciUyNjt0W3JdPWUud29yZHNbaV0+Pj5uJjF9cmV0dXJuIHR9Qk4ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uIHplcm9CaXRzKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDt2YXIgZT0wO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKXt2YXIgcj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW3RdKTtlKz1yO2lmKHIhPT0yNilicmVha31yZXR1cm4gZX07Qk4ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24gYnl0ZUxlbmd0aCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX07Qk4ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbiB0b1R3b3MoZSl7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3JldHVybiB0aGlzLmFicygpLmlub3RuKGUpLmlhZGRuKDEpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbiBmcm9tVHdvcyhlKXtpZih0aGlzLnRlc3RuKGUtMSkpe3JldHVybiB0aGlzLm5vdG4oZSkuaWFkZG4oMSkuaW5lZygpfXJldHVybiB0aGlzLmNsb25lKCl9O0JOLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbiBpc05lZygpe3JldHVybiB0aGlzLm5lZ2F0aXZlIT09MH07Qk4ucHJvdG90eXBlLm5lZz1mdW5jdGlvbiBuZWcoKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX07Qk4ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24gaW5lZygpe2lmKCF0aGlzLmlzWmVybygpKXt0aGlzLm5lZ2F0aXZlXj0xfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbiBpdW9yKGUpe3doaWxlKHRoaXMubGVuZ3RoPGUubGVuZ3RoKXt0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTB9Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3RoaXMud29yZHNbdF09dGhpcy53b3Jkc1t0XXxlLndvcmRzW3RdfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uIGlvcihlKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8ZS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdW9yKGUpfTtCTi5wcm90b3R5cGUub3I9ZnVuY3Rpb24gb3IoZSl7aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IoZSk7cmV0dXJuIGUuY2xvbmUoKS5pb3IodGhpcyl9O0JOLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24gdW9yKGUpe2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXVvcihlKTtyZXR1cm4gZS5jbG9uZSgpLml1b3IodGhpcyl9O0JOLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbiBpdWFuZChlKXt2YXIgdDtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aCl7dD1lfWVsc2V7dD10aGlzfWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mZS53b3Jkc1tyXX10aGlzLmxlbmd0aD10Lmxlbmd0aDtyZXR1cm4gdGhpcy5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24gaWFuZChlKXthc3NlcnQoKHRoaXMubmVnYXRpdmV8ZS5uZWdhdGl2ZSk9PT0wKTtyZXR1cm4gdGhpcy5pdWFuZChlKX07Qk4ucHJvdG90eXBlLmFuZD1mdW5jdGlvbiBhbmQoZSl7aWYodGhpcy5sZW5ndGg+ZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKGUpO3JldHVybiBlLmNsb25lKCkuaWFuZCh0aGlzKX07Qk4ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24gdWFuZChlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKGUpO3JldHVybiBlLmNsb25lKCkuaXVhbmQodGhpcyl9O0JOLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbiBpdXhvcihlKXt2YXIgdDt2YXIgcjtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aCl7dD10aGlzO3I9ZX1lbHNle3Q9ZTtyPXRoaXN9Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3RoaXMud29yZHNbaV09dC53b3Jkc1tpXV5yLndvcmRzW2ldfWlmKHRoaXMhPT10KXtmb3IoO2k8dC5sZW5ndGg7aSsrKXt0aGlzLndvcmRzW2ldPXQud29yZHNbaV19fXRoaXMubGVuZ3RoPXQubGVuZ3RoO3JldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbiBpeG9yKGUpe2Fzc2VydCgodGhpcy5uZWdhdGl2ZXxlLm5lZ2F0aXZlKT09PTApO3JldHVybiB0aGlzLml1eG9yKGUpfTtCTi5wcm90b3R5cGUueG9yPWZ1bmN0aW9uIHhvcihlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IoZSk7cmV0dXJuIGUuY2xvbmUoKS5peG9yKHRoaXMpfTtCTi5wcm90b3R5cGUudXhvcj1mdW5jdGlvbiB1eG9yKGUpe2lmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IoZSk7cmV0dXJuIGUuY2xvbmUoKS5pdXhvcih0aGlzKX07Qk4ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uIGlub3RuKGUpe2Fzc2VydCh0eXBlb2YgZT09PVwibnVtYmVyXCImJmU+PTApO3ZhciB0PU1hdGguY2VpbChlLzI2KXwwO3ZhciByPWUlMjY7dGhpcy5fZXhwYW5kKHQpO2lmKHI+MCl7dC0tfWZvcih2YXIgaT0wO2k8dDtpKyspe3RoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjN9aWYocj4wKXt0aGlzLndvcmRzW2ldPX50aGlzLndvcmRzW2ldJjY3MTA4ODYzPj4yNi1yfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUubm90bj1mdW5jdGlvbiBub3RuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4oZSl9O0JOLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uIHNldG4oZSx0KXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgcj1lLzI2fDA7dmFyIGk9ZSUyNjt0aGlzLl9leHBhbmQocisxKTtpZih0KXt0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl18MTw8aX1lbHNle3RoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZ+KDE8PGkpfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbiBpYWRkKGUpe3ZhciB0O2lmKHRoaXMubmVnYXRpdmUhPT0wJiZlLm5lZ2F0aXZlPT09MCl7dGhpcy5uZWdhdGl2ZT0wO3Q9dGhpcy5pc3ViKGUpO3RoaXMubmVnYXRpdmVePTE7cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9ZWxzZSBpZih0aGlzLm5lZ2F0aXZlPT09MCYmZS5uZWdhdGl2ZSE9PTApe2UubmVnYXRpdmU9MDt0PXRoaXMuaXN1YihlKTtlLm5lZ2F0aXZlPTE7cmV0dXJuIHQuX25vcm1TaWduKCl9dmFyIHIsaTtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aCl7cj10aGlzO2k9ZX1lbHNle3I9ZTtpPXRoaXN9dmFyIG49MDtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7dD0oci53b3Jkc1thXXwwKSsoaS53b3Jkc1thXXwwKStuO3RoaXMud29yZHNbYV09dCY2NzEwODg2MztuPXQ+Pj4yNn1mb3IoO24hPT0wJiZhPHIubGVuZ3RoO2ErKyl7dD0oci53b3Jkc1thXXwwKStuO3RoaXMud29yZHNbYV09dCY2NzEwODg2MztuPXQ+Pj4yNn10aGlzLmxlbmd0aD1yLmxlbmd0aDtpZihuIT09MCl7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09bjt0aGlzLmxlbmd0aCsrfWVsc2UgaWYociE9PXRoaXMpe2Zvcig7YTxyLmxlbmd0aDthKyspe3RoaXMud29yZHNbYV09ci53b3Jkc1thXX19cmV0dXJuIHRoaXN9O0JOLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKGUpe3ZhciB0O2lmKGUubmVnYXRpdmUhPT0wJiZ0aGlzLm5lZ2F0aXZlPT09MCl7ZS5uZWdhdGl2ZT0wO3Q9dGhpcy5zdWIoZSk7ZS5uZWdhdGl2ZV49MTtyZXR1cm4gdH1lbHNlIGlmKGUubmVnYXRpdmU9PT0wJiZ0aGlzLm5lZ2F0aXZlIT09MCl7dGhpcy5uZWdhdGl2ZT0wO3Q9ZS5zdWIodGhpcyk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0fWlmKHRoaXMubGVuZ3RoPmUubGVuZ3RoKXJldHVybiB0aGlzLmNsb25lKCkuaWFkZChlKTtyZXR1cm4gZS5jbG9uZSgpLmlhZGQodGhpcyl9O0JOLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uIGlzdWIoZSl7aWYoZS5uZWdhdGl2ZSE9PTApe2UubmVnYXRpdmU9MDt2YXIgdD10aGlzLmlhZGQoZSk7ZS5uZWdhdGl2ZT0xO3JldHVybiB0Ll9ub3JtU2lnbigpfWVsc2UgaWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGQoZSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfXZhciByPXRoaXMuY21wKGUpO2lmKHI9PT0wKXt0aGlzLm5lZ2F0aXZlPTA7dGhpcy5sZW5ndGg9MTt0aGlzLndvcmRzWzBdPTA7cmV0dXJuIHRoaXN9dmFyIGksbjtpZihyPjApe2k9dGhpcztuPWV9ZWxzZXtpPWU7bj10aGlzfXZhciBhPTA7Zm9yKHZhciBzPTA7czxuLmxlbmd0aDtzKyspe3Q9KGkud29yZHNbc118MCktKG4ud29yZHNbc118MCkrYTthPXQ+PjI2O3RoaXMud29yZHNbc109dCY2NzEwODg2M31mb3IoO2EhPT0wJiZzPGkubGVuZ3RoO3MrKyl7dD0oaS53b3Jkc1tzXXwwKSthO2E9dD4+MjY7dGhpcy53b3Jkc1tzXT10JjY3MTA4ODYzfWlmKGE9PT0wJiZzPGkubGVuZ3RoJiZpIT09dGhpcyl7Zm9yKDtzPGkubGVuZ3RoO3MrKyl7dGhpcy53b3Jkc1tzXT1pLndvcmRzW3NdfX10aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxzKTtpZihpIT09dGhpcyl7dGhpcy5uZWdhdGl2ZT0xfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHN1YihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZSl9O2Z1bmN0aW9uIHNtYWxsTXVsVG8oZSx0LHIpe3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlO3ZhciBpPWUubGVuZ3RoK3QubGVuZ3RofDA7ci5sZW5ndGg9aTtpPWktMXwwO3ZhciBuPWUud29yZHNbMF18MDt2YXIgYT10LndvcmRzWzBdfDA7dmFyIHM9biphO3ZhciBvPXMmNjcxMDg4NjM7dmFyIGg9cy82NzEwODg2NHwwO3Iud29yZHNbMF09bztmb3IodmFyIHU9MTt1PGk7dSsrKXt2YXIgZD1oPj4+MjY7dmFyIGM9aCY2NzEwODg2Mzt2YXIgbD1NYXRoLm1pbih1LHQubGVuZ3RoLTEpO2Zvcih2YXIgcD1NYXRoLm1heCgwLHUtZS5sZW5ndGgrMSk7cDw9bDtwKyspe3ZhciB2PXUtcHwwO249ZS53b3Jkc1t2XXwwO2E9dC53b3Jkc1twXXwwO3M9biphK2M7ZCs9cy82NzEwODg2NHwwO2M9cyY2NzEwODg2M31yLndvcmRzW3VdPWN8MDtoPWR8MH1pZihoIT09MCl7ci53b3Jkc1t1XT1ofDB9ZWxzZXtyLmxlbmd0aC0tfXJldHVybiByLl9zdHJpcCgpfXZhciBoPWZ1bmN0aW9uIGNvbWIxME11bFRvKGUsdCxyKXt2YXIgaT1lLndvcmRzO3ZhciBuPXQud29yZHM7dmFyIGE9ci53b3Jkczt2YXIgcz0wO3ZhciBvO3ZhciBoO3ZhciB1O3ZhciBkPWlbMF18MDt2YXIgYz1kJjgxOTE7dmFyIGw9ZD4+PjEzO3ZhciBwPWlbMV18MDt2YXIgdj1wJjgxOTE7dmFyIGI9cD4+PjEzO3ZhciBtPWlbMl18MDt2YXIgeT1tJjgxOTE7dmFyIGc9bT4+PjEzO3ZhciBfPWlbM118MDt2YXIgdz1fJjgxOTE7dmFyIE09Xz4+PjEzO3ZhciBCPWlbNF18MDt2YXIgRT1CJjgxOTE7dmFyIGs9Qj4+PjEzO3ZhciBBPWlbNV18MDt2YXIgTj1BJjgxOTE7dmFyIFA9QT4+PjEzO3ZhciB4PWlbNl18MDt2YXIgST14JjgxOTE7dmFyIEM9eD4+PjEzO3ZhciBEPWlbN118MDt2YXIgVD1EJjgxOTE7dmFyIGo9RD4+PjEzO3ZhciBxPWlbOF18MDt2YXIgTz1xJjgxOTE7dmFyIEg9cT4+PjEzO3ZhciBMPWlbOV18MDt2YXIgej1MJjgxOTE7dmFyIEY9TD4+PjEzO3ZhciBVPW5bMF18MDt2YXIgVz1VJjgxOTE7dmFyIFY9VT4+PjEzO3ZhciBHPW5bMV18MDt2YXIgSj1HJjgxOTE7dmFyIFo9Rz4+PjEzO3ZhciBYPW5bMl18MDt2YXIgWT1YJjgxOTE7dmFyICQ9WD4+PjEzO3ZhciBRPW5bM118MDt2YXIgZWU9USY4MTkxO3ZhciB0ZT1RPj4+MTM7dmFyIHJlPW5bNF18MDt2YXIgaWU9cmUmODE5MTt2YXIgbmU9cmU+Pj4xMzt2YXIgYWU9bls1XXwwO3ZhciBmZT1hZSY4MTkxO3ZhciBzZT1hZT4+PjEzO3ZhciBvZT1uWzZdfDA7dmFyIGhlPW9lJjgxOTE7dmFyIHVlPW9lPj4+MTM7dmFyIGRlPW5bN118MDt2YXIgY2U9ZGUmODE5MTt2YXIgbGU9ZGU+Pj4xMzt2YXIgcGU9bls4XXwwO3ZhciB2ZT1wZSY4MTkxO3ZhciBiZT1wZT4+PjEzO3ZhciBtZT1uWzldfDA7dmFyIHllPW1lJjgxOTE7dmFyIGdlPW1lPj4+MTM7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7ci5sZW5ndGg9MTk7bz1NYXRoLmltdWwoYyxXKTtoPU1hdGguaW11bChjLFYpO2g9aCtNYXRoLmltdWwobCxXKXwwO3U9TWF0aC5pbXVsKGwsVik7dmFyIF9lPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhfZT4+PjI2KXwwO19lJj02NzEwODg2MztvPU1hdGguaW11bCh2LFcpO2g9TWF0aC5pbXVsKHYsVik7aD1oK01hdGguaW11bChiLFcpfDA7dT1NYXRoLmltdWwoYixWKTtvPW8rTWF0aC5pbXVsKGMsSil8MDtoPWgrTWF0aC5pbXVsKGMsWil8MDtoPWgrTWF0aC5pbXVsKGwsSil8MDt1PXUrTWF0aC5pbXVsKGwsWil8MDt2YXIgd2U9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKHdlPj4+MjYpfDA7d2UmPTY3MTA4ODYzO289TWF0aC5pbXVsKHksVyk7aD1NYXRoLmltdWwoeSxWKTtoPWgrTWF0aC5pbXVsKGcsVyl8MDt1PU1hdGguaW11bChnLFYpO289bytNYXRoLmltdWwodixKKXwwO2g9aCtNYXRoLmltdWwodixaKXwwO2g9aCtNYXRoLmltdWwoYixKKXwwO3U9dStNYXRoLmltdWwoYixaKXwwO289bytNYXRoLmltdWwoYyxZKXwwO2g9aCtNYXRoLmltdWwoYywkKXwwO2g9aCtNYXRoLmltdWwobCxZKXwwO3U9dStNYXRoLmltdWwobCwkKXwwO3ZhciBNZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoTWU+Pj4yNil8MDtNZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwodyxXKTtoPU1hdGguaW11bCh3LFYpO2g9aCtNYXRoLmltdWwoTSxXKXwwO3U9TWF0aC5pbXVsKE0sVik7bz1vK01hdGguaW11bCh5LEopfDA7aD1oK01hdGguaW11bCh5LFopfDA7aD1oK01hdGguaW11bChnLEopfDA7dT11K01hdGguaW11bChnLFopfDA7bz1vK01hdGguaW11bCh2LFkpfDA7aD1oK01hdGguaW11bCh2LCQpfDA7aD1oK01hdGguaW11bChiLFkpfDA7dT11K01hdGguaW11bChiLCQpfDA7bz1vK01hdGguaW11bChjLGVlKXwwO2g9aCtNYXRoLmltdWwoYyx0ZSl8MDtoPWgrTWF0aC5pbXVsKGwsZWUpfDA7dT11K01hdGguaW11bChsLHRlKXwwO3ZhciBTZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoU2U+Pj4yNil8MDtTZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoRSxXKTtoPU1hdGguaW11bChFLFYpO2g9aCtNYXRoLmltdWwoayxXKXwwO3U9TWF0aC5pbXVsKGssVik7bz1vK01hdGguaW11bCh3LEopfDA7aD1oK01hdGguaW11bCh3LFopfDA7aD1oK01hdGguaW11bChNLEopfDA7dT11K01hdGguaW11bChNLFopfDA7bz1vK01hdGguaW11bCh5LFkpfDA7aD1oK01hdGguaW11bCh5LCQpfDA7aD1oK01hdGguaW11bChnLFkpfDA7dT11K01hdGguaW11bChnLCQpfDA7bz1vK01hdGguaW11bCh2LGVlKXwwO2g9aCtNYXRoLmltdWwodix0ZSl8MDtoPWgrTWF0aC5pbXVsKGIsZWUpfDA7dT11K01hdGguaW11bChiLHRlKXwwO289bytNYXRoLmltdWwoYyxpZSl8MDtoPWgrTWF0aC5pbXVsKGMsbmUpfDA7aD1oK01hdGguaW11bChsLGllKXwwO3U9dStNYXRoLmltdWwobCxuZSl8MDt2YXIgQmU9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKEJlPj4+MjYpfDA7QmUmPTY3MTA4ODYzO289TWF0aC5pbXVsKE4sVyk7aD1NYXRoLmltdWwoTixWKTtoPWgrTWF0aC5pbXVsKFAsVyl8MDt1PU1hdGguaW11bChQLFYpO289bytNYXRoLmltdWwoRSxKKXwwO2g9aCtNYXRoLmltdWwoRSxaKXwwO2g9aCtNYXRoLmltdWwoayxKKXwwO3U9dStNYXRoLmltdWwoayxaKXwwO289bytNYXRoLmltdWwodyxZKXwwO2g9aCtNYXRoLmltdWwodywkKXwwO2g9aCtNYXRoLmltdWwoTSxZKXwwO3U9dStNYXRoLmltdWwoTSwkKXwwO289bytNYXRoLmltdWwoeSxlZSl8MDtoPWgrTWF0aC5pbXVsKHksdGUpfDA7aD1oK01hdGguaW11bChnLGVlKXwwO3U9dStNYXRoLmltdWwoZyx0ZSl8MDtvPW8rTWF0aC5pbXVsKHYsaWUpfDA7aD1oK01hdGguaW11bCh2LG5lKXwwO2g9aCtNYXRoLmltdWwoYixpZSl8MDt1PXUrTWF0aC5pbXVsKGIsbmUpfDA7bz1vK01hdGguaW11bChjLGZlKXwwO2g9aCtNYXRoLmltdWwoYyxzZSl8MDtoPWgrTWF0aC5pbXVsKGwsZmUpfDA7dT11K01hdGguaW11bChsLHNlKXwwO3ZhciBFZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoRWU+Pj4yNil8MDtFZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoSSxXKTtoPU1hdGguaW11bChJLFYpO2g9aCtNYXRoLmltdWwoQyxXKXwwO3U9TWF0aC5pbXVsKEMsVik7bz1vK01hdGguaW11bChOLEopfDA7aD1oK01hdGguaW11bChOLFopfDA7aD1oK01hdGguaW11bChQLEopfDA7dT11K01hdGguaW11bChQLFopfDA7bz1vK01hdGguaW11bChFLFkpfDA7aD1oK01hdGguaW11bChFLCQpfDA7aD1oK01hdGguaW11bChrLFkpfDA7dT11K01hdGguaW11bChrLCQpfDA7bz1vK01hdGguaW11bCh3LGVlKXwwO2g9aCtNYXRoLmltdWwodyx0ZSl8MDtoPWgrTWF0aC5pbXVsKE0sZWUpfDA7dT11K01hdGguaW11bChNLHRlKXwwO289bytNYXRoLmltdWwoeSxpZSl8MDtoPWgrTWF0aC5pbXVsKHksbmUpfDA7aD1oK01hdGguaW11bChnLGllKXwwO3U9dStNYXRoLmltdWwoZyxuZSl8MDtvPW8rTWF0aC5pbXVsKHYsZmUpfDA7aD1oK01hdGguaW11bCh2LHNlKXwwO2g9aCtNYXRoLmltdWwoYixmZSl8MDt1PXUrTWF0aC5pbXVsKGIsc2UpfDA7bz1vK01hdGguaW11bChjLGhlKXwwO2g9aCtNYXRoLmltdWwoYyx1ZSl8MDtoPWgrTWF0aC5pbXVsKGwsaGUpfDA7dT11K01hdGguaW11bChsLHVlKXwwO3ZhciBrZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoa2U+Pj4yNil8MDtrZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoVCxXKTtoPU1hdGguaW11bChULFYpO2g9aCtNYXRoLmltdWwoaixXKXwwO3U9TWF0aC5pbXVsKGosVik7bz1vK01hdGguaW11bChJLEopfDA7aD1oK01hdGguaW11bChJLFopfDA7aD1oK01hdGguaW11bChDLEopfDA7dT11K01hdGguaW11bChDLFopfDA7bz1vK01hdGguaW11bChOLFkpfDA7aD1oK01hdGguaW11bChOLCQpfDA7aD1oK01hdGguaW11bChQLFkpfDA7dT11K01hdGguaW11bChQLCQpfDA7bz1vK01hdGguaW11bChFLGVlKXwwO2g9aCtNYXRoLmltdWwoRSx0ZSl8MDtoPWgrTWF0aC5pbXVsKGssZWUpfDA7dT11K01hdGguaW11bChrLHRlKXwwO289bytNYXRoLmltdWwodyxpZSl8MDtoPWgrTWF0aC5pbXVsKHcsbmUpfDA7aD1oK01hdGguaW11bChNLGllKXwwO3U9dStNYXRoLmltdWwoTSxuZSl8MDtvPW8rTWF0aC5pbXVsKHksZmUpfDA7aD1oK01hdGguaW11bCh5LHNlKXwwO2g9aCtNYXRoLmltdWwoZyxmZSl8MDt1PXUrTWF0aC5pbXVsKGcsc2UpfDA7bz1vK01hdGguaW11bCh2LGhlKXwwO2g9aCtNYXRoLmltdWwodix1ZSl8MDtoPWgrTWF0aC5pbXVsKGIsaGUpfDA7dT11K01hdGguaW11bChiLHVlKXwwO289bytNYXRoLmltdWwoYyxjZSl8MDtoPWgrTWF0aC5pbXVsKGMsbGUpfDA7aD1oK01hdGguaW11bChsLGNlKXwwO3U9dStNYXRoLmltdWwobCxsZSl8MDt2YXIgQWU9KHMrb3wwKSsoKGgmODE5MSk8PDEzKXwwO3M9KHUrKGg+Pj4xMyl8MCkrKEFlPj4+MjYpfDA7QWUmPTY3MTA4ODYzO289TWF0aC5pbXVsKE8sVyk7aD1NYXRoLmltdWwoTyxWKTtoPWgrTWF0aC5pbXVsKEgsVyl8MDt1PU1hdGguaW11bChILFYpO289bytNYXRoLmltdWwoVCxKKXwwO2g9aCtNYXRoLmltdWwoVCxaKXwwO2g9aCtNYXRoLmltdWwoaixKKXwwO3U9dStNYXRoLmltdWwoaixaKXwwO289bytNYXRoLmltdWwoSSxZKXwwO2g9aCtNYXRoLmltdWwoSSwkKXwwO2g9aCtNYXRoLmltdWwoQyxZKXwwO3U9dStNYXRoLmltdWwoQywkKXwwO289bytNYXRoLmltdWwoTixlZSl8MDtoPWgrTWF0aC5pbXVsKE4sdGUpfDA7aD1oK01hdGguaW11bChQLGVlKXwwO3U9dStNYXRoLmltdWwoUCx0ZSl8MDtvPW8rTWF0aC5pbXVsKEUsaWUpfDA7aD1oK01hdGguaW11bChFLG5lKXwwO2g9aCtNYXRoLmltdWwoayxpZSl8MDt1PXUrTWF0aC5pbXVsKGssbmUpfDA7bz1vK01hdGguaW11bCh3LGZlKXwwO2g9aCtNYXRoLmltdWwodyxzZSl8MDtoPWgrTWF0aC5pbXVsKE0sZmUpfDA7dT11K01hdGguaW11bChNLHNlKXwwO289bytNYXRoLmltdWwoeSxoZSl8MDtoPWgrTWF0aC5pbXVsKHksdWUpfDA7aD1oK01hdGguaW11bChnLGhlKXwwO3U9dStNYXRoLmltdWwoZyx1ZSl8MDtvPW8rTWF0aC5pbXVsKHYsY2UpfDA7aD1oK01hdGguaW11bCh2LGxlKXwwO2g9aCtNYXRoLmltdWwoYixjZSl8MDt1PXUrTWF0aC5pbXVsKGIsbGUpfDA7bz1vK01hdGguaW11bChjLHZlKXwwO2g9aCtNYXRoLmltdWwoYyxiZSl8MDtoPWgrTWF0aC5pbXVsKGwsdmUpfDA7dT11K01hdGguaW11bChsLGJlKXwwO3ZhciBOZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoTmU+Pj4yNil8MDtOZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixXKTtoPU1hdGguaW11bCh6LFYpO2g9aCtNYXRoLmltdWwoRixXKXwwO3U9TWF0aC5pbXVsKEYsVik7bz1vK01hdGguaW11bChPLEopfDA7aD1oK01hdGguaW11bChPLFopfDA7aD1oK01hdGguaW11bChILEopfDA7dT11K01hdGguaW11bChILFopfDA7bz1vK01hdGguaW11bChULFkpfDA7aD1oK01hdGguaW11bChULCQpfDA7aD1oK01hdGguaW11bChqLFkpfDA7dT11K01hdGguaW11bChqLCQpfDA7bz1vK01hdGguaW11bChJLGVlKXwwO2g9aCtNYXRoLmltdWwoSSx0ZSl8MDtoPWgrTWF0aC5pbXVsKEMsZWUpfDA7dT11K01hdGguaW11bChDLHRlKXwwO289bytNYXRoLmltdWwoTixpZSl8MDtoPWgrTWF0aC5pbXVsKE4sbmUpfDA7aD1oK01hdGguaW11bChQLGllKXwwO3U9dStNYXRoLmltdWwoUCxuZSl8MDtvPW8rTWF0aC5pbXVsKEUsZmUpfDA7aD1oK01hdGguaW11bChFLHNlKXwwO2g9aCtNYXRoLmltdWwoayxmZSl8MDt1PXUrTWF0aC5pbXVsKGssc2UpfDA7bz1vK01hdGguaW11bCh3LGhlKXwwO2g9aCtNYXRoLmltdWwodyx1ZSl8MDtoPWgrTWF0aC5pbXVsKE0saGUpfDA7dT11K01hdGguaW11bChNLHVlKXwwO289bytNYXRoLmltdWwoeSxjZSl8MDtoPWgrTWF0aC5pbXVsKHksbGUpfDA7aD1oK01hdGguaW11bChnLGNlKXwwO3U9dStNYXRoLmltdWwoZyxsZSl8MDtvPW8rTWF0aC5pbXVsKHYsdmUpfDA7aD1oK01hdGguaW11bCh2LGJlKXwwO2g9aCtNYXRoLmltdWwoYix2ZSl8MDt1PXUrTWF0aC5pbXVsKGIsYmUpfDA7bz1vK01hdGguaW11bChjLHllKXwwO2g9aCtNYXRoLmltdWwoYyxnZSl8MDtoPWgrTWF0aC5pbXVsKGwseWUpfDA7dT11K01hdGguaW11bChsLGdlKXwwO3ZhciBSZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoUmU+Pj4yNil8MDtSZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixKKTtoPU1hdGguaW11bCh6LFopO2g9aCtNYXRoLmltdWwoRixKKXwwO3U9TWF0aC5pbXVsKEYsWik7bz1vK01hdGguaW11bChPLFkpfDA7aD1oK01hdGguaW11bChPLCQpfDA7aD1oK01hdGguaW11bChILFkpfDA7dT11K01hdGguaW11bChILCQpfDA7bz1vK01hdGguaW11bChULGVlKXwwO2g9aCtNYXRoLmltdWwoVCx0ZSl8MDtoPWgrTWF0aC5pbXVsKGosZWUpfDA7dT11K01hdGguaW11bChqLHRlKXwwO289bytNYXRoLmltdWwoSSxpZSl8MDtoPWgrTWF0aC5pbXVsKEksbmUpfDA7aD1oK01hdGguaW11bChDLGllKXwwO3U9dStNYXRoLmltdWwoQyxuZSl8MDtvPW8rTWF0aC5pbXVsKE4sZmUpfDA7aD1oK01hdGguaW11bChOLHNlKXwwO2g9aCtNYXRoLmltdWwoUCxmZSl8MDt1PXUrTWF0aC5pbXVsKFAsc2UpfDA7bz1vK01hdGguaW11bChFLGhlKXwwO2g9aCtNYXRoLmltdWwoRSx1ZSl8MDtoPWgrTWF0aC5pbXVsKGssaGUpfDA7dT11K01hdGguaW11bChrLHVlKXwwO289bytNYXRoLmltdWwodyxjZSl8MDtoPWgrTWF0aC5pbXVsKHcsbGUpfDA7aD1oK01hdGguaW11bChNLGNlKXwwO3U9dStNYXRoLmltdWwoTSxsZSl8MDtvPW8rTWF0aC5pbXVsKHksdmUpfDA7aD1oK01hdGguaW11bCh5LGJlKXwwO2g9aCtNYXRoLmltdWwoZyx2ZSl8MDt1PXUrTWF0aC5pbXVsKGcsYmUpfDA7bz1vK01hdGguaW11bCh2LHllKXwwO2g9aCtNYXRoLmltdWwodixnZSl8MDtoPWgrTWF0aC5pbXVsKGIseWUpfDA7dT11K01hdGguaW11bChiLGdlKXwwO3ZhciBQZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoUGU+Pj4yNil8MDtQZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixZKTtoPU1hdGguaW11bCh6LCQpO2g9aCtNYXRoLmltdWwoRixZKXwwO3U9TWF0aC5pbXVsKEYsJCk7bz1vK01hdGguaW11bChPLGVlKXwwO2g9aCtNYXRoLmltdWwoTyx0ZSl8MDtoPWgrTWF0aC5pbXVsKEgsZWUpfDA7dT11K01hdGguaW11bChILHRlKXwwO289bytNYXRoLmltdWwoVCxpZSl8MDtoPWgrTWF0aC5pbXVsKFQsbmUpfDA7aD1oK01hdGguaW11bChqLGllKXwwO3U9dStNYXRoLmltdWwoaixuZSl8MDtvPW8rTWF0aC5pbXVsKEksZmUpfDA7aD1oK01hdGguaW11bChJLHNlKXwwO2g9aCtNYXRoLmltdWwoQyxmZSl8MDt1PXUrTWF0aC5pbXVsKEMsc2UpfDA7bz1vK01hdGguaW11bChOLGhlKXwwO2g9aCtNYXRoLmltdWwoTix1ZSl8MDtoPWgrTWF0aC5pbXVsKFAsaGUpfDA7dT11K01hdGguaW11bChQLHVlKXwwO289bytNYXRoLmltdWwoRSxjZSl8MDtoPWgrTWF0aC5pbXVsKEUsbGUpfDA7aD1oK01hdGguaW11bChrLGNlKXwwO3U9dStNYXRoLmltdWwoayxsZSl8MDtvPW8rTWF0aC5pbXVsKHcsdmUpfDA7aD1oK01hdGguaW11bCh3LGJlKXwwO2g9aCtNYXRoLmltdWwoTSx2ZSl8MDt1PXUrTWF0aC5pbXVsKE0sYmUpfDA7bz1vK01hdGguaW11bCh5LHllKXwwO2g9aCtNYXRoLmltdWwoeSxnZSl8MDtoPWgrTWF0aC5pbXVsKGcseWUpfDA7dT11K01hdGguaW11bChnLGdlKXwwO3ZhciB4ZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoeGU+Pj4yNil8MDt4ZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixlZSk7aD1NYXRoLmltdWwoeix0ZSk7aD1oK01hdGguaW11bChGLGVlKXwwO3U9TWF0aC5pbXVsKEYsdGUpO289bytNYXRoLmltdWwoTyxpZSl8MDtoPWgrTWF0aC5pbXVsKE8sbmUpfDA7aD1oK01hdGguaW11bChILGllKXwwO3U9dStNYXRoLmltdWwoSCxuZSl8MDtvPW8rTWF0aC5pbXVsKFQsZmUpfDA7aD1oK01hdGguaW11bChULHNlKXwwO2g9aCtNYXRoLmltdWwoaixmZSl8MDt1PXUrTWF0aC5pbXVsKGosc2UpfDA7bz1vK01hdGguaW11bChJLGhlKXwwO2g9aCtNYXRoLmltdWwoSSx1ZSl8MDtoPWgrTWF0aC5pbXVsKEMsaGUpfDA7dT11K01hdGguaW11bChDLHVlKXwwO289bytNYXRoLmltdWwoTixjZSl8MDtoPWgrTWF0aC5pbXVsKE4sbGUpfDA7aD1oK01hdGguaW11bChQLGNlKXwwO3U9dStNYXRoLmltdWwoUCxsZSl8MDtvPW8rTWF0aC5pbXVsKEUsdmUpfDA7aD1oK01hdGguaW11bChFLGJlKXwwO2g9aCtNYXRoLmltdWwoayx2ZSl8MDt1PXUrTWF0aC5pbXVsKGssYmUpfDA7bz1vK01hdGguaW11bCh3LHllKXwwO2g9aCtNYXRoLmltdWwodyxnZSl8MDtoPWgrTWF0aC5pbXVsKE0seWUpfDA7dT11K01hdGguaW11bChNLGdlKXwwO3ZhciBJZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoSWU+Pj4yNil8MDtJZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixpZSk7aD1NYXRoLmltdWwoeixuZSk7aD1oK01hdGguaW11bChGLGllKXwwO3U9TWF0aC5pbXVsKEYsbmUpO289bytNYXRoLmltdWwoTyxmZSl8MDtoPWgrTWF0aC5pbXVsKE8sc2UpfDA7aD1oK01hdGguaW11bChILGZlKXwwO3U9dStNYXRoLmltdWwoSCxzZSl8MDtvPW8rTWF0aC5pbXVsKFQsaGUpfDA7aD1oK01hdGguaW11bChULHVlKXwwO2g9aCtNYXRoLmltdWwoaixoZSl8MDt1PXUrTWF0aC5pbXVsKGosdWUpfDA7bz1vK01hdGguaW11bChJLGNlKXwwO2g9aCtNYXRoLmltdWwoSSxsZSl8MDtoPWgrTWF0aC5pbXVsKEMsY2UpfDA7dT11K01hdGguaW11bChDLGxlKXwwO289bytNYXRoLmltdWwoTix2ZSl8MDtoPWgrTWF0aC5pbXVsKE4sYmUpfDA7aD1oK01hdGguaW11bChQLHZlKXwwO3U9dStNYXRoLmltdWwoUCxiZSl8MDtvPW8rTWF0aC5pbXVsKEUseWUpfDA7aD1oK01hdGguaW11bChFLGdlKXwwO2g9aCtNYXRoLmltdWwoayx5ZSl8MDt1PXUrTWF0aC5pbXVsKGssZ2UpfDA7dmFyIENlPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhDZT4+PjI2KXwwO0NlJj02NzEwODg2MztvPU1hdGguaW11bCh6LGZlKTtoPU1hdGguaW11bCh6LHNlKTtoPWgrTWF0aC5pbXVsKEYsZmUpfDA7dT1NYXRoLmltdWwoRixzZSk7bz1vK01hdGguaW11bChPLGhlKXwwO2g9aCtNYXRoLmltdWwoTyx1ZSl8MDtoPWgrTWF0aC5pbXVsKEgsaGUpfDA7dT11K01hdGguaW11bChILHVlKXwwO289bytNYXRoLmltdWwoVCxjZSl8MDtoPWgrTWF0aC5pbXVsKFQsbGUpfDA7aD1oK01hdGguaW11bChqLGNlKXwwO3U9dStNYXRoLmltdWwoaixsZSl8MDtvPW8rTWF0aC5pbXVsKEksdmUpfDA7aD1oK01hdGguaW11bChJLGJlKXwwO2g9aCtNYXRoLmltdWwoQyx2ZSl8MDt1PXUrTWF0aC5pbXVsKEMsYmUpfDA7bz1vK01hdGguaW11bChOLHllKXwwO2g9aCtNYXRoLmltdWwoTixnZSl8MDtoPWgrTWF0aC5pbXVsKFAseWUpfDA7dT11K01hdGguaW11bChQLGdlKXwwO3ZhciBEZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoRGU+Pj4yNil8MDtEZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixoZSk7aD1NYXRoLmltdWwoeix1ZSk7aD1oK01hdGguaW11bChGLGhlKXwwO3U9TWF0aC5pbXVsKEYsdWUpO289bytNYXRoLmltdWwoTyxjZSl8MDtoPWgrTWF0aC5pbXVsKE8sbGUpfDA7aD1oK01hdGguaW11bChILGNlKXwwO3U9dStNYXRoLmltdWwoSCxsZSl8MDtvPW8rTWF0aC5pbXVsKFQsdmUpfDA7aD1oK01hdGguaW11bChULGJlKXwwO2g9aCtNYXRoLmltdWwoaix2ZSl8MDt1PXUrTWF0aC5pbXVsKGosYmUpfDA7bz1vK01hdGguaW11bChJLHllKXwwO2g9aCtNYXRoLmltdWwoSSxnZSl8MDtoPWgrTWF0aC5pbXVsKEMseWUpfDA7dT11K01hdGguaW11bChDLGdlKXwwO3ZhciBUZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoVGU+Pj4yNil8MDtUZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeixjZSk7aD1NYXRoLmltdWwoeixsZSk7aD1oK01hdGguaW11bChGLGNlKXwwO3U9TWF0aC5pbXVsKEYsbGUpO289bytNYXRoLmltdWwoTyx2ZSl8MDtoPWgrTWF0aC5pbXVsKE8sYmUpfDA7aD1oK01hdGguaW11bChILHZlKXwwO3U9dStNYXRoLmltdWwoSCxiZSl8MDtvPW8rTWF0aC5pbXVsKFQseWUpfDA7aD1oK01hdGguaW11bChULGdlKXwwO2g9aCtNYXRoLmltdWwoaix5ZSl8MDt1PXUrTWF0aC5pbXVsKGosZ2UpfDA7dmFyIGplPShzK298MCkrKChoJjgxOTEpPDwxMyl8MDtzPSh1KyhoPj4+MTMpfDApKyhqZT4+PjI2KXwwO2plJj02NzEwODg2MztvPU1hdGguaW11bCh6LHZlKTtoPU1hdGguaW11bCh6LGJlKTtoPWgrTWF0aC5pbXVsKEYsdmUpfDA7dT1NYXRoLmltdWwoRixiZSk7bz1vK01hdGguaW11bChPLHllKXwwO2g9aCtNYXRoLmltdWwoTyxnZSl8MDtoPWgrTWF0aC5pbXVsKEgseWUpfDA7dT11K01hdGguaW11bChILGdlKXwwO3ZhciBxZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsocWU+Pj4yNil8MDtxZSY9NjcxMDg4NjM7bz1NYXRoLmltdWwoeix5ZSk7aD1NYXRoLmltdWwoeixnZSk7aD1oK01hdGguaW11bChGLHllKXwwO3U9TWF0aC5pbXVsKEYsZ2UpO3ZhciBPZT0ocytvfDApKygoaCY4MTkxKTw8MTMpfDA7cz0odSsoaD4+PjEzKXwwKSsoT2U+Pj4yNil8MDtPZSY9NjcxMDg4NjM7YVswXT1fZTthWzFdPXdlO2FbMl09TWU7YVszXT1TZTthWzRdPUJlO2FbNV09RWU7YVs2XT1rZTthWzddPUFlO2FbOF09TmU7YVs5XT1SZTthWzEwXT1QZTthWzExXT14ZTthWzEyXT1JZTthWzEzXT1DZTthWzE0XT1EZTthWzE1XT1UZTthWzE2XT1qZTthWzE3XT1xZTthWzE4XT1PZTtpZihzIT09MCl7YVsxOV09cztyLmxlbmd0aCsrfXJldHVybiByfTtpZighTWF0aC5pbXVsKXtoPXNtYWxsTXVsVG99ZnVuY3Rpb24gYmlnTXVsVG8oZSx0LHIpe3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlO3IubGVuZ3RoPWUubGVuZ3RoK3QubGVuZ3RoO3ZhciBpPTA7dmFyIG49MDtmb3IodmFyIGE9MDthPHIubGVuZ3RoLTE7YSsrKXt2YXIgcz1uO249MDt2YXIgbz1pJjY3MTA4ODYzO3ZhciBoPU1hdGgubWluKGEsdC5sZW5ndGgtMSk7Zm9yKHZhciB1PU1hdGgubWF4KDAsYS1lLmxlbmd0aCsxKTt1PD1oO3UrKyl7dmFyIGQ9YS11O3ZhciBjPWUud29yZHNbZF18MDt2YXIgbD10LndvcmRzW3VdfDA7dmFyIHA9YypsO3ZhciB2PXAmNjcxMDg4NjM7cz1zKyhwLzY3MTA4ODY0fDApfDA7dj12K298MDtvPXYmNjcxMDg4NjM7cz1zKyh2Pj4+MjYpfDA7bis9cz4+PjI2O3MmPTY3MTA4ODYzfXIud29yZHNbYV09bztpPXM7cz1ufWlmKGkhPT0wKXtyLndvcmRzW2FdPWl9ZWxzZXtyLmxlbmd0aC0tfXJldHVybiByLl9zdHJpcCgpfWZ1bmN0aW9uIGp1bWJvTXVsVG8oZSx0LHIpe3JldHVybiBiaWdNdWxUbyhlLHQscil9Qk4ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uIG11bFRvKGUsdCl7dmFyIHI7dmFyIGk9dGhpcy5sZW5ndGgrZS5sZW5ndGg7aWYodGhpcy5sZW5ndGg9PT0xMCYmZS5sZW5ndGg9PT0xMCl7cj1oKHRoaXMsZSx0KX1lbHNlIGlmKGk8NjMpe3I9c21hbGxNdWxUbyh0aGlzLGUsdCl9ZWxzZSBpZihpPDEwMjQpe3I9YmlnTXVsVG8odGhpcyxlLHQpfWVsc2V7cj1qdW1ib011bFRvKHRoaXMsZSx0KX1yZXR1cm4gcn07ZnVuY3Rpb24gRkZUTShlLHQpe3RoaXMueD1lO3RoaXMueT10fUZGVE0ucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24gbWFrZVJCVChlKXt2YXIgdD1uZXcgQXJyYXkoZSk7dmFyIHI9Qk4ucHJvdG90eXBlLl9jb3VudEJpdHMoZSktMTtmb3IodmFyIGk9MDtpPGU7aSsrKXt0W2ldPXRoaXMucmV2QmluKGkscixlKX1yZXR1cm4gdH07RkZUTS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uIHJldkJpbihlLHQscil7aWYoZT09PTB8fGU9PT1yLTEpcmV0dXJuIGU7dmFyIGk9MDtmb3IodmFyIG49MDtuPHQ7bisrKXtpfD0oZSYxKTw8dC1uLTE7ZT4+PTF9cmV0dXJuIGl9O0ZGVE0ucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24gcGVybXV0ZShlLHQscixpLG4sYSl7Zm9yKHZhciBzPTA7czxhO3MrKyl7aVtzXT10W2Vbc11dO25bc109cltlW3NdXX19O0ZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbiB0cmFuc2Zvcm0oZSx0LHIsaSxuLGEpe3RoaXMucGVybXV0ZShhLGUsdCxyLGksbik7Zm9yKHZhciBzPTE7czxuO3M8PD0xKXt2YXIgbz1zPDwxO3ZhciBoPU1hdGguY29zKDIqTWF0aC5QSS9vKTt2YXIgdT1NYXRoLnNpbigyKk1hdGguUEkvbyk7Zm9yKHZhciBkPTA7ZDxuO2QrPW8pe3ZhciBjPWg7dmFyIGw9dTtmb3IodmFyIHA9MDtwPHM7cCsrKXt2YXIgdj1yW2QrcF07dmFyIGI9aVtkK3BdO3ZhciBtPXJbZCtwK3NdO3ZhciB5PWlbZCtwK3NdO3ZhciBnPWMqbS1sKnk7eT1jKnkrbCptO209ZztyW2QrcF09dittO2lbZCtwXT1iK3k7cltkK3Arc109di1tO2lbZCtwK3NdPWIteTtpZihwIT09byl7Zz1oKmMtdSpsO2w9aCpsK3UqYztjPWd9fX19fTtGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYj1mdW5jdGlvbiBndWVzc0xlbjEzYihlLHQpe3ZhciByPU1hdGgubWF4KHQsZSl8MTt2YXIgaT1yJjE7dmFyIG49MDtmb3Iocj1yLzJ8MDtyO3I9cj4+PjEpe24rK31yZXR1cm4gMTw8bisxK2l9O0ZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbiBjb25qdWdhdGUoZSx0LHIpe2lmKHI8PTEpcmV0dXJuO2Zvcih2YXIgaT0wO2k8ci8yO2krKyl7dmFyIG49ZVtpXTtlW2ldPWVbci1pLTFdO2Vbci1pLTFdPW47bj10W2ldO3RbaV09LXRbci1pLTFdO3Rbci1pLTFdPS1ufX07RkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiPWZ1bmN0aW9uIG5vcm1hbGl6ZTEzYihlLHQpe3ZhciByPTA7Zm9yKHZhciBpPTA7aTx0LzI7aSsrKXt2YXIgbj1NYXRoLnJvdW5kKGVbMippKzFdL3QpKjgxOTIrTWF0aC5yb3VuZChlWzIqaV0vdCkrcjtlW2ldPW4mNjcxMDg4NjM7aWYobjw2NzEwODg2NCl7cj0wfWVsc2V7cj1uLzY3MTA4ODY0fDB9fXJldHVybiBlfTtGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uIGNvbnZlcnQxM2IoZSx0LHIsaSl7dmFyIG49MDtmb3IodmFyIGE9MDthPHQ7YSsrKXtuPW4rKGVbYV18MCk7clsyKmFdPW4mODE5MTtuPW4+Pj4xMztyWzIqYSsxXT1uJjgxOTE7bj1uPj4+MTN9Zm9yKGE9Mip0O2E8aTsrK2Epe3JbYV09MH1hc3NlcnQobj09PTApO2Fzc2VydCgobiZ+ODE5MSk9PT0wKX07RkZUTS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbiBzdHViKGUpe3ZhciB0PW5ldyBBcnJheShlKTtmb3IodmFyIHI9MDtyPGU7cisrKXt0W3JdPTB9cmV0dXJuIHR9O0ZGVE0ucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24gbXVscChlLHQscil7dmFyIGk9Mip0aGlzLmd1ZXNzTGVuMTNiKGUubGVuZ3RoLHQubGVuZ3RoKTt2YXIgbj10aGlzLm1ha2VSQlQoaSk7dmFyIGE9dGhpcy5zdHViKGkpO3ZhciBzPW5ldyBBcnJheShpKTt2YXIgbz1uZXcgQXJyYXkoaSk7dmFyIGg9bmV3IEFycmF5KGkpO3ZhciB1PW5ldyBBcnJheShpKTt2YXIgZD1uZXcgQXJyYXkoaSk7dmFyIGM9bmV3IEFycmF5KGkpO3ZhciBsPXIud29yZHM7bC5sZW5ndGg9aTt0aGlzLmNvbnZlcnQxM2IoZS53b3JkcyxlLmxlbmd0aCxzLGkpO3RoaXMuY29udmVydDEzYih0LndvcmRzLHQubGVuZ3RoLHUsaSk7dGhpcy50cmFuc2Zvcm0ocyxhLG8saCxpLG4pO3RoaXMudHJhbnNmb3JtKHUsYSxkLGMsaSxuKTtmb3IodmFyIHA9MDtwPGk7cCsrKXt2YXIgdj1vW3BdKmRbcF0taFtwXSpjW3BdO2hbcF09b1twXSpjW3BdK2hbcF0qZFtwXTtvW3BdPXZ9dGhpcy5jb25qdWdhdGUobyxoLGkpO3RoaXMudHJhbnNmb3JtKG8saCxsLGEsaSxuKTt0aGlzLmNvbmp1Z2F0ZShsLGEsaSk7dGhpcy5ub3JtYWxpemUxM2IobCxpKTtyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZTtyLmxlbmd0aD1lLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gci5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLm11bD1mdW5jdGlvbiBtdWwoZSl7dmFyIHQ9bmV3IEJOKG51bGwpO3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2UubGVuZ3RoKTtyZXR1cm4gdGhpcy5tdWxUbyhlLHQpfTtCTi5wcm90b3R5cGUubXVsZj1mdW5jdGlvbiBtdWxmKGUpe3ZhciB0PW5ldyBCTihudWxsKTt0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCtlLmxlbmd0aCk7cmV0dXJuIGp1bWJvTXVsVG8odGhpcyxlLHQpfTtCTi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKGUpe3JldHVybiB0aGlzLmNsb25lKCkubXVsVG8oZSx0aGlzKX07Qk4ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uIGltdWxuKGUpe3ZhciB0PWU8MDtpZih0KWU9LWU7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7YXNzZXJ0KGU8NjcxMDg4NjQpO3ZhciByPTA7Zm9yKHZhciBpPTA7aTx0aGlzLmxlbmd0aDtpKyspe3ZhciBuPSh0aGlzLndvcmRzW2ldfDApKmU7dmFyIGE9KG4mNjcxMDg4NjMpKyhyJjY3MTA4ODYzKTtyPj49MjY7cis9bi82NzEwODg2NHwwO3IrPWE+Pj4yNjt0aGlzLndvcmRzW2ldPWEmNjcxMDg4NjN9aWYociE9PTApe3RoaXMud29yZHNbaV09cjt0aGlzLmxlbmd0aCsrfXJldHVybiB0P3RoaXMuaW5lZygpOnRoaXN9O0JOLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uIG11bG4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihlKX07Qk4ucHJvdG90eXBlLnNxcj1mdW5jdGlvbiBzcXIoKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9O0JOLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uIGlzcXIoKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9O0JOLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24gcG93KGUpe3ZhciB0PXRvQml0QXJyYXkoZSk7aWYodC5sZW5ndGg9PT0wKXJldHVybiBuZXcgQk4oMSk7dmFyIHI9dGhpcztmb3IodmFyIGk9MDtpPHQubGVuZ3RoO2krKyxyPXIuc3FyKCkpe2lmKHRbaV0hPT0wKWJyZWFrfWlmKCsraTx0Lmxlbmd0aCl7Zm9yKHZhciBuPXIuc3FyKCk7aTx0Lmxlbmd0aDtpKyssbj1uLnNxcigpKXtpZih0W2ldPT09MCljb250aW51ZTtyPXIubXVsKG4pfX1yZXR1cm4gcn07Qk4ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbiBpdXNobG4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIiYmZT49MCk7dmFyIHQ9ZSUyNjt2YXIgcj0oZS10KS8yNjt2YXIgaT02NzEwODg2Mz4+PjI2LXQ8PDI2LXQ7dmFyIG47aWYodCE9PTApe3ZhciBhPTA7Zm9yKG49MDtuPHRoaXMubGVuZ3RoO24rKyl7dmFyIHM9dGhpcy53b3Jkc1tuXSZpO3ZhciBvPSh0aGlzLndvcmRzW25dfDApLXM8PHQ7dGhpcy53b3Jkc1tuXT1vfGE7YT1zPj4+MjYtdH1pZihhKXt0aGlzLndvcmRzW25dPWE7dGhpcy5sZW5ndGgrK319aWYociE9PTApe2ZvcihuPXRoaXMubGVuZ3RoLTE7bj49MDtuLS0pe3RoaXMud29yZHNbbityXT10aGlzLndvcmRzW25dfWZvcihuPTA7bjxyO24rKyl7dGhpcy53b3Jkc1tuXT0wfXRoaXMubGVuZ3RoKz1yfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24gaXNobG4oZSl7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wKTtyZXR1cm4gdGhpcy5pdXNobG4oZSl9O0JOLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24gaXVzaHJuKGUsdCxyKXthc3NlcnQodHlwZW9mIGU9PT1cIm51bWJlclwiJiZlPj0wKTt2YXIgaTtpZih0KXtpPSh0LXQlMjYpLzI2fWVsc2V7aT0wfXZhciBuPWUlMjY7dmFyIGE9TWF0aC5taW4oKGUtbikvMjYsdGhpcy5sZW5ndGgpO3ZhciBzPTY3MTA4ODYzXjY3MTA4ODYzPj4+bjw8bjt2YXIgbz1yO2ktPWE7aT1NYXRoLm1heCgwLGkpO2lmKG8pe2Zvcih2YXIgaD0wO2g8YTtoKyspe28ud29yZHNbaF09dGhpcy53b3Jkc1toXX1vLmxlbmd0aD1hfWlmKGE9PT0wKXt9ZWxzZSBpZih0aGlzLmxlbmd0aD5hKXt0aGlzLmxlbmd0aC09YTtmb3IoaD0wO2g8dGhpcy5sZW5ndGg7aCsrKXt0aGlzLndvcmRzW2hdPXRoaXMud29yZHNbaCthXX19ZWxzZXt0aGlzLndvcmRzWzBdPTA7dGhpcy5sZW5ndGg9MX12YXIgdT0wO2ZvcihoPXRoaXMubGVuZ3RoLTE7aD49MCYmKHUhPT0wfHxoPj1pKTtoLS0pe3ZhciBkPXRoaXMud29yZHNbaF18MDt0aGlzLndvcmRzW2hdPXU8PDI2LW58ZD4+Pm47dT1kJnN9aWYobyYmdSE9PTApe28ud29yZHNbby5sZW5ndGgrK109dX1pZih0aGlzLmxlbmd0aD09PTApe3RoaXMud29yZHNbMF09MDt0aGlzLmxlbmd0aD0xfXJldHVybiB0aGlzLl9zdHJpcCgpfTtCTi5wcm90b3R5cGUuaXNocm49ZnVuY3Rpb24gaXNocm4oZSx0LHIpe2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCk7cmV0dXJuIHRoaXMuaXVzaHJuKGUsdCxyKX07Qk4ucHJvdG90eXBlLnNobG49ZnVuY3Rpb24gc2hsbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGUpfTtCTi5wcm90b3R5cGUudXNobG49ZnVuY3Rpb24gdXNobG4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oZSl9O0JOLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uIHNocm4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihlKX07Qk4ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uIHVzaHJuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGUpfTtCTi5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24gdGVzdG4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIiYmZT49MCk7dmFyIHQ9ZSUyNjt2YXIgcj0oZS10KS8yNjt2YXIgaT0xPDx0O2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiBmYWxzZTt2YXIgbj10aGlzLndvcmRzW3JdO3JldHVybiEhKG4maSl9O0JOLnByb3RvdHlwZS5pbWFza249ZnVuY3Rpb24gaW1hc2tuKGUpe2Fzc2VydCh0eXBlb2YgZT09PVwibnVtYmVyXCImJmU+PTApO3ZhciB0PWUlMjY7dmFyIHI9KGUtdCkvMjY7YXNzZXJ0KHRoaXMubmVnYXRpdmU9PT0wLFwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzXCIpO2lmKHRoaXMubGVuZ3RoPD1yKXtyZXR1cm4gdGhpc31pZih0IT09MCl7cisrfXRoaXMubGVuZ3RoPU1hdGgubWluKHIsdGhpcy5sZW5ndGgpO2lmKHQhPT0wKXt2YXIgaT02NzEwODg2M142NzEwODg2Mz4+PnQ8PHQ7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9aX1yZXR1cm4gdGhpcy5fc3RyaXAoKX07Qk4ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uIG1hc2tuKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGUpfTtCTi5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24gaWFkZG4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7YXNzZXJ0KGU8NjcxMDg4NjQpO2lmKGU8MClyZXR1cm4gdGhpcy5pc3VibigtZSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApe2lmKHRoaXMubGVuZ3RoPT09MSYmKHRoaXMud29yZHNbMF18MCk8PWUpe3RoaXMud29yZHNbMF09ZS0odGhpcy53b3Jkc1swXXwwKTt0aGlzLm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXN9dGhpcy5uZWdhdGl2ZT0wO3RoaXMuaXN1Ym4oZSk7dGhpcy5uZWdhdGl2ZT0xO3JldHVybiB0aGlzfXJldHVybiB0aGlzLl9pYWRkbihlKX07Qk4ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbiBfaWFkZG4oZSl7dGhpcy53b3Jkc1swXSs9ZTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW3RdPj02NzEwODg2NDt0Kyspe3RoaXMud29yZHNbdF0tPTY3MTA4ODY0O2lmKHQ9PT10aGlzLmxlbmd0aC0xKXt0aGlzLndvcmRzW3QrMV09MX1lbHNle3RoaXMud29yZHNbdCsxXSsrfX10aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx0KzEpO3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24gaXN1Ym4oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7YXNzZXJ0KGU8NjcxMDg4NjQpO2lmKGU8MClyZXR1cm4gdGhpcy5pYWRkbigtZSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApe3RoaXMubmVnYXRpdmU9MDt0aGlzLmlhZGRuKGUpO3RoaXMubmVnYXRpdmU9MTtyZXR1cm4gdGhpc310aGlzLndvcmRzWzBdLT1lO2lmKHRoaXMubGVuZ3RoPT09MSYmdGhpcy53b3Jkc1swXTwwKXt0aGlzLndvcmRzWzBdPS10aGlzLndvcmRzWzBdO3RoaXMubmVnYXRpdmU9MX1lbHNle2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbdF08MDt0Kyspe3RoaXMud29yZHNbdF0rPTY3MTA4ODY0O3RoaXMud29yZHNbdCsxXS09MX19cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uIGFkZG4oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihlKX07Qk4ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24gc3VibihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKGUpfTtCTi5wcm90b3R5cGUuaWFicz1mdW5jdGlvbiBpYWJzKCl7dGhpcy5uZWdhdGl2ZT0wO3JldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uIGFicygpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfTtCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsPWZ1bmN0aW9uIF9pc2hsbnN1Ym11bChlLHQscil7dmFyIGk9ZS5sZW5ndGgrcjt2YXIgbjt0aGlzLl9leHBhbmQoaSk7dmFyIGE7dmFyIHM9MDtmb3Iobj0wO248ZS5sZW5ndGg7bisrKXthPSh0aGlzLndvcmRzW24rcl18MCkrczt2YXIgbz0oZS53b3Jkc1tuXXwwKSp0O2EtPW8mNjcxMDg4NjM7cz0oYT4+MjYpLShvLzY3MTA4ODY0fDApO3RoaXMud29yZHNbbityXT1hJjY3MTA4ODYzfWZvcig7bjx0aGlzLmxlbmd0aC1yO24rKyl7YT0odGhpcy53b3Jkc1tuK3JdfDApK3M7cz1hPj4yNjt0aGlzLndvcmRzW24rcl09YSY2NzEwODg2M31pZihzPT09MClyZXR1cm4gdGhpcy5fc3RyaXAoKTthc3NlcnQocz09PS0xKTtzPTA7Zm9yKG49MDtuPHRoaXMubGVuZ3RoO24rKyl7YT0tKHRoaXMud29yZHNbbl18MCkrcztzPWE+PjI2O3RoaXMud29yZHNbbl09YSY2NzEwODg2M310aGlzLm5lZ2F0aXZlPTE7cmV0dXJuIHRoaXMuX3N0cmlwKCl9O0JOLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbiBfd29yZERpdihlLHQpe3ZhciByPXRoaXMubGVuZ3RoLWUubGVuZ3RoO3ZhciBpPXRoaXMuY2xvbmUoKTt2YXIgbj1lO3ZhciBhPW4ud29yZHNbbi5sZW5ndGgtMV18MDt2YXIgcz10aGlzLl9jb3VudEJpdHMoYSk7cj0yNi1zO2lmKHIhPT0wKXtuPW4udXNobG4ocik7aS5pdXNobG4ocik7YT1uLndvcmRzW24ubGVuZ3RoLTFdfDB9dmFyIG89aS5sZW5ndGgtbi5sZW5ndGg7dmFyIGg7aWYodCE9PVwibW9kXCIpe2g9bmV3IEJOKG51bGwpO2gubGVuZ3RoPW8rMTtoLndvcmRzPW5ldyBBcnJheShoLmxlbmd0aCk7Zm9yKHZhciB1PTA7dTxoLmxlbmd0aDt1Kyspe2gud29yZHNbdV09MH19dmFyIGQ9aS5jbG9uZSgpLl9pc2hsbnN1Ym11bChuLDEsbyk7aWYoZC5uZWdhdGl2ZT09PTApe2k9ZDtpZihoKXtoLndvcmRzW29dPTF9fWZvcih2YXIgYz1vLTE7Yz49MDtjLS0pe3ZhciBsPShpLndvcmRzW24ubGVuZ3RoK2NdfDApKjY3MTA4ODY0KyhpLndvcmRzW24ubGVuZ3RoK2MtMV18MCk7bD1NYXRoLm1pbihsL2F8MCw2NzEwODg2Myk7aS5faXNobG5zdWJtdWwobixsLGMpO3doaWxlKGkubmVnYXRpdmUhPT0wKXtsLS07aS5uZWdhdGl2ZT0wO2kuX2lzaGxuc3VibXVsKG4sMSxjKTtpZighaS5pc1plcm8oKSl7aS5uZWdhdGl2ZV49MX19aWYoaCl7aC53b3Jkc1tjXT1sfX1pZihoKXtoLl9zdHJpcCgpfWkuX3N0cmlwKCk7aWYodCE9PVwiZGl2XCImJnIhPT0wKXtpLml1c2hybihyKX1yZXR1cm57ZGl2Omh8fG51bGwsbW9kOml9fTtCTi5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uIGRpdm1vZChlLHQscil7YXNzZXJ0KCFlLmlzWmVybygpKTtpZih0aGlzLmlzWmVybygpKXtyZXR1cm57ZGl2Om5ldyBCTigwKSxtb2Q6bmV3IEJOKDApfX12YXIgaSxuLGE7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJmUubmVnYXRpdmU9PT0wKXthPXRoaXMubmVnKCkuZGl2bW9kKGUsdCk7aWYodCE9PVwibW9kXCIpe2k9YS5kaXYubmVnKCl9aWYodCE9PVwiZGl2XCIpe249YS5tb2QubmVnKCk7aWYociYmbi5uZWdhdGl2ZSE9PTApe24uaWFkZChlKX19cmV0dXJue2RpdjppLG1vZDpufX1pZih0aGlzLm5lZ2F0aXZlPT09MCYmZS5uZWdhdGl2ZSE9PTApe2E9dGhpcy5kaXZtb2QoZS5uZWcoKSx0KTtpZih0IT09XCJtb2RcIil7aT1hLmRpdi5uZWcoKX1yZXR1cm57ZGl2OmksbW9kOmEubW9kfX1pZigodGhpcy5uZWdhdGl2ZSZlLm5lZ2F0aXZlKSE9PTApe2E9dGhpcy5uZWcoKS5kaXZtb2QoZS5uZWcoKSx0KTtpZih0IT09XCJkaXZcIil7bj1hLm1vZC5uZWcoKTtpZihyJiZuLm5lZ2F0aXZlIT09MCl7bi5pc3ViKGUpfX1yZXR1cm57ZGl2OmEuZGl2LG1vZDpufX1pZihlLmxlbmd0aD50aGlzLmxlbmd0aHx8dGhpcy5jbXAoZSk8MCl7cmV0dXJue2RpdjpuZXcgQk4oMCksbW9kOnRoaXN9fWlmKGUubGVuZ3RoPT09MSl7aWYodD09PVwiZGl2XCIpe3JldHVybntkaXY6dGhpcy5kaXZuKGUud29yZHNbMF0pLG1vZDpudWxsfX1pZih0PT09XCJtb2RcIil7cmV0dXJue2RpdjpudWxsLG1vZDpuZXcgQk4odGhpcy5tb2RybihlLndvcmRzWzBdKSl9fXJldHVybntkaXY6dGhpcy5kaXZuKGUud29yZHNbMF0pLG1vZDpuZXcgQk4odGhpcy5tb2RybihlLndvcmRzWzBdKSl9fXJldHVybiB0aGlzLl93b3JkRGl2KGUsdCl9O0JOLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24gZGl2KGUpe3JldHVybiB0aGlzLmRpdm1vZChlLFwiZGl2XCIsZmFsc2UpLmRpdn07Qk4ucHJvdG90eXBlLm1vZD1mdW5jdGlvbiBtb2QoZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsXCJtb2RcIixmYWxzZSkubW9kfTtCTi5wcm90b3R5cGUudW1vZD1mdW5jdGlvbiB1bW9kKGUpe3JldHVybiB0aGlzLmRpdm1vZChlLFwibW9kXCIsdHJ1ZSkubW9kfTtCTi5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24gZGl2Um91bmQoZSl7dmFyIHQ9dGhpcy5kaXZtb2QoZSk7aWYodC5tb2QuaXNaZXJvKCkpcmV0dXJuIHQuZGl2O3ZhciByPXQuZGl2Lm5lZ2F0aXZlIT09MD90Lm1vZC5pc3ViKGUpOnQubW9kO3ZhciBpPWUudXNocm4oMSk7dmFyIG49ZS5hbmRsbigxKTt2YXIgYT1yLmNtcChpKTtpZihhPDB8fG49PT0xJiZhPT09MClyZXR1cm4gdC5kaXY7cmV0dXJuIHQuZGl2Lm5lZ2F0aXZlIT09MD90LmRpdi5pc3VibigxKTp0LmRpdi5pYWRkbigxKX07Qk4ucHJvdG90eXBlLm1vZHJuPWZ1bmN0aW9uIG1vZHJuKGUpe3ZhciB0PWU8MDtpZih0KWU9LWU7YXNzZXJ0KGU8PTY3MTA4ODYzKTt2YXIgcj0oMTw8MjYpJWU7dmFyIGk9MDtmb3IodmFyIG49dGhpcy5sZW5ndGgtMTtuPj0wO24tLSl7aT0ocippKyh0aGlzLndvcmRzW25dfDApKSVlfXJldHVybiB0Py1pOml9O0JOLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uIG1vZG4oZSl7cmV0dXJuIHRoaXMubW9kcm4oZSl9O0JOLnByb3RvdHlwZS5pZGl2bj1mdW5jdGlvbiBpZGl2bihlKXt2YXIgdD1lPDA7aWYodCllPS1lO2Fzc2VydChlPD02NzEwODg2Myk7dmFyIHI9MDtmb3IodmFyIGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIG49KHRoaXMud29yZHNbaV18MCkrcio2NzEwODg2NDt0aGlzLndvcmRzW2ldPW4vZXwwO3I9biVlfXRoaXMuX3N0cmlwKCk7cmV0dXJuIHQ/dGhpcy5pbmVnKCk6dGhpc307Qk4ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24gZGl2bihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKGUpfTtCTi5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbiBlZ2NkKGUpe2Fzc2VydChlLm5lZ2F0aXZlPT09MCk7YXNzZXJ0KCFlLmlzWmVybygpKTt2YXIgdD10aGlzO3ZhciByPWUuY2xvbmUoKTtpZih0Lm5lZ2F0aXZlIT09MCl7dD10LnVtb2QoZSl9ZWxzZXt0PXQuY2xvbmUoKX12YXIgaT1uZXcgQk4oMSk7dmFyIG49bmV3IEJOKDApO3ZhciBhPW5ldyBCTigwKTt2YXIgcz1uZXcgQk4oMSk7dmFyIG89MDt3aGlsZSh0LmlzRXZlbigpJiZyLmlzRXZlbigpKXt0Lml1c2hybigxKTtyLml1c2hybigxKTsrK299dmFyIGg9ci5jbG9uZSgpO3ZhciB1PXQuY2xvbmUoKTt3aGlsZSghdC5pc1plcm8oKSl7Zm9yKHZhciBkPTAsYz0xOyh0LndvcmRzWzBdJmMpPT09MCYmZDwyNjsrK2QsYzw8PTEpO2lmKGQ+MCl7dC5pdXNocm4oZCk7d2hpbGUoZC0tID4wKXtpZihpLmlzT2RkKCl8fG4uaXNPZGQoKSl7aS5pYWRkKGgpO24uaXN1Yih1KX1pLml1c2hybigxKTtuLml1c2hybigxKX19Zm9yKHZhciBsPTAscD0xOyhyLndvcmRzWzBdJnApPT09MCYmbDwyNjsrK2wscDw8PTEpO2lmKGw+MCl7ci5pdXNocm4obCk7d2hpbGUobC0tID4wKXtpZihhLmlzT2RkKCl8fHMuaXNPZGQoKSl7YS5pYWRkKGgpO3MuaXN1Yih1KX1hLml1c2hybigxKTtzLml1c2hybigxKX19aWYodC5jbXAocik+PTApe3QuaXN1YihyKTtpLmlzdWIoYSk7bi5pc3ViKHMpfWVsc2V7ci5pc3ViKHQpO2EuaXN1YihpKTtzLmlzdWIobil9fXJldHVybnthOmEsYjpzLGdjZDpyLml1c2hsbihvKX19O0JOLnByb3RvdHlwZS5faW52bXA9ZnVuY3Rpb24gX2ludm1wKGUpe2Fzc2VydChlLm5lZ2F0aXZlPT09MCk7YXNzZXJ0KCFlLmlzWmVybygpKTt2YXIgdD10aGlzO3ZhciByPWUuY2xvbmUoKTtpZih0Lm5lZ2F0aXZlIT09MCl7dD10LnVtb2QoZSl9ZWxzZXt0PXQuY2xvbmUoKX12YXIgaT1uZXcgQk4oMSk7dmFyIG49bmV3IEJOKDApO3ZhciBhPXIuY2xvbmUoKTt3aGlsZSh0LmNtcG4oMSk+MCYmci5jbXBuKDEpPjApe2Zvcih2YXIgcz0wLG89MTsodC53b3Jkc1swXSZvKT09PTAmJnM8MjY7KytzLG88PD0xKTtpZihzPjApe3QuaXVzaHJuKHMpO3doaWxlKHMtLSA+MCl7aWYoaS5pc09kZCgpKXtpLmlhZGQoYSl9aS5pdXNocm4oMSl9fWZvcih2YXIgaD0wLHU9MTsoci53b3Jkc1swXSZ1KT09PTAmJmg8MjY7KytoLHU8PD0xKTtpZihoPjApe3IuaXVzaHJuKGgpO3doaWxlKGgtLSA+MCl7aWYobi5pc09kZCgpKXtuLmlhZGQoYSl9bi5pdXNocm4oMSl9fWlmKHQuY21wKHIpPj0wKXt0LmlzdWIocik7aS5pc3ViKG4pfWVsc2V7ci5pc3ViKHQpO24uaXN1YihpKX19dmFyIGQ7aWYodC5jbXBuKDEpPT09MCl7ZD1pfWVsc2V7ZD1ufWlmKGQuY21wbigwKTwwKXtkLmlhZGQoZSl9cmV0dXJuIGR9O0JOLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24gZ2NkKGUpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIGUuYWJzKCk7aWYoZS5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgdD10aGlzLmNsb25lKCk7dmFyIHI9ZS5jbG9uZSgpO3QubmVnYXRpdmU9MDtyLm5lZ2F0aXZlPTA7Zm9yKHZhciBpPTA7dC5pc0V2ZW4oKSYmci5pc0V2ZW4oKTtpKyspe3QuaXVzaHJuKDEpO3IuaXVzaHJuKDEpfWRve3doaWxlKHQuaXNFdmVuKCkpe3QuaXVzaHJuKDEpfXdoaWxlKHIuaXNFdmVuKCkpe3IuaXVzaHJuKDEpfXZhciBuPXQuY21wKHIpO2lmKG48MCl7dmFyIGE9dDt0PXI7cj1hfWVsc2UgaWYobj09PTB8fHIuY21wbigxKT09PTApe2JyZWFrfXQuaXN1YihyKX13aGlsZSh0cnVlKTtyZXR1cm4gci5pdXNobG4oaSl9O0JOLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uIGludm0oZSl7cmV0dXJuIHRoaXMuZWdjZChlKS5hLnVtb2QoZSl9O0JOLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24gaXNFdmVuKCl7cmV0dXJuKHRoaXMud29yZHNbMF0mMSk9PT0wfTtCTi5wcm90b3R5cGUuaXNPZGQ9ZnVuY3Rpb24gaXNPZGQoKXtyZXR1cm4odGhpcy53b3Jkc1swXSYxKT09PTF9O0JOLnByb3RvdHlwZS5hbmRsbj1mdW5jdGlvbiBhbmRsbihlKXtyZXR1cm4gdGhpcy53b3Jkc1swXSZlfTtCTi5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24gYmluY24oZSl7YXNzZXJ0KHR5cGVvZiBlPT09XCJudW1iZXJcIik7dmFyIHQ9ZSUyNjt2YXIgcj0oZS10KS8yNjt2YXIgaT0xPDx0O2lmKHRoaXMubGVuZ3RoPD1yKXt0aGlzLl9leHBhbmQocisxKTt0aGlzLndvcmRzW3JdfD1pO3JldHVybiB0aGlzfXZhciBuPWk7Zm9yKHZhciBhPXI7biE9PTAmJmE8dGhpcy5sZW5ndGg7YSsrKXt2YXIgcz10aGlzLndvcmRzW2FdfDA7cys9bjtuPXM+Pj4yNjtzJj02NzEwODg2Mzt0aGlzLndvcmRzW2FdPXN9aWYobiE9PTApe3RoaXMud29yZHNbYV09bjt0aGlzLmxlbmd0aCsrfXJldHVybiB0aGlzfTtCTi5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uIGlzWmVybygpe3JldHVybiB0aGlzLmxlbmd0aD09PTEmJnRoaXMud29yZHNbMF09PT0wfTtCTi5wcm90b3R5cGUuY21wbj1mdW5jdGlvbiBjbXBuKGUpe3ZhciB0PWU8MDtpZih0aGlzLm5lZ2F0aXZlIT09MCYmIXQpcmV0dXJuLTE7aWYodGhpcy5uZWdhdGl2ZT09PTAmJnQpcmV0dXJuIDE7dGhpcy5fc3RyaXAoKTt2YXIgcjtpZih0aGlzLmxlbmd0aD4xKXtyPTF9ZWxzZXtpZih0KXtlPS1lfWFzc2VydChlPD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPXRoaXMud29yZHNbMF18MDtyPWk9PT1lPzA6aTxlPy0xOjF9aWYodGhpcy5uZWdhdGl2ZSE9PTApcmV0dXJuLXJ8MDtyZXR1cm4gcn07Qk4ucHJvdG90eXBlLmNtcD1mdW5jdGlvbiBjbXAoZSl7aWYodGhpcy5uZWdhdGl2ZSE9PTAmJmUubmVnYXRpdmU9PT0wKXJldHVybi0xO2lmKHRoaXMubmVnYXRpdmU9PT0wJiZlLm5lZ2F0aXZlIT09MClyZXR1cm4gMTt2YXIgdD10aGlzLnVjbXAoZSk7aWYodGhpcy5uZWdhdGl2ZSE9PTApcmV0dXJuLXR8MDtyZXR1cm4gdH07Qk4ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24gdWNtcChlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxlLmxlbmd0aClyZXR1cm4tMTt2YXIgdD0wO2Zvcih2YXIgcj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT10aGlzLndvcmRzW3JdfDA7dmFyIG49ZS53b3Jkc1tyXXwwO2lmKGk9PT1uKWNvbnRpbnVlO2lmKGk8bil7dD0tMX1lbHNlIGlmKGk+bil7dD0xfWJyZWFrfXJldHVybiB0fTtCTi5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uIGd0bihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPT09MX07Qk4ucHJvdG90eXBlLmd0PWZ1bmN0aW9uIGd0KGUpe3JldHVybiB0aGlzLmNtcChlKT09PTF9O0JOLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uIGd0ZW4oZSl7cmV0dXJuIHRoaXMuY21wbihlKT49MH07Qk4ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbiBndGUoZSl7cmV0dXJuIHRoaXMuY21wKGUpPj0wfTtCTi5wcm90b3R5cGUubHRuPWZ1bmN0aW9uIGx0bihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPT09LTF9O0JOLnByb3RvdHlwZS5sdD1mdW5jdGlvbiBsdChlKXtyZXR1cm4gdGhpcy5jbXAoZSk9PT0tMX07Qk4ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24gbHRlbihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPD0wfTtCTi5wcm90b3R5cGUubHRlPWZ1bmN0aW9uIGx0ZShlKXtyZXR1cm4gdGhpcy5jbXAoZSk8PTB9O0JOLnByb3RvdHlwZS5lcW49ZnVuY3Rpb24gZXFuKGUpe3JldHVybiB0aGlzLmNtcG4oZSk9PT0wfTtCTi5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEoZSl7cmV0dXJuIHRoaXMuY21wKGUpPT09MH07Qk4ucmVkPWZ1bmN0aW9uIHJlZChlKXtyZXR1cm4gbmV3IFJlZChlKX07Qk4ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uIHRvUmVkKGUpe2Fzc2VydCghdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO2Fzc2VydCh0aGlzLm5lZ2F0aXZlPT09MCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpO3JldHVybiBlLmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoZSl9O0JOLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uIGZyb21SZWQoKXthc3NlcnQodGhpcy5yZWQsXCJmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO3JldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX07Qk4ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbiBfZm9yY2VSZWQoZSl7dGhpcy5yZWQ9ZTtyZXR1cm4gdGhpc307Qk4ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uIGZvcmNlUmVkKGUpe2Fzc2VydCghdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpO3JldHVybiB0aGlzLl9mb3JjZVJlZChlKX07Qk4ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbiByZWRBZGQoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uIHJlZElBZGQoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7cmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcyxlKX07Qk4ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbiByZWRTdWIoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uIHJlZElTdWIoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7cmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcyxlKX07Qk4ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbiByZWRTaGwoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTtyZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24gcmVkTXVsKGUpe2Fzc2VydCh0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTIodGhpcyxlKTtyZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRJTXVsPWZ1bmN0aW9uIHJlZElNdWwoZSl7YXNzZXJ0KHRoaXMucmVkLFwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGUpO3JldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsZSl9O0JOLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24gcmVkU3FyKCl7YXNzZXJ0KHRoaXMucmVkLFwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkSVNxcj1mdW5jdGlvbiByZWRJU3FyKCl7YXNzZXJ0KHRoaXMucmVkLFwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyl9O0JOLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uIHJlZFNxcnQoKXthc3NlcnQodGhpcy5yZWQsXCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKX07Qk4ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24gcmVkSW52bSgpe2Fzc2VydCh0aGlzLnJlZCxcInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpO3RoaXMucmVkLl92ZXJpZnkxKHRoaXMpO3JldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpfTtCTi5wcm90b3R5cGUucmVkTmVnPWZ1bmN0aW9uIHJlZE5lZygpe2Fzc2VydCh0aGlzLnJlZCxcInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIik7dGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7cmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKX07Qk4ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbiByZWRQb3coZSl7YXNzZXJ0KHRoaXMucmVkJiYhZS5yZWQsXCJyZWRQb3cobm9ybWFsTnVtKVwiKTt0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtyZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsZSl9O3ZhciB1PXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07ZnVuY3Rpb24gTVByaW1lKGUsdCl7dGhpcy5uYW1lPWU7dGhpcy5wPW5ldyBCTih0LDE2KTt0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpO3RoaXMuaz1uZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO3RoaXMudG1wPXRoaXMuX3RtcCgpfU1QcmltZS5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbiBfdG1wKCl7dmFyIGU9bmV3IEJOKG51bGwpO2Uud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKTtyZXR1cm4gZX07TVByaW1lLnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uIGlyZWR1Y2UoZSl7dmFyIHQ9ZTt2YXIgcjtkb3t0aGlzLnNwbGl0KHQsdGhpcy50bXApO3Q9dGhpcy5pbXVsSyh0KTt0PXQuaWFkZCh0aGlzLnRtcCk7cj10LmJpdExlbmd0aCgpfXdoaWxlKHI+dGhpcy5uKTt2YXIgaT1yPHRoaXMubj8tMTp0LnVjbXAodGhpcy5wKTtpZihpPT09MCl7dC53b3Jkc1swXT0wO3QubGVuZ3RoPTF9ZWxzZSBpZihpPjApe3QuaXN1Yih0aGlzLnApfWVsc2V7aWYodC5zdHJpcCE9PXVuZGVmaW5lZCl7dC5zdHJpcCgpfWVsc2V7dC5fc3RyaXAoKX19cmV0dXJuIHR9O01QcmltZS5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24gc3BsaXQoZSx0KXtlLml1c2hybih0aGlzLm4sMCx0KX07TVByaW1lLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbiBpbXVsSyhlKXtyZXR1cm4gZS5pbXVsKHRoaXMuayl9O2Z1bmN0aW9uIEsyNTYoKXtNUHJpbWUuY2FsbCh0aGlzLFwiazI1NlwiLFwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmZcIil9aW5oZXJpdHMoSzI1NixNUHJpbWUpO0syNTYucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uIHNwbGl0KGUsdCl7dmFyIHI9NDE5NDMwMzt2YXIgaT1NYXRoLm1pbihlLmxlbmd0aCw5KTtmb3IodmFyIG49MDtuPGk7bisrKXt0LndvcmRzW25dPWUud29yZHNbbl19dC5sZW5ndGg9aTtpZihlLmxlbmd0aDw9OSl7ZS53b3Jkc1swXT0wO2UubGVuZ3RoPTE7cmV0dXJufXZhciBhPWUud29yZHNbOV07dC53b3Jkc1t0Lmxlbmd0aCsrXT1hJnI7Zm9yKG49MTA7bjxlLmxlbmd0aDtuKyspe3ZhciBzPWUud29yZHNbbl18MDtlLndvcmRzW24tMTBdPShzJnIpPDw0fGE+Pj4yMjthPXN9YT4+Pj0yMjtlLndvcmRzW24tMTBdPWE7aWYoYT09PTAmJmUubGVuZ3RoPjEwKXtlLmxlbmd0aC09MTB9ZWxzZXtlLmxlbmd0aC09OX19O0syNTYucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uIGltdWxLKGUpe2Uud29yZHNbZS5sZW5ndGhdPTA7ZS53b3Jkc1tlLmxlbmd0aCsxXT0wO2UubGVuZ3RoKz0yO3ZhciB0PTA7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBpPWUud29yZHNbcl18MDt0Kz1pKjk3NztlLndvcmRzW3JdPXQmNjcxMDg4NjM7dD1pKjY0Kyh0LzY3MTA4ODY0fDApfWlmKGUud29yZHNbZS5sZW5ndGgtMV09PT0wKXtlLmxlbmd0aC0tO2lmKGUud29yZHNbZS5sZW5ndGgtMV09PT0wKXtlLmxlbmd0aC0tfX1yZXR1cm4gZX07ZnVuY3Rpb24gUDIyNCgpe01QcmltZS5jYWxsKHRoaXMsXCJwMjI0XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiKX1pbmhlcml0cyhQMjI0LE1QcmltZSk7ZnVuY3Rpb24gUDE5Migpe01QcmltZS5jYWxsKHRoaXMsXCJwMTkyXCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiKX1pbmhlcml0cyhQMTkyLE1QcmltZSk7ZnVuY3Rpb24gUDI1NTE5KCl7TVByaW1lLmNhbGwodGhpcyxcIjI1NTE5XCIsXCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkXCIpfWluaGVyaXRzKFAyNTUxOSxNUHJpbWUpO1AyNTUxOS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24gaW11bEsoZSl7dmFyIHQ9MDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9KGUud29yZHNbcl18MCkqMTkrdDt2YXIgbj1pJjY3MTA4ODYzO2k+Pj49MjY7ZS53b3Jkc1tyXT1uO3Q9aX1pZih0IT09MCl7ZS53b3Jkc1tlLmxlbmd0aCsrXT10fXJldHVybiBlfTtCTi5fcHJpbWU9ZnVuY3Rpb24gcHJpbWUoZSl7aWYodVtlXSlyZXR1cm4gdVtlXTt2YXIgcHJpbWU7aWYoZT09PVwiazI1NlwiKXtwcmltZT1uZXcgSzI1Nn1lbHNlIGlmKGU9PT1cInAyMjRcIil7cHJpbWU9bmV3IFAyMjR9ZWxzZSBpZihlPT09XCJwMTkyXCIpe3ByaW1lPW5ldyBQMTkyfWVsc2UgaWYoZT09PVwicDI1NTE5XCIpe3ByaW1lPW5ldyBQMjU1MTl9ZWxzZXt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHByaW1lIFwiK2UpfXVbZV09cHJpbWU7cmV0dXJuIHByaW1lfTtmdW5jdGlvbiBSZWQoZSl7aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXt2YXIgdD1CTi5fcHJpbWUoZSk7dGhpcy5tPXQucDt0aGlzLnByaW1lPXR9ZWxzZXthc3NlcnQoZS5ndG4oMSksXCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDFcIik7dGhpcy5tPWU7dGhpcy5wcmltZT1udWxsfX1SZWQucHJvdG90eXBlLl92ZXJpZnkxPWZ1bmN0aW9uIF92ZXJpZnkxKGUpe2Fzc2VydChlLm5lZ2F0aXZlPT09MCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpO2Fzc2VydChlLnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9O1JlZC5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24gX3ZlcmlmeTIoZSx0KXthc3NlcnQoKGUubmVnYXRpdmV8dC5uZWdhdGl2ZSk9PT0wLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIik7YXNzZXJ0KGUucmVkJiZlLnJlZD09PXQucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX07UmVkLnByb3RvdHlwZS5pbW9kPWZ1bmN0aW9uIGltb2QoZSl7aWYodGhpcy5wcmltZSlyZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGUpLl9mb3JjZVJlZCh0aGlzKTttb3ZlKGUsZS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKTtyZXR1cm4gZX07UmVkLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24gbmVnKGUpe2lmKGUuaXNaZXJvKCkpe3JldHVybiBlLmNsb25lKCl9cmV0dXJuIHRoaXMubS5zdWIoZSkuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmFkZD1mdW5jdGlvbiBhZGQoZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5hZGQodCk7aWYoci5jbXAodGhpcy5tKT49MCl7ci5pc3ViKHRoaXMubSl9cmV0dXJuIHIuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24gaWFkZChlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlhZGQodCk7aWYoci5jbXAodGhpcy5tKT49MCl7ci5pc3ViKHRoaXMubSl9cmV0dXJuIHJ9O1JlZC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHN1YihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLnN1Yih0KTtpZihyLmNtcG4oMCk8MCl7ci5pYWRkKHRoaXMubSl9cmV0dXJuIHIuX2ZvcmNlUmVkKHRoaXMpfTtSZWQucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24gaXN1YihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlzdWIodCk7aWYoci5jbXBuKDApPDApe3IuaWFkZCh0aGlzLm0pfXJldHVybiByfTtSZWQucHJvdG90eXBlLnNobD1mdW5jdGlvbiBzaGwoZSx0KXt0aGlzLl92ZXJpZnkxKGUpO3JldHVybiB0aGlzLmltb2QoZS51c2hsbih0KSl9O1JlZC5wcm90b3R5cGUuaW11bD1mdW5jdGlvbiBpbXVsKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3JldHVybiB0aGlzLmltb2QoZS5pbXVsKHQpKX07UmVkLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGUsdCl7dGhpcy5fdmVyaWZ5MihlLHQpO3JldHVybiB0aGlzLmltb2QoZS5tdWwodCkpfTtSZWQucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24gaXNxcihlKXtyZXR1cm4gdGhpcy5pbXVsKGUsZS5jbG9uZSgpKX07UmVkLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24gc3FyKGUpe3JldHVybiB0aGlzLm11bChlLGUpfTtSZWQucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24gc3FydChlKXtpZihlLmlzWmVybygpKXJldHVybiBlLmNsb25lKCk7dmFyIHQ9dGhpcy5tLmFuZGxuKDMpO2Fzc2VydCh0JTI9PT0xKTtpZih0PT09Myl7dmFyIHI9dGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZSxyKX12YXIgaT10aGlzLm0uc3VibigxKTt2YXIgbj0wO3doaWxlKCFpLmlzWmVybygpJiZpLmFuZGxuKDEpPT09MCl7bisrO2kuaXVzaHJuKDEpfWFzc2VydCghaS5pc1plcm8oKSk7dmFyIGE9bmV3IEJOKDEpLnRvUmVkKHRoaXMpO3ZhciBzPWEucmVkTmVnKCk7dmFyIG89dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO3ZhciBoPXRoaXMubS5iaXRMZW5ndGgoKTtoPW5ldyBCTigyKmgqaCkudG9SZWQodGhpcyk7d2hpbGUodGhpcy5wb3coaCxvKS5jbXAocykhPT0wKXtoLnJlZElBZGQocyl9dmFyIHU9dGhpcy5wb3coaCxpKTt2YXIgZD10aGlzLnBvdyhlLGkuYWRkbigxKS5pdXNocm4oMSkpO3ZhciBjPXRoaXMucG93KGUsaSk7dmFyIGw9bjt3aGlsZShjLmNtcChhKSE9PTApe3ZhciBwPWM7Zm9yKHZhciB2PTA7cC5jbXAoYSkhPT0wO3YrKyl7cD1wLnJlZFNxcigpfWFzc2VydCh2PGwpO3ZhciBiPXRoaXMucG93KHUsbmV3IEJOKDEpLml1c2hsbihsLXYtMSkpO2Q9ZC5yZWRNdWwoYik7dT1iLnJlZFNxcigpO2M9Yy5yZWRNdWwodSk7bD12fXJldHVybiBkfTtSZWQucHJvdG90eXBlLmludm09ZnVuY3Rpb24gaW52bShlKXt2YXIgdD1lLl9pbnZtcCh0aGlzLm0pO2lmKHQubmVnYXRpdmUhPT0wKXt0Lm5lZ2F0aXZlPTA7cmV0dXJuIHRoaXMuaW1vZCh0KS5yZWROZWcoKX1lbHNle3JldHVybiB0aGlzLmltb2QodCl9fTtSZWQucHJvdG90eXBlLnBvdz1mdW5jdGlvbiBwb3coZSx0KXtpZih0LmlzWmVybygpKXJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7aWYodC5jbXBuKDEpPT09MClyZXR1cm4gZS5jbG9uZSgpO3ZhciByPTQ7dmFyIGk9bmV3IEFycmF5KDE8PHIpO2lbMF09bmV3IEJOKDEpLnRvUmVkKHRoaXMpO2lbMV09ZTtmb3IodmFyIG49MjtuPGkubGVuZ3RoO24rKyl7aVtuXT10aGlzLm11bChpW24tMV0sZSl9dmFyIGE9aVswXTt2YXIgcz0wO3ZhciBvPTA7dmFyIGg9dC5iaXRMZW5ndGgoKSUyNjtpZihoPT09MCl7aD0yNn1mb3Iobj10Lmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgdT10LndvcmRzW25dO2Zvcih2YXIgZD1oLTE7ZD49MDtkLS0pe3ZhciBjPXU+PmQmMTtpZihhIT09aVswXSl7YT10aGlzLnNxcihhKX1pZihjPT09MCYmcz09PTApe289MDtjb250aW51ZX1zPDw9MTtzfD1jO28rKztpZihvIT09ciYmKG4hPT0wfHxkIT09MCkpY29udGludWU7YT10aGlzLm11bChhLGlbc10pO289MDtzPTB9aD0yNn1yZXR1cm4gYX07UmVkLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24gY29udmVydFRvKGUpe3ZhciB0PWUudW1vZCh0aGlzLm0pO3JldHVybiB0PT09ZT90LmNsb25lKCk6dH07UmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbiBjb252ZXJ0RnJvbShlKXt2YXIgdD1lLmNsb25lKCk7dC5yZWQ9bnVsbDtyZXR1cm4gdH07Qk4ubW9udD1mdW5jdGlvbiBtb250KGUpe3JldHVybiBuZXcgTW9udChlKX07ZnVuY3Rpb24gTW9udChlKXtSZWQuY2FsbCh0aGlzLGUpO3RoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpO2lmKHRoaXMuc2hpZnQlMjYhPT0wKXt0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2fXRoaXMucj1uZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO3RoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7dGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKTt0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO3RoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpO3RoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9aW5oZXJpdHMoTW9udCxSZWQpO01vbnQucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbiBjb252ZXJ0VG8oZSl7cmV0dXJuIHRoaXMuaW1vZChlLnVzaGxuKHRoaXMuc2hpZnQpKX07TW9udC5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24gY29udmVydEZyb20oZSl7dmFyIHQ9dGhpcy5pbW9kKGUubXVsKHRoaXMucmludikpO3QucmVkPW51bGw7cmV0dXJuIHR9O01vbnQucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24gaW11bChlLHQpe2lmKGUuaXNaZXJvKCl8fHQuaXNaZXJvKCkpe2Uud29yZHNbMF09MDtlLmxlbmd0aD0xO3JldHVybiBlfXZhciByPWUuaW11bCh0KTt2YXIgaT1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTt2YXIgbj1yLmlzdWIoaSkuaXVzaHJuKHRoaXMuc2hpZnQpO3ZhciBhPW47aWYobi5jbXAodGhpcy5tKT49MCl7YT1uLmlzdWIodGhpcy5tKX1lbHNlIGlmKG4uY21wbigwKTwwKXthPW4uaWFkZCh0aGlzLm0pfXJldHVybiBhLl9mb3JjZVJlZCh0aGlzKX07TW9udC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChlLHQpe2lmKGUuaXNaZXJvKCl8fHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9ZS5tdWwodCk7dmFyIGk9ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7dmFyIG49ci5pc3ViKGkpLml1c2hybih0aGlzLnNoaWZ0KTt2YXIgYT1uO2lmKG4uY21wKHRoaXMubSk+PTApe2E9bi5pc3ViKHRoaXMubSl9ZWxzZSBpZihuLmNtcG4oMCk8MCl7YT1uLmlhZGQodGhpcy5tKX1yZXR1cm4gYS5fZm9yY2VSZWQodGhpcyl9O01vbnQucHJvdG90eXBlLmludm09ZnVuY3Rpb24gaW52bShlKXt2YXIgdD10aGlzLmltb2QoZS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO3JldHVybiB0Ll9mb3JjZVJlZCh0aGlzKX19KShmYWxzZXx8ZSx0aGlzKX0sMzUwMDpmdW5jdGlvbihlLHQscil7dmFyIGk7ZS5leHBvcnRzPWZ1bmN0aW9uIHJhbmQoZSl7aWYoIWkpaT1uZXcgUmFuZChudWxsKTtyZXR1cm4gaS5nZW5lcmF0ZShlKX07ZnVuY3Rpb24gUmFuZChlKXt0aGlzLnJhbmQ9ZX1lLmV4cG9ydHMuUmFuZD1SYW5kO1JhbmQucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uIGdlbmVyYXRlKGUpe3JldHVybiB0aGlzLl9yYW5kKGUpfTtSYW5kLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbiBfcmFuZChlKXtpZih0aGlzLnJhbmQuZ2V0Qnl0ZXMpcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhlKTt2YXIgdD1uZXcgVWludDhBcnJheShlKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPXRoaXMucmFuZC5nZXRCeXRlKCk7cmV0dXJuIHR9O2lmKHR5cGVvZiBzZWxmPT09XCJvYmplY3RcIil7aWYoc2VsZi5jcnlwdG8mJnNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyl7UmFuZC5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24gX3JhbmQoZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZSk7c2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHQpO3JldHVybiB0fX1lbHNlIGlmKHNlbGYubXNDcnlwdG8mJnNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXtSYW5kLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbiBfcmFuZChlKXt2YXIgdD1uZXcgVWludDhBcnJheShlKTtzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyh0KTtyZXR1cm4gdH19ZWxzZSBpZih0eXBlb2Ygd2luZG93PT09XCJvYmplY3RcIil7UmFuZC5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQgeWV0XCIpfX19ZWxzZXt0cnl7dmFyIG49cig2MTEzKTtpZih0eXBlb2Ygbi5yYW5kb21CeXRlcyE9PVwiZnVuY3Rpb25cIil0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkXCIpO1JhbmQucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uIF9yYW5kKGUpe3JldHVybiBuLnJhbmRvbUJ5dGVzKGUpfX1jYXRjaChlKXt9fX0sMTM4NzpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2OTExKS5CdWZmZXI7ZnVuY3Rpb24gYXNVSW50MzJBcnJheShlKXtpZighaS5pc0J1ZmZlcihlKSllPWkuZnJvbShlKTt2YXIgdD1lLmxlbmd0aC80fDA7dmFyIHI9bmV3IEFycmF5KHQpO2Zvcih2YXIgbj0wO248dDtuKyspe3Jbbl09ZS5yZWFkVUludDMyQkUobio0KX1yZXR1cm4gcn1mdW5jdGlvbiBzY3J1YlZlYyhlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO2UrKyl7ZVt0XT0wfX1mdW5jdGlvbiBjcnlwdEJsb2NrKGUsdCxyLGksbil7dmFyIGE9clswXTt2YXIgcz1yWzFdO3ZhciBvPXJbMl07dmFyIGg9clszXTt2YXIgdT1lWzBdXnRbMF07dmFyIGQ9ZVsxXV50WzFdO3ZhciBjPWVbMl1edFsyXTt2YXIgbD1lWzNdXnRbM107dmFyIHAsdixiLG07dmFyIHk9NDtmb3IodmFyIGc9MTtnPG47ZysrKXtwPWFbdT4+PjI0XV5zW2Q+Pj4xNiYyNTVdXm9bYz4+PjgmMjU1XV5oW2wmMjU1XV50W3krK107dj1hW2Q+Pj4yNF1ec1tjPj4+MTYmMjU1XV5vW2w+Pj44JjI1NV1eaFt1JjI1NV1edFt5KytdO2I9YVtjPj4+MjRdXnNbbD4+PjE2JjI1NV1eb1t1Pj4+OCYyNTVdXmhbZCYyNTVdXnRbeSsrXTttPWFbbD4+PjI0XV5zW3U+Pj4xNiYyNTVdXm9bZD4+PjgmMjU1XV5oW2MmMjU1XV50W3krK107dT1wO2Q9djtjPWI7bD1tfXA9KGlbdT4+PjI0XTw8MjR8aVtkPj4+MTYmMjU1XTw8MTZ8aVtjPj4+OCYyNTVdPDw4fGlbbCYyNTVdKV50W3krK107dj0oaVtkPj4+MjRdPDwyNHxpW2M+Pj4xNiYyNTVdPDwxNnxpW2w+Pj44JjI1NV08PDh8aVt1JjI1NV0pXnRbeSsrXTtiPShpW2M+Pj4yNF08PDI0fGlbbD4+PjE2JjI1NV08PDE2fGlbdT4+PjgmMjU1XTw8OHxpW2QmMjU1XSledFt5KytdO209KGlbbD4+PjI0XTw8MjR8aVt1Pj4+MTYmMjU1XTw8MTZ8aVtkPj4+OCYyNTVdPDw4fGlbYyYyNTVdKV50W3krK107cD1wPj4+MDt2PXY+Pj4wO2I9Yj4+PjA7bT1tPj4+MDtyZXR1cm5bcCx2LGIsbV19dmFyIG49WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdO3ZhciBhPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEFycmF5KDI1Nik7Zm9yKHZhciB0PTA7dDwyNTY7dCsrKXtpZih0PDEyOCl7ZVt0XT10PDwxfWVsc2V7ZVt0XT10PDwxXjI4M319dmFyIHI9W107dmFyIGk9W107dmFyIG49W1tdLFtdLFtdLFtdXTt2YXIgYT1bW10sW10sW10sW11dO3ZhciBzPTA7dmFyIG89MDtmb3IodmFyIGg9MDtoPDI1NjsrK2gpe3ZhciB1PW9ebzw8MV5vPDwyXm88PDNebzw8NDt1PXU+Pj44XnUmMjU1Xjk5O3Jbc109dTtpW3VdPXM7dmFyIGQ9ZVtzXTt2YXIgYz1lW2RdO3ZhciBsPWVbY107dmFyIHA9ZVt1XSoyNTdedSoxNjg0MzAwODtuWzBdW3NdPXA8PDI0fHA+Pj44O25bMV1bc109cDw8MTZ8cD4+PjE2O25bMl1bc109cDw8OHxwPj4+MjQ7blszXVtzXT1wO3A9bCoxNjg0MzAwOV5jKjY1NTM3XmQqMjU3XnMqMTY4NDMwMDg7YVswXVt1XT1wPDwyNHxwPj4+ODthWzFdW3VdPXA8PDE2fHA+Pj4xNjthWzJdW3VdPXA8PDh8cD4+PjI0O2FbM11bdV09cDtpZihzPT09MCl7cz1vPTF9ZWxzZXtzPWReZVtlW2VbbF5kXV1dO29ePWVbZVtvXV19fXJldHVybntTQk9YOnIsSU5WX1NCT1g6aSxTVUJfTUlYOm4sSU5WX1NVQl9NSVg6YX19KCk7ZnVuY3Rpb24gQUVTKGUpe3RoaXMuX2tleT1hc1VJbnQzMkFycmF5KGUpO3RoaXMuX3Jlc2V0KCl9QUVTLmJsb2NrU2l6ZT00KjQ7QUVTLmtleVNpemU9MjU2Lzg7QUVTLnByb3RvdHlwZS5ibG9ja1NpemU9QUVTLmJsb2NrU2l6ZTtBRVMucHJvdG90eXBlLmtleVNpemU9QUVTLmtleVNpemU7QUVTLnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9rZXk7dmFyIHQ9ZS5sZW5ndGg7dmFyIHI9dCs2O3ZhciBpPShyKzEpKjQ7dmFyIHM9W107Zm9yKHZhciBvPTA7bzx0O28rKyl7c1tvXT1lW29dfWZvcihvPXQ7bzxpO28rKyl7dmFyIGg9c1tvLTFdO2lmKG8ldD09PTApe2g9aDw8OHxoPj4+MjQ7aD1hLlNCT1hbaD4+PjI0XTw8MjR8YS5TQk9YW2g+Pj4xNiYyNTVdPDwxNnxhLlNCT1hbaD4+PjgmMjU1XTw8OHxhLlNCT1hbaCYyNTVdO2hePW5bby90fDBdPDwyNH1lbHNlIGlmKHQ+NiYmbyV0PT09NCl7aD1hLlNCT1hbaD4+PjI0XTw8MjR8YS5TQk9YW2g+Pj4xNiYyNTVdPDwxNnxhLlNCT1hbaD4+PjgmMjU1XTw8OHxhLlNCT1hbaCYyNTVdfXNbb109c1tvLXRdXmh9dmFyIHU9W107Zm9yKHZhciBkPTA7ZDxpO2QrKyl7dmFyIGM9aS1kO3ZhciBsPXNbYy0oZCU0PzA6NCldO2lmKGQ8NHx8Yzw9NCl7dVtkXT1sfWVsc2V7dVtkXT1hLklOVl9TVUJfTUlYWzBdW2EuU0JPWFtsPj4+MjRdXV5hLklOVl9TVUJfTUlYWzFdW2EuU0JPWFtsPj4+MTYmMjU1XV1eYS5JTlZfU1VCX01JWFsyXVthLlNCT1hbbD4+PjgmMjU1XV1eYS5JTlZfU1VCX01JWFszXVthLlNCT1hbbCYyNTVdXX19dGhpcy5fblJvdW5kcz1yO3RoaXMuX2tleVNjaGVkdWxlPXM7dGhpcy5faW52S2V5U2NoZWR1bGU9dX07QUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXc9ZnVuY3Rpb24oZSl7ZT1hc1VJbnQzMkFycmF5KGUpO3JldHVybiBjcnlwdEJsb2NrKGUsdGhpcy5fa2V5U2NoZWR1bGUsYS5TVUJfTUlYLGEuU0JPWCx0aGlzLl9uUm91bmRzKX07QUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbmNyeXB0QmxvY2tSYXcoZSk7dmFyIHI9aS5hbGxvY1Vuc2FmZSgxNik7ci53cml0ZVVJbnQzMkJFKHRbMF0sMCk7ci53cml0ZVVJbnQzMkJFKHRbMV0sNCk7ci53cml0ZVVJbnQzMkJFKHRbMl0sOCk7ci53cml0ZVVJbnQzMkJFKHRbM10sMTIpO3JldHVybiByfTtBRVMucHJvdG90eXBlLmRlY3J5cHRCbG9jaz1mdW5jdGlvbihlKXtlPWFzVUludDMyQXJyYXkoZSk7dmFyIHQ9ZVsxXTtlWzFdPWVbM107ZVszXT10O3ZhciByPWNyeXB0QmxvY2soZSx0aGlzLl9pbnZLZXlTY2hlZHVsZSxhLklOVl9TVUJfTUlYLGEuSU5WX1NCT1gsdGhpcy5fblJvdW5kcyk7dmFyIG49aS5hbGxvY1Vuc2FmZSgxNik7bi53cml0ZVVJbnQzMkJFKHJbMF0sMCk7bi53cml0ZVVJbnQzMkJFKHJbM10sNCk7bi53cml0ZVVJbnQzMkJFKHJbMl0sOCk7bi53cml0ZVVJbnQzMkJFKHJbMV0sMTIpO3JldHVybiBufTtBRVMucHJvdG90eXBlLnNjcnViPWZ1bmN0aW9uKCl7c2NydWJWZWModGhpcy5fa2V5U2NoZWR1bGUpO3NjcnViVmVjKHRoaXMuX2ludktleVNjaGVkdWxlKTtzY3J1YlZlYyh0aGlzLl9rZXkpfTtlLmV4cG9ydHMuQUVTPUFFU30sNjYyNDpmdW5jdGlvbihlLHQscil7dmFyIGk9cigxMzg3KTt2YXIgbj1yKDY5MTEpLkJ1ZmZlcjt2YXIgYT1yKDEwNDMpO3ZhciBzPXIoMzc4Mik7dmFyIG89cig3MjI1KTt2YXIgaD1yKDQ3MzQpO3ZhciB1PXIoNTk4KTtmdW5jdGlvbiB4b3JUZXN0KGUsdCl7dmFyIHI9MDtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXIrKzt2YXIgaT1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKHZhciBuPTA7bjxpOysrbil7cis9ZVtuXV50W25dfXJldHVybiByfWZ1bmN0aW9uIGNhbGNJdihlLHQscil7aWYodC5sZW5ndGg9PT0xMil7ZS5fZmluSUQ9bi5jb25jYXQoW3Qsbi5mcm9tKFswLDAsMCwxXSldKTtyZXR1cm4gbi5jb25jYXQoW3Qsbi5mcm9tKFswLDAsMCwyXSldKX12YXIgaT1uZXcgbyhyKTt2YXIgYT10Lmxlbmd0aDt2YXIgcz1hJTE2O2kudXBkYXRlKHQpO2lmKHMpe3M9MTYtcztpLnVwZGF0ZShuLmFsbG9jKHMsMCkpfWkudXBkYXRlKG4uYWxsb2MoOCwwKSk7dmFyIGg9YSo4O3ZhciBkPW4uYWxsb2MoOCk7ZC53cml0ZVVJbnRCRShoLDAsOCk7aS51cGRhdGUoZCk7ZS5fZmluSUQ9aS5zdGF0ZTt2YXIgYz1uLmZyb20oZS5fZmluSUQpO3UoYyk7cmV0dXJuIGN9ZnVuY3Rpb24gU3RyZWFtQ2lwaGVyKGUsdCxyLHMpe2EuY2FsbCh0aGlzKTt2YXIgaD1uLmFsbG9jKDQsMCk7dGhpcy5fY2lwaGVyPW5ldyBpLkFFUyh0KTt2YXIgdT10aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpO3RoaXMuX2doYXNoPW5ldyBvKHUpO3I9Y2FsY0l2KHRoaXMscix1KTt0aGlzLl9wcmV2PW4uZnJvbShyKTt0aGlzLl9jYWNoZT1uLmFsbG9jVW5zYWZlKDApO3RoaXMuX3NlY0NhY2hlPW4uYWxsb2NVbnNhZmUoMCk7dGhpcy5fZGVjcnlwdD1zO3RoaXMuX2FsZW49MDt0aGlzLl9sZW49MDt0aGlzLl9tb2RlPWU7dGhpcy5fYXV0aFRhZz1udWxsO3RoaXMuX2NhbGxlZD1mYWxzZX1zKFN0cmVhbUNpcGhlcixhKTtTdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIHQ9MTYtdGhpcy5fYWxlbiUxNjtpZih0PDE2KXt0PW4uYWxsb2ModCwwKTt0aGlzLl9naGFzaC51cGRhdGUodCl9fXRoaXMuX2NhbGxlZD10cnVlO3ZhciByPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLGUpO2lmKHRoaXMuX2RlY3J5cHQpe3RoaXMuX2doYXNoLnVwZGF0ZShlKX1lbHNle3RoaXMuX2doYXNoLnVwZGF0ZShyKX10aGlzLl9sZW4rPWUubGVuZ3RoO3JldHVybiByfTtTdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YVwiKTt2YXIgZT1oKHRoaXMuX2doYXNoLmZpbmFsKHRoaXMuX2FsZW4qOCx0aGlzLl9sZW4qOCksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQmJnhvclRlc3QoZSx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGFcIik7dGhpcy5fYXV0aFRhZz1lO3RoaXMuX2NpcGhlci5zY3J1YigpfTtTdHJlYW1DaXBoZXIucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24gZ2V0QXV0aFRhZygpe2lmKHRoaXMuX2RlY3J5cHR8fCFuLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKXRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpO3JldHVybiB0aGlzLl9hdXRoVGFnfTtTdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24gc2V0QXV0aFRhZyhlKXtpZighdGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoXCJBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKTt0aGlzLl9hdXRoVGFnPWV9O1N0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uIHNldEFBRChlKXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpO3RoaXMuX2doYXNoLnVwZGF0ZShlKTt0aGlzLl9hbGVuKz1lLmxlbmd0aH07ZS5leHBvcnRzPVN0cmVhbUNpcGhlcn0sNjU5NDpmdW5jdGlvbihlLHQscil7dmFyIGk9cigyKTt2YXIgbj1yKDI1OTgpO3ZhciBhPXIoNTg2Nik7ZnVuY3Rpb24gZ2V0Q2lwaGVycygpe3JldHVybiBPYmplY3Qua2V5cyhhKX10LmNyZWF0ZUNpcGhlcj10LkNpcGhlcj1pLmNyZWF0ZUNpcGhlcjt0LmNyZWF0ZUNpcGhlcml2PXQuQ2lwaGVyaXY9aS5jcmVhdGVDaXBoZXJpdjt0LmNyZWF0ZURlY2lwaGVyPXQuRGVjaXBoZXI9bi5jcmVhdGVEZWNpcGhlcjt0LmNyZWF0ZURlY2lwaGVyaXY9dC5EZWNpcGhlcml2PW4uY3JlYXRlRGVjaXBoZXJpdjt0Lmxpc3RDaXBoZXJzPXQuZ2V0Q2lwaGVycz1nZXRDaXBoZXJzfSwyNTk4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDY2MjQpO3ZhciBuPXIoNjkxMSkuQnVmZmVyO3ZhciBhPXIoNjM3MCk7dmFyIHM9cigxMjYpO3ZhciBvPXIoMTA0Myk7dmFyIGg9cigxMzg3KTt2YXIgdT1yKDgzNjgpO3ZhciBkPXIoMzc4Mik7ZnVuY3Rpb24gRGVjaXBoZXIoZSx0LHIpe28uY2FsbCh0aGlzKTt0aGlzLl9jYWNoZT1uZXcgU3BsaXR0ZXI7dGhpcy5fbGFzdD12b2lkIDA7dGhpcy5fY2lwaGVyPW5ldyBoLkFFUyh0KTt0aGlzLl9wcmV2PW4uZnJvbShyKTt0aGlzLl9tb2RlPWU7dGhpcy5fYXV0b3BhZGRpbmc9dHJ1ZX1kKERlY2lwaGVyLG8pO0RlY2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMuX2NhY2hlLmFkZChlKTt2YXIgdDt2YXIgcjt2YXIgaT1bXTt3aGlsZSh0PXRoaXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZykpe3I9dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsdCk7aS5wdXNoKHIpfXJldHVybiBuLmNvbmNhdChpKX07RGVjaXBoZXIucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpe3JldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxlKSl9ZWxzZSBpZihlKXt0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGhcIil9fTtEZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oZSl7dGhpcy5fYXV0b3BhZGRpbmc9ISFlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBTcGxpdHRlcigpe3RoaXMuY2FjaGU9bi5hbGxvY1Vuc2FmZSgwKX1TcGxpdHRlci5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuY2FjaGU9bi5jb25jYXQoW3RoaXMuY2FjaGUsZV0pfTtTcGxpdHRlci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXt0PXRoaXMuY2FjaGUuc2xpY2UoMCwxNik7dGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KTtyZXR1cm4gdH19ZWxzZXtpZih0aGlzLmNhY2hlLmxlbmd0aD49MTYpe3Q9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTt0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpO3JldHVybiB0fX1yZXR1cm4gbnVsbH07U3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGV9O2Z1bmN0aW9uIHVucGFkKGUpe3ZhciB0PWVbMTVdO2lmKHQ8MXx8dD4xNil7dGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGRlY3J5cHQgZGF0YVwiKX12YXIgcj0tMTt3aGlsZSgrK3I8dCl7aWYoZVtyKygxNi10KV0hPT10KXt0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhXCIpfX1pZih0PT09MTYpcmV0dXJuO3JldHVybiBlLnNsaWNlKDAsMTYtdCl9ZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdihlLHQscil7dmFyIG89YVtlLnRvTG93ZXJDYXNlKCldO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXI9bi5mcm9tKHIpO2lmKG8ubW9kZSE9PVwiR0NNXCImJnIubGVuZ3RoIT09by5pdil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBpdiBsZW5ndGggXCIrci5sZW5ndGgpO2lmKHR5cGVvZiB0PT09XCJzdHJpbmdcIil0PW4uZnJvbSh0KTtpZih0Lmxlbmd0aCE9PW8ua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQga2V5IGxlbmd0aCBcIit0Lmxlbmd0aCk7aWYoby50eXBlPT09XCJzdHJlYW1cIil7cmV0dXJuIG5ldyBzKG8ubW9kdWxlLHQscix0cnVlKX1lbHNlIGlmKG8udHlwZT09PVwiYXV0aFwiKXtyZXR1cm4gbmV3IGkoby5tb2R1bGUsdCxyLHRydWUpfXJldHVybiBuZXcgRGVjaXBoZXIoby5tb2R1bGUsdCxyKX1mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcihlLHQpe3ZhciByPWFbZS50b0xvd2VyQ2FzZSgpXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO3ZhciBpPXUodCxmYWxzZSxyLmtleSxyLml2KTtyZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihlLGkua2V5LGkuaXYpfXQuY3JlYXRlRGVjaXBoZXI9Y3JlYXRlRGVjaXBoZXI7dC5jcmVhdGVEZWNpcGhlcml2PWNyZWF0ZURlY2lwaGVyaXZ9LDI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjM3MCk7dmFyIG49cig2NjI0KTt2YXIgYT1yKDY5MTEpLkJ1ZmZlcjt2YXIgcz1yKDEyNik7dmFyIG89cigxMDQzKTt2YXIgaD1yKDEzODcpO3ZhciB1PXIoODM2OCk7dmFyIGQ9cigzNzgyKTtmdW5jdGlvbiBDaXBoZXIoZSx0LHIpe28uY2FsbCh0aGlzKTt0aGlzLl9jYWNoZT1uZXcgU3BsaXR0ZXI7dGhpcy5fY2lwaGVyPW5ldyBoLkFFUyh0KTt0aGlzLl9wcmV2PWEuZnJvbShyKTt0aGlzLl9tb2RlPWU7dGhpcy5fYXV0b3BhZGRpbmc9dHJ1ZX1kKENpcGhlcixvKTtDaXBoZXIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGUuYWRkKGUpO3ZhciB0O3ZhciByO3ZhciBpPVtdO3doaWxlKHQ9dGhpcy5fY2FjaGUuZ2V0KCkpe3I9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCk7aS5wdXNoKHIpfXJldHVybiBhLmNvbmNhdChpKX07dmFyIGM9YS5hbGxvYygxNiwxNik7Q2lwaGVyLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXtlPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLGUpO3RoaXMuX2NpcGhlci5zY3J1YigpO3JldHVybiBlfWlmKCFlLmVxdWFscyhjKSl7dGhpcy5fY2lwaGVyLnNjcnViKCk7dGhyb3cgbmV3IEVycm9yKFwiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoXCIpfX07Q2lwaGVyLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihlKXt0aGlzLl9hdXRvcGFkZGluZz0hIWU7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIFNwbGl0dGVyKCl7dGhpcy5jYWNoZT1hLmFsbG9jVW5zYWZlKDApfVNwbGl0dGVyLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5jYWNoZT1hLmNvbmNhdChbdGhpcy5jYWNoZSxlXSl9O1NwbGl0dGVyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIGU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTt0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpO3JldHVybiBlfXJldHVybiBudWxsfTtTcGxpdHRlci5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXt2YXIgZT0xNi10aGlzLmNhY2hlLmxlbmd0aDt2YXIgdD1hLmFsbG9jVW5zYWZlKGUpO3ZhciByPS0xO3doaWxlKCsrcjxlKXt0LndyaXRlVUludDgoZSxyKX1yZXR1cm4gYS5jb25jYXQoW3RoaXMuY2FjaGUsdF0pfTtmdW5jdGlvbiBjcmVhdGVDaXBoZXJpdihlLHQscil7dmFyIG89aVtlLnRvTG93ZXJDYXNlKCldO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXQ9YS5mcm9tKHQpO2lmKHQubGVuZ3RoIT09by5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBrZXkgbGVuZ3RoIFwiK3QubGVuZ3RoKTtpZih0eXBlb2Ygcj09PVwic3RyaW5nXCIpcj1hLmZyb20ocik7aWYoby5tb2RlIT09XCJHQ01cIiYmci5sZW5ndGghPT1vLml2KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGl2IGxlbmd0aCBcIityLmxlbmd0aCk7aWYoby50eXBlPT09XCJzdHJlYW1cIil7cmV0dXJuIG5ldyBzKG8ubW9kdWxlLHQscil9ZWxzZSBpZihvLnR5cGU9PT1cImF1dGhcIil7cmV0dXJuIG5ldyBuKG8ubW9kdWxlLHQscil9cmV0dXJuIG5ldyBDaXBoZXIoby5tb2R1bGUsdCxyKX1mdW5jdGlvbiBjcmVhdGVDaXBoZXIoZSx0KXt2YXIgcj1pW2UudG9Mb3dlckNhc2UoKV07aWYoIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgc3VpdGUgdHlwZVwiKTt2YXIgbj11KHQsZmFsc2Usci5rZXksci5pdik7cmV0dXJuIGNyZWF0ZUNpcGhlcml2KGUsbi5rZXksbi5pdil9dC5jcmVhdGVDaXBoZXJpdj1jcmVhdGVDaXBoZXJpdjt0LmNyZWF0ZUNpcGhlcj1jcmVhdGVDaXBoZXJ9LDcyMjU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjkxMSkuQnVmZmVyO3ZhciBuPWkuYWxsb2MoMTYsMCk7ZnVuY3Rpb24gdG9BcnJheShlKXtyZXR1cm5bZS5yZWFkVUludDMyQkUoMCksZS5yZWFkVUludDMyQkUoNCksZS5yZWFkVUludDMyQkUoOCksZS5yZWFkVUludDMyQkUoMTIpXX1mdW5jdGlvbiBmcm9tQXJyYXkoZSl7dmFyIHQ9aS5hbGxvY1Vuc2FmZSgxNik7dC53cml0ZVVJbnQzMkJFKGVbMF0+Pj4wLDApO3Qud3JpdGVVSW50MzJCRShlWzFdPj4+MCw0KTt0LndyaXRlVUludDMyQkUoZVsyXT4+PjAsOCk7dC53cml0ZVVJbnQzMkJFKGVbM10+Pj4wLDEyKTtyZXR1cm4gdH1mdW5jdGlvbiBHSEFTSChlKXt0aGlzLmg9ZTt0aGlzLnN0YXRlPWkuYWxsb2MoMTYsMCk7dGhpcy5jYWNoZT1pLmFsbG9jVW5zYWZlKDApfUdIQVNILnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbihlKXt2YXIgdD0tMTt3aGlsZSgrK3Q8ZS5sZW5ndGgpe3RoaXMuc3RhdGVbdF1ePWVbdF19dGhpcy5fbXVsdGlwbHkoKX07R0hBU0gucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe3ZhciBlPXRvQXJyYXkodGhpcy5oKTt2YXIgdD1bMCwwLDAsMF07dmFyIHIsaSxuO3ZhciBhPS0xO3doaWxlKCsrYTwxMjgpe2k9KHRoaXMuc3RhdGVbfn4oYS84KV0mMTw8Ny1hJTgpIT09MDtpZihpKXt0WzBdXj1lWzBdO3RbMV1ePWVbMV07dFsyXV49ZVsyXTt0WzNdXj1lWzNdfW49KGVbM10mMSkhPT0wO2ZvcihyPTM7cj4wO3ItLSl7ZVtyXT1lW3JdPj4+MXwoZVtyLTFdJjEpPDwzMX1lWzBdPWVbMF0+Pj4xO2lmKG4pe2VbMF09ZVswXV4yMjU8PDI0fX10aGlzLnN0YXRlPWZyb21BcnJheSh0KX07R0hBU0gucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPWkuY29uY2F0KFt0aGlzLmNhY2hlLGVdKTt2YXIgdDt3aGlsZSh0aGlzLmNhY2hlLmxlbmd0aD49MTYpe3Q9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTt0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpO3RoaXMuZ2hhc2godCl9fTtHSEFTSC5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmNhY2hlLmxlbmd0aCl7dGhpcy5naGFzaChpLmNvbmNhdChbdGhpcy5jYWNoZSxuXSwxNikpfXRoaXMuZ2hhc2goZnJvbUFycmF5KFswLGUsMCx0XSkpO3JldHVybiB0aGlzLnN0YXRlfTtlLmV4cG9ydHM9R0hBU0h9LDU5ODpmdW5jdGlvbihlKXtmdW5jdGlvbiBpbmNyMzIoZSl7dmFyIHQ9ZS5sZW5ndGg7dmFyIHI7d2hpbGUodC0tKXtyPWUucmVhZFVJbnQ4KHQpO2lmKHI9PT0yNTUpe2Uud3JpdGVVSW50OCgwLHQpfWVsc2V7cisrO2Uud3JpdGVVSW50OChyLHQpO2JyZWFrfX19ZS5leHBvcnRzPWluY3IzMn0sOTgyNTpmdW5jdGlvbihlLHQscil7dmFyIGk9cig0NzM0KTt0LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pKHQsZS5fcHJldik7ZS5fcHJldj1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHIpO3JldHVybiBlLl9wcmV2fTt0LmRlY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLl9wcmV2O2UuX3ByZXY9dDt2YXIgbj1lLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQpO3JldHVybiBpKG4scil9fSwzMjE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjkxMSkuQnVmZmVyO3ZhciBuPXIoNDczNCk7ZnVuY3Rpb24gZW5jcnlwdFN0YXJ0KGUsdCxyKXt2YXIgYT10Lmxlbmd0aDt2YXIgcz1uKHQsZS5fY2FjaGUpO2UuX2NhY2hlPWUuX2NhY2hlLnNsaWNlKGEpO2UuX3ByZXY9aS5jb25jYXQoW2UuX3ByZXYscj90OnNdKTtyZXR1cm4gc310LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWkuYWxsb2NVbnNhZmUoMCk7dmFyIGE7d2hpbGUodC5sZW5ndGgpe2lmKGUuX2NhY2hlLmxlbmd0aD09PTApe2UuX2NhY2hlPWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldik7ZS5fcHJldj1pLmFsbG9jVW5zYWZlKDApfWlmKGUuX2NhY2hlLmxlbmd0aDw9dC5sZW5ndGgpe2E9ZS5fY2FjaGUubGVuZ3RoO249aS5jb25jYXQoW24sZW5jcnlwdFN0YXJ0KGUsdC5zbGljZSgwLGEpLHIpXSk7dD10LnNsaWNlKGEpfWVsc2V7bj1pLmNvbmNhdChbbixlbmNyeXB0U3RhcnQoZSx0LHIpXSk7YnJlYWt9fXJldHVybiBufX0sMzE0NzpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2OTExKS5CdWZmZXI7ZnVuY3Rpb24gZW5jcnlwdEJ5dGUoZSx0LHIpe3ZhciBpO3ZhciBuPS0xO3ZhciBhPTg7dmFyIHM9MDt2YXIgbyxoO3doaWxlKCsrbjxhKXtpPWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldik7bz10JjE8PDctbj8xMjg6MDtoPWlbMF1ebztzKz0oaCYxMjgpPj5uJTg7ZS5fcHJldj1zaGlmdEluKGUuX3ByZXYscj9vOmgpfXJldHVybiBzfWZ1bmN0aW9uIHNoaWZ0SW4oZSx0KXt2YXIgcj1lLmxlbmd0aDt2YXIgbj0tMTt2YXIgYT1pLmFsbG9jVW5zYWZlKGUubGVuZ3RoKTtlPWkuY29uY2F0KFtlLGkuZnJvbShbdF0pXSk7d2hpbGUoKytuPHIpe2Fbbl09ZVtuXTw8MXxlW24rMV0+Pjd9cmV0dXJuIGF9dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10Lmxlbmd0aDt2YXIgYT1pLmFsbG9jVW5zYWZlKG4pO3ZhciBzPS0xO3doaWxlKCsrczxuKXthW3NdPWVuY3J5cHRCeXRlKGUsdFtzXSxyKX1yZXR1cm4gYX19LDI0MzA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjkxMSkuQnVmZmVyO2Z1bmN0aW9uIGVuY3J5cHRCeXRlKGUsdCxyKXt2YXIgbj1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGUuX3ByZXYpO3ZhciBhPW5bMF1edDtlLl9wcmV2PWkuY29uY2F0KFtlLl9wcmV2LnNsaWNlKDEpLGkuZnJvbShbcj90OmFdKV0pO3JldHVybiBhfXQuZW5jcnlwdD1mdW5jdGlvbihlLHQscil7dmFyIG49dC5sZW5ndGg7dmFyIGE9aS5hbGxvY1Vuc2FmZShuKTt2YXIgcz0tMTt3aGlsZSgrK3M8bil7YVtzXT1lbmNyeXB0Qnl0ZShlLHRbc10scil9cmV0dXJuIGF9fSwzMzYxOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDQ3MzQpO3ZhciBuPXIoNjkxMSkuQnVmZmVyO3ZhciBhPXIoNTk4KTtmdW5jdGlvbiBnZXRCbG9jayhlKXt2YXIgdD1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrUmF3KGUuX3ByZXYpO2EoZS5fcHJldik7cmV0dXJuIHR9dmFyIHM9MTY7dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9TWF0aC5jZWlsKHQubGVuZ3RoL3MpO3ZhciBhPWUuX2NhY2hlLmxlbmd0aDtlLl9jYWNoZT1uLmNvbmNhdChbZS5fY2FjaGUsbi5hbGxvY1Vuc2FmZShyKnMpXSk7Zm9yKHZhciBvPTA7bzxyO28rKyl7dmFyIGg9Z2V0QmxvY2soZSk7dmFyIHU9YStvKnM7ZS5fY2FjaGUud3JpdGVVSW50MzJCRShoWzBdLHUrMCk7ZS5fY2FjaGUud3JpdGVVSW50MzJCRShoWzFdLHUrNCk7ZS5fY2FjaGUud3JpdGVVSW50MzJCRShoWzJdLHUrOCk7ZS5fY2FjaGUud3JpdGVVSW50MzJCRShoWzNdLHUrMTIpfXZhciBkPWUuX2NhY2hlLnNsaWNlKDAsdC5sZW5ndGgpO2UuX2NhY2hlPWUuX2NhY2hlLnNsaWNlKHQubGVuZ3RoKTtyZXR1cm4gaSh0LGQpfX0sMTU5MDpmdW5jdGlvbihlLHQpe3QuZW5jcnlwdD1mdW5jdGlvbihlLHQpe3JldHVybiBlLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHQpfTt0LmRlY3J5cHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fY2lwaGVyLmRlY3J5cHRCbG9jayh0KX19LDYzNzA6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXtFQ0I6cigxNTkwKSxDQkM6cig5ODI1KSxDRkI6cigzMjEpLENGQjg6cigyNDMwKSxDRkIxOnIoMzE0NyksT0ZCOnIoMzQxMiksQ1RSOnIoMzM2MSksR0NNOnIoMzM2MSl9O3ZhciBuPXIoNTg2Nik7Zm9yKHZhciBhIGluIG4pe25bYV0ubW9kdWxlPWlbblthXS5tb2RlXX1lLmV4cG9ydHM9bn0sMzQxMjpmdW5jdGlvbihlLHQscil7dmFyIGk9cig0NzM0KTtmdW5jdGlvbiBnZXRCbG9jayhlKXtlLl9wcmV2PWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldik7cmV0dXJuIGUuX3ByZXZ9dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCl7d2hpbGUoZS5fY2FjaGUubGVuZ3RoPHQubGVuZ3RoKXtlLl9jYWNoZT1CdWZmZXIuY29uY2F0KFtlLl9jYWNoZSxnZXRCbG9jayhlKV0pfXZhciByPWUuX2NhY2hlLnNsaWNlKDAsdC5sZW5ndGgpO2UuX2NhY2hlPWUuX2NhY2hlLnNsaWNlKHQubGVuZ3RoKTtyZXR1cm4gaSh0LHIpfX0sMTI2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDEzODcpO3ZhciBuPXIoNjkxMSkuQnVmZmVyO3ZhciBhPXIoMTA0Myk7dmFyIHM9cigzNzgyKTtmdW5jdGlvbiBTdHJlYW1DaXBoZXIoZSx0LHIscyl7YS5jYWxsKHRoaXMpO3RoaXMuX2NpcGhlcj1uZXcgaS5BRVModCk7dGhpcy5fcHJldj1uLmZyb20ocik7dGhpcy5fY2FjaGU9bi5hbGxvY1Vuc2FmZSgwKTt0aGlzLl9zZWNDYWNoZT1uLmFsbG9jVW5zYWZlKDApO3RoaXMuX2RlY3J5cHQ9czt0aGlzLl9tb2RlPWV9cyhTdHJlYW1DaXBoZXIsYSk7U3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxlLHRoaXMuX2RlY3J5cHQpfTtTdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3RoaXMuX2NpcGhlci5zY3J1YigpfTtlLmV4cG9ydHM9U3RyZWFtQ2lwaGVyfSw4OTk2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDUyMzgpO3ZhciBuPXIoNjU5NCk7dmFyIGE9cig2MzcwKTt2YXIgcz1yKDYyODApO3ZhciBvPXIoODM2OCk7ZnVuY3Rpb24gY3JlYXRlQ2lwaGVyKGUsdCl7ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIHIsaTtpZihhW2VdKXtyPWFbZV0ua2V5O2k9YVtlXS5pdn1lbHNlIGlmKHNbZV0pe3I9c1tlXS5rZXkqODtpPXNbZV0uaXZ9ZWxzZXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpfXZhciBuPW8odCxmYWxzZSxyLGkpO3JldHVybiBjcmVhdGVDaXBoZXJpdihlLG4ua2V5LG4uaXYpfWZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyKGUsdCl7ZT1lLnRvTG93ZXJDYXNlKCk7dmFyIHIsaTtpZihhW2VdKXtyPWFbZV0ua2V5O2k9YVtlXS5pdn1lbHNlIGlmKHNbZV0pe3I9c1tlXS5rZXkqODtpPXNbZV0uaXZ9ZWxzZXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpfXZhciBuPW8odCxmYWxzZSxyLGkpO3JldHVybiBjcmVhdGVEZWNpcGhlcml2KGUsbi5rZXksbi5pdil9ZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYoZSx0LHIpe2U9ZS50b0xvd2VyQ2FzZSgpO2lmKGFbZV0pcmV0dXJuIG4uY3JlYXRlQ2lwaGVyaXYoZSx0LHIpO2lmKHNbZV0pcmV0dXJuIG5ldyBpKHtrZXk6dCxpdjpyLG1vZGU6ZX0pO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIil9ZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdihlLHQscil7ZT1lLnRvTG93ZXJDYXNlKCk7aWYoYVtlXSlyZXR1cm4gbi5jcmVhdGVEZWNpcGhlcml2KGUsdCxyKTtpZihzW2VdKXJldHVybiBuZXcgaSh7a2V5OnQsaXY6cixtb2RlOmUsZGVjcnlwdDp0cnVlfSk7dGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgc3VpdGUgdHlwZVwiKX1mdW5jdGlvbiBnZXRDaXBoZXJzKCl7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmNvbmNhdChuLmdldENpcGhlcnMoKSl9dC5jcmVhdGVDaXBoZXI9dC5DaXBoZXI9Y3JlYXRlQ2lwaGVyO3QuY3JlYXRlQ2lwaGVyaXY9dC5DaXBoZXJpdj1jcmVhdGVDaXBoZXJpdjt0LmNyZWF0ZURlY2lwaGVyPXQuRGVjaXBoZXI9Y3JlYXRlRGVjaXBoZXI7dC5jcmVhdGVEZWNpcGhlcml2PXQuRGVjaXBoZXJpdj1jcmVhdGVEZWNpcGhlcml2O3QubGlzdENpcGhlcnM9dC5nZXRDaXBoZXJzPWdldENpcGhlcnN9LDUyMzg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoMTA0Myk7dmFyIG49cig5NTM2KTt2YXIgYT1yKDM3ODIpO3ZhciBzPXIoNjkxMSkuQnVmZmVyO3ZhciBvPXtcImRlcy1lZGUzLWNiY1wiOm4uQ0JDLmluc3RhbnRpYXRlKG4uRURFKSxcImRlcy1lZGUzXCI6bi5FREUsXCJkZXMtZWRlLWNiY1wiOm4uQ0JDLmluc3RhbnRpYXRlKG4uRURFKSxcImRlcy1lZGVcIjpuLkVERSxcImRlcy1jYmNcIjpuLkNCQy5pbnN0YW50aWF0ZShuLkRFUyksXCJkZXMtZWNiXCI6bi5ERVN9O28uZGVzPW9bXCJkZXMtY2JjXCJdO28uZGVzMz1vW1wiZGVzLWVkZTMtY2JjXCJdO2UuZXhwb3J0cz1ERVM7YShERVMsaSk7ZnVuY3Rpb24gREVTKGUpe2kuY2FsbCh0aGlzKTt2YXIgdD1lLm1vZGUudG9Mb3dlckNhc2UoKTt2YXIgcj1vW3RdO3ZhciBuO2lmKGUuZGVjcnlwdCl7bj1cImRlY3J5cHRcIn1lbHNle249XCJlbmNyeXB0XCJ9dmFyIGE9ZS5rZXk7aWYoIXMuaXNCdWZmZXIoYSkpe2E9cy5mcm9tKGEpfWlmKHQ9PT1cImRlcy1lZGVcInx8dD09PVwiZGVzLWVkZS1jYmNcIil7YT1zLmNvbmNhdChbYSxhLnNsaWNlKDAsOCldKX12YXIgaD1lLml2O2lmKCFzLmlzQnVmZmVyKGgpKXtoPXMuZnJvbShoKX10aGlzLl9kZXM9ci5jcmVhdGUoe2tleTphLGl2OmgsdHlwZTpufSl9REVTLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBzLmZyb20odGhpcy5fZGVzLnVwZGF0ZShlKSl9O0RFUy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHMuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSl9fSw2MjgwOmZ1bmN0aW9uKGUsdCl7dFtcImRlcy1lY2JcIl09e2tleTo4LGl2OjB9O3RbXCJkZXMtY2JjXCJdPXQuZGVzPXtrZXk6OCxpdjo4fTt0W1wiZGVzLWVkZTMtY2JjXCJdPXQuZGVzMz17a2V5OjI0LGl2Ojh9O3RbXCJkZXMtZWRlM1wiXT17a2V5OjI0LGl2OjB9O3RbXCJkZXMtZWRlLWNiY1wiXT17a2V5OjE2LGl2Ojh9O3RbXCJkZXMtZWRlXCJdPXtrZXk6MTYsaXY6MH19LDcxNjY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNzExKTt2YXIgbj1yKDcyMjMpO2UuZXhwb3J0cz1jcnQ7ZnVuY3Rpb24gYmxpbmQoZSl7dmFyIHQ9Z2V0cihlKTt2YXIgcj10LnRvUmVkKGkubW9udChlLm1vZHVsdXMpKS5yZWRQb3cobmV3IGkoZS5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKTtyZXR1cm57YmxpbmRlcjpyLHVuYmxpbmRlcjp0Lmludm0oZS5tb2R1bHVzKX19ZnVuY3Rpb24gY3J0KGUsdCl7dmFyIHI9YmxpbmQodCk7dmFyIG49dC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTt2YXIgYT1pLm1vbnQodC5tb2R1bHVzKTt2YXIgcz1uZXcgaShlKS5tdWwoci5ibGluZGVyKS51bW9kKHQubW9kdWx1cyk7dmFyIG89cy50b1JlZChpLm1vbnQodC5wcmltZTEpKTt2YXIgaD1zLnRvUmVkKGkubW9udCh0LnByaW1lMikpO3ZhciB1PXQuY29lZmZpY2llbnQ7dmFyIGQ9dC5wcmltZTE7dmFyIGM9dC5wcmltZTI7dmFyIGw9by5yZWRQb3codC5leHBvbmVudDEpO3ZhciBwPWgucmVkUG93KHQuZXhwb25lbnQyKTtsPWwuZnJvbVJlZCgpO3A9cC5mcm9tUmVkKCk7dmFyIHY9bC5pc3ViKHApLmltdWwodSkudW1vZChkKTt2LmltdWwoYyk7cC5pYWRkKHYpO3JldHVybiBuZXcgQnVmZmVyKHAuaW11bChyLnVuYmxpbmRlcikudW1vZCh0Lm1vZHVsdXMpLnRvQXJyYXkoZmFsc2UsbikpfWNydC5nZXRyPWdldHI7ZnVuY3Rpb24gZ2V0cihlKXt2YXIgdD1lLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO3ZhciByPW5ldyBpKG4odCkpO3doaWxlKHIuY21wKGUubW9kdWx1cyk+PTB8fCFyLnVtb2QoZS5wcmltZTEpfHwhci51bW9kKGUucHJpbWUyKSl7cj1uZXcgaShuKHQpKX1yZXR1cm4gcn19LDkyNzY6ZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDI5MDgpfSw0MDc4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDY5MTEpLkJ1ZmZlcjt2YXIgbj1yKDk3MzkpO3ZhciBhPXIoMzcyNik7dmFyIHM9cigzNzgyKTt2YXIgbz1yKDk4MDcpO3ZhciBoPXIoNDAxMyk7dmFyIHU9cigyOTA4KTtPYmplY3Qua2V5cyh1KS5mb3JFYWNoKChmdW5jdGlvbihlKXt1W2VdLmlkPWkuZnJvbSh1W2VdLmlkLFwiaGV4XCIpO3VbZS50b0xvd2VyQ2FzZSgpXT11W2VdfSkpO2Z1bmN0aW9uIFNpZ24oZSl7YS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB0PXVbZV07aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtZXNzYWdlIGRpZ2VzdFwiKTt0aGlzLl9oYXNoVHlwZT10Lmhhc2g7dGhpcy5faGFzaD1uKHQuaGFzaCk7dGhpcy5fdGFnPXQuaWQ7dGhpcy5fc2lnblR5cGU9dC5zaWdufXMoU2lnbixhLldyaXRhYmxlKTtTaWduLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24gX3dyaXRlKGUsdCxyKXt0aGlzLl9oYXNoLnVwZGF0ZShlKTtyKCl9O1NpZ24ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbiB1cGRhdGUoZSx0KXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpZT1pLmZyb20oZSx0KTt0aGlzLl9oYXNoLnVwZGF0ZShlKTtyZXR1cm4gdGhpc307U2lnbi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiBzaWduTWV0aG9kKGUsdCl7dGhpcy5lbmQoKTt2YXIgcj10aGlzLl9oYXNoLmRpZ2VzdCgpO3ZhciBpPW8ocixlLHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyk7cmV0dXJuIHQ/aS50b1N0cmluZyh0KTppfTtmdW5jdGlvbiBWZXJpZnkoZSl7YS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB0PXVbZV07aWYoIXQpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtZXNzYWdlIGRpZ2VzdFwiKTt0aGlzLl9oYXNoPW4odC5oYXNoKTt0aGlzLl90YWc9dC5pZDt0aGlzLl9zaWduVHlwZT10LnNpZ259cyhWZXJpZnksYS5Xcml0YWJsZSk7VmVyaWZ5LnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24gX3dyaXRlKGUsdCxyKXt0aGlzLl9oYXNoLnVwZGF0ZShlKTtyKCl9O1ZlcmlmeS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShlLHQpe2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIillPWkuZnJvbShlLHQpO3RoaXMuX2hhc2gudXBkYXRlKGUpO3JldHVybiB0aGlzfTtWZXJpZnkucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnlNZXRob2QoZSx0LHIpe2lmKHR5cGVvZiB0PT09XCJzdHJpbmdcIil0PWkuZnJvbSh0LHIpO3RoaXMuZW5kKCk7dmFyIG49dGhpcy5faGFzaC5kaWdlc3QoKTtyZXR1cm4gaCh0LG4sZSx0aGlzLl9zaWduVHlwZSx0aGlzLl90YWcpfTtmdW5jdGlvbiBjcmVhdGVTaWduKGUpe3JldHVybiBuZXcgU2lnbihlKX1mdW5jdGlvbiBjcmVhdGVWZXJpZnkoZSl7cmV0dXJuIG5ldyBWZXJpZnkoZSl9ZS5leHBvcnRzPXtTaWduOmNyZWF0ZVNpZ24sVmVyaWZ5OmNyZWF0ZVZlcmlmeSxjcmVhdGVTaWduOmNyZWF0ZVNpZ24sY3JlYXRlVmVyaWZ5OmNyZWF0ZVZlcmlmeX19LDk4MDc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjkxMSkuQnVmZmVyO3ZhciBuPXIoNDg3Myk7dmFyIGE9cig3MTY2KTt2YXIgcz1yKDk0OSkuZWM7dmFyIG89cigxNjcwKTt2YXIgaD1yKDk5MDIpO3ZhciB1PXIoOTI2Nyk7ZnVuY3Rpb24gc2lnbihlLHQscixuLHMpe3ZhciBvPWgodCk7aWYoby5jdXJ2ZSl7aWYobiE9PVwiZWNkc2FcIiYmbiE9PVwiZWNkc2EvcnNhXCIpdGhyb3cgbmV3IEVycm9yKFwid3JvbmcgcHJpdmF0ZSBrZXkgdHlwZVwiKTtyZXR1cm4gZWNTaWduKGUsbyl9ZWxzZSBpZihvLnR5cGU9PT1cImRzYVwiKXtpZihuIT09XCJkc2FcIil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlXCIpO3JldHVybiBkc2FTaWduKGUsbyxyKX1lbHNle2lmKG4hPT1cInJzYVwiJiZuIT09XCJlY2RzYS9yc2FcIil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlXCIpfWU9aS5jb25jYXQoW3MsZV0pO3ZhciB1PW8ubW9kdWx1cy5ieXRlTGVuZ3RoKCk7dmFyIGQ9WzAsMV07d2hpbGUoZS5sZW5ndGgrZC5sZW5ndGgrMTx1KWQucHVzaCgyNTUpO2QucHVzaCgwKTt2YXIgYz0tMTt3aGlsZSgrK2M8ZS5sZW5ndGgpZC5wdXNoKGVbY10pO3ZhciBsPWEoZCxvKTtyZXR1cm4gbH1mdW5jdGlvbiBlY1NpZ24oZSx0KXt2YXIgcj11W3QuY3VydmUuam9pbihcIi5cIildO2lmKCFyKXRocm93IG5ldyBFcnJvcihcInVua25vd24gY3VydmUgXCIrdC5jdXJ2ZS5qb2luKFwiLlwiKSk7dmFyIG49bmV3IHMocik7dmFyIGE9bi5rZXlGcm9tUHJpdmF0ZSh0LnByaXZhdGVLZXkpO3ZhciBvPWEuc2lnbihlKTtyZXR1cm4gaS5mcm9tKG8udG9ERVIoKSl9ZnVuY3Rpb24gZHNhU2lnbihlLHQscil7dmFyIGk9dC5wYXJhbXMucHJpdl9rZXk7dmFyIG49dC5wYXJhbXMucDt2YXIgYT10LnBhcmFtcy5xO3ZhciBzPXQucGFyYW1zLmc7dmFyIGg9bmV3IG8oMCk7dmFyIHU7dmFyIGQ9Yml0czJpbnQoZSxhKS5tb2QoYSk7dmFyIGM9ZmFsc2U7dmFyIGw9Z2V0S2V5KGksYSxlLHIpO3doaWxlKGM9PT1mYWxzZSl7dT1tYWtlS2V5KGEsbCxyKTtoPW1ha2VSKHMsdSxuLGEpO2M9dS5pbnZtKGEpLmltdWwoZC5hZGQoaS5tdWwoaCkpKS5tb2QoYSk7aWYoYy5jbXBuKDApPT09MCl7Yz1mYWxzZTtoPW5ldyBvKDApfX1yZXR1cm4gdG9ERVIoaCxjKX1mdW5jdGlvbiB0b0RFUihlLHQpe2U9ZS50b0FycmF5KCk7dD10LnRvQXJyYXkoKTtpZihlWzBdJjEyOCllPVswXS5jb25jYXQoZSk7aWYodFswXSYxMjgpdD1bMF0uY29uY2F0KHQpO3ZhciByPWUubGVuZ3RoK3QubGVuZ3RoKzQ7dmFyIG49WzQ4LHIsMixlLmxlbmd0aF07bj1uLmNvbmNhdChlLFsyLHQubGVuZ3RoXSx0KTtyZXR1cm4gaS5mcm9tKG4pfWZ1bmN0aW9uIGdldEtleShlLHQscixhKXtlPWkuZnJvbShlLnRvQXJyYXkoKSk7aWYoZS5sZW5ndGg8dC5ieXRlTGVuZ3RoKCkpe3ZhciBzPWkuYWxsb2ModC5ieXRlTGVuZ3RoKCktZS5sZW5ndGgpO2U9aS5jb25jYXQoW3MsZV0pfXZhciBvPXIubGVuZ3RoO3ZhciBoPWJpdHMyb2N0ZXRzKHIsdCk7dmFyIHU9aS5hbGxvYyhvKTt1LmZpbGwoMSk7dmFyIGQ9aS5hbGxvYyhvKTtkPW4oYSxkKS51cGRhdGUodSkudXBkYXRlKGkuZnJvbShbMF0pKS51cGRhdGUoZSkudXBkYXRlKGgpLmRpZ2VzdCgpO3U9bihhLGQpLnVwZGF0ZSh1KS5kaWdlc3QoKTtkPW4oYSxkKS51cGRhdGUodSkudXBkYXRlKGkuZnJvbShbMV0pKS51cGRhdGUoZSkudXBkYXRlKGgpLmRpZ2VzdCgpO3U9bihhLGQpLnVwZGF0ZSh1KS5kaWdlc3QoKTtyZXR1cm57azpkLHY6dX19ZnVuY3Rpb24gYml0czJpbnQoZSx0KXt2YXIgcj1uZXcgbyhlKTt2YXIgaT0oZS5sZW5ndGg8PDMpLXQuYml0TGVuZ3RoKCk7aWYoaT4wKXIuaXNocm4oaSk7cmV0dXJuIHJ9ZnVuY3Rpb24gYml0czJvY3RldHMoZSx0KXtlPWJpdHMyaW50KGUsdCk7ZT1lLm1vZCh0KTt2YXIgcj1pLmZyb20oZS50b0FycmF5KCkpO2lmKHIubGVuZ3RoPHQuYnl0ZUxlbmd0aCgpKXt2YXIgbj1pLmFsbG9jKHQuYnl0ZUxlbmd0aCgpLXIubGVuZ3RoKTtyPWkuY29uY2F0KFtuLHJdKX1yZXR1cm4gcn1mdW5jdGlvbiBtYWtlS2V5KGUsdCxyKXt2YXIgYTt2YXIgcztkb3thPWkuYWxsb2MoMCk7d2hpbGUoYS5sZW5ndGgqODxlLmJpdExlbmd0aCgpKXt0LnY9bihyLHQuaykudXBkYXRlKHQudikuZGlnZXN0KCk7YT1pLmNvbmNhdChbYSx0LnZdKX1zPWJpdHMyaW50KGEsZSk7dC5rPW4ocix0LmspLnVwZGF0ZSh0LnYpLnVwZGF0ZShpLmZyb20oWzBdKSkuZGlnZXN0KCk7dC52PW4ocix0LmspLnVwZGF0ZSh0LnYpLmRpZ2VzdCgpfXdoaWxlKHMuY21wKGUpIT09LTEpO3JldHVybiBzfWZ1bmN0aW9uIG1ha2VSKGUsdCxyLGkpe3JldHVybiBlLnRvUmVkKG8ubW9udChyKSkucmVkUG93KHQpLmZyb21SZWQoKS5tb2QoaSl9ZS5leHBvcnRzPXNpZ247ZS5leHBvcnRzLmdldEtleT1nZXRLZXk7ZS5leHBvcnRzLm1ha2VLZXk9bWFrZUtleX0sNDAxMzpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2OTExKS5CdWZmZXI7dmFyIG49cigxNjcwKTt2YXIgYT1yKDk0OSkuZWM7dmFyIHM9cig5OTAyKTt2YXIgbz1yKDkyNjcpO2Z1bmN0aW9uIHZlcmlmeShlLHQscixhLG8pe3ZhciBoPXMocik7aWYoaC50eXBlPT09XCJlY1wiKXtpZihhIT09XCJlY2RzYVwiJiZhIT09XCJlY2RzYS9yc2FcIil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwdWJsaWMga2V5IHR5cGVcIik7cmV0dXJuIGVjVmVyaWZ5KGUsdCxoKX1lbHNlIGlmKGgudHlwZT09PVwiZHNhXCIpe2lmKGEhPT1cImRzYVwiKXRocm93IG5ldyBFcnJvcihcIndyb25nIHB1YmxpYyBrZXkgdHlwZVwiKTtyZXR1cm4gZHNhVmVyaWZ5KGUsdCxoKX1lbHNle2lmKGEhPT1cInJzYVwiJiZhIT09XCJlY2RzYS9yc2FcIil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwdWJsaWMga2V5IHR5cGVcIil9dD1pLmNvbmNhdChbbyx0XSk7dmFyIHU9aC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTt2YXIgZD1bMV07dmFyIGM9MDt3aGlsZSh0Lmxlbmd0aCtkLmxlbmd0aCsyPHUpe2QucHVzaCgyNTUpO2MrK31kLnB1c2goMCk7dmFyIGw9LTE7d2hpbGUoKytsPHQubGVuZ3RoKXtkLnB1c2godFtsXSl9ZD1pLmZyb20oZCk7dmFyIHA9bi5tb250KGgubW9kdWx1cyk7ZT1uZXcgbihlKS50b1JlZChwKTtlPWUucmVkUG93KG5ldyBuKGgucHVibGljRXhwb25lbnQpKTtlPWkuZnJvbShlLmZyb21SZWQoKS50b0FycmF5KCkpO3ZhciB2PWM8OD8xOjA7dT1NYXRoLm1pbihlLmxlbmd0aCxkLmxlbmd0aCk7aWYoZS5sZW5ndGghPT1kLmxlbmd0aCl2PTE7bD0tMTt3aGlsZSgrK2w8dSl2fD1lW2xdXmRbbF07cmV0dXJuIHY9PT0wfWZ1bmN0aW9uIGVjVmVyaWZ5KGUsdCxyKXt2YXIgaT1vW3IuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbihcIi5cIildO2lmKCFpKXRocm93IG5ldyBFcnJvcihcInVua25vd24gY3VydmUgXCIrci5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKFwiLlwiKSk7dmFyIG49bmV3IGEoaSk7dmFyIHM9ci5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGE7cmV0dXJuIG4udmVyaWZ5KHQsZSxzKX1mdW5jdGlvbiBkc2FWZXJpZnkoZSx0LHIpe3ZhciBpPXIuZGF0YS5wO3ZhciBhPXIuZGF0YS5xO3ZhciBvPXIuZGF0YS5nO3ZhciBoPXIuZGF0YS5wdWJfa2V5O3ZhciB1PXMuc2lnbmF0dXJlLmRlY29kZShlLFwiZGVyXCIpO3ZhciBkPXUuczt2YXIgYz11LnI7Y2hlY2tWYWx1ZShkLGEpO2NoZWNrVmFsdWUoYyxhKTt2YXIgbD1uLm1vbnQoaSk7dmFyIHA9ZC5pbnZtKGEpO3ZhciB2PW8udG9SZWQobCkucmVkUG93KG5ldyBuKHQpLm11bChwKS5tb2QoYSkpLmZyb21SZWQoKS5tdWwoaC50b1JlZChsKS5yZWRQb3coYy5tdWwocCkubW9kKGEpKS5mcm9tUmVkKCkpLm1vZChpKS5tb2QoYSk7cmV0dXJuIHYuY21wKGMpPT09MH1mdW5jdGlvbiBjaGVja1ZhbHVlKGUsdCl7aWYoZS5jbXBuKDApPD0wKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgc2lnXCIpO2lmKGUuY21wKHQpPj10KXRocm93IG5ldyBFcnJvcihcImludmFsaWQgc2lnXCIpfWUuZXhwb3J0cz12ZXJpZnl9LDQ3MzQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uIHhvcihlLHQpe3ZhciByPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTt2YXIgaT1uZXcgQnVmZmVyKHIpO2Zvcih2YXIgbj0wO248cjsrK24pe2lbbl09ZVtuXV50W25dfXJldHVybiBpfX0sMTA0MzpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2OTExKS5CdWZmZXI7dmFyIG49cigyNzgxKS5UcmFuc2Zvcm07dmFyIGE9cigxNTc2KS5TdHJpbmdEZWNvZGVyO3ZhciBzPXIoMzc4Mik7ZnVuY3Rpb24gQ2lwaGVyQmFzZShlKXtuLmNhbGwodGhpcyk7dGhpcy5oYXNoTW9kZT10eXBlb2YgZT09PVwic3RyaW5nXCI7aWYodGhpcy5oYXNoTW9kZSl7dGhpc1tlXT10aGlzLl9maW5hbE9yRGlnZXN0fWVsc2V7dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGlnZXN0fWlmKHRoaXMuX2ZpbmFsKXt0aGlzLl9fZmluYWw9dGhpcy5fZmluYWw7dGhpcy5fZmluYWw9bnVsbH10aGlzLl9kZWNvZGVyPW51bGw7dGhpcy5fZW5jb2Rpbmc9bnVsbH1zKENpcGhlckJhc2Usbik7Q2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCxyKXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2U9aS5mcm9tKGUsdCl9dmFyIG49dGhpcy5fdXBkYXRlKGUpO2lmKHRoaXMuaGFzaE1vZGUpcmV0dXJuIHRoaXM7aWYocil7bj10aGlzLl90b1N0cmluZyhuLHIpfXJldHVybiBufTtDaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbigpe307Q2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcInRyeWluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9O0NpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfTtDaXBoZXJCYXNlLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX07Q2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihlLHQscil7dmFyIGk7dHJ5e2lmKHRoaXMuaGFzaE1vZGUpe3RoaXMuX3VwZGF0ZShlKX1lbHNle3RoaXMucHVzaCh0aGlzLl91cGRhdGUoZSkpfX1jYXRjaChlKXtpPWV9ZmluYWxseXtyKGkpfX07Q2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKGUpe3ZhciB0O3RyeXt0aGlzLnB1c2godGhpcy5fX2ZpbmFsKCkpfWNhdGNoKGUpe3Q9ZX1lKHQpfTtDaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZmluYWwoKXx8aS5hbGxvYygwKTtpZihlKXt0PXRoaXMuX3RvU3RyaW5nKHQsZSx0cnVlKX1yZXR1cm4gdH07Q2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKGUsdCxyKXtpZighdGhpcy5fZGVjb2Rlcil7dGhpcy5fZGVjb2Rlcj1uZXcgYSh0KTt0aGlzLl9lbmNvZGluZz10fWlmKHRoaXMuX2VuY29kaW5nIT09dCl0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzXCIpO3ZhciBpPXRoaXMuX2RlY29kZXIud3JpdGUoZSk7aWYocil7aSs9dGhpcy5fZGVjb2Rlci5lbmQoKX1yZXR1cm4gaX07ZS5leHBvcnRzPUNpcGhlckJhc2V9LDk5NDI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoOTQ5KTt2YXIgbj1yKDcxMSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGNyZWF0ZUVDREgoZSl7cmV0dXJuIG5ldyBFQ0RIKGUpfTt2YXIgYT17c2VjcDI1NmsxOntuYW1lOlwic2VjcDI1NmsxXCIsYnl0ZUxlbmd0aDozMn0sc2VjcDIyNHIxOntuYW1lOlwicDIyNFwiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6XCJwMjU2XCIsYnl0ZUxlbmd0aDozMn0scHJpbWUxOTJ2MTp7bmFtZTpcInAxOTJcIixieXRlTGVuZ3RoOjI0fSxlZDI1NTE5OntuYW1lOlwiZWQyNTUxOVwiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZTpcInAzODRcIixieXRlTGVuZ3RoOjQ4fSxzZWNwNTIxcjE6e25hbWU6XCJwNTIxXCIsYnl0ZUxlbmd0aDo2Nn19O2EucDIyND1hLnNlY3AyMjRyMTthLnAyNTY9YS5zZWNwMjU2cjE9YS5wcmltZTI1NnYxO2EucDE5Mj1hLnNlY3AxOTJyMT1hLnByaW1lMTkydjE7YS5wMzg0PWEuc2VjcDM4NHIxO2EucDUyMT1hLnNlY3A1MjFyMTtmdW5jdGlvbiBFQ0RIKGUpe3RoaXMuY3VydmVUeXBlPWFbZV07aWYoIXRoaXMuY3VydmVUeXBlKXt0aGlzLmN1cnZlVHlwZT17bmFtZTplfX10aGlzLmN1cnZlPW5ldyBpLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpO3RoaXMua2V5cz12b2lkIDB9RUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKGUsdCl7dGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpO3JldHVybiB0aGlzLmdldFB1YmxpY0tleShlLHQpfTtFQ0RILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGUsdCxyKXt0PXR8fFwidXRmOFwiO2lmKCFCdWZmZXIuaXNCdWZmZXIoZSkpe2U9bmV3IEJ1ZmZlcihlLHQpfXZhciBpPXRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhlKS5nZXRQdWJsaWMoKTt2YXIgbj1pLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKCk7cmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKG4scix0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKX07RUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5rZXlzLmdldFB1YmxpYyh0PT09XCJjb21wcmVzc2VkXCIsdHJ1ZSk7aWYodD09PVwiaHlicmlkXCIpe2lmKHJbci5sZW5ndGgtMV0lMil7clswXT03fWVsc2V7clswXT02fX1yZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUocixlKX07RUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbihlKXtyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSxlKX07RUNESC5wcm90b3R5cGUuc2V0UHVibGljS2V5PWZ1bmN0aW9uKGUsdCl7dD10fHxcInV0ZjhcIjtpZighQnVmZmVyLmlzQnVmZmVyKGUpKXtlPW5ldyBCdWZmZXIoZSx0KX10aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhlKTtyZXR1cm4gdGhpc307RUNESC5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleT1mdW5jdGlvbihlLHQpe3Q9dHx8XCJ1dGY4XCI7aWYoIUJ1ZmZlci5pc0J1ZmZlcihlKSl7ZT1uZXcgQnVmZmVyKGUsdCl9dmFyIHI9bmV3IG4oZSk7cj1yLnRvU3RyaW5nKDE2KTt0aGlzLmtleXM9dGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKCk7dGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKHIpO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShlLHQscil7aWYoIUFycmF5LmlzQXJyYXkoZSkpe2U9ZS50b0FycmF5KCl9dmFyIGk9bmV3IEJ1ZmZlcihlKTtpZihyJiZpLmxlbmd0aDxyKXt2YXIgbj1uZXcgQnVmZmVyKHItaS5sZW5ndGgpO24uZmlsbCgwKTtpPUJ1ZmZlci5jb25jYXQoW24saV0pfWlmKCF0KXtyZXR1cm4gaX1lbHNle3JldHVybiBpLnRvU3RyaW5nKHQpfX19LDk3Mzk6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoMzc4Mik7dmFyIG49cigzNTMzKTt2YXIgYT1yKDMyMjUpO3ZhciBzPXIoNDM3MSk7dmFyIG89cigxMDQzKTtmdW5jdGlvbiBIYXNoKGUpe28uY2FsbCh0aGlzLFwiZGlnZXN0XCIpO3RoaXMuX2hhc2g9ZX1pKEhhc2gsbyk7SGFzaC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9oYXNoLnVwZGF0ZShlKX07SGFzaC5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KCl9O2UuZXhwb3J0cz1mdW5jdGlvbiBjcmVhdGVIYXNoKGUpe2U9ZS50b0xvd2VyQ2FzZSgpO2lmKGU9PT1cIm1kNVwiKXJldHVybiBuZXcgbjtpZihlPT09XCJybWQxNjBcInx8ZT09PVwicmlwZW1kMTYwXCIpcmV0dXJuIG5ldyBhO3JldHVybiBuZXcgSGFzaChzKGUpKX19LDQ1MDpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNTMzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuKG5ldyBpKS51cGRhdGUoZSkuZGlnZXN0KCl9fSw0ODczOmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDM3ODIpO3ZhciBuPXIoODExOSk7dmFyIGE9cigxMDQzKTt2YXIgcz1yKDY5MTEpLkJ1ZmZlcjt2YXIgbz1yKDQ1MCk7dmFyIGg9cigzMjI1KTt2YXIgdT1yKDQzNzEpO3ZhciBkPXMuYWxsb2MoMTI4KTtmdW5jdGlvbiBIbWFjKGUsdCl7YS5jYWxsKHRoaXMsXCJkaWdlc3RcIik7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXt0PXMuZnJvbSh0KX12YXIgcj1lPT09XCJzaGE1MTJcInx8ZT09PVwic2hhMzg0XCI/MTI4OjY0O3RoaXMuX2FsZz1lO3RoaXMuX2tleT10O2lmKHQubGVuZ3RoPnIpe3ZhciBpPWU9PT1cInJtZDE2MFwiP25ldyBoOnUoZSk7dD1pLnVwZGF0ZSh0KS5kaWdlc3QoKX1lbHNlIGlmKHQubGVuZ3RoPHIpe3Q9cy5jb25jYXQoW3QsZF0scil9dmFyIG49dGhpcy5faXBhZD1zLmFsbG9jVW5zYWZlKHIpO3ZhciBvPXRoaXMuX29wYWQ9cy5hbGxvY1Vuc2FmZShyKTtmb3IodmFyIGM9MDtjPHI7YysrKXtuW2NdPXRbY11eNTQ7b1tjXT10W2NdXjkyfXRoaXMuX2hhc2g9ZT09PVwicm1kMTYwXCI/bmV3IGg6dShlKTt0aGlzLl9oYXNoLnVwZGF0ZShuKX1pKEhtYWMsYSk7SG1hYy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9oYXNoLnVwZGF0ZShlKX07SG1hYy5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faGFzaC5kaWdlc3QoKTt2YXIgdD10aGlzLl9hbGc9PT1cInJtZDE2MFwiP25ldyBoOnUodGhpcy5fYWxnKTtyZXR1cm4gdC51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGUpLmRpZ2VzdCgpfTtlLmV4cG9ydHM9ZnVuY3Rpb24gY3JlYXRlSG1hYyhlLHQpe2U9ZS50b0xvd2VyQ2FzZSgpO2lmKGU9PT1cInJtZDE2MFwifHxlPT09XCJyaXBlbWQxNjBcIil7cmV0dXJuIG5ldyBIbWFjKFwicm1kMTYwXCIsdCl9aWYoZT09PVwibWQ1XCIpe3JldHVybiBuZXcgbihvLHQpfXJldHVybiBuZXcgSG1hYyhlLHQpfX0sODExOTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDY5MTEpLkJ1ZmZlcjt2YXIgYT1yKDEwNDMpO3ZhciBzPW4uYWxsb2MoMTI4KTt2YXIgbz02NDtmdW5jdGlvbiBIbWFjKGUsdCl7YS5jYWxsKHRoaXMsXCJkaWdlc3RcIik7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXt0PW4uZnJvbSh0KX10aGlzLl9hbGc9ZTt0aGlzLl9rZXk9dDtpZih0Lmxlbmd0aD5vKXt0PWUodCl9ZWxzZSBpZih0Lmxlbmd0aDxvKXt0PW4uY29uY2F0KFt0LHNdLG8pfXZhciByPXRoaXMuX2lwYWQ9bi5hbGxvY1Vuc2FmZShvKTt2YXIgaT10aGlzLl9vcGFkPW4uYWxsb2NVbnNhZmUobyk7Zm9yKHZhciBoPTA7aDxvO2grKyl7cltoXT10W2hdXjU0O2lbaF09dFtoXV45Mn10aGlzLl9oYXNoPVtyXX1pKEhtYWMsYSk7SG1hYy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9oYXNoLnB1c2goZSl9O0htYWMucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2FsZyhuLmNvbmNhdCh0aGlzLl9oYXNoKSk7cmV0dXJuIHRoaXMuX2FsZyhuLmNvbmNhdChbdGhpcy5fb3BhZCxlXSkpfTtlLmV4cG9ydHM9SG1hY30sOTUzNjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC51dGlscz1yKDUzMzQpO3QuQ2lwaGVyPXIoOTg3Nik7dC5ERVM9cigxMDE2KTt0LkNCQz1yKDg2NDEpO3QuRURFPXIoNjE1OSl9LDg2NDE6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoMzUyMyk7dmFyIG49cigzNzgyKTt2YXIgYT17fTtmdW5jdGlvbiBDQkNTdGF0ZShlKXtpLmVxdWFsKGUubGVuZ3RoLDgsXCJJbnZhbGlkIElWIGxlbmd0aFwiKTt0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIHQ9MDt0PHRoaXMuaXYubGVuZ3RoO3QrKyl0aGlzLml2W3RdPWVbdF19ZnVuY3Rpb24gaW5zdGFudGlhdGUoZSl7ZnVuY3Rpb24gQ0JDKHQpe2UuY2FsbCh0aGlzLHQpO3RoaXMuX2NiY0luaXQoKX1uKENCQyxlKTt2YXIgdD1PYmplY3Qua2V5cyhhKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGk9dFtyXTtDQkMucHJvdG90eXBlW2ldPWFbaV19Q0JDLmNyZWF0ZT1mdW5jdGlvbiBjcmVhdGUoZSl7cmV0dXJuIG5ldyBDQkMoZSl9O3JldHVybiBDQkN9dC5pbnN0YW50aWF0ZT1pbnN0YW50aWF0ZTthLl9jYmNJbml0PWZ1bmN0aW9uIF9jYmNJbml0KCl7dmFyIGU9bmV3IENCQ1N0YXRlKHRoaXMub3B0aW9ucy5pdik7dGhpcy5fY2JjU3RhdGU9ZX07YS5fdXBkYXRlPWZ1bmN0aW9uIF91cGRhdGUoZSx0LHIsaSl7dmFyIG49dGhpcy5fY2JjU3RhdGU7dmFyIGE9dGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlO3ZhciBzPW4uaXY7aWYodGhpcy50eXBlPT09XCJlbmNyeXB0XCIpe2Zvcih2YXIgbz0wO288dGhpcy5ibG9ja1NpemU7bysrKXNbb11ePWVbdCtvXTthLl91cGRhdGUuY2FsbCh0aGlzLHMsMCxyLGkpO2Zvcih2YXIgbz0wO288dGhpcy5ibG9ja1NpemU7bysrKXNbb109cltpK29dfWVsc2V7YS5fdXBkYXRlLmNhbGwodGhpcyxlLHQscixpKTtmb3IodmFyIG89MDtvPHRoaXMuYmxvY2tTaXplO28rKylyW2krb11ePXNbb107Zm9yKHZhciBvPTA7bzx0aGlzLmJsb2NrU2l6ZTtvKyspc1tvXT1lW3Qrb119fX0sOTg3NjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigzNTIzKTtmdW5jdGlvbiBDaXBoZXIoZSl7dGhpcy5vcHRpb25zPWU7dGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlO3RoaXMuYmxvY2tTaXplPTg7dGhpcy5faW5pdCgpO3RoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7dGhpcy5idWZmZXJPZmY9MH1lLmV4cG9ydHM9Q2lwaGVyO0NpcGhlci5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gX2luaXQoKXt9O0NpcGhlci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShlKXtpZihlLmxlbmd0aD09PTApcmV0dXJuW107aWYodGhpcy50eXBlPT09XCJkZWNyeXB0XCIpcmV0dXJuIHRoaXMuX3VwZGF0ZURlY3J5cHQoZSk7ZWxzZSByZXR1cm4gdGhpcy5fdXBkYXRlRW5jcnlwdChlKX07Q2lwaGVyLnByb3RvdHlwZS5fYnVmZmVyPWZ1bmN0aW9uIF9idWZmZXIoZSx0KXt2YXIgcj1NYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGgtdGhpcy5idWZmZXJPZmYsZS5sZW5ndGgtdCk7Zm9yKHZhciBpPTA7aTxyO2krKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZitpXT1lW3QraV07dGhpcy5idWZmZXJPZmYrPXI7cmV0dXJuIHJ9O0NpcGhlci5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uIF9mbHVzaEJ1ZmZlcihlLHQpe3RoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLGUsdCk7dGhpcy5idWZmZXJPZmY9MDtyZXR1cm4gdGhpcy5ibG9ja1NpemV9O0NpcGhlci5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQ9ZnVuY3Rpb24gX3VwZGF0ZUVuY3J5cHQoZSl7dmFyIHQ9MDt2YXIgcj0wO3ZhciBpPSh0aGlzLmJ1ZmZlck9mZitlLmxlbmd0aCkvdGhpcy5ibG9ja1NpemV8MDt2YXIgbj1uZXcgQXJyYXkoaSp0aGlzLmJsb2NrU2l6ZSk7aWYodGhpcy5idWZmZXJPZmYhPT0wKXt0Kz10aGlzLl9idWZmZXIoZSx0KTtpZih0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aClyKz10aGlzLl9mbHVzaEJ1ZmZlcihuLHIpfXZhciBhPWUubGVuZ3RoLShlLmxlbmd0aC10KSV0aGlzLmJsb2NrU2l6ZTtmb3IoO3Q8YTt0Kz10aGlzLmJsb2NrU2l6ZSl7dGhpcy5fdXBkYXRlKGUsdCxuLHIpO3IrPXRoaXMuYmxvY2tTaXplfWZvcig7dDxlLmxlbmd0aDt0KyssdGhpcy5idWZmZXJPZmYrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl09ZVt0XTtyZXR1cm4gbn07Q2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbiBfdXBkYXRlRGVjcnlwdChlKXt2YXIgdD0wO3ZhciByPTA7dmFyIGk9TWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZitlLmxlbmd0aCkvdGhpcy5ibG9ja1NpemUpLTE7dmFyIG49bmV3IEFycmF5KGkqdGhpcy5ibG9ja1NpemUpO2Zvcig7aT4wO2ktLSl7dCs9dGhpcy5fYnVmZmVyKGUsdCk7cis9dGhpcy5fZmx1c2hCdWZmZXIobixyKX10Kz10aGlzLl9idWZmZXIoZSx0KTtyZXR1cm4gbn07Q2lwaGVyLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbiBmaW5hbChlKXt2YXIgdDtpZihlKXQ9dGhpcy51cGRhdGUoZSk7dmFyIHI7aWYodGhpcy50eXBlPT09XCJlbmNyeXB0XCIpcj10aGlzLl9maW5hbEVuY3J5cHQoKTtlbHNlIHI9dGhpcy5fZmluYWxEZWNyeXB0KCk7aWYodClyZXR1cm4gdC5jb25jYXQocik7ZWxzZSByZXR1cm4gcn07Q2lwaGVyLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uIF9wYWQoZSx0KXtpZih0PT09MClyZXR1cm4gZmFsc2U7d2hpbGUodDxlLmxlbmd0aCllW3QrK109MDtyZXR1cm4gdHJ1ZX07Q2lwaGVyLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uIF9maW5hbEVuY3J5cHQoKXtpZighdGhpcy5fcGFkKHRoaXMuYnVmZmVyLHRoaXMuYnVmZmVyT2ZmKSlyZXR1cm5bXTt2YXIgZT1uZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO3RoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLGUsMCk7cmV0dXJuIGV9O0NpcGhlci5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uIF91bnBhZChlKXtyZXR1cm4gZX07Q2lwaGVyLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0PWZ1bmN0aW9uIF9maW5hbERlY3J5cHQoKXtpLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLFwiTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHRcIik7dmFyIGU9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTt0aGlzLl9mbHVzaEJ1ZmZlcihlLDApO3JldHVybiB0aGlzLl91bnBhZChlKX19LDEwMTY6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoMzUyMyk7dmFyIG49cigzNzgyKTt2YXIgYT1yKDUzMzQpO3ZhciBzPXIoOTg3Nik7ZnVuY3Rpb24gREVTU3RhdGUoKXt0aGlzLnRtcD1uZXcgQXJyYXkoMik7dGhpcy5rZXlzPW51bGx9ZnVuY3Rpb24gREVTKGUpe3MuY2FsbCh0aGlzLGUpO3ZhciB0PW5ldyBERVNTdGF0ZTt0aGlzLl9kZXNTdGF0ZT10O3RoaXMuZGVyaXZlS2V5cyh0LGUua2V5KX1uKERFUyxzKTtlLmV4cG9ydHM9REVTO0RFUy5jcmVhdGU9ZnVuY3Rpb24gY3JlYXRlKGUpe3JldHVybiBuZXcgREVTKGUpfTt2YXIgbz1bMSwxLDIsMiwyLDIsMiwyLDEsMiwyLDIsMiwyLDIsMV07REVTLnByb3RvdHlwZS5kZXJpdmVLZXlzPWZ1bmN0aW9uIGRlcml2ZUtleXMoZSx0KXtlLmtleXM9bmV3IEFycmF5KDE2KjIpO2kuZXF1YWwodC5sZW5ndGgsdGhpcy5ibG9ja1NpemUsXCJJbnZhbGlkIGtleSBsZW5ndGhcIik7dmFyIHI9YS5yZWFkVUludDMyQkUodCwwKTt2YXIgbj1hLnJlYWRVSW50MzJCRSh0LDQpO2EucGMxKHIsbixlLnRtcCwwKTtyPWUudG1wWzBdO249ZS50bXBbMV07Zm9yKHZhciBzPTA7czxlLmtleXMubGVuZ3RoO3MrPTIpe3ZhciBoPW9bcz4+PjFdO3I9YS5yMjhzaGwocixoKTtuPWEucjI4c2hsKG4saCk7YS5wYzIocixuLGUua2V5cyxzKX19O0RFUy5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiBfdXBkYXRlKGUsdCxyLGkpe3ZhciBuPXRoaXMuX2Rlc1N0YXRlO3ZhciBzPWEucmVhZFVJbnQzMkJFKGUsdCk7dmFyIG89YS5yZWFkVUludDMyQkUoZSx0KzQpO2EuaXAocyxvLG4udG1wLDApO3M9bi50bXBbMF07bz1uLnRtcFsxXTtpZih0aGlzLnR5cGU9PT1cImVuY3J5cHRcIil0aGlzLl9lbmNyeXB0KG4scyxvLG4udG1wLDApO2Vsc2UgdGhpcy5fZGVjcnlwdChuLHMsbyxuLnRtcCwwKTtzPW4udG1wWzBdO289bi50bXBbMV07YS53cml0ZVVJbnQzMkJFKHIscyxpKTthLndyaXRlVUludDMyQkUocixvLGkrNCl9O0RFUy5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbiBfcGFkKGUsdCl7dmFyIHI9ZS5sZW5ndGgtdDtmb3IodmFyIGk9dDtpPGUubGVuZ3RoO2krKyllW2ldPXI7cmV0dXJuIHRydWV9O0RFUy5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uIF91bnBhZChlKXt2YXIgdD1lW2UubGVuZ3RoLTFdO2Zvcih2YXIgcj1lLmxlbmd0aC10O3I8ZS5sZW5ndGg7cisrKWkuZXF1YWwoZVtyXSx0KTtyZXR1cm4gZS5zbGljZSgwLGUubGVuZ3RoLXQpfTtERVMucHJvdG90eXBlLl9lbmNyeXB0PWZ1bmN0aW9uIF9lbmNyeXB0KGUsdCxyLGksbil7dmFyIHM9dDt2YXIgbz1yO2Zvcih2YXIgaD0wO2g8ZS5rZXlzLmxlbmd0aDtoKz0yKXt2YXIgdT1lLmtleXNbaF07dmFyIGQ9ZS5rZXlzW2grMV07YS5leHBhbmQobyxlLnRtcCwwKTt1Xj1lLnRtcFswXTtkXj1lLnRtcFsxXTt2YXIgYz1hLnN1YnN0aXR1dGUodSxkKTt2YXIgbD1hLnBlcm11dGUoYyk7dmFyIHA9bztvPShzXmwpPj4+MDtzPXB9YS5yaXAobyxzLGksbil9O0RFUy5wcm90b3R5cGUuX2RlY3J5cHQ9ZnVuY3Rpb24gX2RlY3J5cHQoZSx0LHIsaSxuKXt2YXIgcz1yO3ZhciBvPXQ7Zm9yKHZhciBoPWUua2V5cy5sZW5ndGgtMjtoPj0wO2gtPTIpe3ZhciB1PWUua2V5c1toXTt2YXIgZD1lLmtleXNbaCsxXTthLmV4cGFuZChzLGUudG1wLDApO3VePWUudG1wWzBdO2RePWUudG1wWzFdO3ZhciBjPWEuc3Vic3RpdHV0ZSh1LGQpO3ZhciBsPWEucGVybXV0ZShjKTt2YXIgcD1zO3M9KG9ebCk+Pj4wO289cH1hLnJpcChzLG8saSxuKX19LDYxNTk6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoMzUyMyk7dmFyIG49cigzNzgyKTt2YXIgYT1yKDk4NzYpO3ZhciBzPXIoMTAxNik7ZnVuY3Rpb24gRURFU3RhdGUoZSx0KXtpLmVxdWFsKHQubGVuZ3RoLDI0LFwiSW52YWxpZCBrZXkgbGVuZ3RoXCIpO3ZhciByPXQuc2xpY2UoMCw4KTt2YXIgbj10LnNsaWNlKDgsMTYpO3ZhciBhPXQuc2xpY2UoMTYsMjQpO2lmKGU9PT1cImVuY3J5cHRcIil7dGhpcy5jaXBoZXJzPVtzLmNyZWF0ZSh7dHlwZTpcImVuY3J5cHRcIixrZXk6cn0pLHMuY3JlYXRlKHt0eXBlOlwiZGVjcnlwdFwiLGtleTpufSkscy5jcmVhdGUoe3R5cGU6XCJlbmNyeXB0XCIsa2V5OmF9KV19ZWxzZXt0aGlzLmNpcGhlcnM9W3MuY3JlYXRlKHt0eXBlOlwiZGVjcnlwdFwiLGtleTphfSkscy5jcmVhdGUoe3R5cGU6XCJlbmNyeXB0XCIsa2V5Om59KSxzLmNyZWF0ZSh7dHlwZTpcImRlY3J5cHRcIixrZXk6cn0pXX19ZnVuY3Rpb24gRURFKGUpe2EuY2FsbCh0aGlzLGUpO3ZhciB0PW5ldyBFREVTdGF0ZSh0aGlzLnR5cGUsdGhpcy5vcHRpb25zLmtleSk7dGhpcy5fZWRlU3RhdGU9dH1uKEVERSxhKTtlLmV4cG9ydHM9RURFO0VERS5jcmVhdGU9ZnVuY3Rpb24gY3JlYXRlKGUpe3JldHVybiBuZXcgRURFKGUpfTtFREUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gX3VwZGF0ZShlLHQscixpKXt2YXIgbj10aGlzLl9lZGVTdGF0ZTtuLmNpcGhlcnNbMF0uX3VwZGF0ZShlLHQscixpKTtuLmNpcGhlcnNbMV0uX3VwZGF0ZShyLGkscixpKTtuLmNpcGhlcnNbMl0uX3VwZGF0ZShyLGkscixpKX07RURFLnByb3RvdHlwZS5fcGFkPXMucHJvdG90eXBlLl9wYWQ7RURFLnByb3RvdHlwZS5fdW5wYWQ9cy5wcm90b3R5cGUuX3VucGFkfSw1MzM0OmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dC5yZWFkVUludDMyQkU9ZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGUsdCl7dmFyIHI9ZVswK3RdPDwyNHxlWzErdF08PDE2fGVbMit0XTw8OHxlWzMrdF07cmV0dXJuIHI+Pj4wfTt0LndyaXRlVUludDMyQkU9ZnVuY3Rpb24gd3JpdGVVSW50MzJCRShlLHQscil7ZVswK3JdPXQ+Pj4yNDtlWzErcl09dD4+PjE2JjI1NTtlWzIrcl09dD4+PjgmMjU1O2VbMytyXT10JjI1NX07dC5pcD1mdW5jdGlvbiBpcChlLHQscixpKXt2YXIgbj0wO3ZhciBhPTA7Zm9yKHZhciBzPTY7cz49MDtzLT0yKXtmb3IodmFyIG89MDtvPD0yNDtvKz04KXtuPDw9MTtufD10Pj4+bytzJjF9Zm9yKHZhciBvPTA7bzw9MjQ7bys9OCl7bjw8PTE7bnw9ZT4+Pm8rcyYxfX1mb3IodmFyIHM9NjtzPj0wO3MtPTIpe2Zvcih2YXIgbz0xO288PTI1O28rPTgpe2E8PD0xO2F8PXQ+Pj5vK3MmMX1mb3IodmFyIG89MTtvPD0yNTtvKz04KXthPDw9MTthfD1lPj4+bytzJjF9fXJbaSswXT1uPj4+MDtyW2krMV09YT4+PjB9O3QucmlwPWZ1bmN0aW9uIHJpcChlLHQscixpKXt2YXIgbj0wO3ZhciBhPTA7Zm9yKHZhciBzPTA7czw0O3MrKyl7Zm9yKHZhciBvPTI0O28+PTA7by09OCl7bjw8PTE7bnw9dD4+Pm8rcyYxO248PD0xO258PWU+Pj5vK3MmMX19Zm9yKHZhciBzPTQ7czw4O3MrKyl7Zm9yKHZhciBvPTI0O28+PTA7by09OCl7YTw8PTE7YXw9dD4+Pm8rcyYxO2E8PD0xO2F8PWU+Pj5vK3MmMX19cltpKzBdPW4+Pj4wO3JbaSsxXT1hPj4+MH07dC5wYzE9ZnVuY3Rpb24gcGMxKGUsdCxyLGkpe3ZhciBuPTA7dmFyIGE9MDtmb3IodmFyIHM9NztzPj01O3MtLSl7Zm9yKHZhciBvPTA7bzw9MjQ7bys9OCl7bjw8PTE7bnw9dD4+bytzJjF9Zm9yKHZhciBvPTA7bzw9MjQ7bys9OCl7bjw8PTE7bnw9ZT4+bytzJjF9fWZvcih2YXIgbz0wO288PTI0O28rPTgpe248PD0xO258PXQ+Pm8rcyYxfWZvcih2YXIgcz0xO3M8PTM7cysrKXtmb3IodmFyIG89MDtvPD0yNDtvKz04KXthPDw9MTthfD10Pj5vK3MmMX1mb3IodmFyIG89MDtvPD0yNDtvKz04KXthPDw9MTthfD1lPj5vK3MmMX19Zm9yKHZhciBvPTA7bzw9MjQ7bys9OCl7YTw8PTE7YXw9ZT4+bytzJjF9cltpKzBdPW4+Pj4wO3JbaSsxXT1hPj4+MH07dC5yMjhzaGw9ZnVuY3Rpb24gcjI4c2hsKGUsdCl7cmV0dXJuIGU8PHQmMjY4NDM1NDU1fGU+Pj4yOC10fTt2YXIgcj1bMTQsMTEsMTcsNCwyNywyMywyNSwwLDEzLDIyLDcsMTgsNSw5LDE2LDI0LDIsMjAsMTIsMjEsMSw4LDE1LDI2LDE1LDQsMjUsMTksOSwxLDI2LDE2LDUsMTEsMjMsOCwxMiw3LDE3LDAsMjIsMywxMCwxNCw2LDIwLDI3LDI0XTt0LnBjMj1mdW5jdGlvbiBwYzIoZSx0LGksbil7dmFyIGE9MDt2YXIgcz0wO3ZhciBvPXIubGVuZ3RoPj4+MTtmb3IodmFyIGg9MDtoPG87aCsrKXthPDw9MTthfD1lPj4+cltoXSYxfWZvcih2YXIgaD1vO2g8ci5sZW5ndGg7aCsrKXtzPDw9MTtzfD10Pj4+cltoXSYxfWlbbiswXT1hPj4+MDtpW24rMV09cz4+PjB9O3QuZXhwYW5kPWZ1bmN0aW9uIGV4cGFuZChlLHQscil7dmFyIGk9MDt2YXIgbj0wO2k9KGUmMSk8PDV8ZT4+PjI3O2Zvcih2YXIgYT0yMzthPj0xNTthLT00KXtpPDw9NjtpfD1lPj4+YSY2M31mb3IodmFyIGE9MTE7YT49MzthLT00KXtufD1lPj4+YSY2MztuPDw9Nn1ufD0oZSYzMSk8PDF8ZT4+PjMxO3RbciswXT1pPj4+MDt0W3IrMV09bj4+PjB9O3ZhciBpPVsxNCwwLDQsMTUsMTMsNywxLDQsMiwxNCwxNSwyLDExLDEzLDgsMSwzLDEwLDEwLDYsNiwxMiwxMiwxMSw1LDksOSw1LDAsMyw3LDgsNCwxNSwxLDEyLDE0LDgsOCwyLDEzLDQsNiw5LDIsMSwxMSw3LDE1LDUsMTIsMTEsOSwzLDcsMTQsMywxMCwxMCwwLDUsNiwwLDEzLDE1LDMsMSwxMyw4LDQsMTQsNyw2LDE1LDExLDIsMyw4LDQsMTQsOSwxMiw3LDAsMiwxLDEzLDEwLDEyLDYsMCw5LDUsMTEsMTAsNSwwLDEzLDE0LDgsNywxMCwxMSwxLDEwLDMsNCwxNSwxMyw0LDEsMiw1LDExLDgsNiwxMiw3LDYsMTIsOSwwLDMsNSwyLDE0LDE1LDksMTAsMTMsMCw3LDksMCwxNCw5LDYsMywzLDQsMTUsNiw1LDEwLDEsMiwxMyw4LDEyLDUsNywxNCwxMSwxMiw0LDExLDIsMTUsOCwxLDEzLDEsNiwxMCw0LDEzLDksMCw4LDYsMTUsOSwzLDgsMCw3LDExLDQsMSwxNSwyLDE0LDEyLDMsNSwxMSwxMCw1LDE0LDIsNywxMiw3LDEzLDEzLDgsMTQsMTEsMyw1LDAsNiw2LDE1LDksMCwxMCwzLDEsNCwyLDcsOCwyLDUsMTIsMTEsMSwxMiwxMCw0LDE0LDE1LDksMTAsMyw2LDE1LDksMCwwLDYsMTIsMTAsMTEsMSw3LDEzLDEzLDgsMTUsOSwxLDQsMyw1LDE0LDExLDUsMTIsMiw3LDgsMiw0LDE0LDIsMTQsMTIsMTEsNCwyLDEsMTIsNyw0LDEwLDcsMTEsMTMsNiwxLDgsNSw1LDAsMywxNSwxNSwxMCwxMywzLDAsOSwxNCw4LDksNiw0LDExLDIsOCwxLDEyLDExLDcsMTAsMSwxMywxNCw3LDIsOCwxMywxNSw2LDksMTUsMTIsMCw1LDksNiwxMCwzLDQsMCw1LDE0LDMsMTIsMTAsMSwxNSwxMCw0LDE1LDIsOSw3LDIsMTIsNiw5LDgsNSwwLDYsMTMsMSwzLDEzLDQsMTQsMTQsMCw3LDExLDUsMywxMSw4LDksNCwxNCwzLDE1LDIsNSwxMiwyLDksOCw1LDEyLDE1LDMsMTAsNywxMSwwLDE0LDQsMSwxMCw3LDEsNiwxMywwLDExLDgsNiwxMyw0LDEzLDExLDAsMiwxMSwxNCw3LDE1LDQsMCw5LDgsMSwxMywxMCwzLDE0LDEyLDMsOSw1LDcsMTIsNSwyLDEwLDE1LDYsOCwxLDYsMSw2LDQsMTEsMTEsMTMsMTMsOCwxMiwxLDMsNCw3LDEwLDE0LDcsMTAsOSwxNSw1LDYsMCw4LDE1LDAsMTQsNSwyLDksMywyLDEyLDEzLDEsMiwxNSw4LDEzLDQsOCw2LDEwLDE1LDMsMTEsNywxLDQsMTAsMTIsOSw1LDMsNiwxNCwxMSw1LDAsMCwxNCwxMiw5LDcsMiw3LDIsMTEsMSw0LDE0LDEsNyw5LDQsMTIsMTAsMTQsOCwyLDEzLDAsMTUsNiwxMiwxMCw5LDEzLDAsMTUsMywzLDUsNSw2LDgsMTFdO3Quc3Vic3RpdHV0ZT1mdW5jdGlvbiBzdWJzdGl0dXRlKGUsdCl7dmFyIHI9MDtmb3IodmFyIG49MDtuPDQ7bisrKXt2YXIgYT1lPj4+MTgtbio2JjYzO3ZhciBzPWlbbio2NCthXTtyPDw9NDtyfD1zfWZvcih2YXIgbj0wO248NDtuKyspe3ZhciBhPXQ+Pj4xOC1uKjYmNjM7dmFyIHM9aVs0KjY0K24qNjQrYV07cjw8PTQ7cnw9c31yZXR1cm4gcj4+PjB9O3ZhciBuPVsxNiwyNSwxMiwxMSwzLDIwLDQsMTUsMzEsMTcsOSw2LDI3LDE0LDEsMjIsMzAsMjQsOCwxOCwwLDUsMjksMjMsMTMsMTksMiwyNiwxMCwyMSwyOCw3XTt0LnBlcm11dGU9ZnVuY3Rpb24gcGVybXV0ZShlKXt2YXIgdD0wO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt0PDw9MTt0fD1lPj4+bltyXSYxfXJldHVybiB0Pj4+MH07dC5wYWRTcGxpdD1mdW5jdGlvbiBwYWRTcGxpdChlLHQscil7dmFyIGk9ZS50b1N0cmluZygyKTt3aGlsZShpLmxlbmd0aDx0KWk9XCIwXCIraTt2YXIgbj1bXTtmb3IodmFyIGE9MDthPHQ7YSs9ciluLnB1c2goaS5zbGljZShhLGErcikpO3JldHVybiBuLmpvaW4oXCIgXCIpfX0sNjU4NzpmdW5jdGlvbihlLHQscil7dmFyIGk9cigyOTYpO3ZhciBuPXIoNzk5Mik7dmFyIGE9cigzNzMpO2Z1bmN0aW9uIGdldERpZmZpZUhlbGxtYW4oZSl7dmFyIHQ9bmV3IEJ1ZmZlcihuW2VdLnByaW1lLFwiaGV4XCIpO3ZhciByPW5ldyBCdWZmZXIobltlXS5nZW4sXCJoZXhcIik7cmV0dXJuIG5ldyBhKHQscil9dmFyIHM9e2JpbmFyeTp0cnVlLGhleDp0cnVlLGJhc2U2NDp0cnVlfTtmdW5jdGlvbiBjcmVhdGVEaWZmaWVIZWxsbWFuKGUsdCxyLG4pe2lmKEJ1ZmZlci5pc0J1ZmZlcih0KXx8c1t0XT09PXVuZGVmaW5lZCl7cmV0dXJuIGNyZWF0ZURpZmZpZUhlbGxtYW4oZSxcImJpbmFyeVwiLHQscil9dD10fHxcImJpbmFyeVwiO249bnx8XCJiaW5hcnlcIjtyPXJ8fG5ldyBCdWZmZXIoWzJdKTtpZighQnVmZmVyLmlzQnVmZmVyKHIpKXtyPW5ldyBCdWZmZXIocixuKX1pZih0eXBlb2YgZT09PVwibnVtYmVyXCIpe3JldHVybiBuZXcgYShpKGUscikscix0cnVlKX1pZighQnVmZmVyLmlzQnVmZmVyKGUpKXtlPW5ldyBCdWZmZXIoZSx0KX1yZXR1cm4gbmV3IGEoZSxyLHRydWUpfXQuRGlmZmllSGVsbG1hbkdyb3VwPXQuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwPXQuZ2V0RGlmZmllSGVsbG1hbj1nZXREaWZmaWVIZWxsbWFuO3QuY3JlYXRlRGlmZmllSGVsbG1hbj10LkRpZmZpZUhlbGxtYW49Y3JlYXRlRGlmZmllSGVsbG1hbn0sMzczOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDcxMSk7dmFyIG49cigxMzU0KTt2YXIgYT1uZXcgbjt2YXIgcz1uZXcgaSgyNCk7dmFyIG89bmV3IGkoMTEpO3ZhciBoPW5ldyBpKDEwKTt2YXIgdT1uZXcgaSgzKTt2YXIgZD1uZXcgaSg3KTt2YXIgYz1yKDI5Nik7dmFyIGw9cig3MjIzKTtlLmV4cG9ydHM9REg7ZnVuY3Rpb24gc2V0UHVibGljS2V5KGUsdCl7dD10fHxcInV0ZjhcIjtpZighQnVmZmVyLmlzQnVmZmVyKGUpKXtlPW5ldyBCdWZmZXIoZSx0KX10aGlzLl9wdWI9bmV3IGkoZSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShlLHQpe3Q9dHx8XCJ1dGY4XCI7aWYoIUJ1ZmZlci5pc0J1ZmZlcihlKSl7ZT1uZXcgQnVmZmVyKGUsdCl9dGhpcy5fcHJpdj1uZXcgaShlKTtyZXR1cm4gdGhpc312YXIgcD17fTtmdW5jdGlvbiBjaGVja1ByaW1lKGUsdCl7dmFyIHI9dC50b1N0cmluZyhcImhleFwiKTt2YXIgaT1bcixlLnRvU3RyaW5nKDE2KV0uam9pbihcIl9cIik7aWYoaSBpbiBwKXtyZXR1cm4gcFtpXX12YXIgbj0wO2lmKGUuaXNFdmVuKCl8fCFjLnNpbXBsZVNpZXZlfHwhYy5mZXJtYXRUZXN0KGUpfHwhYS50ZXN0KGUpKXtuKz0xO2lmKHI9PT1cIjAyXCJ8fHI9PT1cIjA1XCIpe24rPTh9ZWxzZXtuKz00fXBbaV09bjtyZXR1cm4gbn1pZighYS50ZXN0KGUuc2hybigxKSkpe24rPTJ9dmFyIGw7c3dpdGNoKHIpe2Nhc2VcIjAyXCI6aWYoZS5tb2QocykuY21wKG8pKXtuKz04fWJyZWFrO2Nhc2VcIjA1XCI6bD1lLm1vZChoKTtpZihsLmNtcCh1KSYmbC5jbXAoZCkpe24rPTh9YnJlYWs7ZGVmYXVsdDpuKz00fXBbaV09bjtyZXR1cm4gbn1mdW5jdGlvbiBESChlLHQscil7dGhpcy5zZXRHZW5lcmF0b3IodCk7dGhpcy5fX3ByaW1lPW5ldyBpKGUpO3RoaXMuX3ByaW1lPWkubW9udCh0aGlzLl9fcHJpbWUpO3RoaXMuX3ByaW1lTGVuPWUubGVuZ3RoO3RoaXMuX3B1Yj11bmRlZmluZWQ7dGhpcy5fcHJpdj11bmRlZmluZWQ7dGhpcy5fcHJpbWVDb2RlPXVuZGVmaW5lZDtpZihyKXt0aGlzLnNldFB1YmxpY0tleT1zZXRQdWJsaWNLZXk7dGhpcy5zZXRQcml2YXRlS2V5PXNldFByaXZhdGVLZXl9ZWxzZXt0aGlzLl9wcmltZUNvZGU9OH19T2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSxcInZlcmlmeUVycm9yXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtpZih0eXBlb2YgdGhpcy5fcHJpbWVDb2RlIT09XCJudW1iZXJcIil7dGhpcy5fcHJpbWVDb2RlPWNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLHRoaXMuX19nZW4pfXJldHVybiB0aGlzLl9wcmltZUNvZGV9fSk7REgucHJvdG90eXBlLmdlbmVyYXRlS2V5cz1mdW5jdGlvbigpe2lmKCF0aGlzLl9wcml2KXt0aGlzLl9wcml2PW5ldyBpKGwodGhpcy5fcHJpbWVMZW4pKX10aGlzLl9wdWI9dGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO3JldHVybiB0aGlzLmdldFB1YmxpY0tleSgpfTtESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldD1mdW5jdGlvbihlKXtlPW5ldyBpKGUpO2U9ZS50b1JlZCh0aGlzLl9wcmltZSk7dmFyIHQ9ZS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO3ZhciByPW5ldyBCdWZmZXIodC50b0FycmF5KCkpO3ZhciBuPXRoaXMuZ2V0UHJpbWUoKTtpZihyLmxlbmd0aDxuLmxlbmd0aCl7dmFyIGE9bmV3IEJ1ZmZlcihuLmxlbmd0aC1yLmxlbmd0aCk7YS5maWxsKDApO3I9QnVmZmVyLmNvbmNhdChbYSxyXSl9cmV0dXJuIHJ9O0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXk9ZnVuY3Rpb24gZ2V0UHVibGljS2V5KGUpe3JldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsZSl9O0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5PWZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZSl7cmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX3ByaXYsZSl9O0RILnByb3RvdHlwZS5nZXRQcmltZT1mdW5jdGlvbihlKXtyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLGUpfTtESC5wcm90b3R5cGUuZ2V0R2VuZXJhdG9yPWZ1bmN0aW9uKGUpe3JldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9nZW4sZSl9O0RILnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24oZSx0KXt0PXR8fFwidXRmOFwiO2lmKCFCdWZmZXIuaXNCdWZmZXIoZSkpe2U9bmV3IEJ1ZmZlcihlLHQpfXRoaXMuX19nZW49ZTt0aGlzLl9nZW49bmV3IGkoZSk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGUsdCl7dmFyIHI9bmV3IEJ1ZmZlcihlLnRvQXJyYXkoKSk7aWYoIXQpe3JldHVybiByfWVsc2V7cmV0dXJuIHIudG9TdHJpbmcodCl9fX0sMjk2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDcyMjMpO2UuZXhwb3J0cz1maW5kUHJpbWU7ZmluZFByaW1lLnNpbXBsZVNpZXZlPXNpbXBsZVNpZXZlO2ZpbmRQcmltZS5mZXJtYXRUZXN0PWZlcm1hdFRlc3Q7dmFyIG49cig3MTEpO3ZhciBhPW5ldyBuKDI0KTt2YXIgcz1yKDEzNTQpO3ZhciBvPW5ldyBzO3ZhciBoPW5ldyBuKDEpO3ZhciB1PW5ldyBuKDIpO3ZhciBkPW5ldyBuKDUpO3ZhciBjPW5ldyBuKDE2KTt2YXIgbD1uZXcgbig4KTt2YXIgcD1uZXcgbigxMCk7dmFyIHY9bmV3IG4oMyk7dmFyIGI9bmV3IG4oNyk7dmFyIG09bmV3IG4oMTEpO3ZhciB5PW5ldyBuKDQpO3ZhciBnPW5ldyBuKDEyKTt2YXIgXz1udWxsO2Z1bmN0aW9uIF9nZXRQcmltZXMoKXtpZihfIT09bnVsbClyZXR1cm4gXzt2YXIgZT0xMDQ4NTc2O3ZhciB0PVtdO3RbMF09Mjtmb3IodmFyIHI9MSxpPTM7aTxlO2krPTIpe3ZhciBuPU1hdGguY2VpbChNYXRoLnNxcnQoaSkpO2Zvcih2YXIgYT0wO2E8ciYmdFthXTw9bjthKyspaWYoaSV0W2FdPT09MClicmVhaztpZihyIT09YSYmdFthXTw9biljb250aW51ZTt0W3IrK109aX1fPXQ7cmV0dXJuIHR9ZnVuY3Rpb24gc2ltcGxlU2lldmUoZSl7dmFyIHQ9X2dldFByaW1lcygpO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKGUubW9kbih0W3JdKT09PTApe2lmKGUuY21wbih0W3JdKT09PTApe3JldHVybiB0cnVlfWVsc2V7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBmZXJtYXRUZXN0KGUpe3ZhciB0PW4ubW9udChlKTtyZXR1cm4gdS50b1JlZCh0KS5yZWRQb3coZS5zdWJuKDEpKS5mcm9tUmVkKCkuY21wbigxKT09PTB9ZnVuY3Rpb24gZmluZFByaW1lKGUsdCl7aWYoZTwxNil7aWYodD09PTJ8fHQ9PT01KXtyZXR1cm4gbmV3IG4oWzE0MCwxMjNdKX1lbHNle3JldHVybiBuZXcgbihbMTQwLDM5XSl9fXQ9bmV3IG4odCk7dmFyIHIsczt3aGlsZSh0cnVlKXtyPW5ldyBuKGkoTWF0aC5jZWlsKGUvOCkpKTt3aGlsZShyLmJpdExlbmd0aCgpPmUpe3IuaXNocm4oMSl9aWYoci5pc0V2ZW4oKSl7ci5pYWRkKGgpfWlmKCFyLnRlc3RuKDEpKXtyLmlhZGQodSl9aWYoIXQuY21wKHUpKXt3aGlsZShyLm1vZChhKS5jbXAobSkpe3IuaWFkZCh5KX19ZWxzZSBpZighdC5jbXAoZCkpe3doaWxlKHIubW9kKHApLmNtcCh2KSl7ci5pYWRkKHkpfX1zPXIuc2hybigxKTtpZihzaW1wbGVTaWV2ZShzKSYmc2ltcGxlU2lldmUocikmJmZlcm1hdFRlc3QocykmJmZlcm1hdFRlc3QocikmJm8udGVzdChzKSYmby50ZXN0KHIpKXtyZXR1cm4gcn19fX0sOTQ5OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT10O2kudmVyc2lvbj1yKDI1MzEpLmk4O2kudXRpbHM9cig0NDAxKTtpLnJhbmQ9cigzNTAwKTtpLmN1cnZlPXIoOTM1OSk7aS5jdXJ2ZXM9cig2MjI2KTtpLmVjPXIoNDA4OCk7aS5lZGRzYT1yKDg1MTEpfSwyNzI3OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDcxMSk7dmFyIG49cig0NDAxKTt2YXIgYT1uLmdldE5BRjt2YXIgcz1uLmdldEpTRjt2YXIgbz1uLmFzc2VydDtmdW5jdGlvbiBCYXNlQ3VydmUoZSx0KXt0aGlzLnR5cGU9ZTt0aGlzLnA9bmV3IGkodC5wLDE2KTt0aGlzLnJlZD10LnByaW1lP2kucmVkKHQucHJpbWUpOmkubW9udCh0aGlzLnApO3RoaXMuemVybz1uZXcgaSgwKS50b1JlZCh0aGlzLnJlZCk7dGhpcy5vbmU9bmV3IGkoMSkudG9SZWQodGhpcy5yZWQpO3RoaXMudHdvPW5ldyBpKDIpLnRvUmVkKHRoaXMucmVkKTt0aGlzLm49dC5uJiZuZXcgaSh0Lm4sMTYpO3RoaXMuZz10LmcmJnRoaXMucG9pbnRGcm9tSlNPTih0LmcsdC5nUmVkKTt0aGlzLl93bmFmVDE9bmV3IEFycmF5KDQpO3RoaXMuX3duYWZUMj1uZXcgQXJyYXkoNCk7dGhpcy5fd25hZlQzPW5ldyBBcnJheSg0KTt0aGlzLl93bmFmVDQ9bmV3IEFycmF5KDQpO3RoaXMuX2JpdExlbmd0aD10aGlzLm4/dGhpcy5uLmJpdExlbmd0aCgpOjA7dmFyIHI9dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7aWYoIXJ8fHIuY21wbigxMDApPjApe3RoaXMucmVkTj1udWxsfWVsc2V7dGhpcy5fbWF4d2VsbFRyaWNrPXRydWU7dGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCl9fWUuZXhwb3J0cz1CYXNlQ3VydmU7QmFzZUN1cnZlLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbiBwb2ludCgpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX07QmFzZUN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbiB2YWxpZGF0ZSgpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX07QmFzZUN1cnZlLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKGUsdCl7byhlLnByZWNvbXB1dGVkKTt2YXIgcj1lLl9nZXREb3VibGVzKCk7dmFyIGk9YSh0LDEsdGhpcy5fYml0TGVuZ3RoKTt2YXIgbj0oMTw8ci5zdGVwKzEpLShyLnN0ZXAlMj09PTA/MjoxKTtuLz0zO3ZhciBzPVtdO2Zvcih2YXIgaD0wO2g8aS5sZW5ndGg7aCs9ci5zdGVwKXt2YXIgdT0wO2Zvcih2YXIgdD1oK3Iuc3RlcC0xO3Q+PWg7dC0tKXU9KHU8PDEpK2lbdF07cy5wdXNoKHUpfXZhciBkPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKTt2YXIgYz10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCk7Zm9yKHZhciBsPW47bD4wO2wtLSl7Zm9yKHZhciBoPTA7aDxzLmxlbmd0aDtoKyspe3ZhciB1PXNbaF07aWYodT09PWwpYz1jLm1peGVkQWRkKHIucG9pbnRzW2hdKTtlbHNlIGlmKHU9PT0tbCljPWMubWl4ZWRBZGQoci5wb2ludHNbaF0ubmVnKCkpfWQ9ZC5hZGQoYyl9cmV0dXJuIGQudG9QKCl9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24gX3duYWZNdWwoZSx0KXt2YXIgcj00O3ZhciBpPWUuX2dldE5BRlBvaW50cyhyKTtyPWkud25kO3ZhciBuPWkucG9pbnRzO3ZhciBzPWEodCxyLHRoaXMuX2JpdExlbmd0aCk7dmFyIGg9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO2Zvcih2YXIgdT1zLmxlbmd0aC0xO3U+PTA7dS0tKXtmb3IodmFyIHQ9MDt1Pj0wJiZzW3VdPT09MDt1LS0pdCsrO2lmKHU+PTApdCsrO2g9aC5kYmxwKHQpO2lmKHU8MClicmVhazt2YXIgZD1zW3VdO28oZCE9PTApO2lmKGUudHlwZT09PVwiYWZmaW5lXCIpe2lmKGQ+MCloPWgubWl4ZWRBZGQobltkLTE+PjFdKTtlbHNlIGg9aC5taXhlZEFkZChuWy1kLTE+PjFdLm5lZygpKX1lbHNle2lmKGQ+MCloPWguYWRkKG5bZC0xPj4xXSk7ZWxzZSBoPWguYWRkKG5bLWQtMT4+MV0ubmVnKCkpfX1yZXR1cm4gZS50eXBlPT09XCJhZmZpbmVcIj9oLnRvUCgpOmh9O0Jhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24gX3duYWZNdWxBZGQoZSx0LHIsaSxuKXt2YXIgbz10aGlzLl93bmFmVDE7dmFyIGg9dGhpcy5fd25hZlQyO3ZhciB1PXRoaXMuX3duYWZUMzt2YXIgZD0wO2Zvcih2YXIgYz0wO2M8aTtjKyspe3ZhciBsPXRbY107dmFyIHA9bC5fZ2V0TkFGUG9pbnRzKGUpO29bY109cC53bmQ7aFtjXT1wLnBvaW50c31mb3IodmFyIGM9aS0xO2M+PTE7Yy09Mil7dmFyIHY9Yy0xO3ZhciBiPWM7aWYob1t2XSE9PTF8fG9bYl0hPT0xKXt1W3ZdPWEoclt2XSxvW3ZdLHRoaXMuX2JpdExlbmd0aCk7dVtiXT1hKHJbYl0sb1tiXSx0aGlzLl9iaXRMZW5ndGgpO2Q9TWF0aC5tYXgodVt2XS5sZW5ndGgsZCk7ZD1NYXRoLm1heCh1W2JdLmxlbmd0aCxkKTtjb250aW51ZX12YXIgbT1bdFt2XSxudWxsLG51bGwsdFtiXV07aWYodFt2XS55LmNtcCh0W2JdLnkpPT09MCl7bVsxXT10W3ZdLmFkZCh0W2JdKTttWzJdPXRbdl0udG9KKCkubWl4ZWRBZGQodFtiXS5uZWcoKSl9ZWxzZSBpZih0W3ZdLnkuY21wKHRbYl0ueS5yZWROZWcoKSk9PT0wKXttWzFdPXRbdl0udG9KKCkubWl4ZWRBZGQodFtiXSk7bVsyXT10W3ZdLmFkZCh0W2JdLm5lZygpKX1lbHNle21bMV09dFt2XS50b0ooKS5taXhlZEFkZCh0W2JdKTttWzJdPXRbdl0udG9KKCkubWl4ZWRBZGQodFtiXS5uZWcoKSl9dmFyIHk9Wy0zLC0xLC01LC03LDAsNyw1LDEsM107dmFyIGc9cyhyW3ZdLHJbYl0pO2Q9TWF0aC5tYXgoZ1swXS5sZW5ndGgsZCk7dVt2XT1uZXcgQXJyYXkoZCk7dVtiXT1uZXcgQXJyYXkoZCk7Zm9yKHZhciBfPTA7XzxkO18rKyl7dmFyIHc9Z1swXVtfXXwwO3ZhciBNPWdbMV1bX118MDt1W3ZdW19dPXlbKHcrMSkqMysoTSsxKV07dVtiXVtfXT0wO2hbdl09bX19dmFyIEI9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciBFPXRoaXMuX3duYWZUNDtmb3IodmFyIGM9ZDtjPj0wO2MtLSl7dmFyIGs9MDt3aGlsZShjPj0wKXt2YXIgQT10cnVlO2Zvcih2YXIgXz0wO188aTtfKyspe0VbX109dVtfXVtjXXwwO2lmKEVbX10hPT0wKUE9ZmFsc2V9aWYoIUEpYnJlYWs7aysrO2MtLX1pZihjPj0wKWsrKztCPUIuZGJscChrKTtpZihjPDApYnJlYWs7Zm9yKHZhciBfPTA7XzxpO18rKyl7dmFyIE49RVtfXTt2YXIgbDtpZihOPT09MCljb250aW51ZTtlbHNlIGlmKE4+MClsPWhbX11bTi0xPj4xXTtlbHNlIGlmKE48MClsPWhbX11bLU4tMT4+MV0ubmVnKCk7aWYobC50eXBlPT09XCJhZmZpbmVcIilCPUIubWl4ZWRBZGQobCk7ZWxzZSBCPUIuYWRkKGwpfX1mb3IodmFyIGM9MDtjPGk7YysrKWhbY109bnVsbDtpZihuKXJldHVybiBCO2Vsc2UgcmV0dXJuIEIudG9QKCl9O2Z1bmN0aW9uIEJhc2VQb2ludChlLHQpe3RoaXMuY3VydmU9ZTt0aGlzLnR5cGU9dDt0aGlzLnByZWNvbXB1dGVkPW51bGx9QmFzZUN1cnZlLkJhc2VQb2ludD1CYXNlUG9pbnQ7QmFzZVBvaW50LnByb3RvdHlwZS5lcT1mdW5jdGlvbiBlcSgpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX07QmFzZVBvaW50LnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbiB2YWxpZGF0ZSgpe3JldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfTtCYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uIGRlY29kZVBvaW50KGUsdCl7ZT1uLnRvQXJyYXkoZSx0KTt2YXIgcj10aGlzLnAuYnl0ZUxlbmd0aCgpO2lmKChlWzBdPT09NHx8ZVswXT09PTZ8fGVbMF09PT03KSYmZS5sZW5ndGgtMT09PTIqcil7aWYoZVswXT09PTYpbyhlW2UubGVuZ3RoLTFdJTI9PT0wKTtlbHNlIGlmKGVbMF09PT03KW8oZVtlLmxlbmd0aC0xXSUyPT09MSk7dmFyIGk9dGhpcy5wb2ludChlLnNsaWNlKDEsMStyKSxlLnNsaWNlKDErciwxKzIqcikpO3JldHVybiBpfWVsc2UgaWYoKGVbMF09PT0yfHxlWzBdPT09MykmJmUubGVuZ3RoLTE9PT1yKXtyZXR1cm4gdGhpcy5wb2ludEZyb21YKGUuc2xpY2UoMSwxK3IpLGVbMF09PT0zKX10aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHBvaW50IGZvcm1hdFwiKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uIGVuY29kZUNvbXByZXNzZWQoZSl7cmV0dXJuIHRoaXMuZW5jb2RlKGUsdHJ1ZSl9O0Jhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbiBfZW5jb2RlKGUpe3ZhciB0PXRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7dmFyIHI9dGhpcy5nZXRYKCkudG9BcnJheShcImJlXCIsdCk7aWYoZSlyZXR1cm5bdGhpcy5nZXRZKCkuaXNFdmVuKCk/MjozXS5jb25jYXQocik7cmV0dXJuWzRdLmNvbmNhdChyLHRoaXMuZ2V0WSgpLnRvQXJyYXkoXCJiZVwiLHQpKX07QmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24gZW5jb2RlKGUsdCl7cmV0dXJuIG4uZW5jb2RlKHRoaXMuX2VuY29kZSh0KSxlKX07QmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uIHByZWNvbXB1dGUoZSl7aWYodGhpcy5wcmVjb21wdXRlZClyZXR1cm4gdGhpczt2YXIgdD17ZG91YmxlczpudWxsLG5hZjpudWxsLGJldGE6bnVsbH07dC5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpO3QuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsZSk7dC5iZXRhPXRoaXMuX2dldEJldGEoKTt0aGlzLnByZWNvbXB1dGVkPXQ7cmV0dXJuIHRoaXN9O0Jhc2VQb2ludC5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24gX2hhc0RvdWJsZXMoZSl7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIGZhbHNlO3ZhciB0PXRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztpZighdClyZXR1cm4gZmFsc2U7cmV0dXJuIHQucG9pbnRzLmxlbmd0aD49TWF0aC5jZWlsKChlLmJpdExlbmd0aCgpKzEpL3Quc3RlcCl9O0Jhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24gX2dldERvdWJsZXMoZSx0KXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlczt2YXIgcj1bdGhpc107dmFyIGk9dGhpcztmb3IodmFyIG49MDtuPHQ7bis9ZSl7Zm9yKHZhciBhPTA7YTxlO2ErKylpPWkuZGJsKCk7ci5wdXNoKGkpfXJldHVybntzdGVwOmUscG9pbnRzOnJ9fTtCYXNlUG9pbnQucHJvdG90eXBlLl9nZXROQUZQb2ludHM9ZnVuY3Rpb24gX2dldE5BRlBvaW50cyhlKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7dmFyIHQ9W3RoaXNdO3ZhciByPSgxPDxlKS0xO3ZhciBpPXI9PT0xP251bGw6dGhpcy5kYmwoKTtmb3IodmFyIG49MTtuPHI7bisrKXRbbl09dFtuLTFdLmFkZChpKTtyZXR1cm57d25kOmUscG9pbnRzOnR9fTtCYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uIF9nZXRCZXRhKCl7cmV0dXJuIG51bGx9O0Jhc2VQb2ludC5wcm90b3R5cGUuZGJscD1mdW5jdGlvbiBkYmxwKGUpe3ZhciB0PXRoaXM7Zm9yKHZhciByPTA7cjxlO3IrKyl0PXQuZGJsKCk7cmV0dXJuIHR9fSwyNzA1OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDQ0MDEpO3ZhciBuPXIoNzExKTt2YXIgYT1yKDM3ODIpO3ZhciBzPXIoMjcyNyk7dmFyIG89aS5hc3NlcnQ7ZnVuY3Rpb24gRWR3YXJkc0N1cnZlKGUpe3RoaXMudHdpc3RlZD0oZS5hfDApIT09MTt0aGlzLm1PbmVBPXRoaXMudHdpc3RlZCYmKGUuYXwwKT09PS0xO3RoaXMuZXh0ZW5kZWQ9dGhpcy5tT25lQTtzLmNhbGwodGhpcyxcImVkd2FyZHNcIixlKTt0aGlzLmE9bmV3IG4oZS5hLDE2KS51bW9kKHRoaXMucmVkLm0pO3RoaXMuYT10aGlzLmEudG9SZWQodGhpcy5yZWQpO3RoaXMuYz1uZXcgbihlLmMsMTYpLnRvUmVkKHRoaXMucmVkKTt0aGlzLmMyPXRoaXMuYy5yZWRTcXIoKTt0aGlzLmQ9bmV3IG4oZS5kLDE2KS50b1JlZCh0aGlzLnJlZCk7dGhpcy5kZD10aGlzLmQucmVkQWRkKHRoaXMuZCk7byghdGhpcy50d2lzdGVkfHx0aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSk9PT0wKTt0aGlzLm9uZUM9KGUuY3wwKT09PTF9YShFZHdhcmRzQ3VydmUscyk7ZS5leHBvcnRzPUVkd2FyZHNDdXJ2ZTtFZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uIF9tdWxBKGUpe2lmKHRoaXMubU9uZUEpcmV0dXJuIGUucmVkTmVnKCk7ZWxzZSByZXR1cm4gdGhpcy5hLnJlZE11bChlKX07RWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQz1mdW5jdGlvbiBfbXVsQyhlKXtpZih0aGlzLm9uZUMpcmV0dXJuIGU7ZWxzZSByZXR1cm4gdGhpcy5jLnJlZE11bChlKX07RWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24ganBvaW50KGUsdCxyLGkpe3JldHVybiB0aGlzLnBvaW50KGUsdCxyLGkpfTtFZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24gcG9pbnRGcm9tWChlLHQpe2U9bmV3IG4oZSwxNik7aWYoIWUucmVkKWU9ZS50b1JlZCh0aGlzLnJlZCk7dmFyIHI9ZS5yZWRTcXIoKTt2YXIgaT10aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHIpKTt2YXIgYT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwocikpO3ZhciBzPWkucmVkTXVsKGEucmVkSW52bSgpKTt2YXIgbz1zLnJlZFNxcnQoKTtpZihvLnJlZFNxcigpLnJlZFN1YihzKS5jbXAodGhpcy56ZXJvKSE9PTApdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludFwiKTt2YXIgaD1vLmZyb21SZWQoKS5pc09kZCgpO2lmKHQmJiFofHwhdCYmaClvPW8ucmVkTmVnKCk7cmV0dXJuIHRoaXMucG9pbnQoZSxvKX07RWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uIHBvaW50RnJvbVkoZSx0KXtlPW5ldyBuKGUsMTYpO2lmKCFlLnJlZCllPWUudG9SZWQodGhpcy5yZWQpO3ZhciByPWUucmVkU3FyKCk7dmFyIGk9ci5yZWRTdWIodGhpcy5jMik7dmFyIGE9ci5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSk7dmFyIHM9aS5yZWRNdWwoYS5yZWRJbnZtKCkpO2lmKHMuY21wKHRoaXMuemVybyk9PT0wKXtpZih0KXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7ZWxzZSByZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sZSl9dmFyIG89cy5yZWRTcXJ0KCk7aWYoby5yZWRTcXIoKS5yZWRTdWIocykuY21wKHRoaXMuemVybykhPT0wKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7aWYoby5mcm9tUmVkKCkuaXNPZGQoKSE9PXQpbz1vLnJlZE5lZygpO3JldHVybiB0aGlzLnBvaW50KG8sZSl9O0Vkd2FyZHNDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24gdmFsaWRhdGUoZSl7aWYoZS5pc0luZmluaXR5KCkpcmV0dXJuIHRydWU7ZS5ub3JtYWxpemUoKTt2YXIgdD1lLngucmVkU3FyKCk7dmFyIHI9ZS55LnJlZFNxcigpO3ZhciBpPXQucmVkTXVsKHRoaXMuYSkucmVkQWRkKHIpO3ZhciBuPXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKHQpLnJlZE11bChyKSkpO3JldHVybiBpLmNtcChuKT09PTB9O2Z1bmN0aW9uIFBvaW50KGUsdCxyLGksYSl7cy5CYXNlUG9pbnQuY2FsbCh0aGlzLGUsXCJwcm9qZWN0aXZlXCIpO2lmKHQ9PT1udWxsJiZyPT09bnVsbCYmaT09PW51bGwpe3RoaXMueD10aGlzLmN1cnZlLnplcm87dGhpcy55PXRoaXMuY3VydmUub25lO3RoaXMuej10aGlzLmN1cnZlLm9uZTt0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvO3RoaXMuek9uZT10cnVlfWVsc2V7dGhpcy54PW5ldyBuKHQsMTYpO3RoaXMueT1uZXcgbihyLDE2KTt0aGlzLno9aT9uZXcgbihpLDE2KTp0aGlzLmN1cnZlLm9uZTt0aGlzLnQ9YSYmbmV3IG4oYSwxNik7aWYoIXRoaXMueC5yZWQpdGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7aWYoIXRoaXMueS5yZWQpdGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7aWYoIXRoaXMuei5yZWQpdGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7aWYodGhpcy50JiYhdGhpcy50LnJlZCl0aGlzLnQ9dGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTt0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmU7aWYodGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCl7dGhpcy50PXRoaXMueC5yZWRNdWwodGhpcy55KTtpZighdGhpcy56T25lKXRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpfX19YShQb2ludCxzLkJhc2VQb2ludCk7RWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uIHBvaW50RnJvbUpTT04oZSl7cmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsZSl9O0Vkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24gcG9pbnQoZSx0LHIsaSl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLGUsdCxyLGkpfTtQb2ludC5mcm9tSlNPTj1mdW5jdGlvbiBmcm9tSlNPTihlLHQpe3JldHVybiBuZXcgUG9pbnQoZSx0WzBdLHRbMV0sdFsyXSl9O1BvaW50LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm5cIjxFQyBQb2ludCBJbmZpbml0eT5cIjtyZXR1cm5cIjxFQyBQb2ludCB4OiBcIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn07UG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24gaXNJbmZpbml0eSgpe3JldHVybiB0aGlzLnguY21wbigwKT09PTAmJih0aGlzLnkuY21wKHRoaXMueik9PT0wfHx0aGlzLnpPbmUmJnRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKT09PTApfTtQb2ludC5wcm90b3R5cGUuX2V4dERibD1mdW5jdGlvbiBfZXh0RGJsKCl7dmFyIGU9dGhpcy54LnJlZFNxcigpO3ZhciB0PXRoaXMueS5yZWRTcXIoKTt2YXIgcj10aGlzLnoucmVkU3FyKCk7cj1yLnJlZElBZGQocik7dmFyIGk9dGhpcy5jdXJ2ZS5fbXVsQShlKTt2YXIgbj10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihlKS5yZWRJU3ViKHQpO3ZhciBhPWkucmVkQWRkKHQpO3ZhciBzPWEucmVkU3ViKHIpO3ZhciBvPWkucmVkU3ViKHQpO3ZhciBoPW4ucmVkTXVsKHMpO3ZhciB1PWEucmVkTXVsKG8pO3ZhciBkPW4ucmVkTXVsKG8pO3ZhciBjPXMucmVkTXVsKGEpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGgsdSxjLGQpfTtQb2ludC5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24gX3Byb2pEYmwoKXt2YXIgZT10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7dmFyIHQ9dGhpcy54LnJlZFNxcigpO3ZhciByPXRoaXMueS5yZWRTcXIoKTt2YXIgaTt2YXIgbjt2YXIgYTtpZih0aGlzLmN1cnZlLnR3aXN0ZWQpe3ZhciBzPXRoaXMuY3VydmUuX211bEEodCk7dmFyIG89cy5yZWRBZGQocik7aWYodGhpcy56T25lKXtpPWUucmVkU3ViKHQpLnJlZFN1YihyKS5yZWRNdWwoby5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKTtuPW8ucmVkTXVsKHMucmVkU3ViKHIpKTthPW8ucmVkU3FyKCkucmVkU3ViKG8pLnJlZFN1YihvKX1lbHNle3ZhciBoPXRoaXMuei5yZWRTcXIoKTt2YXIgdT1vLnJlZFN1YihoKS5yZWRJU3ViKGgpO2k9ZS5yZWRTdWIodCkucmVkSVN1YihyKS5yZWRNdWwodSk7bj1vLnJlZE11bChzLnJlZFN1YihyKSk7YT1vLnJlZE11bCh1KX19ZWxzZXt2YXIgcz10LnJlZEFkZChyKTt2YXIgaD10aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCk7dmFyIHU9cy5yZWRTdWIoaCkucmVkU3ViKGgpO2k9dGhpcy5jdXJ2ZS5fbXVsQyhlLnJlZElTdWIocykpLnJlZE11bCh1KTtuPXRoaXMuY3VydmUuX211bEMocykucmVkTXVsKHQucmVkSVN1YihyKSk7YT1zLnJlZE11bCh1KX1yZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChpLG4sYSl9O1BvaW50LnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24gZGJsKCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYodGhpcy5jdXJ2ZS5leHRlbmRlZClyZXR1cm4gdGhpcy5fZXh0RGJsKCk7ZWxzZSByZXR1cm4gdGhpcy5fcHJvakRibCgpfTtQb2ludC5wcm90b3R5cGUuX2V4dEFkZD1mdW5jdGlvbiBfZXh0QWRkKGUpe3ZhciB0PXRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwoZS55LnJlZFN1YihlLngpKTt2YXIgcj10aGlzLnkucmVkQWRkKHRoaXMueCkucmVkTXVsKGUueS5yZWRBZGQoZS54KSk7dmFyIGk9dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoZS50KTt2YXIgbj10aGlzLnoucmVkTXVsKGUuei5yZWRBZGQoZS56KSk7dmFyIGE9ci5yZWRTdWIodCk7dmFyIHM9bi5yZWRTdWIoaSk7dmFyIG89bi5yZWRBZGQoaSk7dmFyIGg9ci5yZWRBZGQodCk7dmFyIHU9YS5yZWRNdWwocyk7dmFyIGQ9by5yZWRNdWwoaCk7dmFyIGM9YS5yZWRNdWwoaCk7dmFyIGw9cy5yZWRNdWwobyk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodSxkLGwsYyl9O1BvaW50LnByb3RvdHlwZS5fcHJvakFkZD1mdW5jdGlvbiBfcHJvakFkZChlKXt2YXIgdD10aGlzLnoucmVkTXVsKGUueik7dmFyIHI9dC5yZWRTcXIoKTt2YXIgaT10aGlzLngucmVkTXVsKGUueCk7dmFyIG49dGhpcy55LnJlZE11bChlLnkpO3ZhciBhPXRoaXMuY3VydmUuZC5yZWRNdWwoaSkucmVkTXVsKG4pO3ZhciBzPXIucmVkU3ViKGEpO3ZhciBvPXIucmVkQWRkKGEpO3ZhciBoPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwoZS54LnJlZEFkZChlLnkpKS5yZWRJU3ViKGkpLnJlZElTdWIobik7dmFyIHU9dC5yZWRNdWwocykucmVkTXVsKGgpO3ZhciBkO3ZhciBjO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7ZD10LnJlZE11bChvKS5yZWRNdWwobi5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShpKSkpO2M9cy5yZWRNdWwobyl9ZWxzZXtkPXQucmVkTXVsKG8pLnJlZE11bChuLnJlZFN1YihpKSk7Yz10aGlzLmN1cnZlLl9tdWxDKHMpLnJlZE11bChvKX1yZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh1LGQsYyl9O1BvaW50LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKGUpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBlO2lmKGUuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO2lmKHRoaXMuY3VydmUuZXh0ZW5kZWQpcmV0dXJuIHRoaXMuX2V4dEFkZChlKTtlbHNlIHJldHVybiB0aGlzLl9wcm9qQWRkKGUpfTtQb2ludC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChlKXtpZih0aGlzLl9oYXNEb3VibGVzKGUpKXJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGUpO2Vsc2UgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxlKX07UG9pbnQucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbiBtdWxBZGQoZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMixmYWxzZSl9O1BvaW50LnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uIGptdWxBZGQoZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMix0cnVlKX07UG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbiBub3JtYWxpemUoKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy56LnJlZEludm0oKTt0aGlzLng9dGhpcy54LnJlZE11bChlKTt0aGlzLnk9dGhpcy55LnJlZE11bChlKTtpZih0aGlzLnQpdGhpcy50PXRoaXMudC5yZWRNdWwoZSk7dGhpcy56PXRoaXMuY3VydmUub25lO3RoaXMuek9uZT10cnVlO3JldHVybiB0aGlzfTtQb2ludC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZygpe3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSx0aGlzLnksdGhpcy56LHRoaXMudCYmdGhpcy50LnJlZE5lZygpKX07UG9pbnQucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24gZ2V0WCgpe3RoaXMubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMueC5mcm9tUmVkKCl9O1BvaW50LnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uIGdldFkoKXt0aGlzLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfTtQb2ludC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEoZSl7cmV0dXJuIHRoaXM9PT1lfHx0aGlzLmdldFgoKS5jbXAoZS5nZXRYKCkpPT09MCYmdGhpcy5nZXRZKCkuY21wKGUuZ2V0WSgpKT09PTB9O1BvaW50LnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24gZXFYVG9QKGUpe3ZhciB0PWUudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO2lmKHRoaXMueC5jbXAodCk9PT0wKXJldHVybiB0cnVlO3ZhciByPWUuY2xvbmUoKTt2YXIgaT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7Zm9yKDs7KXtyLmlhZGQodGhpcy5jdXJ2ZS5uKTtpZihyLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiBmYWxzZTt0LnJlZElBZGQoaSk7aWYodGhpcy54LmNtcCh0KT09PTApcmV0dXJuIHRydWV9fTtQb2ludC5wcm90b3R5cGUudG9QPVBvaW50LnByb3RvdHlwZS5ub3JtYWxpemU7UG9pbnQucHJvdG90eXBlLm1peGVkQWRkPVBvaW50LnByb3RvdHlwZS5hZGR9LDkzNTk6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXQ7aS5iYXNlPXIoMjcyNyk7aS5zaG9ydD1yKDQ3MjApO2kubW9udD1yKDY2NTMpO2kuZWR3YXJkcz1yKDI3MDUpfSw2NjUzOmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDcxMSk7dmFyIG49cigzNzgyKTt2YXIgYT1yKDI3MjcpO3ZhciBzPXIoNDQwMSk7ZnVuY3Rpb24gTW9udEN1cnZlKGUpe2EuY2FsbCh0aGlzLFwibW9udFwiLGUpO3RoaXMuYT1uZXcgaShlLmEsMTYpLnRvUmVkKHRoaXMucmVkKTt0aGlzLmI9bmV3IGkoZS5iLDE2KS50b1JlZCh0aGlzLnJlZCk7dGhpcy5pND1uZXcgaSg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO3RoaXMudHdvPW5ldyBpKDIpLnRvUmVkKHRoaXMucmVkKTt0aGlzLmEyND10aGlzLmk0LnJlZE11bCh0aGlzLmEucmVkQWRkKHRoaXMudHdvKSl9bihNb250Q3VydmUsYSk7ZS5leHBvcnRzPU1vbnRDdXJ2ZTtNb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uIHZhbGlkYXRlKGUpe3ZhciB0PWUubm9ybWFsaXplKCkueDt2YXIgcj10LnJlZFNxcigpO3ZhciBpPXIucmVkTXVsKHQpLnJlZEFkZChyLnJlZE11bCh0aGlzLmEpKS5yZWRBZGQodCk7dmFyIG49aS5yZWRTcXJ0KCk7cmV0dXJuIG4ucmVkU3FyKCkuY21wKGkpPT09MH07ZnVuY3Rpb24gUG9pbnQoZSx0LHIpe2EuQmFzZVBvaW50LmNhbGwodGhpcyxlLFwicHJvamVjdGl2ZVwiKTtpZih0PT09bnVsbCYmcj09PW51bGwpe3RoaXMueD10aGlzLmN1cnZlLm9uZTt0aGlzLno9dGhpcy5jdXJ2ZS56ZXJvfWVsc2V7dGhpcy54PW5ldyBpKHQsMTYpO3RoaXMuej1uZXcgaShyLDE2KTtpZighdGhpcy54LnJlZCl0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtpZighdGhpcy56LnJlZCl0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKX19bihQb2ludCxhLkJhc2VQb2ludCk7TW9udEN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbiBkZWNvZGVQb2ludChlLHQpe3JldHVybiB0aGlzLnBvaW50KHMudG9BcnJheShlLHQpLDEpfTtNb250Q3VydmUucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uIHBvaW50KGUsdCl7cmV0dXJuIG5ldyBQb2ludCh0aGlzLGUsdCl9O01vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbiBwb2ludEZyb21KU09OKGUpe3JldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLGUpfTtQb2ludC5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbiBwcmVjb21wdXRlKCl7fTtQb2ludC5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbiBfZW5jb2RlKCl7cmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoXCJiZVwiLHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCkpfTtQb2ludC5mcm9tSlNPTj1mdW5jdGlvbiBmcm9tSlNPTihlLHQpe3JldHVybiBuZXcgUG9pbnQoZSx0WzBdLHRbMV18fGUub25lKX07UG9pbnQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24gaW5zcGVjdCgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVyblwiPEVDIFBvaW50IEluZmluaXR5PlwiO3JldHVyblwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn07UG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24gaXNJbmZpbml0eSgpe3JldHVybiB0aGlzLnouY21wbigwKT09PTB9O1BvaW50LnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24gZGJsKCl7dmFyIGU9dGhpcy54LnJlZEFkZCh0aGlzLnopO3ZhciB0PWUucmVkU3FyKCk7dmFyIHI9dGhpcy54LnJlZFN1Yih0aGlzLnopO3ZhciBpPXIucmVkU3FyKCk7dmFyIG49dC5yZWRTdWIoaSk7dmFyIGE9dC5yZWRNdWwoaSk7dmFyIHM9bi5yZWRNdWwoaS5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKG4pKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYSxzKX07UG9pbnQucHJvdG90eXBlLmFkZD1mdW5jdGlvbiBhZGQoKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9O1BvaW50LnByb3RvdHlwZS5kaWZmQWRkPWZ1bmN0aW9uIGRpZmZBZGQoZSx0KXt2YXIgcj10aGlzLngucmVkQWRkKHRoaXMueik7dmFyIGk9dGhpcy54LnJlZFN1Yih0aGlzLnopO3ZhciBuPWUueC5yZWRBZGQoZS56KTt2YXIgYT1lLngucmVkU3ViKGUueik7dmFyIHM9YS5yZWRNdWwocik7dmFyIG89bi5yZWRNdWwoaSk7dmFyIGg9dC56LnJlZE11bChzLnJlZEFkZChvKS5yZWRTcXIoKSk7dmFyIHU9dC54LnJlZE11bChzLnJlZElTdWIobykucmVkU3FyKCkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGgsdSl9O1BvaW50LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGUpe3ZhciB0PWUuY2xvbmUoKTt2YXIgcj10aGlzO3ZhciBpPXRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgbj10aGlzO2Zvcih2YXIgYT1bXTt0LmNtcG4oMCkhPT0wO3QuaXVzaHJuKDEpKWEucHVzaCh0LmFuZGxuKDEpKTtmb3IodmFyIHM9YS5sZW5ndGgtMTtzPj0wO3MtLSl7aWYoYVtzXT09PTApe3I9ci5kaWZmQWRkKGksbik7aT1pLmRibCgpfWVsc2V7aT1yLmRpZmZBZGQoaSxuKTtyPXIuZGJsKCl9fXJldHVybiBpfTtQb2ludC5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uIG11bEFkZCgpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX07UG9pbnQucHJvdG90eXBlLmp1bWxBZGQ9ZnVuY3Rpb24ganVtbEFkZCgpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX07UG9pbnQucHJvdG90eXBlLmVxPWZ1bmN0aW9uIGVxKGUpe3JldHVybiB0aGlzLmdldFgoKS5jbXAoZS5nZXRYKCkpPT09MH07UG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbiBub3JtYWxpemUoKXt0aGlzLng9dGhpcy54LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTt0aGlzLno9dGhpcy5jdXJ2ZS5vbmU7cmV0dXJuIHRoaXN9O1BvaW50LnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uIGdldFgoKXt0aGlzLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnguZnJvbVJlZCgpfX0sNDcyMDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig0NDAxKTt2YXIgbj1yKDcxMSk7dmFyIGE9cigzNzgyKTt2YXIgcz1yKDI3MjcpO3ZhciBvPWkuYXNzZXJ0O2Z1bmN0aW9uIFNob3J0Q3VydmUoZSl7cy5jYWxsKHRoaXMsXCJzaG9ydFwiLGUpO3RoaXMuYT1uZXcgbihlLmEsMTYpLnRvUmVkKHRoaXMucmVkKTt0aGlzLmI9bmV3IG4oZS5iLDE2KS50b1JlZCh0aGlzLnJlZCk7dGhpcy50aW52PXRoaXMudHdvLnJlZEludm0oKTt0aGlzLnplcm9BPXRoaXMuYS5mcm9tUmVkKCkuY21wbigwKT09PTA7dGhpcy50aHJlZUE9dGhpcy5hLmZyb21SZWQoKS5zdWIodGhpcy5wKS5jbXBuKC0zKT09PTA7dGhpcy5lbmRvPXRoaXMuX2dldEVuZG9tb3JwaGlzbShlKTt0aGlzLl9lbmRvV25hZlQxPW5ldyBBcnJheSg0KTt0aGlzLl9lbmRvV25hZlQyPW5ldyBBcnJheSg0KX1hKFNob3J0Q3VydmUscyk7ZS5leHBvcnRzPVNob3J0Q3VydmU7U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbiBfZ2V0RW5kb21vcnBoaXNtKGUpe2lmKCF0aGlzLnplcm9BfHwhdGhpcy5nfHwhdGhpcy5ufHx0aGlzLnAubW9kbigzKSE9PTEpcmV0dXJuO3ZhciB0O3ZhciByO2lmKGUuYmV0YSl7dD1uZXcgbihlLmJldGEsMTYpLnRvUmVkKHRoaXMucmVkKX1lbHNle3ZhciBpPXRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO3Q9aVswXS5jbXAoaVsxXSk8MD9pWzBdOmlbMV07dD10LnRvUmVkKHRoaXMucmVkKX1pZihlLmxhbWJkYSl7cj1uZXcgbihlLmxhbWJkYSwxNil9ZWxzZXt2YXIgYT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTtpZih0aGlzLmcubXVsKGFbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bCh0KSk9PT0wKXtyPWFbMF19ZWxzZXtyPWFbMV07byh0aGlzLmcubXVsKHIpLnguY21wKHRoaXMuZy54LnJlZE11bCh0KSk9PT0wKX19dmFyIHM7aWYoZS5iYXNpcyl7cz1lLmJhc2lzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2E6bmV3IG4oZS5hLDE2KSxiOm5ldyBuKGUuYiwxNil9fSkpfWVsc2V7cz10aGlzLl9nZXRFbmRvQmFzaXMocil9cmV0dXJue2JldGE6dCxsYW1iZGE6cixiYXNpczpzfX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKGUpe3ZhciB0PWU9PT10aGlzLnA/dGhpcy5yZWQ6bi5tb250KGUpO3ZhciByPW5ldyBuKDIpLnRvUmVkKHQpLnJlZEludm0oKTt2YXIgaT1yLnJlZE5lZygpO3ZhciBhPW5ldyBuKDMpLnRvUmVkKHQpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwocik7dmFyIHM9aS5yZWRBZGQoYSkuZnJvbVJlZCgpO3ZhciBvPWkucmVkU3ViKGEpLmZyb21SZWQoKTtyZXR1cm5bcyxvXX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcz1mdW5jdGlvbiBfZ2V0RW5kb0Jhc2lzKGUpe3ZhciB0PXRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKS8yKSk7dmFyIHI9ZTt2YXIgaT10aGlzLm4uY2xvbmUoKTt2YXIgYT1uZXcgbigxKTt2YXIgcz1uZXcgbigwKTt2YXIgbz1uZXcgbigwKTt2YXIgaD1uZXcgbigxKTt2YXIgdTt2YXIgZDt2YXIgYzt2YXIgbDt2YXIgcDt2YXIgdjt2YXIgYjt2YXIgbT0wO3ZhciB5O3ZhciBnO3doaWxlKHIuY21wbigwKSE9PTApe3ZhciBfPWkuZGl2KHIpO3k9aS5zdWIoXy5tdWwocikpO2c9by5zdWIoXy5tdWwoYSkpO3ZhciB3PWguc3ViKF8ubXVsKHMpKTtpZighYyYmeS5jbXAodCk8MCl7dT1iLm5lZygpO2Q9YTtjPXkubmVnKCk7bD1nfWVsc2UgaWYoYyYmKyttPT09Mil7YnJlYWt9Yj15O2k9cjtyPXk7bz1hO2E9ZztoPXM7cz13fXA9eS5uZWcoKTt2PWc7dmFyIE09Yy5zcXIoKS5hZGQobC5zcXIoKSk7dmFyIEI9cC5zcXIoKS5hZGQodi5zcXIoKSk7aWYoQi5jbXAoTSk+PTApe3A9dTt2PWR9aWYoYy5uZWdhdGl2ZSl7Yz1jLm5lZygpO2w9bC5uZWcoKX1pZihwLm5lZ2F0aXZlKXtwPXAubmVnKCk7dj12Lm5lZygpfXJldHVyblt7YTpjLGI6bH0se2E6cCxiOnZ9XX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2VuZG9TcGxpdD1mdW5jdGlvbiBfZW5kb1NwbGl0KGUpe3ZhciB0PXRoaXMuZW5kby5iYXNpczt2YXIgcj10WzBdO3ZhciBpPXRbMV07dmFyIG49aS5iLm11bChlKS5kaXZSb3VuZCh0aGlzLm4pO3ZhciBhPXIuYi5uZWcoKS5tdWwoZSkuZGl2Um91bmQodGhpcy5uKTt2YXIgcz1uLm11bChyLmEpO3ZhciBvPWEubXVsKGkuYSk7dmFyIGg9bi5tdWwoci5iKTt2YXIgdT1hLm11bChpLmIpO3ZhciBkPWUuc3ViKHMpLnN1YihvKTt2YXIgYz1oLmFkZCh1KS5uZWcoKTtyZXR1cm57azE6ZCxrMjpjfX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbiBwb2ludEZyb21YKGUsdCl7ZT1uZXcgbihlLDE2KTtpZighZS5yZWQpZT1lLnRvUmVkKHRoaXMucmVkKTt2YXIgcj1lLnJlZFNxcigpLnJlZE11bChlKS5yZWRJQWRkKGUucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKTt2YXIgaT1yLnJlZFNxcnQoKTtpZihpLnJlZFNxcigpLnJlZFN1YihyKS5jbXAodGhpcy56ZXJvKSE9PTApdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludFwiKTt2YXIgYT1pLmZyb21SZWQoKS5pc09kZCgpO2lmKHQmJiFhfHwhdCYmYSlpPWkucmVkTmVnKCk7cmV0dXJuIHRoaXMucG9pbnQoZSxpKX07U2hvcnRDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24gdmFsaWRhdGUoZSl7aWYoZS5pbmYpcmV0dXJuIHRydWU7dmFyIHQ9ZS54O3ZhciByPWUueTt2YXIgaT10aGlzLmEucmVkTXVsKHQpO3ZhciBuPXQucmVkU3FyKCkucmVkTXVsKHQpLnJlZElBZGQoaSkucmVkSUFkZCh0aGlzLmIpO3JldHVybiByLnJlZFNxcigpLnJlZElTdWIobikuY21wbigwKT09PTB9O1Nob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZD1mdW5jdGlvbiBfZW5kb1duYWZNdWxBZGQoZSx0LHIpe3ZhciBpPXRoaXMuX2VuZG9XbmFmVDE7dmFyIG49dGhpcy5fZW5kb1duYWZUMjtmb3IodmFyIGE9MDthPGUubGVuZ3RoO2ErKyl7dmFyIHM9dGhpcy5fZW5kb1NwbGl0KHRbYV0pO3ZhciBvPWVbYV07dmFyIGg9by5fZ2V0QmV0YSgpO2lmKHMuazEubmVnYXRpdmUpe3MuazEuaW5lZygpO289by5uZWcodHJ1ZSl9aWYocy5rMi5uZWdhdGl2ZSl7cy5rMi5pbmVnKCk7aD1oLm5lZyh0cnVlKX1pW2EqMl09bztpW2EqMisxXT1oO25bYSoyXT1zLmsxO25bYSoyKzFdPXMuazJ9dmFyIHU9dGhpcy5fd25hZk11bEFkZCgxLGksbixhKjIscik7Zm9yKHZhciBkPTA7ZDxhKjI7ZCsrKXtpW2RdPW51bGw7bltkXT1udWxsfXJldHVybiB1fTtmdW5jdGlvbiBQb2ludChlLHQscixpKXtzLkJhc2VQb2ludC5jYWxsKHRoaXMsZSxcImFmZmluZVwiKTtpZih0PT09bnVsbCYmcj09PW51bGwpe3RoaXMueD1udWxsO3RoaXMueT1udWxsO3RoaXMuaW5mPXRydWV9ZWxzZXt0aGlzLng9bmV3IG4odCwxNik7dGhpcy55PW5ldyBuKHIsMTYpO2lmKGkpe3RoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7dGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKX1pZighdGhpcy54LnJlZCl0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtpZighdGhpcy55LnJlZCl0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTt0aGlzLmluZj1mYWxzZX19YShQb2ludCxzLkJhc2VQb2ludCk7U2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24gcG9pbnQoZSx0LHIpe3JldHVybiBuZXcgUG9pbnQodGhpcyxlLHQscil9O1Nob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihlLHQpe3JldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLGUsdCl9O1BvaW50LnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbiBfZ2V0QmV0YSgpe2lmKCF0aGlzLmN1cnZlLmVuZG8pcmV0dXJuO3ZhciBlPXRoaXMucHJlY29tcHV0ZWQ7aWYoZSYmZS5iZXRhKXJldHVybiBlLmJldGE7dmFyIHQ9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSx0aGlzLnkpO2lmKGUpe3ZhciByPXRoaXMuY3VydmU7dmFyIGVuZG9NdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHIucG9pbnQoZS54LnJlZE11bChyLmVuZG8uYmV0YSksZS55KX07ZS5iZXRhPXQ7dC5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjplLm5hZiYme3duZDplLm5hZi53bmQscG9pbnRzOmUubmFmLnBvaW50cy5tYXAoZW5kb011bCl9LGRvdWJsZXM6ZS5kb3VibGVzJiZ7c3RlcDplLmRvdWJsZXMuc3RlcCxwb2ludHM6ZS5kb3VibGVzLnBvaW50cy5tYXAoZW5kb011bCl9fX1yZXR1cm4gdH07UG9pbnQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbiB0b0pTT04oKXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm5bdGhpcy54LHRoaXMueV07cmV0dXJuW3RoaXMueCx0aGlzLnksdGhpcy5wcmVjb21wdXRlZCYme2RvdWJsZXM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzJiZ7c3RlcDp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMuc3RlcCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnBvaW50cy5zbGljZSgxKX0sbmFmOnRoaXMucHJlY29tcHV0ZWQubmFmJiZ7d25kOnRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxwb2ludHM6dGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpfX1dfTtQb2ludC5mcm9tSlNPTj1mdW5jdGlvbiBmcm9tSlNPTihlLHQscil7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiKXQ9SlNPTi5wYXJzZSh0KTt2YXIgaT1lLnBvaW50KHRbMF0sdFsxXSxyKTtpZighdFsyXSlyZXR1cm4gaTtmdW5jdGlvbiBvYmoycG9pbnQodCl7cmV0dXJuIGUucG9pbnQodFswXSx0WzFdLHIpfXZhciBuPXRbMl07aS5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6bi5kb3VibGVzJiZ7c3RlcDpuLmRvdWJsZXMuc3RlcCxwb2ludHM6W2ldLmNvbmNhdChuLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKX0sbmFmOm4ubmFmJiZ7d25kOm4ubmFmLnduZCxwb2ludHM6W2ldLmNvbmNhdChuLm5hZi5wb2ludHMubWFwKG9iajJwb2ludCkpfX07cmV0dXJuIGl9O1BvaW50LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm5cIjxFQyBQb2ludCBJbmZpbml0eT5cIjtyZXR1cm5cIjxFQyBQb2ludCB4OiBcIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCI+XCJ9O1BvaW50LnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uIGlzSW5maW5pdHkoKXtyZXR1cm4gdGhpcy5pbmZ9O1BvaW50LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKGUpe2lmKHRoaXMuaW5mKXJldHVybiBlO2lmKGUuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEoZSkpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5uZWcoKS5lcShlKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO2lmKHRoaXMueC5jbXAoZS54KT09PTApcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgdD10aGlzLnkucmVkU3ViKGUueSk7aWYodC5jbXBuKDApIT09MCl0PXQucmVkTXVsKHRoaXMueC5yZWRTdWIoZS54KS5yZWRJbnZtKCkpO3ZhciByPXQucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIoZS54KTt2YXIgaT10LnJlZE11bCh0aGlzLngucmVkU3ViKHIpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQocixpKX07UG9pbnQucHJvdG90eXBlLmRibD1mdW5jdGlvbiBkYmwoKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgZT10aGlzLnkucmVkQWRkKHRoaXMueSk7aWYoZS5jbXBuKDApPT09MClyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciB0PXRoaXMuY3VydmUuYTt2YXIgcj10aGlzLngucmVkU3FyKCk7dmFyIGk9ZS5yZWRJbnZtKCk7dmFyIG49ci5yZWRBZGQocikucmVkSUFkZChyKS5yZWRJQWRkKHQpLnJlZE11bChpKTt2YXIgYT1uLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTt2YXIgcz1uLnJlZE11bCh0aGlzLngucmVkU3ViKGEpKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYSxzKX07UG9pbnQucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24gZ2V0WCgpe3JldHVybiB0aGlzLnguZnJvbVJlZCgpfTtQb2ludC5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbiBnZXRZKCl7cmV0dXJuIHRoaXMueS5mcm9tUmVkKCl9O1BvaW50LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gbXVsKGUpe2U9bmV3IG4oZSwxNik7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7ZWxzZSBpZih0aGlzLl9oYXNEb3VibGVzKGUpKXJldHVybiB0aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLGUpO2Vsc2UgaWYodGhpcy5jdXJ2ZS5lbmRvKXJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW2VdKTtlbHNlIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsZSl9O1BvaW50LnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24gbXVsQWRkKGUsdCxyKXt2YXIgaT1bdGhpcyx0XTt2YXIgbj1bZSxyXTtpZih0aGlzLmN1cnZlLmVuZG8pcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKGksbik7ZWxzZSByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLGksbiwyKX07UG9pbnQucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24gam11bEFkZChlLHQscil7dmFyIGk9W3RoaXMsdF07dmFyIG49W2Uscl07aWYodGhpcy5jdXJ2ZS5lbmRvKXJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChpLG4sdHJ1ZSk7ZWxzZSByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLGksbiwyLHRydWUpfTtQb2ludC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24gZXEoZSl7cmV0dXJuIHRoaXM9PT1lfHx0aGlzLmluZj09PWUuaW5mJiYodGhpcy5pbmZ8fHRoaXMueC5jbXAoZS54KT09PTAmJnRoaXMueS5jbXAoZS55KT09PTApfTtQb2ludC5wcm90b3R5cGUubmVnPWZ1bmN0aW9uIG5lZyhlKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgdD10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKGUmJnRoaXMucHJlY29tcHV0ZWQpe3ZhciByPXRoaXMucHJlY29tcHV0ZWQ7dmFyIG5lZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZS5uZWcoKX07dC5wcmVjb21wdXRlZD17bmFmOnIubmFmJiZ7d25kOnIubmFmLnduZCxwb2ludHM6ci5uYWYucG9pbnRzLm1hcChuZWdhdGUpfSxkb3VibGVzOnIuZG91YmxlcyYme3N0ZXA6ci5kb3VibGVzLnN0ZXAscG9pbnRzOnIuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSl9fX1yZXR1cm4gdH07UG9pbnQucHJvdG90eXBlLnRvSj1mdW5jdGlvbiB0b0ooKXtpZih0aGlzLmluZilyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciBlPXRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpO3JldHVybiBlfTtmdW5jdGlvbiBKUG9pbnQoZSx0LHIsaSl7cy5CYXNlUG9pbnQuY2FsbCh0aGlzLGUsXCJqYWNvYmlhblwiKTtpZih0PT09bnVsbCYmcj09PW51bGwmJmk9PT1udWxsKXt0aGlzLng9dGhpcy5jdXJ2ZS5vbmU7dGhpcy55PXRoaXMuY3VydmUub25lO3RoaXMuej1uZXcgbigwKX1lbHNle3RoaXMueD1uZXcgbih0LDE2KTt0aGlzLnk9bmV3IG4ociwxNik7dGhpcy56PW5ldyBuKGksMTYpfWlmKCF0aGlzLngucmVkKXRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnkucmVkKXRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO2lmKCF0aGlzLnoucmVkKXRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO3RoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1hKEpQb2ludCxzLkJhc2VQb2ludCk7U2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uIGpwb2ludChlLHQscil7cmV0dXJuIG5ldyBKUG9pbnQodGhpcyxlLHQscil9O0pQb2ludC5wcm90b3R5cGUudG9QPWZ1bmN0aW9uIHRvUCgpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIGU9dGhpcy56LnJlZEludm0oKTt2YXIgdD1lLnJlZFNxcigpO3ZhciByPXRoaXMueC5yZWRNdWwodCk7dmFyIGk9dGhpcy55LnJlZE11bCh0KS5yZWRNdWwoZSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQocixpKX07SlBvaW50LnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24gbmVnKCl7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCksdGhpcy56KX07SlBvaW50LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gYWRkKGUpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBlO2lmKGUuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciB0PWUuei5yZWRTcXIoKTt2YXIgcj10aGlzLnoucmVkU3FyKCk7dmFyIGk9dGhpcy54LnJlZE11bCh0KTt2YXIgbj1lLngucmVkTXVsKHIpO3ZhciBhPXRoaXMueS5yZWRNdWwodC5yZWRNdWwoZS56KSk7dmFyIHM9ZS55LnJlZE11bChyLnJlZE11bCh0aGlzLnopKTt2YXIgbz1pLnJlZFN1YihuKTt2YXIgaD1hLnJlZFN1YihzKTtpZihvLmNtcG4oMCk9PT0wKXtpZihoLmNtcG4oMCkhPT0wKXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLG51bGwsbnVsbCk7ZWxzZSByZXR1cm4gdGhpcy5kYmwoKX12YXIgdT1vLnJlZFNxcigpO3ZhciBkPXUucmVkTXVsKG8pO3ZhciBjPWkucmVkTXVsKHUpO3ZhciBsPWgucmVkU3FyKCkucmVkSUFkZChkKS5yZWRJU3ViKGMpLnJlZElTdWIoYyk7dmFyIHA9aC5yZWRNdWwoYy5yZWRJU3ViKGwpKS5yZWRJU3ViKGEucmVkTXVsKGQpKTt2YXIgdj10aGlzLnoucmVkTXVsKGUueikucmVkTXVsKG8pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChsLHAsdil9O0pQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQ9ZnVuY3Rpb24gbWl4ZWRBZGQoZSl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIGUudG9KKCk7aWYoZS5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy56LnJlZFNxcigpO3ZhciByPXRoaXMueDt2YXIgaT1lLngucmVkTXVsKHQpO3ZhciBuPXRoaXMueTt2YXIgYT1lLnkucmVkTXVsKHQpLnJlZE11bCh0aGlzLnopO3ZhciBzPXIucmVkU3ViKGkpO3ZhciBvPW4ucmVkU3ViKGEpO2lmKHMuY21wbigwKT09PTApe2lmKG8uY21wbigwKSE9PTApcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTtlbHNlIHJldHVybiB0aGlzLmRibCgpfXZhciBoPXMucmVkU3FyKCk7dmFyIHU9aC5yZWRNdWwocyk7dmFyIGQ9ci5yZWRNdWwoaCk7dmFyIGM9by5yZWRTcXIoKS5yZWRJQWRkKHUpLnJlZElTdWIoZCkucmVkSVN1YihkKTt2YXIgbD1vLnJlZE11bChkLnJlZElTdWIoYykpLnJlZElTdWIobi5yZWRNdWwodSkpO3ZhciBwPXRoaXMuei5yZWRNdWwocyk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGMsbCxwKX07SlBvaW50LnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uIGRibHAoZSl7aWYoZT09PTApcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIWUpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe3ZhciB0PXRoaXM7Zm9yKHZhciByPTA7cjxlO3IrKyl0PXQuZGJsKCk7cmV0dXJuIHR9dmFyIGk9dGhpcy5jdXJ2ZS5hO3ZhciBuPXRoaXMuY3VydmUudGludjt2YXIgYT10aGlzLng7dmFyIHM9dGhpcy55O3ZhciBvPXRoaXMuejt2YXIgaD1vLnJlZFNxcigpLnJlZFNxcigpO3ZhciB1PXMucmVkQWRkKHMpO2Zvcih2YXIgcj0wO3I8ZTtyKyspe3ZhciBkPWEucmVkU3FyKCk7dmFyIGM9dS5yZWRTcXIoKTt2YXIgbD1jLnJlZFNxcigpO3ZhciBwPWQucmVkQWRkKGQpLnJlZElBZGQoZCkucmVkSUFkZChpLnJlZE11bChoKSk7dmFyIHY9YS5yZWRNdWwoYyk7dmFyIGI9cC5yZWRTcXIoKS5yZWRJU3ViKHYucmVkQWRkKHYpKTt2YXIgbT12LnJlZElTdWIoYik7dmFyIHk9cC5yZWRNdWwobSk7eT15LnJlZElBZGQoeSkucmVkSVN1YihsKTt2YXIgZz11LnJlZE11bChvKTtpZihyKzE8ZSloPWgucmVkTXVsKGwpO2E9YjtvPWc7dT15fXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChhLHUucmVkTXVsKG4pLG8pfTtKUG9pbnQucHJvdG90eXBlLmRibD1mdW5jdGlvbiBkYmwoKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcztpZih0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLl96ZXJvRGJsKCk7ZWxzZSBpZih0aGlzLmN1cnZlLnRocmVlQSlyZXR1cm4gdGhpcy5fdGhyZWVEYmwoKTtlbHNlIHJldHVybiB0aGlzLl9kYmwoKX07SlBvaW50LnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbiBfemVyb0RibCgpe3ZhciBlO3ZhciB0O3ZhciByO2lmKHRoaXMuek9uZSl7dmFyIGk9dGhpcy54LnJlZFNxcigpO3ZhciBuPXRoaXMueS5yZWRTcXIoKTt2YXIgYT1uLnJlZFNxcigpO3ZhciBzPXRoaXMueC5yZWRBZGQobikucmVkU3FyKCkucmVkSVN1YihpKS5yZWRJU3ViKGEpO3M9cy5yZWRJQWRkKHMpO3ZhciBvPWkucmVkQWRkKGkpLnJlZElBZGQoaSk7dmFyIGg9by5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7dmFyIHU9YS5yZWRJQWRkKGEpO3U9dS5yZWRJQWRkKHUpO3U9dS5yZWRJQWRkKHUpO2U9aDt0PW8ucmVkTXVsKHMucmVkSVN1YihoKSkucmVkSVN1Yih1KTtyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBkPXRoaXMueC5yZWRTcXIoKTt2YXIgYz10aGlzLnkucmVkU3FyKCk7dmFyIGw9Yy5yZWRTcXIoKTt2YXIgcD10aGlzLngucmVkQWRkKGMpLnJlZFNxcigpLnJlZElTdWIoZCkucmVkSVN1YihsKTtwPXAucmVkSUFkZChwKTt2YXIgdj1kLnJlZEFkZChkKS5yZWRJQWRkKGQpO3ZhciBiPXYucmVkU3FyKCk7dmFyIG09bC5yZWRJQWRkKGwpO209bS5yZWRJQWRkKG0pO209bS5yZWRJQWRkKG0pO2U9Yi5yZWRJU3ViKHApLnJlZElTdWIocCk7dD12LnJlZE11bChwLnJlZElTdWIoZSkpLnJlZElTdWIobSk7cj10aGlzLnkucmVkTXVsKHRoaXMueik7cj1yLnJlZElBZGQocil9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGUsdCxyKX07SlBvaW50LnByb3RvdHlwZS5fdGhyZWVEYmw9ZnVuY3Rpb24gX3RocmVlRGJsKCl7dmFyIGU7dmFyIHQ7dmFyIHI7aWYodGhpcy56T25lKXt2YXIgaT10aGlzLngucmVkU3FyKCk7dmFyIG49dGhpcy55LnJlZFNxcigpO3ZhciBhPW4ucmVkU3FyKCk7dmFyIHM9dGhpcy54LnJlZEFkZChuKS5yZWRTcXIoKS5yZWRJU3ViKGkpLnJlZElTdWIoYSk7cz1zLnJlZElBZGQocyk7dmFyIG89aS5yZWRBZGQoaSkucmVkSUFkZChpKS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7dmFyIGg9by5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7ZT1oO3ZhciB1PWEucmVkSUFkZChhKTt1PXUucmVkSUFkZCh1KTt1PXUucmVkSUFkZCh1KTt0PW8ucmVkTXVsKHMucmVkSVN1YihoKSkucmVkSVN1Yih1KTtyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBkPXRoaXMuei5yZWRTcXIoKTt2YXIgYz10aGlzLnkucmVkU3FyKCk7dmFyIGw9dGhpcy54LnJlZE11bChjKTt2YXIgcD10aGlzLngucmVkU3ViKGQpLnJlZE11bCh0aGlzLngucmVkQWRkKGQpKTtwPXAucmVkQWRkKHApLnJlZElBZGQocCk7dmFyIHY9bC5yZWRJQWRkKGwpO3Y9di5yZWRJQWRkKHYpO3ZhciBiPXYucmVkQWRkKHYpO2U9cC5yZWRTcXIoKS5yZWRJU3ViKGIpO3I9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoYykucmVkSVN1YihkKTt2YXIgbT1jLnJlZFNxcigpO209bS5yZWRJQWRkKG0pO209bS5yZWRJQWRkKG0pO209bS5yZWRJQWRkKG0pO3Q9cC5yZWRNdWwodi5yZWRJU3ViKGUpKS5yZWRJU3ViKG0pfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChlLHQscil9O0pQb2ludC5wcm90b3R5cGUuX2RibD1mdW5jdGlvbiBfZGJsKCl7dmFyIGU9dGhpcy5jdXJ2ZS5hO3ZhciB0PXRoaXMueDt2YXIgcj10aGlzLnk7dmFyIGk9dGhpcy56O3ZhciBuPWkucmVkU3FyKCkucmVkU3FyKCk7dmFyIGE9dC5yZWRTcXIoKTt2YXIgcz1yLnJlZFNxcigpO3ZhciBvPWEucmVkQWRkKGEpLnJlZElBZGQoYSkucmVkSUFkZChlLnJlZE11bChuKSk7dmFyIGg9dC5yZWRBZGQodCk7aD1oLnJlZElBZGQoaCk7dmFyIHU9aC5yZWRNdWwocyk7dmFyIGQ9by5yZWRTcXIoKS5yZWRJU3ViKHUucmVkQWRkKHUpKTt2YXIgYz11LnJlZElTdWIoZCk7dmFyIGw9cy5yZWRTcXIoKTtsPWwucmVkSUFkZChsKTtsPWwucmVkSUFkZChsKTtsPWwucmVkSUFkZChsKTt2YXIgcD1vLnJlZE11bChjKS5yZWRJU3ViKGwpO3ZhciB2PXIucmVkQWRkKHIpLnJlZE11bChpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoZCxwLHYpfTtKUG9pbnQucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24gdHJwbCgpe2lmKCF0aGlzLmN1cnZlLnplcm9BKXJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTt2YXIgZT10aGlzLngucmVkU3FyKCk7dmFyIHQ9dGhpcy55LnJlZFNxcigpO3ZhciByPXRoaXMuei5yZWRTcXIoKTt2YXIgaT10LnJlZFNxcigpO3ZhciBuPWUucmVkQWRkKGUpLnJlZElBZGQoZSk7dmFyIGE9bi5yZWRTcXIoKTt2YXIgcz10aGlzLngucmVkQWRkKHQpLnJlZFNxcigpLnJlZElTdWIoZSkucmVkSVN1YihpKTtzPXMucmVkSUFkZChzKTtzPXMucmVkQWRkKHMpLnJlZElBZGQocyk7cz1zLnJlZElTdWIoYSk7dmFyIG89cy5yZWRTcXIoKTt2YXIgaD1pLnJlZElBZGQoaSk7aD1oLnJlZElBZGQoaCk7aD1oLnJlZElBZGQoaCk7aD1oLnJlZElBZGQoaCk7dmFyIHU9bi5yZWRJQWRkKHMpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihvKS5yZWRJU3ViKGgpO3ZhciBkPXQucmVkTXVsKHUpO2Q9ZC5yZWRJQWRkKGQpO2Q9ZC5yZWRJQWRkKGQpO3ZhciBjPXRoaXMueC5yZWRNdWwobykucmVkSVN1YihkKTtjPWMucmVkSUFkZChjKTtjPWMucmVkSUFkZChjKTt2YXIgbD10aGlzLnkucmVkTXVsKHUucmVkTXVsKGgucmVkSVN1Yih1KSkucmVkSVN1YihzLnJlZE11bChvKSkpO2w9bC5yZWRJQWRkKGwpO2w9bC5yZWRJQWRkKGwpO2w9bC5yZWRJQWRkKGwpO3ZhciBwPXRoaXMuei5yZWRBZGQocykucmVkU3FyKCkucmVkSVN1YihyKS5yZWRJU3ViKG8pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChjLGwscCl9O0pQb2ludC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIG11bChlLHQpe2U9bmV3IG4oZSx0KTtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGUpfTtKUG9pbnQucHJvdG90eXBlLmVxPWZ1bmN0aW9uIGVxKGUpe2lmKGUudHlwZT09PVwiYWZmaW5lXCIpcmV0dXJuIHRoaXMuZXEoZS50b0ooKSk7aWYodGhpcz09PWUpcmV0dXJuIHRydWU7dmFyIHQ9dGhpcy56LnJlZFNxcigpO3ZhciByPWUuei5yZWRTcXIoKTtpZih0aGlzLngucmVkTXVsKHIpLnJlZElTdWIoZS54LnJlZE11bCh0KSkuY21wbigwKSE9PTApcmV0dXJuIGZhbHNlO3ZhciBpPXQucmVkTXVsKHRoaXMueik7dmFyIG49ci5yZWRNdWwoZS56KTtyZXR1cm4gdGhpcy55LnJlZE11bChuKS5yZWRJU3ViKGUueS5yZWRNdWwoaSkpLmNtcG4oMCk9PT0wfTtKUG9pbnQucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbiBlcVhUb1AoZSl7dmFyIHQ9dGhpcy56LnJlZFNxcigpO3ZhciByPWUudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0KTtpZih0aGlzLnguY21wKHIpPT09MClyZXR1cm4gdHJ1ZTt2YXIgaT1lLmNsb25lKCk7dmFyIG49dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0KTtmb3IoOzspe2kuaWFkZCh0aGlzLmN1cnZlLm4pO2lmKGkuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuIGZhbHNlO3IucmVkSUFkZChuKTtpZih0aGlzLnguY21wKHIpPT09MClyZXR1cm4gdHJ1ZX19O0pQb2ludC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbiBpbnNwZWN0KCl7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuXCI8RUMgSlBvaW50IEluZmluaXR5PlwiO3JldHVyblwiPEVDIEpQb2ludCB4OiBcIit0aGlzLngudG9TdHJpbmcoMTYsMikrXCIgeTogXCIrdGhpcy55LnRvU3RyaW5nKDE2LDIpK1wiIHo6IFwiK3RoaXMuei50b1N0cmluZygxNiwyKStcIj5cIn07SlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uIGlzSW5maW5pdHkoKXtyZXR1cm4gdGhpcy56LmNtcG4oMCk9PT0wfX0sNjIyNjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9dDt2YXIgbj1yKDcwMjgpO3ZhciBhPXIoOTM1OSk7dmFyIHM9cig0NDAxKTt2YXIgbz1zLmFzc2VydDtmdW5jdGlvbiBQcmVzZXRDdXJ2ZShlKXtpZihlLnR5cGU9PT1cInNob3J0XCIpdGhpcy5jdXJ2ZT1uZXcgYS5zaG9ydChlKTtlbHNlIGlmKGUudHlwZT09PVwiZWR3YXJkc1wiKXRoaXMuY3VydmU9bmV3IGEuZWR3YXJkcyhlKTtlbHNlIHRoaXMuY3VydmU9bmV3IGEubW9udChlKTt0aGlzLmc9dGhpcy5jdXJ2ZS5nO3RoaXMubj10aGlzLmN1cnZlLm47dGhpcy5oYXNoPWUuaGFzaDtvKHRoaXMuZy52YWxpZGF0ZSgpLFwiSW52YWxpZCBjdXJ2ZVwiKTtvKHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksXCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gT1wiKX1pLlByZXNldEN1cnZlPVByZXNldEN1cnZlO2Z1bmN0aW9uIGRlZmluZUN1cnZlKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7Y29uZmlndXJhYmxlOnRydWUsZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3ZhciByPW5ldyBQcmVzZXRDdXJ2ZSh0KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxlLHtjb25maWd1cmFibGU6dHJ1ZSxlbnVtZXJhYmxlOnRydWUsdmFsdWU6cn0pO3JldHVybiByfX0pfWRlZmluZUN1cnZlKFwicDE5MlwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpcInAxOTJcIixwOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmZcIixhOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmNcIixiOlwiNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjFcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzFcIixoYXNoOm4uc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbXCIxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMlwiLFwiMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTFcIl19KTtkZWZpbmVDdXJ2ZShcInAyMjRcIix7dHlwZTpcInNob3J0XCIscHJpbWU6XCJwMjI0XCIscDpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxXCIsYTpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlXCIsYjpcImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0XCIsbjpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkXCIsaGFzaDpuLnNoYTI1NixnUmVkOmZhbHNlLGc6W1wiYjcwZTBjYmQgNmJiNGJmN2YgMzIxMzkwYjkgNGEwM2MxZDMgNTZjMjExMjIgMzQzMjgwZDYgMTE1YzFkMjFcIixcImJkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0XCJdfSk7ZGVmaW5lQ3VydmUoXCJwMjU2XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmXCIsYTpcImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjXCIsYjpcIjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiXCIsbjpcImZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxXCIsaGFzaDpuLnNoYTI1NixnUmVkOmZhbHNlLGc6W1wiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTZcIixcIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1XCJdfSk7ZGVmaW5lQ3VydmUoXCJwMzg0XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIFwiK1wiZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmZcIixhOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgXCIrXCJmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmY1wiLGI6XCJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiBcIitcIjUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmXCIsbjpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxIFwiK1wiZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzNcIixoYXNoOm4uc2hhMzg0LGdSZWQ6ZmFsc2UsZzpbXCJhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCBcIitcIjU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3XCIsXCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCBcIitcIjBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmXCJdfSk7ZGVmaW5lQ3VydmUoXCJwNTIxXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcIjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIFwiK1wiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgXCIrXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZlwiLGE6XCIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBcIitcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIFwiK1wiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmNcIixiOlwiMDAwMDAwNTEgOTUzZWI5NjEgOGUxYzlhMWYgOTI5YTIxYTAgYjY4NTQwZWUgYTJkYTcyNWIgXCIrXCI5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCBcIitcIjNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwXCIsbjpcIjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIFwiK1wiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmEgNTE4Njg3ODMgYmYyZjk2NmIgN2ZjYzAxNDggXCIrXCJmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOVwiLGhhc2g6bi5zaGE1MTIsZ1JlZDpmYWxzZSxnOltcIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IFwiK1wiMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgXCIrXCJhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NlwiLFwiMDAwMDAxMTggMzkyOTZhNzggOWEzYmMwMDQgNWM4YTVmYjQgMmM3ZDFiZDkgOThmNTQ0NDkgXCIrXCI1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSBcIitcIjNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwXCJdfSk7ZGVmaW5lQ3VydmUoXCJjdXJ2ZTI1NTE5XCIse3R5cGU6XCJtb250XCIscHJpbWU6XCJwMjU1MTlcIixwOlwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiLGE6XCI3NmQwNlwiLGI6XCIxXCIsbjpcIjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWRcIixoYXNoOm4uc2hhMjU2LGdSZWQ6ZmFsc2UsZzpbXCI5XCJdfSk7ZGVmaW5lQ3VydmUoXCJlZDI1NTE5XCIse3R5cGU6XCJlZHdhcmRzXCIscHJpbWU6XCJwMjU1MTlcIixwOlwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiLGE6XCItMVwiLGM6XCIxXCIsZDpcIjUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTNcIixuOlwiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZFwiLGhhc2g6bi5zaGEyNTYsZ1JlZDpmYWxzZSxnOltcIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWFcIixcIjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NThcIl19KTt2YXIgaDt0cnl7aD1yKDk3MDIpfWNhdGNoKGUpe2g9dW5kZWZpbmVkfWRlZmluZUN1cnZlKFwic2VjcDI1NmsxXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwiazI1NlwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZlwiLGE6XCIwXCIsYjpcIjdcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDFcIixoOlwiMVwiLGhhc2g6bi5zaGEyNTYsYmV0YTpcIjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWVcIixsYW1iZGE6XCI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyXCIsYmFzaXM6W3thOlwiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTVcIixiOlwiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzXCJ9LHthOlwiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4XCIsYjpcIjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1XCJ9XSxnUmVkOmZhbHNlLGc6W1wiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OFwiLFwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOFwiLGhdfSl9LDQwODg6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoNzExKTt2YXIgbj1yKDQ5MTApO3ZhciBhPXIoNDQwMSk7dmFyIHM9cig2MjI2KTt2YXIgbz1yKDM1MDApO3ZhciBoPWEuYXNzZXJ0O3ZhciB1PXIoNDcyNCk7dmFyIGQ9cig3NTI2KTtmdW5jdGlvbiBFQyhlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBFQykpcmV0dXJuIG5ldyBFQyhlKTtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2gocy5oYXNPd25Qcm9wZXJ0eShlKSxcIlVua25vd24gY3VydmUgXCIrZSk7ZT1zW2VdfWlmKGUgaW5zdGFuY2VvZiBzLlByZXNldEN1cnZlKWU9e2N1cnZlOmV9O3RoaXMuY3VydmU9ZS5jdXJ2ZS5jdXJ2ZTt0aGlzLm49dGhpcy5jdXJ2ZS5uO3RoaXMubmg9dGhpcy5uLnVzaHJuKDEpO3RoaXMuZz10aGlzLmN1cnZlLmc7dGhpcy5nPWUuY3VydmUuZzt0aGlzLmcucHJlY29tcHV0ZShlLmN1cnZlLm4uYml0TGVuZ3RoKCkrMSk7dGhpcy5oYXNoPWUuaGFzaHx8ZS5jdXJ2ZS5oYXNofWUuZXhwb3J0cz1FQztFQy5wcm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbiBrZXlQYWlyKGUpe3JldHVybiBuZXcgdSh0aGlzLGUpfTtFQy5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUoZSx0KXtyZXR1cm4gdS5mcm9tUHJpdmF0ZSh0aGlzLGUsdCl9O0VDLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uIGtleUZyb21QdWJsaWMoZSx0KXtyZXR1cm4gdS5mcm9tUHVibGljKHRoaXMsZSx0KX07RUMucHJvdG90eXBlLmdlbktleVBhaXI9ZnVuY3Rpb24gZ2VuS2V5UGFpcihlKXtpZighZSllPXt9O3ZhciB0PW5ldyBuKHtoYXNoOnRoaXMuaGFzaCxwZXJzOmUucGVycyxwZXJzRW5jOmUucGVyc0VuY3x8XCJ1dGY4XCIsZW50cm9weTplLmVudHJvcHl8fG8odGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksZW50cm9weUVuYzplLmVudHJvcHkmJmUuZW50cm9weUVuY3x8XCJ1dGY4XCIsbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pO3ZhciByPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIGE9dGhpcy5uLnN1YihuZXcgaSgyKSk7ZG97dmFyIHM9bmV3IGkodC5nZW5lcmF0ZShyKSk7aWYocy5jbXAoYSk+MCljb250aW51ZTtzLmlhZGRuKDEpO3JldHVybiB0aGlzLmtleUZyb21Qcml2YXRlKHMpfXdoaWxlKHRydWUpfTtFQy5wcm90b3R5cGUuX3RydW5jYXRlVG9OPWZ1bmN0aW9uIHRydW5jYXRlVG9OKGUsdCl7dmFyIHI9ZS5ieXRlTGVuZ3RoKCkqOC10aGlzLm4uYml0TGVuZ3RoKCk7aWYocj4wKWU9ZS51c2hybihyKTtpZighdCYmZS5jbXAodGhpcy5uKT49MClyZXR1cm4gZS5zdWIodGhpcy5uKTtlbHNlIHJldHVybiBlfTtFQy5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiBzaWduKGUsdCxyLGEpe2lmKHR5cGVvZiByPT09XCJvYmplY3RcIil7YT1yO3I9bnVsbH1pZighYSlhPXt9O3Q9dGhpcy5rZXlGcm9tUHJpdmF0ZSh0LHIpO2U9dGhpcy5fdHJ1bmNhdGVUb04obmV3IGkoZSwxNikpO3ZhciBzPXRoaXMubi5ieXRlTGVuZ3RoKCk7dmFyIG89dC5nZXRQcml2YXRlKCkudG9BcnJheShcImJlXCIscyk7dmFyIGg9ZS50b0FycmF5KFwiYmVcIixzKTt2YXIgdT1uZXcgbih7aGFzaDp0aGlzLmhhc2gsZW50cm9weTpvLG5vbmNlOmgscGVyczphLnBlcnMscGVyc0VuYzphLnBlcnNFbmN8fFwidXRmOFwifSk7dmFyIGM9dGhpcy5uLnN1YihuZXcgaSgxKSk7Zm9yKHZhciBsPTA7dHJ1ZTtsKyspe3ZhciBwPWEuaz9hLmsobCk6bmV3IGkodS5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7cD10aGlzLl90cnVuY2F0ZVRvTihwLHRydWUpO2lmKHAuY21wbigxKTw9MHx8cC5jbXAoYyk+PTApY29udGludWU7dmFyIHY9dGhpcy5nLm11bChwKTtpZih2LmlzSW5maW5pdHkoKSljb250aW51ZTt2YXIgYj12LmdldFgoKTt2YXIgbT1iLnVtb2QodGhpcy5uKTtpZihtLmNtcG4oMCk9PT0wKWNvbnRpbnVlO3ZhciB5PXAuaW52bSh0aGlzLm4pLm11bChtLm11bCh0LmdldFByaXZhdGUoKSkuaWFkZChlKSk7eT15LnVtb2QodGhpcy5uKTtpZih5LmNtcG4oMCk9PT0wKWNvbnRpbnVlO3ZhciBnPSh2LmdldFkoKS5pc09kZCgpPzE6MCl8KGIuY21wKG0pIT09MD8yOjApO2lmKGEuY2Fub25pY2FsJiZ5LmNtcCh0aGlzLm5oKT4wKXt5PXRoaXMubi5zdWIoeSk7Z149MX1yZXR1cm4gbmV3IGQoe3I6bSxzOnkscmVjb3ZlcnlQYXJhbTpnfSl9fTtFQy5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uIHZlcmlmeShlLHQscixuKXtlPXRoaXMuX3RydW5jYXRlVG9OKG5ldyBpKGUsMTYpKTtyPXRoaXMua2V5RnJvbVB1YmxpYyhyLG4pO3Q9bmV3IGQodCxcImhleFwiKTt2YXIgYT10LnI7dmFyIHM9dC5zO2lmKGEuY21wbigxKTwwfHxhLmNtcCh0aGlzLm4pPj0wKXJldHVybiBmYWxzZTtpZihzLmNtcG4oMSk8MHx8cy5jbXAodGhpcy5uKT49MClyZXR1cm4gZmFsc2U7dmFyIG89cy5pbnZtKHRoaXMubik7dmFyIGg9by5tdWwoZSkudW1vZCh0aGlzLm4pO3ZhciB1PW8ubXVsKGEpLnVtb2QodGhpcy5uKTtpZighdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKXt2YXIgYz10aGlzLmcubXVsQWRkKGgsci5nZXRQdWJsaWMoKSx1KTtpZihjLmlzSW5maW5pdHkoKSlyZXR1cm4gZmFsc2U7cmV0dXJuIGMuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAoYSk9PT0wfXZhciBjPXRoaXMuZy5qbXVsQWRkKGgsci5nZXRQdWJsaWMoKSx1KTtpZihjLmlzSW5maW5pdHkoKSlyZXR1cm4gZmFsc2U7cmV0dXJuIGMuZXFYVG9QKGEpfTtFQy5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihlLHQscixuKXtoKCgzJnIpPT09cixcIlRoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHNcIik7dD1uZXcgZCh0LG4pO3ZhciBhPXRoaXMubjt2YXIgcz1uZXcgaShlKTt2YXIgbz10LnI7dmFyIHU9dC5zO3ZhciBjPXImMTt2YXIgbD1yPj4xO2lmKG8uY21wKHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpPj0wJiZsKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZVwiKTtpZihsKW89dGhpcy5jdXJ2ZS5wb2ludEZyb21YKG8uYWRkKHRoaXMuY3VydmUubiksYyk7ZWxzZSBvPXRoaXMuY3VydmUucG9pbnRGcm9tWChvLGMpO3ZhciBwPXQuci5pbnZtKGEpO3ZhciB2PWEuc3ViKHMpLm11bChwKS51bW9kKGEpO3ZhciBiPXUubXVsKHApLnVtb2QoYSk7cmV0dXJuIHRoaXMuZy5tdWxBZGQodixvLGIpfTtFQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbT1mdW5jdGlvbihlLHQscixpKXt0PW5ldyBkKHQsaSk7aWYodC5yZWNvdmVyeVBhcmFtIT09bnVsbClyZXR1cm4gdC5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgbj0wO248NDtuKyspe3ZhciBhO3RyeXthPXRoaXMucmVjb3ZlclB1YktleShlLHQsbil9Y2F0Y2goZSl7Y29udGludWV9aWYoYS5lcShyKSlyZXR1cm4gbn10aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3JcIil9fSw0NzI0OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDcxMSk7dmFyIG49cig0NDAxKTt2YXIgYT1uLmFzc2VydDtmdW5jdGlvbiBLZXlQYWlyKGUsdCl7dGhpcy5lYz1lO3RoaXMucHJpdj1udWxsO3RoaXMucHViPW51bGw7aWYodC5wcml2KXRoaXMuX2ltcG9ydFByaXZhdGUodC5wcml2LHQucHJpdkVuYyk7aWYodC5wdWIpdGhpcy5faW1wb3J0UHVibGljKHQucHViLHQucHViRW5jKX1lLmV4cG9ydHM9S2V5UGFpcjtLZXlQYWlyLmZyb21QdWJsaWM9ZnVuY3Rpb24gZnJvbVB1YmxpYyhlLHQscil7aWYodCBpbnN0YW5jZW9mIEtleVBhaXIpcmV0dXJuIHQ7cmV0dXJuIG5ldyBLZXlQYWlyKGUse3B1Yjp0LHB1YkVuYzpyfSl9O0tleVBhaXIuZnJvbVByaXZhdGU9ZnVuY3Rpb24gZnJvbVByaXZhdGUoZSx0LHIpe2lmKHQgaW5zdGFuY2VvZiBLZXlQYWlyKXJldHVybiB0O3JldHVybiBuZXcgS2V5UGFpcihlLHtwcml2OnQscHJpdkVuYzpyfSl9O0tleVBhaXIucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uIHZhbGlkYXRlKCl7dmFyIGU9dGhpcy5nZXRQdWJsaWMoKTtpZihlLmlzSW5maW5pdHkoKSlyZXR1cm57cmVzdWx0OmZhbHNlLHJlYXNvbjpcIkludmFsaWQgcHVibGljIGtleVwifTtpZighZS52YWxpZGF0ZSgpKXJldHVybntyZXN1bHQ6ZmFsc2UscmVhc29uOlwiUHVibGljIGtleSBpcyBub3QgYSBwb2ludFwifTtpZighZS5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCkpcmV0dXJue3Jlc3VsdDpmYWxzZSxyZWFzb246XCJQdWJsaWMga2V5ICogTiAhPSBPXCJ9O3JldHVybntyZXN1bHQ6dHJ1ZSxyZWFzb246bnVsbH19O0tleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbiBnZXRQdWJsaWMoZSx0KXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe3Q9ZTtlPW51bGx9aWYoIXRoaXMucHViKXRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KTtpZighdClyZXR1cm4gdGhpcy5wdWI7cmV0dXJuIHRoaXMucHViLmVuY29kZSh0LGUpfTtLZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uIGdldFByaXZhdGUoZSl7aWYoZT09PVwiaGV4XCIpcmV0dXJuIHRoaXMucHJpdi50b1N0cmluZygxNiwyKTtlbHNlIHJldHVybiB0aGlzLnByaXZ9O0tleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlPWZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGUsdCl7dGhpcy5wcml2PW5ldyBpKGUsdHx8MTYpO3RoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfTtLZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHVibGljPWZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoZSx0KXtpZihlLnh8fGUueSl7aWYodGhpcy5lYy5jdXJ2ZS50eXBlPT09XCJtb250XCIpe2EoZS54LFwiTmVlZCB4IGNvb3JkaW5hdGVcIil9ZWxzZSBpZih0aGlzLmVjLmN1cnZlLnR5cGU9PT1cInNob3J0XCJ8fHRoaXMuZWMuY3VydmUudHlwZT09PVwiZWR3YXJkc1wiKXthKGUueCYmZS55LFwiTmVlZCBib3RoIHggYW5kIHkgY29vcmRpbmF0ZVwiKX10aGlzLnB1Yj10aGlzLmVjLmN1cnZlLnBvaW50KGUueCxlLnkpO3JldHVybn10aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KGUsdCl9O0tleVBhaXIucHJvdG90eXBlLmRlcml2ZT1mdW5jdGlvbiBkZXJpdmUoZSl7cmV0dXJuIGUubXVsKHRoaXMucHJpdikuZ2V0WCgpfTtLZXlQYWlyLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uIHNpZ24oZSx0LHIpe3JldHVybiB0aGlzLmVjLnNpZ24oZSx0aGlzLHQscil9O0tleVBhaXIucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnkoZSx0KXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkoZSx0LHRoaXMpfTtLZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uIGluc3BlY3QoKXtyZXR1cm5cIjxLZXkgcHJpdjogXCIrKHRoaXMucHJpdiYmdGhpcy5wcml2LnRvU3RyaW5nKDE2LDIpKStcIiBwdWI6IFwiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKStcIiA+XCJ9fSw3NTI2OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDcxMSk7dmFyIG49cig0NDAxKTt2YXIgYT1uLmFzc2VydDtmdW5jdGlvbiBTaWduYXR1cmUoZSx0KXtpZihlIGluc3RhbmNlb2YgU2lnbmF0dXJlKXJldHVybiBlO2lmKHRoaXMuX2ltcG9ydERFUihlLHQpKXJldHVybjthKGUuciYmZS5zLFwiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzXCIpO3RoaXMucj1uZXcgaShlLnIsMTYpO3RoaXMucz1uZXcgaShlLnMsMTYpO2lmKGUucmVjb3ZlcnlQYXJhbT09PXVuZGVmaW5lZCl0aGlzLnJlY292ZXJ5UGFyYW09bnVsbDtlbHNlIHRoaXMucmVjb3ZlcnlQYXJhbT1lLnJlY292ZXJ5UGFyYW19ZS5leHBvcnRzPVNpZ25hdHVyZTtmdW5jdGlvbiBQb3NpdGlvbigpe3RoaXMucGxhY2U9MH1mdW5jdGlvbiBnZXRMZW5ndGgoZSx0KXt2YXIgcj1lW3QucGxhY2UrK107aWYoIShyJjEyOCkpe3JldHVybiByfXZhciBpPXImMTU7aWYoaT09PTB8fGk+NCl7cmV0dXJuIGZhbHNlfXZhciBuPTA7Zm9yKHZhciBhPTAscz10LnBsYWNlO2E8aTthKysscysrKXtuPDw9ODtufD1lW3NdO24+Pj49MH1pZihuPD0xMjcpe3JldHVybiBmYWxzZX10LnBsYWNlPXM7cmV0dXJuIG59ZnVuY3Rpb24gcm1QYWRkaW5nKGUpe3ZhciB0PTA7dmFyIHI9ZS5sZW5ndGgtMTt3aGlsZSghZVt0XSYmIShlW3QrMV0mMTI4KSYmdDxyKXt0Kyt9aWYodD09PTApe3JldHVybiBlfXJldHVybiBlLnNsaWNlKHQpfVNpZ25hdHVyZS5wcm90b3R5cGUuX2ltcG9ydERFUj1mdW5jdGlvbiBfaW1wb3J0REVSKGUsdCl7ZT1uLnRvQXJyYXkoZSx0KTt2YXIgcj1uZXcgUG9zaXRpb247aWYoZVtyLnBsYWNlKytdIT09NDgpe3JldHVybiBmYWxzZX12YXIgYT1nZXRMZW5ndGgoZSxyKTtpZihhPT09ZmFsc2Upe3JldHVybiBmYWxzZX1pZihhK3IucGxhY2UhPT1lLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWlmKGVbci5wbGFjZSsrXSE9PTIpe3JldHVybiBmYWxzZX12YXIgcz1nZXRMZW5ndGgoZSxyKTtpZihzPT09ZmFsc2Upe3JldHVybiBmYWxzZX12YXIgbz1lLnNsaWNlKHIucGxhY2UscytyLnBsYWNlKTtyLnBsYWNlKz1zO2lmKGVbci5wbGFjZSsrXSE9PTIpe3JldHVybiBmYWxzZX12YXIgaD1nZXRMZW5ndGgoZSxyKTtpZihoPT09ZmFsc2Upe3JldHVybiBmYWxzZX1pZihlLmxlbmd0aCE9PWgrci5wbGFjZSl7cmV0dXJuIGZhbHNlfXZhciB1PWUuc2xpY2Uoci5wbGFjZSxoK3IucGxhY2UpO2lmKG9bMF09PT0wKXtpZihvWzFdJjEyOCl7bz1vLnNsaWNlKDEpfWVsc2V7cmV0dXJuIGZhbHNlfX1pZih1WzBdPT09MCl7aWYodVsxXSYxMjgpe3U9dS5zbGljZSgxKX1lbHNle3JldHVybiBmYWxzZX19dGhpcy5yPW5ldyBpKG8pO3RoaXMucz1uZXcgaSh1KTt0aGlzLnJlY292ZXJ5UGFyYW09bnVsbDtyZXR1cm4gdHJ1ZX07ZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGUsdCl7aWYodDwxMjgpe2UucHVzaCh0KTtyZXR1cm59dmFyIHI9MSsoTWF0aC5sb2codCkvTWF0aC5MTjI+Pj4zKTtlLnB1c2gocnwxMjgpO3doaWxlKC0tcil7ZS5wdXNoKHQ+Pj4ocjw8MykmMjU1KX1lLnB1c2godCl9U2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbiB0b0RFUihlKXt2YXIgdD10aGlzLnIudG9BcnJheSgpO3ZhciByPXRoaXMucy50b0FycmF5KCk7aWYodFswXSYxMjgpdD1bMF0uY29uY2F0KHQpO2lmKHJbMF0mMTI4KXI9WzBdLmNvbmNhdChyKTt0PXJtUGFkZGluZyh0KTtyPXJtUGFkZGluZyhyKTt3aGlsZSghclswXSYmIShyWzFdJjEyOCkpe3I9ci5zbGljZSgxKX12YXIgaT1bMl07Y29uc3RydWN0TGVuZ3RoKGksdC5sZW5ndGgpO2k9aS5jb25jYXQodCk7aS5wdXNoKDIpO2NvbnN0cnVjdExlbmd0aChpLHIubGVuZ3RoKTt2YXIgYT1pLmNvbmNhdChyKTt2YXIgcz1bNDhdO2NvbnN0cnVjdExlbmd0aChzLGEubGVuZ3RoKTtzPXMuY29uY2F0KGEpO3JldHVybiBuLmVuY29kZShzLGUpfX0sODUxMTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig3MDI4KTt2YXIgbj1yKDYyMjYpO3ZhciBhPXIoNDQwMSk7dmFyIHM9YS5hc3NlcnQ7dmFyIG89YS5wYXJzZUJ5dGVzO3ZhciBoPXIoOTkxNyk7dmFyIHU9cig5MzE0KTtmdW5jdGlvbiBFRERTQShlKXtzKGU9PT1cImVkMjU1MTlcIixcIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXJcIik7aWYoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKXJldHVybiBuZXcgRUREU0EoZSk7dmFyIGU9bltlXS5jdXJ2ZTt0aGlzLmN1cnZlPWU7dGhpcy5nPWUuZzt0aGlzLmcucHJlY29tcHV0ZShlLm4uYml0TGVuZ3RoKCkrMSk7dGhpcy5wb2ludENsYXNzPWUucG9pbnQoKS5jb25zdHJ1Y3Rvcjt0aGlzLmVuY29kaW5nTGVuZ3RoPU1hdGguY2VpbChlLm4uYml0TGVuZ3RoKCkvOCk7dGhpcy5oYXNoPWkuc2hhNTEyfWUuZXhwb3J0cz1FRERTQTtFRERTQS5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbiBzaWduKGUsdCl7ZT1vKGUpO3ZhciByPXRoaXMua2V5RnJvbVNlY3JldCh0KTt2YXIgaT10aGlzLmhhc2hJbnQoci5tZXNzYWdlUHJlZml4KCksZSk7dmFyIG49dGhpcy5nLm11bChpKTt2YXIgYT10aGlzLmVuY29kZVBvaW50KG4pO3ZhciBzPXRoaXMuaGFzaEludChhLHIucHViQnl0ZXMoKSxlKS5tdWwoci5wcml2KCkpO3ZhciBoPWkuYWRkKHMpLnVtb2QodGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOm4sUzpoLFJlbmNvZGVkOmF9KX07RUREU0EucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnkoZSx0LHIpe2U9byhlKTt0PXRoaXMubWFrZVNpZ25hdHVyZSh0KTt2YXIgaT10aGlzLmtleUZyb21QdWJsaWMocik7dmFyIG49dGhpcy5oYXNoSW50KHQuUmVuY29kZWQoKSxpLnB1YkJ5dGVzKCksZSk7dmFyIGE9dGhpcy5nLm11bCh0LlMoKSk7dmFyIHM9dC5SKCkuYWRkKGkucHViKCkubXVsKG4pKTtyZXR1cm4gcy5lcShhKX07RUREU0EucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24gaGFzaEludCgpe3ZhciBlPXRoaXMuaGFzaCgpO2Zvcih2YXIgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZS51cGRhdGUoYXJndW1lbnRzW3RdKTtyZXR1cm4gYS5pbnRGcm9tTEUoZS5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfTtFRERTQS5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbiBrZXlGcm9tUHVibGljKGUpe3JldHVybiBoLmZyb21QdWJsaWModGhpcyxlKX07RUREU0EucHJvdG90eXBlLmtleUZyb21TZWNyZXQ9ZnVuY3Rpb24ga2V5RnJvbVNlY3JldChlKXtyZXR1cm4gaC5mcm9tU2VjcmV0KHRoaXMsZSl9O0VERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlPWZ1bmN0aW9uIG1ha2VTaWduYXR1cmUoZSl7aWYoZSBpbnN0YW5jZW9mIHUpcmV0dXJuIGU7cmV0dXJuIG5ldyB1KHRoaXMsZSl9O0VERFNBLnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbiBlbmNvZGVQb2ludChlKXt2YXIgdD1lLmdldFkoKS50b0FycmF5KFwibGVcIix0aGlzLmVuY29kaW5nTGVuZ3RoKTt0W3RoaXMuZW5jb2RpbmdMZW5ndGgtMV18PWUuZ2V0WCgpLmlzT2RkKCk/MTI4OjA7cmV0dXJuIHR9O0VERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbiBkZWNvZGVQb2ludChlKXtlPWEucGFyc2VCeXRlcyhlKTt2YXIgdD1lLmxlbmd0aC0xO3ZhciByPWUuc2xpY2UoMCx0KS5jb25jYXQoZVt0XSZ+MTI4KTt2YXIgaT0oZVt0XSYxMjgpIT09MDt2YXIgbj1hLmludEZyb21MRShyKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKG4saSl9O0VERFNBLnByb3RvdHlwZS5lbmNvZGVJbnQ9ZnVuY3Rpb24gZW5jb2RlSW50KGUpe3JldHVybiBlLnRvQXJyYXkoXCJsZVwiLHRoaXMuZW5jb2RpbmdMZW5ndGgpfTtFRERTQS5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uIGRlY29kZUludChlKXtyZXR1cm4gYS5pbnRGcm9tTEUoZSl9O0VERFNBLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uIGlzUG9pbnQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3N9fSw5OTE3OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDQ0MDEpO3ZhciBuPWkuYXNzZXJ0O3ZhciBhPWkucGFyc2VCeXRlczt2YXIgcz1pLmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIEtleVBhaXIoZSx0KXt0aGlzLmVkZHNhPWU7dGhpcy5fc2VjcmV0PWEodC5zZWNyZXQpO2lmKGUuaXNQb2ludCh0LnB1YikpdGhpcy5fcHViPXQucHViO2Vsc2UgdGhpcy5fcHViQnl0ZXM9YSh0LnB1Yil9S2V5UGFpci5mcm9tUHVibGljPWZ1bmN0aW9uIGZyb21QdWJsaWMoZSx0KXtpZih0IGluc3RhbmNlb2YgS2V5UGFpcilyZXR1cm4gdDtyZXR1cm4gbmV3IEtleVBhaXIoZSx7cHViOnR9KX07S2V5UGFpci5mcm9tU2VjcmV0PWZ1bmN0aW9uIGZyb21TZWNyZXQoZSx0KXtpZih0IGluc3RhbmNlb2YgS2V5UGFpcilyZXR1cm4gdDtyZXR1cm4gbmV3IEtleVBhaXIoZSx7c2VjcmV0OnR9KX07S2V5UGFpci5wcm90b3R5cGUuc2VjcmV0PWZ1bmN0aW9uIHNlY3JldCgpe3JldHVybiB0aGlzLl9zZWNyZXR9O3MoS2V5UGFpcixcInB1YkJ5dGVzXCIsKGZ1bmN0aW9uIHB1YkJ5dGVzKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSl9KSk7cyhLZXlQYWlyLFwicHViXCIsKGZ1bmN0aW9uIHB1Yigpe2lmKHRoaXMuX3B1YkJ5dGVzKXJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTtyZXR1cm4gdGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSk7cyhLZXlQYWlyLFwicHJpdkJ5dGVzXCIsKGZ1bmN0aW9uIHByaXZCeXRlcygpe3ZhciBlPXRoaXMuZWRkc2E7dmFyIHQ9dGhpcy5oYXNoKCk7dmFyIHI9ZS5lbmNvZGluZ0xlbmd0aC0xO3ZhciBpPXQuc2xpY2UoMCxlLmVuY29kaW5nTGVuZ3RoKTtpWzBdJj0yNDg7aVtyXSY9MTI3O2lbcl18PTY0O3JldHVybiBpfSkpO3MoS2V5UGFpcixcInByaXZcIiwoZnVuY3Rpb24gcHJpdigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKX0pKTtzKEtleVBhaXIsXCJoYXNoXCIsKGZ1bmN0aW9uIGhhc2goKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSkpO3MoS2V5UGFpcixcIm1lc3NhZ2VQcmVmaXhcIiwoZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pKTtLZXlQYWlyLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uIHNpZ24oZSl7bih0aGlzLl9zZWNyZXQsXCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeVwiKTtyZXR1cm4gdGhpcy5lZGRzYS5zaWduKGUsdGhpcyl9O0tleVBhaXIucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbiB2ZXJpZnkoZSx0KXtyZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkoZSx0LHRoaXMpfTtLZXlQYWlyLnByb3RvdHlwZS5nZXRTZWNyZXQ9ZnVuY3Rpb24gZ2V0U2VjcmV0KGUpe24odGhpcy5fc2VjcmV0LFwiS2V5UGFpciBpcyBwdWJsaWMgb25seVwiKTtyZXR1cm4gaS5lbmNvZGUodGhpcy5zZWNyZXQoKSxlKX07S2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uIGdldFB1YmxpYyhlKXtyZXR1cm4gaS5lbmNvZGUodGhpcy5wdWJCeXRlcygpLGUpfTtlLmV4cG9ydHM9S2V5UGFpcn0sOTMxNDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig3MTEpO3ZhciBuPXIoNDQwMSk7dmFyIGE9bi5hc3NlcnQ7dmFyIHM9bi5jYWNoZWRQcm9wZXJ0eTt2YXIgbz1uLnBhcnNlQnl0ZXM7ZnVuY3Rpb24gU2lnbmF0dXJlKGUsdCl7dGhpcy5lZGRzYT1lO2lmKHR5cGVvZiB0IT09XCJvYmplY3RcIil0PW8odCk7aWYoQXJyYXkuaXNBcnJheSh0KSl7dD17Ujp0LnNsaWNlKDAsZS5lbmNvZGluZ0xlbmd0aCksUzp0LnNsaWNlKGUuZW5jb2RpbmdMZW5ndGgpfX1hKHQuUiYmdC5TLFwiU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTXCIpO2lmKGUuaXNQb2ludCh0LlIpKXRoaXMuX1I9dC5SO2lmKHQuUyBpbnN0YW5jZW9mIGkpdGhpcy5fUz10LlM7dGhpcy5fUmVuY29kZWQ9QXJyYXkuaXNBcnJheSh0LlIpP3QuUjp0LlJlbmNvZGVkO3RoaXMuX1NlbmNvZGVkPUFycmF5LmlzQXJyYXkodC5TKT90LlM6dC5TZW5jb2RlZH1zKFNpZ25hdHVyZSxcIlNcIiwoZnVuY3Rpb24gUygpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpfSkpO3MoU2lnbmF0dXJlLFwiUlwiLChmdW5jdGlvbiBSKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pKTtzKFNpZ25hdHVyZSxcIlJlbmNvZGVkXCIsKGZ1bmN0aW9uIFJlbmNvZGVkKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSkpO3MoU2lnbmF0dXJlLFwiU2VuY29kZWRcIiwoZnVuY3Rpb24gU2VuY29kZWQoKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpfSkpO1NpZ25hdHVyZS5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbiB0b0J5dGVzKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKX07U2lnbmF0dXJlLnByb3RvdHlwZS50b0hleD1mdW5jdGlvbiB0b0hleCgpe3JldHVybiBuLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSxcImhleFwiKS50b1VwcGVyQ2FzZSgpfTtlLmV4cG9ydHM9U2lnbmF0dXJlfSw5NzAyOmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17ZG91Ymxlczp7c3RlcDo0LHBvaW50czpbW1wiZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZkZWMwYVwiLFwiZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMVwiXSxbXCI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4XCIsXCIxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmXCJdLFtcIjE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzlcIixcImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTVcIl0sW1wiMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MFwiLFwiNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5XCJdLFtcIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGNcIixcIjRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzZcIl0sW1wiNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYVwiLFwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZlwiXSxbXCJlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhXCIsXCI1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5XCJdLFtcIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjBcIixcImNkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDlcIl0sW1wiZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZFwiLFwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZFwiXSxbXCJmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkXCIsXCJlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4XCJdLFtcImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjFcIixcIjliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWRcIl0sW1wiNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMFwiLFwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOFwiXSxbXCI4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3XCIsXCIxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhXCJdLFtcIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjJcIixcIjI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTNcIl0sW1wiNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3XCIsXCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwXCJdLFtcIjMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmRcIixcIjU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTBcIl0sW1wiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4M1wiLFwiN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNlwiXSxbXCI5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGFcIixcIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODlcIl0sW1wiNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOFwiLFwiYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxN1wiXSxbXCJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkXCIsXCI0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhXCJdLFtcImUwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjVcIixcIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGRcIl0sW1wiMjEzYzdhNzE1Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NFwiLFwiNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMlwiXSxbXCI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjXCIsXCIxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2XCJdLFtcImZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjZcIixcIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmZcIl0sW1wiNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOVwiLFwiYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMVwiXSxbXCJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxXCIsXCI4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzXCJdLFtcImQ4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGJcIixcImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWZcIl0sW1wiYjhkYTk0MDMyYTk1NzUxOGViMGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwM1wiLFwiMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlN1wiXSxbXCJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkXCIsXCJlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4XCJdLFtcImEzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzBcIixcIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTFcIl0sW1wiOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNFwiLFwiZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwXCJdLFtcIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGFcIixcIjY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODJcIl0sW1wiZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMVwiLFwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiY1wiXSxbXCI4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllXCIsXCJlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiXCJdLFtcImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDFcIixcIjJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTFcIl0sW1wiYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZlwiLFwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1XCJdLFtcImQ2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZThcIixcImRiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjBcIl0sW1wiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZFwiLFwiNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NFwiXSxbXCI0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2XCIsXCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZFwiXSxbXCI5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkXCIsXCJkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkXCJdLFtcIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTVcIixcIjlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYThcIl0sW1wiYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NlwiLFwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOFwiXSxbXCI3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxXCIsXCIzNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjXCJdLFtcIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhY1wiLFwiYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZlwiXSxbXCI4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxXCIsXCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyXCJdLFtcImZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQwNDgyNDUyNjA4N2VcIixcIjQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDdcIl0sW1wiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MVwiLFwiYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlY1wiXSxbXCJlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzXCIsXCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkXCJdLFtcImU0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGZcIixcIjRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTRcIl0sW1wiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOVwiLFwiYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZFwiXSxbXCIxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlXCIsXCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwXCJdLFtcImZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVlZjlcIixcIjZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTFcIl0sW1wiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMlwiLFwiODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMVwiXSxbXCJhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzXCIsXCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjXCJdLFtcIjE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2NcIixcImNjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzNcIl0sW1wiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYVwiLFwiMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZFwiXSxbXCJkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxXCIsXCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1XCJdLFtcIjY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzNcIixcImQ5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODlcIl0sW1wiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OFwiLFwiMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZVwiXSxbXCIxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiXCIsXCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3XCJdLFtcImJjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjZcIixcImQzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMVwiXSxbXCI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhXCIsXCI0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyXCJdLFtcIjhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMFwiLFwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NVwiXSxbXCJkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3XCIsXCI3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczXCJdLFtcImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWVcIixcImVhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODJcIl1dfSxuYWY6e3duZDo3LHBvaW50czpbW1wiZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOVwiLFwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MlwiXSxbXCIyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0XCIsXCJkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2XCJdLFtcIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmNcIixcIjZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGFcIl0sW1wiYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZVwiLFwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzN1wiXSxbXCI3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiXCIsXCJkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiXCJdLFtcImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYThcIixcImFiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MVwiXSxbXCJkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlXCIsXCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4XCJdLFtcImRlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzRcIixcIjQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzdcIl0sW1wiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2Y1wiLFwiODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YVwiXSxbXCIzNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1XCIsXCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjXCJdLFtcIjJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2ZcIixcIjJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2N1wiXSxbXCI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0XCIsXCI3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyXCJdLFtcImRhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjlcIixcImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTVcIl0sW1wiYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYlwiLFwiMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MlwiXSxbXCI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0XCIsXCJlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyXCJdLFtcIjE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTVcIixcImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTZcIl0sW1wiNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OVwiLFwiMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5XCJdLFtcIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2RcIixcIjgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2NDI0ODNiMjVlYWZcIl0sW1wiODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZlwiLFwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YVwiXSxbXCI3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiXCIsXCJkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjdcIl0sW1wiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOVwiLFwiZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzM1wiXSxbXCI0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjNcIixcIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWFcIl0sW1wiNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NFwiLFwiOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNlwiXSxbXCJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwXCIsXCJlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3XCJdLFtcIjQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWJcIixcIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2VcIl0sW1wiZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0N1wiLFwiY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNlwiXSxbXCJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxXCIsXCJjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2XCJdLFtcIjI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjBcIixcIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDBcIl0sW1wiNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNVwiLFwiOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxXCJdLFtcIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMThcIixcIjY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4M1wiXSxbXCJlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4XCIsXCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1XCJdLFtcIjE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWJcIixcIjNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGJcIl0sW1wiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZlwiLFwiNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxN1wiXSxbXCI1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzXCIsXCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4XCJdLFtcIjI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmFcIixcImUzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2FcIl0sW1wiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NVwiLFwiZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNlwiXSxbXCI3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhXCIsXCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2XCJdLFtcIjU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2VcIixcImM1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmVcIl0sW1wiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOFwiLFwiZTEzODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZFwiXSxbXCI3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjXCIsXCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyXCJdLFtcIjk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTlcIixcImU0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2VcIl0sW1wiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYlwiLFwiMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzN1wiXSxbXCIzNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhXCIsXCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExXCJdLFtcImQzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWZcIixcIjhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTRcIl0sW1wiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMFwiLFwiNjg2NTFjZjliNmRhOTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NVwiXSxbXCI3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0XCIsXCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkXCJdLFtcIjE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWNcIixcImQ1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGRcIl0sW1wiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MFwiLFwiZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOVwiXSxbXCJlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwXCIsXCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDZcIl0sW1wiMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliM1wiLFwiNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NFwiXSxbXCIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmXCIsXCI5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWVcIl0sW1wiZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2M1wiLFwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMVwiXSxbXCJkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4XCIsXCJmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiXCJdLFtcIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmZcIixcIjVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjFcIl0sW1wiNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNVwiLFwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNlwiXSxbXCJlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2XCIsXCI4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlXCJdLFtcIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjVcIixcIjVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGRcIl0sW1wiZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OVwiLFwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkY1wiXSxbXCI3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTFcIixcImYzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjRcIl0sW1wiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNVwiLFwiNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyY1wiXSxbXCJhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1XCIsXCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiXCJdLFtcImM0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTdcIixcIjRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxM1wiXSxbXCI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxXCIsXCI3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5Y2U3YTM2ZGUwMWE4ZDYxNTRcIl0sW1wiNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNVwiLFwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NVwiXSxbXCIzNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2XCIsXCJkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjXCJdLFtcIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNlwiLFwiZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNFwiXSxbXCI4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlXCIsXCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlXCJdLFtcIjFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTRcIixcIjYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNlwiXSxbXCI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxXCIsXCIzZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVlOTk5NTExXCJdLFtcIjI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTFcIixcImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YlwiXSxbXCJhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyXCIsXCJhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyXCJdLFtcIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNVwiLFwiY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzY1wiXSxbXCJkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiXCIsXCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzXCJdLFtcImVhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDRcIixcIjMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGRcIl0sW1wiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZlwiLFwiNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMFwiXSxbXCJlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OVwiLFwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNFwiXSxbXCI1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2XCIsXCJiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2XCJdLFtcIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODRcIixcIjk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTRcIl0sW1wiM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YVwiLFwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1N1wiXSxbXCJjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwXCIsXCJiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzXCJdLFtcImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTdcIixcIjZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTZcIl0sW1wiYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzXCIsXCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4XCJdLFtcImE2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWZcIixcIjIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZlwiXSxbXCIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4XCIsXCI2MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4XCJdLFtcImRhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmFcIixcIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGFcIl0sW1wiYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMVwiLFwiNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNFwiXSxbXCI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyXCIsXCI3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3XCJdLFtcIjM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWFcIixcImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjdcIl0sW1wiY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNlwiLFwiOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZFwiXSxbXCJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2XCIsXCIzOWU1Yzk5MjViNWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhXCJdLFtcImQ0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGVcIixcIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTRcIl0sW1wiNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNFwiLFwiMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3N1wiXSxbXCJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhXCIsXCJlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3XCJdLFtcIjZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTlcIixcImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTBcIl0sW1wiZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZlwiLFwiZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNVwiXSxbXCJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjXCIsXCI2Y2I5YTg4NzZkOWNiODUyMDYwOWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlXCJdLFtcIjEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDJcIixcImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjFcIl0sW1wiZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YVwiLFwiMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMlwiXSxbXCJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwXCIsXCI1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzXCJdLFtcImZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGRcIixcIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDhcIl0sW1wiOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMVwiLFwiY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OFwiXSxbXCI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzXCIsXCJjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzVcIl0sW1wiZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MlwiLFwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZFwiXSxbXCI3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzXCIsXCJjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjXCJdLFtcIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDBcIixcIjk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMFwiXSxbXCIzMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4XCIsXCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjXCJdLFtcImUyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjdcIixcImQzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTRcIl0sW1wiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOFwiLFwiYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZlwiXSxbXCI0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlXCIsXCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5XCJdLFtcIjNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2RcIixcImNkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNlwiXSxbXCI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiXCIsXCIyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1XCJdLFtcImQzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGZcIixcImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODdcIl0sW1wiMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNlwiLFwiNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YlwiXSxbXCJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3XCIsXCI2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1OGVkNzJkY2NiOWJjXCJdLFtcIjkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGFcIixcIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2NcIl0sW1wiYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyY1wiLFwiYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZlwiXSxbXCJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyXCIsXCI0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhXCJdLFtcImQzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmJcIixcImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDZcIl0sW1wiNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NVwiLFwiYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZlwiXSxbXCI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3XCIsXCI2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJlZDAzXCJdLFtcIjc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTlcIixcImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDhcIl0sW1wiMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhM1wiLFwiNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOFwiXSxbXCI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3XCIsXCI3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzNcIl0sW1wiMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NlwiLFwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjM1wiXSxbXCI3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4XCIsXCI5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4XCJdLFtcIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjFcIixcIjllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzFcIl0sW1wiMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MFwiLFwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOVwiXV19fX0sNDQwMTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9dDt2YXIgbj1yKDcxMSk7dmFyIGE9cigzNTIzKTt2YXIgcz1yKDY1NDUpO2kuYXNzZXJ0PWE7aS50b0FycmF5PXMudG9BcnJheTtpLnplcm8yPXMuemVybzI7aS50b0hleD1zLnRvSGV4O2kuZW5jb2RlPXMuZW5jb2RlO2Z1bmN0aW9uIGdldE5BRihlLHQscil7dmFyIGk9bmV3IEFycmF5KE1hdGgubWF4KGUuYml0TGVuZ3RoKCkscikrMSk7aS5maWxsKDApO3ZhciBuPTE8PHQrMTt2YXIgYT1lLmNsb25lKCk7Zm9yKHZhciBzPTA7czxpLmxlbmd0aDtzKyspe3ZhciBvO3ZhciBoPWEuYW5kbG4obi0xKTtpZihhLmlzT2RkKCkpe2lmKGg+KG4+PjEpLTEpbz0obj4+MSktaDtlbHNlIG89aDthLmlzdWJuKG8pfWVsc2V7bz0wfWlbc109bzthLml1c2hybigxKX1yZXR1cm4gaX1pLmdldE5BRj1nZXROQUY7ZnVuY3Rpb24gZ2V0SlNGKGUsdCl7dmFyIHI9W1tdLFtdXTtlPWUuY2xvbmUoKTt0PXQuY2xvbmUoKTt2YXIgaT0wO3ZhciBuPTA7d2hpbGUoZS5jbXBuKC1pKT4wfHx0LmNtcG4oLW4pPjApe3ZhciBhPWUuYW5kbG4oMykraSYzO3ZhciBzPXQuYW5kbG4oMykrbiYzO2lmKGE9PT0zKWE9LTE7aWYocz09PTMpcz0tMTt2YXIgbztpZigoYSYxKT09PTApe289MH1lbHNle3ZhciBoPWUuYW5kbG4oNykraSY3O2lmKChoPT09M3x8aD09PTUpJiZzPT09MilvPS1hO2Vsc2Ugbz1hfXJbMF0ucHVzaChvKTt2YXIgdTtpZigocyYxKT09PTApe3U9MH1lbHNle3ZhciBoPXQuYW5kbG4oNykrbiY3O2lmKChoPT09M3x8aD09PTUpJiZhPT09Mil1PS1zO2Vsc2UgdT1zfXJbMV0ucHVzaCh1KTtpZigyKmk9PT1vKzEpaT0xLWk7aWYoMipuPT09dSsxKW49MS1uO2UuaXVzaHJuKDEpO3QuaXVzaHJuKDEpfXJldHVybiByfWkuZ2V0SlNGPWdldEpTRjtmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eShlLHQscil7dmFyIGk9XCJfXCIrdDtlLnByb3RvdHlwZVt0XT1mdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpe3JldHVybiB0aGlzW2ldIT09dW5kZWZpbmVkP3RoaXNbaV06dGhpc1tpXT1yLmNhbGwodGhpcyl9fWkuY2FjaGVkUHJvcGVydHk9Y2FjaGVkUHJvcGVydHk7ZnVuY3Rpb24gcGFyc2VCeXRlcyhlKXtyZXR1cm4gdHlwZW9mIGU9PT1cInN0cmluZ1wiP2kudG9BcnJheShlLFwiaGV4XCIpOmV9aS5wYXJzZUJ5dGVzPXBhcnNlQnl0ZXM7ZnVuY3Rpb24gaW50RnJvbUxFKGUpe3JldHVybiBuZXcgbihlLFwiaGV4XCIsXCJsZVwiKX1pLmludEZyb21MRT1pbnRGcm9tTEV9LDgzNjg6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNjkxMSkuQnVmZmVyO3ZhciBuPXIoMzUzMyk7ZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkoZSx0LHIsYSl7aWYoIWkuaXNCdWZmZXIoZSkpZT1pLmZyb20oZSxcImJpbmFyeVwiKTtpZih0KXtpZighaS5pc0J1ZmZlcih0KSl0PWkuZnJvbSh0LFwiYmluYXJ5XCIpO2lmKHQubGVuZ3RoIT09OCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNhbHQgc2hvdWxkIGJlIEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGhcIil9dmFyIHM9ci84O3ZhciBvPWkuYWxsb2Mocyk7dmFyIGg9aS5hbGxvYyhhfHwwKTt2YXIgdT1pLmFsbG9jKDApO3doaWxlKHM+MHx8YT4wKXt2YXIgZD1uZXcgbjtkLnVwZGF0ZSh1KTtkLnVwZGF0ZShlKTtpZih0KWQudXBkYXRlKHQpO3U9ZC5kaWdlc3QoKTt2YXIgYz0wO2lmKHM+MCl7dmFyIGw9by5sZW5ndGgtcztjPU1hdGgubWluKHMsdS5sZW5ndGgpO3UuY29weShvLGwsMCxjKTtzLT1jfWlmKGM8dS5sZW5ndGgmJmE+MCl7dmFyIHA9aC5sZW5ndGgtYTt2YXIgdj1NYXRoLm1pbihhLHUubGVuZ3RoLWMpO3UuY29weShoLHAsYyxjK3YpO2EtPXZ9fXUuZmlsbCgwKTtyZXR1cm57a2V5Om8saXY6aH19ZS5leHBvcnRzPUVWUF9CeXRlc1RvS2V5fSw5MDI5OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDY5MTEpLkJ1ZmZlcjt2YXIgbj1yKDM3MjYpLlRyYW5zZm9ybTt2YXIgYT1yKDM3ODIpO2Z1bmN0aW9uIHRocm93SWZOb3RTdHJpbmdPckJ1ZmZlcihlLHQpe2lmKCFpLmlzQnVmZmVyKGUpJiZ0eXBlb2YgZSE9PVwic3RyaW5nXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IodCtcIiBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyXCIpfX1mdW5jdGlvbiBIYXNoQmFzZShlKXtuLmNhbGwodGhpcyk7dGhpcy5fYmxvY2s9aS5hbGxvY1Vuc2FmZShlKTt0aGlzLl9ibG9ja1NpemU9ZTt0aGlzLl9ibG9ja09mZnNldD0wO3RoaXMuX2xlbmd0aD1bMCwwLDAsMF07dGhpcy5fZmluYWxpemVkPWZhbHNlfWEoSGFzaEJhc2Usbik7SGFzaEJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW51bGw7dHJ5e3RoaXMudXBkYXRlKGUsdCl9Y2F0Y2goZSl7aT1lfXIoaSl9O0hhc2hCYXNlLnByb3RvdHlwZS5fZmx1c2g9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKGUpe3Q9ZX1lKHQpfTtIYXNoQmFzZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7dGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyKGUsXCJEYXRhXCIpO2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJEaWdlc3QgYWxyZWFkeSBjYWxsZWRcIik7aWYoIWkuaXNCdWZmZXIoZSkpZT1pLmZyb20oZSx0KTt2YXIgcj10aGlzLl9ibG9jazt2YXIgbj0wO3doaWxlKHRoaXMuX2Jsb2NrT2Zmc2V0K2UubGVuZ3RoLW4+PXRoaXMuX2Jsb2NrU2l6ZSl7Zm9yKHZhciBhPXRoaXMuX2Jsb2NrT2Zmc2V0O2E8dGhpcy5fYmxvY2tTaXplOylyW2ErK109ZVtuKytdO3RoaXMuX3VwZGF0ZSgpO3RoaXMuX2Jsb2NrT2Zmc2V0PTB9d2hpbGUobjxlLmxlbmd0aClyW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPWVbbisrXTtmb3IodmFyIHM9MCxvPWUubGVuZ3RoKjg7bz4wOysrcyl7dGhpcy5fbGVuZ3RoW3NdKz1vO289dGhpcy5fbGVuZ3RoW3NdLzQyOTQ5NjcyOTZ8MDtpZihvPjApdGhpcy5fbGVuZ3RoW3NdLT00Mjk0OTY3Mjk2Km99cmV0dXJuIHRoaXN9O0hhc2hCYXNlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWRcIil9O0hhc2hCYXNlLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oZSl7aWYodGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcihcIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZFwiKTt0aGlzLl9maW5hbGl6ZWQ9dHJ1ZTt2YXIgdD10aGlzLl9kaWdlc3QoKTtpZihlIT09dW5kZWZpbmVkKXQ9dC50b1N0cmluZyhlKTt0aGlzLl9ibG9jay5maWxsKDApO3RoaXMuX2Jsb2NrT2Zmc2V0PTA7Zm9yKHZhciByPTA7cjw0Oysrcil0aGlzLl9sZW5ndGhbcl09MDtyZXR1cm4gdH07SGFzaEJhc2UucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJfZGlnZXN0IGlzIG5vdCBpbXBsZW1lbnRlZFwiKX07ZS5leHBvcnRzPUhhc2hCYXNlfSw3MDI4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10O2kudXRpbHM9cigyNjMpO2kuY29tbW9uPXIoMTMzMCk7aS5zaGE9cigzMDEpO2kucmlwZW1kPXIoMzA3OSk7aS5obWFjPXIoMzA5Mik7aS5zaGExPWkuc2hhLnNoYTE7aS5zaGEyNTY9aS5zaGEuc2hhMjU2O2kuc2hhMjI0PWkuc2hhLnNoYTIyNDtpLnNoYTM4ND1pLnNoYS5zaGEzODQ7aS5zaGE1MTI9aS5zaGEuc2hhNTEyO2kucmlwZW1kMTYwPWkucmlwZW1kLnJpcGVtZDE2MH0sMTMzMDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigyNjMpO3ZhciBuPXIoMzUyMyk7ZnVuY3Rpb24gQmxvY2tIYXNoKCl7dGhpcy5wZW5kaW5nPW51bGw7dGhpcy5wZW5kaW5nVG90YWw9MDt0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZTt0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplO3RoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoO3RoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoLzg7dGhpcy5lbmRpYW49XCJiaWdcIjt0aGlzLl9kZWx0YTg9dGhpcy5ibG9ja1NpemUvODt0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfXQuQmxvY2tIYXNoPUJsb2NrSGFzaDtCbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbiB1cGRhdGUoZSx0KXtlPWkudG9BcnJheShlLHQpO2lmKCF0aGlzLnBlbmRpbmcpdGhpcy5wZW5kaW5nPWU7ZWxzZSB0aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nLmNvbmNhdChlKTt0aGlzLnBlbmRpbmdUb3RhbCs9ZS5sZW5ndGg7aWYodGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXtlPXRoaXMucGVuZGluZzt2YXIgcj1lLmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPWUuc2xpY2UoZS5sZW5ndGgtcixlLmxlbmd0aCk7aWYodGhpcy5wZW5kaW5nLmxlbmd0aD09PTApdGhpcy5wZW5kaW5nPW51bGw7ZT1pLmpvaW4zMihlLDAsZS5sZW5ndGgtcix0aGlzLmVuZGlhbik7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZShlLG4sbit0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc307QmxvY2tIYXNoLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGUpe3RoaXMudXBkYXRlKHRoaXMuX3BhZCgpKTtuKHRoaXMucGVuZGluZz09PW51bGwpO3JldHVybiB0aGlzLl9kaWdlc3QoZSl9O0Jsb2NrSGFzaC5wcm90b3R5cGUuX3BhZD1mdW5jdGlvbiBwYWQoKXt2YXIgZT10aGlzLnBlbmRpbmdUb3RhbDt2YXIgdD10aGlzLl9kZWx0YTg7dmFyIHI9dC0oZSt0aGlzLnBhZExlbmd0aCkldDt2YXIgaT1uZXcgQXJyYXkocit0aGlzLnBhZExlbmd0aCk7aVswXT0xMjg7Zm9yKHZhciBuPTE7bjxyO24rKylpW25dPTA7ZTw8PTM7aWYodGhpcy5lbmRpYW49PT1cImJpZ1wiKXtmb3IodmFyIGE9ODthPHRoaXMucGFkTGVuZ3RoO2ErKylpW24rK109MDtpW24rK109MDtpW24rK109MDtpW24rK109MDtpW24rK109MDtpW24rK109ZT4+PjI0JjI1NTtpW24rK109ZT4+PjE2JjI1NTtpW24rK109ZT4+PjgmMjU1O2lbbisrXT1lJjI1NX1lbHNle2lbbisrXT1lJjI1NTtpW24rK109ZT4+PjgmMjU1O2lbbisrXT1lPj4+MTYmMjU1O2lbbisrXT1lPj4+MjQmMjU1O2lbbisrXT0wO2lbbisrXT0wO2lbbisrXT0wO2lbbisrXT0wO2ZvcihhPTg7YTx0aGlzLnBhZExlbmd0aDthKyspaVtuKytdPTB9cmV0dXJuIGl9fSwzMDkyOmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDI2Myk7dmFyIG49cigzNTIzKTtmdW5jdGlvbiBIbWFjKGUsdCxyKXtpZighKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlyZXR1cm4gbmV3IEhtYWMoZSx0LHIpO3RoaXMuSGFzaD1lO3RoaXMuYmxvY2tTaXplPWUuYmxvY2tTaXplLzg7dGhpcy5vdXRTaXplPWUub3V0U2l6ZS84O3RoaXMuaW5uZXI9bnVsbDt0aGlzLm91dGVyPW51bGw7dGhpcy5faW5pdChpLnRvQXJyYXkodCxyKSl9ZS5leHBvcnRzPUhtYWM7SG1hYy5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChlKXtpZihlLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSllPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSkuZGlnZXN0KCk7bihlLmxlbmd0aDw9dGhpcy5ibG9ja1NpemUpO2Zvcih2YXIgdD1lLmxlbmd0aDt0PHRoaXMuYmxvY2tTaXplO3QrKyllLnB1c2goMCk7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdXj01NDt0aGlzLmlubmVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSk7Zm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdXj0xMDY7dGhpcy5vdXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKGUpfTtIbWFjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24gdXBkYXRlKGUsdCl7dGhpcy5pbm5lci51cGRhdGUoZSx0KTtyZXR1cm4gdGhpc307SG1hYy5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlKXt0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtyZXR1cm4gdGhpcy5vdXRlci5kaWdlc3QoZSl9fSwzMDc5OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDI2Myk7dmFyIG49cigxMzMwKTt2YXIgYT1pLnJvdGwzMjt2YXIgcz1pLnN1bTMyO3ZhciBvPWkuc3VtMzJfMzt2YXIgaD1pLnN1bTMyXzQ7dmFyIHU9bi5CbG9ja0hhc2g7ZnVuY3Rpb24gUklQRU1EMTYwKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgUklQRU1EMTYwKSlyZXR1cm4gbmV3IFJJUEVNRDE2MDt1LmNhbGwodGhpcyk7dGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF07dGhpcy5lbmRpYW49XCJsaXR0bGVcIn1pLmluaGVyaXRzKFJJUEVNRDE2MCx1KTt0LnJpcGVtZDE2MD1SSVBFTUQxNjA7UklQRU1EMTYwLmJsb2NrU2l6ZT01MTI7UklQRU1EMTYwLm91dFNpemU9MTYwO1JJUEVNRDE2MC5obWFjU3RyZW5ndGg9MTkyO1JJUEVNRDE2MC5wYWRMZW5ndGg9NjQ7UklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShlLHQpe3ZhciByPXRoaXMuaFswXTt2YXIgaT10aGlzLmhbMV07dmFyIG49dGhpcy5oWzJdO3ZhciB1PXRoaXMuaFszXTt2YXIgdj10aGlzLmhbNF07dmFyIGI9cjt2YXIgbT1pO3ZhciB5PW47dmFyIGc9dTt2YXIgXz12O2Zvcih2YXIgdz0wO3c8ODA7dysrKXt2YXIgTT1zKGEoaChyLGYodyxpLG4sdSksZVtkW3ddK3RdLEsodykpLGxbd10pLHYpO3I9djt2PXU7dT1hKG4sMTApO249aTtpPU07TT1zKGEoaChiLGYoNzktdyxtLHksZyksZVtjW3ddK3RdLEtoKHcpKSxwW3ddKSxfKTtiPV87Xz1nO2c9YSh5LDEwKTt5PW07bT1NfU09byh0aGlzLmhbMV0sbixnKTt0aGlzLmhbMV09byh0aGlzLmhbMl0sdSxfKTt0aGlzLmhbMl09byh0aGlzLmhbM10sdixiKTt0aGlzLmhbM109byh0aGlzLmhbNF0scixtKTt0aGlzLmhbNF09byh0aGlzLmhbMF0saSx5KTt0aGlzLmhbMF09TX07UklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlKXtpZihlPT09XCJoZXhcIilyZXR1cm4gaS50b0hleDMyKHRoaXMuaCxcImxpdHRsZVwiKTtlbHNlIHJldHVybiBpLnNwbGl0MzIodGhpcy5oLFwibGl0dGxlXCIpfTtmdW5jdGlvbiBmKGUsdCxyLGkpe2lmKGU8PTE1KXJldHVybiB0XnJeaTtlbHNlIGlmKGU8PTMxKXJldHVybiB0JnJ8fnQmaTtlbHNlIGlmKGU8PTQ3KXJldHVybih0fH5yKV5pO2Vsc2UgaWYoZTw9NjMpcmV0dXJuIHQmaXxyJn5pO2Vsc2UgcmV0dXJuIHReKHJ8fmkpfWZ1bmN0aW9uIEsoZSl7aWYoZTw9MTUpcmV0dXJuIDA7ZWxzZSBpZihlPD0zMSlyZXR1cm4gMTUxODUwMDI0OTtlbHNlIGlmKGU8PTQ3KXJldHVybiAxODU5Nzc1MzkzO2Vsc2UgaWYoZTw9NjMpcmV0dXJuIDI0MDA5NTk3MDg7ZWxzZSByZXR1cm4gMjg0MDg1MzgzOH1mdW5jdGlvbiBLaChlKXtpZihlPD0xNSlyZXR1cm4gMTM1MjgyOTkyNjtlbHNlIGlmKGU8PTMxKXJldHVybiAxNTQ4NjAzNjg0O2Vsc2UgaWYoZTw9NDcpcmV0dXJuIDE4MzYwNzI2OTE7ZWxzZSBpZihlPD02MylyZXR1cm4gMjA1Mzk5NDIxNztlbHNlIHJldHVybiAwfXZhciBkPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdO3ZhciBjPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdO3ZhciBsPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XTt2YXIgcD1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV19LDMwMTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dC5zaGExPXIoMjc0Mik7dC5zaGEyMjQ9cig3MTA1KTt0LnNoYTI1Nj1yKDE1MjUpO3Quc2hhMzg0PXIoOTk0OCk7dC5zaGE1MTI9cigxMzE5KX0sMjc0MjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigyNjMpO3ZhciBuPXIoMTMzMCk7dmFyIGE9cigyOTc1KTt2YXIgcz1pLnJvdGwzMjt2YXIgbz1pLnN1bTMyO3ZhciBoPWkuc3VtMzJfNTt2YXIgdT1hLmZ0XzE7dmFyIGQ9bi5CbG9ja0hhc2g7dmFyIGM9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO2Z1bmN0aW9uIFNIQTEoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEExKSlyZXR1cm4gbmV3IFNIQTE7ZC5jYWxsKHRoaXMpO3RoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdO3RoaXMuVz1uZXcgQXJyYXkoODApfWkuaW5oZXJpdHMoU0hBMSxkKTtlLmV4cG9ydHM9U0hBMTtTSEExLmJsb2NrU2l6ZT01MTI7U0hBMS5vdXRTaXplPTE2MDtTSEExLmhtYWNTdHJlbmd0aD04MDtTSEExLnBhZExlbmd0aD02NDtTSEExLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIF91cGRhdGUoZSx0KXt2YXIgcj10aGlzLlc7Zm9yKHZhciBpPTA7aTwxNjtpKyspcltpXT1lW3QraV07Zm9yKDtpPHIubGVuZ3RoO2krKylyW2ldPXMocltpLTNdXnJbaS04XV5yW2ktMTRdXnJbaS0xNl0sMSk7dmFyIG49dGhpcy5oWzBdO3ZhciBhPXRoaXMuaFsxXTt2YXIgZD10aGlzLmhbMl07dmFyIGw9dGhpcy5oWzNdO3ZhciBwPXRoaXMuaFs0XTtmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgdj1+fihpLzIwKTt2YXIgYj1oKHMobiw1KSx1KHYsYSxkLGwpLHAscltpXSxjW3ZdKTtwPWw7bD1kO2Q9cyhhLDMwKTthPW47bj1ifXRoaXMuaFswXT1vKHRoaXMuaFswXSxuKTt0aGlzLmhbMV09byh0aGlzLmhbMV0sYSk7dGhpcy5oWzJdPW8odGhpcy5oWzJdLGQpO3RoaXMuaFszXT1vKHRoaXMuaFszXSxsKTt0aGlzLmhbNF09byh0aGlzLmhbNF0scCl9O1NIQTEucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGUpe2lmKGU9PT1cImhleFwiKXJldHVybiBpLnRvSGV4MzIodGhpcy5oLFwiYmlnXCIpO2Vsc2UgcmV0dXJuIGkuc3BsaXQzMih0aGlzLmgsXCJiaWdcIil9fSw3MTA1OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDI2Myk7dmFyIG49cigxNTI1KTtmdW5jdGlvbiBTSEEyMjQoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKXJldHVybiBuZXcgU0hBMjI0O24uY2FsbCh0aGlzKTt0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdfWkuaW5oZXJpdHMoU0hBMjI0LG4pO2UuZXhwb3J0cz1TSEEyMjQ7U0hBMjI0LmJsb2NrU2l6ZT01MTI7U0hBMjI0Lm91dFNpemU9MjI0O1NIQTIyNC5obWFjU3RyZW5ndGg9MTkyO1NIQTIyNC5wYWRMZW5ndGg9NjQ7U0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlKXtpZihlPT09XCJoZXhcIilyZXR1cm4gaS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLFwiYmlnXCIpO2Vsc2UgcmV0dXJuIGkuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSxcImJpZ1wiKX19LDE1MjU6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoMjYzKTt2YXIgbj1yKDEzMzApO3ZhciBhPXIoMjk3NSk7dmFyIHM9cigzNTIzKTt2YXIgbz1pLnN1bTMyO3ZhciBoPWkuc3VtMzJfNDt2YXIgdT1pLnN1bTMyXzU7dmFyIGQ9YS5jaDMyO3ZhciBjPWEubWFqMzI7dmFyIGw9YS5zMF8yNTY7dmFyIHA9YS5zMV8yNTY7dmFyIHY9YS5nMF8yNTY7dmFyIGI9YS5nMV8yNTY7dmFyIG09bi5CbG9ja0hhc2g7dmFyIHk9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07ZnVuY3Rpb24gU0hBMjU2KCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlyZXR1cm4gbmV3IFNIQTI1NjttLmNhbGwodGhpcyk7dGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV07dGhpcy5rPXk7dGhpcy5XPW5ldyBBcnJheSg2NCl9aS5pbmhlcml0cyhTSEEyNTYsbSk7ZS5leHBvcnRzPVNIQTI1NjtTSEEyNTYuYmxvY2tTaXplPTUxMjtTSEEyNTYub3V0U2l6ZT0yNTY7U0hBMjU2LmhtYWNTdHJlbmd0aD0xOTI7U0hBMjU2LnBhZExlbmd0aD02NDtTSEEyNTYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24gX3VwZGF0ZShlLHQpe3ZhciByPXRoaXMuVztmb3IodmFyIGk9MDtpPDE2O2krKylyW2ldPWVbdCtpXTtmb3IoO2k8ci5sZW5ndGg7aSsrKXJbaV09aChiKHJbaS0yXSkscltpLTddLHYocltpLTE1XSkscltpLTE2XSk7dmFyIG49dGhpcy5oWzBdO3ZhciBhPXRoaXMuaFsxXTt2YXIgbT10aGlzLmhbMl07dmFyIHk9dGhpcy5oWzNdO3ZhciBnPXRoaXMuaFs0XTt2YXIgXz10aGlzLmhbNV07dmFyIHc9dGhpcy5oWzZdO3ZhciBNPXRoaXMuaFs3XTtzKHRoaXMuay5sZW5ndGg9PT1yLmxlbmd0aCk7Zm9yKGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIEI9dShNLHAoZyksZChnLF8sdyksdGhpcy5rW2ldLHJbaV0pO3ZhciBFPW8obChuKSxjKG4sYSxtKSk7TT13O3c9XztfPWc7Zz1vKHksQik7eT1tO209YTthPW47bj1vKEIsRSl9dGhpcy5oWzBdPW8odGhpcy5oWzBdLG4pO3RoaXMuaFsxXT1vKHRoaXMuaFsxXSxhKTt0aGlzLmhbMl09byh0aGlzLmhbMl0sbSk7dGhpcy5oWzNdPW8odGhpcy5oWzNdLHkpO3RoaXMuaFs0XT1vKHRoaXMuaFs0XSxnKTt0aGlzLmhbNV09byh0aGlzLmhbNV0sXyk7dGhpcy5oWzZdPW8odGhpcy5oWzZdLHcpO3RoaXMuaFs3XT1vKHRoaXMuaFs3XSxNKX07U0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlKXtpZihlPT09XCJoZXhcIilyZXR1cm4gaS50b0hleDMyKHRoaXMuaCxcImJpZ1wiKTtlbHNlIHJldHVybiBpLnNwbGl0MzIodGhpcy5oLFwiYmlnXCIpfX0sOTk0ODpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigyNjMpO3ZhciBuPXIoMTMxOSk7ZnVuY3Rpb24gU0hBMzg0KCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBMzg0KSlyZXR1cm4gbmV3IFNIQTM4NDtuLmNhbGwodGhpcyk7dGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XX1pLmluaGVyaXRzKFNIQTM4NCxuKTtlLmV4cG9ydHM9U0hBMzg0O1NIQTM4NC5ibG9ja1NpemU9MTAyNDtTSEEzODQub3V0U2l6ZT0zODQ7U0hBMzg0LmhtYWNTdHJlbmd0aD0xOTI7U0hBMzg0LnBhZExlbmd0aD0xMjg7U0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uIGRpZ2VzdChlKXtpZihlPT09XCJoZXhcIilyZXR1cm4gaS50b0hleDMyKHRoaXMuaC5zbGljZSgwLDEyKSxcImJpZ1wiKTtlbHNlIHJldHVybiBpLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsMTIpLFwiYmlnXCIpfX0sMTMxOTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigyNjMpO3ZhciBuPXIoMTMzMCk7dmFyIGE9cigzNTIzKTt2YXIgcz1pLnJvdHI2NF9oaTt2YXIgbz1pLnJvdHI2NF9sbzt2YXIgaD1pLnNocjY0X2hpO3ZhciB1PWkuc2hyNjRfbG87dmFyIGQ9aS5zdW02NDt2YXIgYz1pLnN1bTY0X2hpO3ZhciBsPWkuc3VtNjRfbG87dmFyIHA9aS5zdW02NF80X2hpO3ZhciB2PWkuc3VtNjRfNF9sbzt2YXIgYj1pLnN1bTY0XzVfaGk7dmFyIG09aS5zdW02NF81X2xvO3ZhciB5PW4uQmxvY2tIYXNoO3ZhciBnPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07ZnVuY3Rpb24gU0hBNTEyKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgU0hBNTEyKSlyZXR1cm4gbmV3IFNIQTUxMjt5LmNhbGwodGhpcyk7dGhpcy5oPVsxNzc5MDMzNzAzLDQwODkyMzU3MjAsMzE0NDEzNDI3NywyMjI3ODczNTk1LDEwMTM5MDQyNDIsNDI3MTE3NTcyMywyNzczNDgwNzYyLDE1OTU3NTAxMjksMTM1OTg5MzExOSwyOTE3NTY1MTM3LDI2MDA4MjI5MjQsNzI1NTExMTk5LDUyODczNDYzNSw0MjE1Mzg5NTQ3LDE1NDE0NTkyMjUsMzI3MDMzMjA5XTt0aGlzLms9Zzt0aGlzLlc9bmV3IEFycmF5KDE2MCl9aS5pbmhlcml0cyhTSEE1MTIseSk7ZS5leHBvcnRzPVNIQTUxMjtTSEE1MTIuYmxvY2tTaXplPTEwMjQ7U0hBNTEyLm91dFNpemU9NTEyO1NIQTUxMi5obWFjU3RyZW5ndGg9MTkyO1NIQTUxMi5wYWRMZW5ndGg9MTI4O1NIQTUxMi5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbiBfcHJlcGFyZUJsb2NrKGUsdCl7dmFyIHI9dGhpcy5XO2Zvcih2YXIgaT0wO2k8MzI7aSsrKXJbaV09ZVt0K2ldO2Zvcig7aTxyLmxlbmd0aDtpKz0yKXt2YXIgbj1nMV81MTJfaGkocltpLTRdLHJbaS0zXSk7dmFyIGE9ZzFfNTEyX2xvKHJbaS00XSxyW2ktM10pO3ZhciBzPXJbaS0xNF07dmFyIG89cltpLTEzXTt2YXIgaD1nMF81MTJfaGkocltpLTMwXSxyW2ktMjldKTt2YXIgdT1nMF81MTJfbG8ocltpLTMwXSxyW2ktMjldKTt2YXIgZD1yW2ktMzJdO3ZhciBjPXJbaS0zMV07cltpXT1wKG4sYSxzLG8saCx1LGQsYyk7cltpKzFdPXYobixhLHMsbyxoLHUsZCxjKX19O1NIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbiBfdXBkYXRlKGUsdCl7dGhpcy5fcHJlcGFyZUJsb2NrKGUsdCk7dmFyIHI9dGhpcy5XO3ZhciBpPXRoaXMuaFswXTt2YXIgbj10aGlzLmhbMV07dmFyIHM9dGhpcy5oWzJdO3ZhciBvPXRoaXMuaFszXTt2YXIgaD10aGlzLmhbNF07dmFyIHU9dGhpcy5oWzVdO3ZhciBwPXRoaXMuaFs2XTt2YXIgdj10aGlzLmhbN107dmFyIHk9dGhpcy5oWzhdO3ZhciBnPXRoaXMuaFs5XTt2YXIgXz10aGlzLmhbMTBdO3ZhciB3PXRoaXMuaFsxMV07dmFyIE09dGhpcy5oWzEyXTt2YXIgQj10aGlzLmhbMTNdO3ZhciBFPXRoaXMuaFsxNF07dmFyIGs9dGhpcy5oWzE1XTthKHRoaXMuay5sZW5ndGg9PT1yLmxlbmd0aCk7Zm9yKHZhciBBPTA7QTxyLmxlbmd0aDtBKz0yKXt2YXIgTj1FO3ZhciBQPWs7dmFyIHg9czFfNTEyX2hpKHksZyk7dmFyIEk9czFfNTEyX2xvKHksZyk7dmFyIEM9Y2g2NF9oaSh5LGcsXyx3LE0sQik7dmFyIEQ9Y2g2NF9sbyh5LGcsXyx3LE0sQik7dmFyIFQ9dGhpcy5rW0FdO3ZhciBqPXRoaXMua1tBKzFdO3ZhciBxPXJbQV07dmFyIE89cltBKzFdO3ZhciBIPWIoTixQLHgsSSxDLEQsVCxqLHEsTyk7dmFyIEw9bShOLFAseCxJLEMsRCxULGoscSxPKTtOPXMwXzUxMl9oaShpLG4pO1A9czBfNTEyX2xvKGksbik7eD1tYWo2NF9oaShpLG4scyxvLGgsdSk7ST1tYWo2NF9sbyhpLG4scyxvLGgsdSk7dmFyIHo9YyhOLFAseCxJKTt2YXIgRj1sKE4sUCx4LEkpO0U9TTtrPUI7TT1fO0I9dztfPXk7dz1nO3k9YyhwLHYsSCxMKTtnPWwodix2LEgsTCk7cD1oO3Y9dTtoPXM7dT1vO3M9aTtvPW47aT1jKEgsTCx6LEYpO249bChILEwseixGKX1kKHRoaXMuaCwwLGksbik7ZCh0aGlzLmgsMixzLG8pO2QodGhpcy5oLDQsaCx1KTtkKHRoaXMuaCw2LHAsdik7ZCh0aGlzLmgsOCx5LGcpO2QodGhpcy5oLDEwLF8sdyk7ZCh0aGlzLmgsMTIsTSxCKTtkKHRoaXMuaCwxNCxFLGspfTtTSEE1MTIucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24gZGlnZXN0KGUpe2lmKGU9PT1cImhleFwiKXJldHVybiBpLnRvSGV4MzIodGhpcy5oLFwiYmlnXCIpO2Vsc2UgcmV0dXJuIGkuc3BsaXQzMih0aGlzLmgsXCJiaWdcIil9O2Z1bmN0aW9uIGNoNjRfaGkoZSx0LHIsaSxuKXt2YXIgYT1lJnJefmUmbjtpZihhPDApYSs9NDI5NDk2NzI5NjtyZXR1cm4gYX1mdW5jdGlvbiBjaDY0X2xvKGUsdCxyLGksbixhKXt2YXIgcz10JmlefnQmYTtpZihzPDApcys9NDI5NDk2NzI5NjtyZXR1cm4gc31mdW5jdGlvbiBtYWo2NF9oaShlLHQscixpLG4pe3ZhciBhPWUmcl5lJm5eciZuO2lmKGE8MClhKz00Mjk0OTY3Mjk2O3JldHVybiBhfWZ1bmN0aW9uIG1hajY0X2xvKGUsdCxyLGksbixhKXt2YXIgcz10JmledCZhXmkmYTtpZihzPDApcys9NDI5NDk2NzI5NjtyZXR1cm4gc31mdW5jdGlvbiBzMF81MTJfaGkoZSx0KXt2YXIgcj1zKGUsdCwyOCk7dmFyIGk9cyh0LGUsMik7dmFyIG49cyh0LGUsNyk7dmFyIGE9cl5pXm47aWYoYTwwKWErPTQyOTQ5NjcyOTY7cmV0dXJuIGF9ZnVuY3Rpb24gczBfNTEyX2xvKGUsdCl7dmFyIHI9byhlLHQsMjgpO3ZhciBpPW8odCxlLDIpO3ZhciBuPW8odCxlLDcpO3ZhciBhPXJeaV5uO2lmKGE8MClhKz00Mjk0OTY3Mjk2O3JldHVybiBhfWZ1bmN0aW9uIHMxXzUxMl9oaShlLHQpe3ZhciByPXMoZSx0LDE0KTt2YXIgaT1zKGUsdCwxOCk7dmFyIG49cyh0LGUsOSk7dmFyIGE9cl5pXm47aWYoYTwwKWErPTQyOTQ5NjcyOTY7cmV0dXJuIGF9ZnVuY3Rpb24gczFfNTEyX2xvKGUsdCl7dmFyIHI9byhlLHQsMTQpO3ZhciBpPW8oZSx0LDE4KTt2YXIgbj1vKHQsZSw5KTt2YXIgYT1yXmlebjtpZihhPDApYSs9NDI5NDk2NzI5NjtyZXR1cm4gYX1mdW5jdGlvbiBnMF81MTJfaGkoZSx0KXt2YXIgcj1zKGUsdCwxKTt2YXIgaT1zKGUsdCw4KTt2YXIgbj1oKGUsdCw3KTt2YXIgYT1yXmlebjtpZihhPDApYSs9NDI5NDk2NzI5NjtyZXR1cm4gYX1mdW5jdGlvbiBnMF81MTJfbG8oZSx0KXt2YXIgcj1vKGUsdCwxKTt2YXIgaT1vKGUsdCw4KTt2YXIgbj11KGUsdCw3KTt2YXIgYT1yXmlebjtpZihhPDApYSs9NDI5NDk2NzI5NjtyZXR1cm4gYX1mdW5jdGlvbiBnMV81MTJfaGkoZSx0KXt2YXIgcj1zKGUsdCwxOSk7dmFyIGk9cyh0LGUsMjkpO3ZhciBuPWgoZSx0LDYpO3ZhciBhPXJeaV5uO2lmKGE8MClhKz00Mjk0OTY3Mjk2O3JldHVybiBhfWZ1bmN0aW9uIGcxXzUxMl9sbyhlLHQpe3ZhciByPW8oZSx0LDE5KTt2YXIgaT1vKHQsZSwyOSk7dmFyIG49dShlLHQsNik7dmFyIGE9cl5pXm47aWYoYTwwKWErPTQyOTQ5NjcyOTY7cmV0dXJuIGF9fSwyOTc1OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDI2Myk7dmFyIG49aS5yb3RyMzI7ZnVuY3Rpb24gZnRfMShlLHQscixpKXtpZihlPT09MClyZXR1cm4gY2gzMih0LHIsaSk7aWYoZT09PTF8fGU9PT0zKXJldHVybiBwMzIodCxyLGkpO2lmKGU9PT0yKXJldHVybiBtYWozMih0LHIsaSl9dC5mdF8xPWZ0XzE7ZnVuY3Rpb24gY2gzMihlLHQscil7cmV0dXJuIGUmdF5+ZSZyfXQuY2gzMj1jaDMyO2Z1bmN0aW9uIG1hajMyKGUsdCxyKXtyZXR1cm4gZSZ0XmUmcl50JnJ9dC5tYWozMj1tYWozMjtmdW5jdGlvbiBwMzIoZSx0LHIpe3JldHVybiBlXnRecn10LnAzMj1wMzI7ZnVuY3Rpb24gczBfMjU2KGUpe3JldHVybiBuKGUsMilebihlLDEzKV5uKGUsMjIpfXQuczBfMjU2PXMwXzI1NjtmdW5jdGlvbiBzMV8yNTYoZSl7cmV0dXJuIG4oZSw2KV5uKGUsMTEpXm4oZSwyNSl9dC5zMV8yNTY9czFfMjU2O2Z1bmN0aW9uIGcwXzI1NihlKXtyZXR1cm4gbihlLDcpXm4oZSwxOCleZT4+PjN9dC5nMF8yNTY9ZzBfMjU2O2Z1bmN0aW9uIGcxXzI1NihlKXtyZXR1cm4gbihlLDE3KV5uKGUsMTkpXmU+Pj4xMH10LmcxXzI1Nj1nMV8yNTZ9LDI2MzpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigzNTIzKTt2YXIgbj1yKDM3ODIpO3QuaW5oZXJpdHM9bjtmdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIoZSx0KXtpZigoZS5jaGFyQ29kZUF0KHQpJjY0NTEyKSE9PTU1Mjk2KXtyZXR1cm4gZmFsc2V9aWYodDwwfHx0KzE+PWUubGVuZ3RoKXtyZXR1cm4gZmFsc2V9cmV0dXJuKGUuY2hhckNvZGVBdCh0KzEpJjY0NTEyKT09PTU2MzIwfWZ1bmN0aW9uIHRvQXJyYXkoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnNsaWNlKCk7aWYoIWUpcmV0dXJuW107dmFyIHI9W107aWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtpZighdCl7dmFyIGk9MDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGE9ZS5jaGFyQ29kZUF0KG4pO2lmKGE8MTI4KXtyW2krK109YX1lbHNlIGlmKGE8MjA0OCl7cltpKytdPWE+PjZ8MTkyO3JbaSsrXT1hJjYzfDEyOH1lbHNlIGlmKGlzU3Vycm9nYXRlUGFpcihlLG4pKXthPTY1NTM2KygoYSYxMDIzKTw8MTApKyhlLmNoYXJDb2RlQXQoKytuKSYxMDIzKTtyW2krK109YT4+MTh8MjQwO3JbaSsrXT1hPj4xMiY2M3wxMjg7cltpKytdPWE+PjYmNjN8MTI4O3JbaSsrXT1hJjYzfDEyOH1lbHNle3JbaSsrXT1hPj4xMnwyMjQ7cltpKytdPWE+PjYmNjN8MTI4O3JbaSsrXT1hJjYzfDEyOH19fWVsc2UgaWYodD09PVwiaGV4XCIpe2U9ZS5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLFwiXCIpO2lmKGUubGVuZ3RoJTIhPT0wKWU9XCIwXCIrZTtmb3Iobj0wO248ZS5sZW5ndGg7bis9MilyLnB1c2gocGFyc2VJbnQoZVtuXStlW24rMV0sMTYpKX19ZWxzZXtmb3Iobj0wO248ZS5sZW5ndGg7bisrKXJbbl09ZVtuXXwwfXJldHVybiByfXQudG9BcnJheT10b0FycmF5O2Z1bmN0aW9uIHRvSGV4KGUpe3ZhciB0PVwiXCI7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdCs9emVybzIoZVtyXS50b1N0cmluZygxNikpO3JldHVybiB0fXQudG9IZXg9dG9IZXg7ZnVuY3Rpb24gaHRvbmwoZSl7dmFyIHQ9ZT4+PjI0fGU+Pj44JjY1MjgwfGU8PDgmMTY3MTE2ODB8KGUmMjU1KTw8MjQ7cmV0dXJuIHQ+Pj4wfXQuaHRvbmw9aHRvbmw7ZnVuY3Rpb24gdG9IZXgzMihlLHQpe3ZhciByPVwiXCI7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBuPWVbaV07aWYodD09PVwibGl0dGxlXCIpbj1odG9ubChuKTtyKz16ZXJvOChuLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHJ9dC50b0hleDMyPXRvSGV4MzI7ZnVuY3Rpb24gemVybzIoZSl7aWYoZS5sZW5ndGg9PT0xKXJldHVyblwiMFwiK2U7ZWxzZSByZXR1cm4gZX10Lnplcm8yPXplcm8yO2Z1bmN0aW9uIHplcm84KGUpe2lmKGUubGVuZ3RoPT09NylyZXR1cm5cIjBcIitlO2Vsc2UgaWYoZS5sZW5ndGg9PT02KXJldHVyblwiMDBcIitlO2Vsc2UgaWYoZS5sZW5ndGg9PT01KXJldHVyblwiMDAwXCIrZTtlbHNlIGlmKGUubGVuZ3RoPT09NClyZXR1cm5cIjAwMDBcIitlO2Vsc2UgaWYoZS5sZW5ndGg9PT0zKXJldHVyblwiMDAwMDBcIitlO2Vsc2UgaWYoZS5sZW5ndGg9PT0yKXJldHVyblwiMDAwMDAwXCIrZTtlbHNlIGlmKGUubGVuZ3RoPT09MSlyZXR1cm5cIjAwMDAwMDBcIitlO2Vsc2UgcmV0dXJuIGV9dC56ZXJvOD16ZXJvODtmdW5jdGlvbiBqb2luMzIoZSx0LHIsbil7dmFyIGE9ci10O2koYSU0PT09MCk7dmFyIHM9bmV3IEFycmF5KGEvNCk7Zm9yKHZhciBvPTAsaD10O288cy5sZW5ndGg7bysrLGgrPTQpe3ZhciB1O2lmKG49PT1cImJpZ1wiKXU9ZVtoXTw8MjR8ZVtoKzFdPDwxNnxlW2grMl08PDh8ZVtoKzNdO2Vsc2UgdT1lW2grM108PDI0fGVbaCsyXTw8MTZ8ZVtoKzFdPDw4fGVbaF07c1tvXT11Pj4+MH1yZXR1cm4gc310LmpvaW4zMj1qb2luMzI7ZnVuY3Rpb24gc3BsaXQzMihlLHQpe3ZhciByPW5ldyBBcnJheShlLmxlbmd0aCo0KTtmb3IodmFyIGk9MCxuPTA7aTxlLmxlbmd0aDtpKyssbis9NCl7dmFyIGE9ZVtpXTtpZih0PT09XCJiaWdcIil7cltuXT1hPj4+MjQ7cltuKzFdPWE+Pj4xNiYyNTU7cltuKzJdPWE+Pj44JjI1NTtyW24rM109YSYyNTV9ZWxzZXtyW24rM109YT4+PjI0O3JbbisyXT1hPj4+MTYmMjU1O3JbbisxXT1hPj4+OCYyNTU7cltuXT1hJjI1NX19cmV0dXJuIHJ9dC5zcGxpdDMyPXNwbGl0MzI7ZnVuY3Rpb24gcm90cjMyKGUsdCl7cmV0dXJuIGU+Pj50fGU8PDMyLXR9dC5yb3RyMzI9cm90cjMyO2Z1bmN0aW9uIHJvdGwzMihlLHQpe3JldHVybiBlPDx0fGU+Pj4zMi10fXQucm90bDMyPXJvdGwzMjtmdW5jdGlvbiBzdW0zMihlLHQpe3JldHVybiBlK3Q+Pj4wfXQuc3VtMzI9c3VtMzI7ZnVuY3Rpb24gc3VtMzJfMyhlLHQscil7cmV0dXJuIGUrdCtyPj4+MH10LnN1bTMyXzM9c3VtMzJfMztmdW5jdGlvbiBzdW0zMl80KGUsdCxyLGkpe3JldHVybiBlK3QrcitpPj4+MH10LnN1bTMyXzQ9c3VtMzJfNDtmdW5jdGlvbiBzdW0zMl81KGUsdCxyLGksbil7cmV0dXJuIGUrdCtyK2krbj4+PjB9dC5zdW0zMl81PXN1bTMyXzU7ZnVuY3Rpb24gc3VtNjQoZSx0LHIsaSl7dmFyIG49ZVt0XTt2YXIgYT1lW3QrMV07dmFyIHM9aSthPj4+MDt2YXIgbz0oczxpPzE6MCkrcituO2VbdF09bz4+PjA7ZVt0KzFdPXN9dC5zdW02ND1zdW02NDtmdW5jdGlvbiBzdW02NF9oaShlLHQscixpKXt2YXIgbj10K2k+Pj4wO3ZhciBhPShuPHQ/MTowKStlK3I7cmV0dXJuIGE+Pj4wfXQuc3VtNjRfaGk9c3VtNjRfaGk7ZnVuY3Rpb24gc3VtNjRfbG8oZSx0LHIsaSl7dmFyIG49dCtpO3JldHVybiBuPj4+MH10LnN1bTY0X2xvPXN1bTY0X2xvO2Z1bmN0aW9uIHN1bTY0XzRfaGkoZSx0LHIsaSxuLGEscyxvKXt2YXIgaD0wO3ZhciB1PXQ7dT11K2k+Pj4wO2grPXU8dD8xOjA7dT11K2E+Pj4wO2grPXU8YT8xOjA7dT11K28+Pj4wO2grPXU8bz8xOjA7dmFyIGQ9ZStyK24rcytoO3JldHVybiBkPj4+MH10LnN1bTY0XzRfaGk9c3VtNjRfNF9oaTtmdW5jdGlvbiBzdW02NF80X2xvKGUsdCxyLGksbixhLHMsbyl7dmFyIGg9dCtpK2ErbztyZXR1cm4gaD4+PjB9dC5zdW02NF80X2xvPXN1bTY0XzRfbG87ZnVuY3Rpb24gc3VtNjRfNV9oaShlLHQscixpLG4sYSxzLG8saCx1KXt2YXIgZD0wO3ZhciBjPXQ7Yz1jK2k+Pj4wO2QrPWM8dD8xOjA7Yz1jK2E+Pj4wO2QrPWM8YT8xOjA7Yz1jK28+Pj4wO2QrPWM8bz8xOjA7Yz1jK3U+Pj4wO2QrPWM8dT8xOjA7dmFyIGw9ZStyK24rcytoK2Q7cmV0dXJuIGw+Pj4wfXQuc3VtNjRfNV9oaT1zdW02NF81X2hpO2Z1bmN0aW9uIHN1bTY0XzVfbG8oZSx0LHIsaSxuLGEscyxvLGgsdSl7dmFyIGQ9dCtpK2Erbyt1O3JldHVybiBkPj4+MH10LnN1bTY0XzVfbG89c3VtNjRfNV9sbztmdW5jdGlvbiByb3RyNjRfaGkoZSx0LHIpe3ZhciBpPXQ8PDMyLXJ8ZT4+PnI7cmV0dXJuIGk+Pj4wfXQucm90cjY0X2hpPXJvdHI2NF9oaTtmdW5jdGlvbiByb3RyNjRfbG8oZSx0LHIpe3ZhciBpPWU8PDMyLXJ8dD4+PnI7cmV0dXJuIGk+Pj4wfXQucm90cjY0X2xvPXJvdHI2NF9sbztmdW5jdGlvbiBzaHI2NF9oaShlLHQscil7cmV0dXJuIGU+Pj5yfXQuc2hyNjRfaGk9c2hyNjRfaGk7ZnVuY3Rpb24gc2hyNjRfbG8oZSx0LHIpe3ZhciBpPWU8PDMyLXJ8dD4+PnI7cmV0dXJuIGk+Pj4wfXQuc2hyNjRfbG89c2hyNjRfbG99LDQ5MTA6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoNzAyOCk7dmFyIG49cig2NTQ1KTt2YXIgYT1yKDM1MjMpO2Z1bmN0aW9uIEhtYWNEUkJHKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlyZXR1cm4gbmV3IEhtYWNEUkJHKGUpO3RoaXMuaGFzaD1lLmhhc2g7dGhpcy5wcmVkUmVzaXN0PSEhZS5wcmVkUmVzaXN0O3RoaXMub3V0TGVuPXRoaXMuaGFzaC5vdXRTaXplO3RoaXMubWluRW50cm9weT1lLm1pbkVudHJvcHl8fHRoaXMuaGFzaC5obWFjU3RyZW5ndGg7dGhpcy5fcmVzZWVkPW51bGw7dGhpcy5yZXNlZWRJbnRlcnZhbD1udWxsO3RoaXMuSz1udWxsO3RoaXMuVj1udWxsO3ZhciB0PW4udG9BcnJheShlLmVudHJvcHksZS5lbnRyb3B5RW5jfHxcImhleFwiKTt2YXIgcj1uLnRvQXJyYXkoZS5ub25jZSxlLm5vbmNlRW5jfHxcImhleFwiKTt2YXIgaT1uLnRvQXJyYXkoZS5wZXJzLGUucGVyc0VuY3x8XCJoZXhcIik7YSh0Lmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsXCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6IFwiK3RoaXMubWluRW50cm9weStcIiBiaXRzXCIpO3RoaXMuX2luaXQodCxyLGkpfWUuZXhwb3J0cz1IbWFjRFJCRztIbWFjRFJCRy5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24gaW5pdChlLHQscil7dmFyIGk9ZS5jb25jYXQodCkuY29uY2F0KHIpO3RoaXMuSz1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7dGhpcy5WPW5ldyBBcnJheSh0aGlzLm91dExlbi84KTtmb3IodmFyIG49MDtuPHRoaXMuVi5sZW5ndGg7bisrKXt0aGlzLktbbl09MDt0aGlzLlZbbl09MX10aGlzLl91cGRhdGUoaSk7dGhpcy5fcmVzZWVkPTE7dGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9O0htYWNEUkJHLnByb3RvdHlwZS5faG1hYz1mdW5jdGlvbiBobWFjKCl7cmV0dXJuIG5ldyBpLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9O0htYWNEUkJHLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uIHVwZGF0ZShlKXt2YXIgdD10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFswXSk7aWYoZSl0PXQudXBkYXRlKGUpO3RoaXMuSz10LmRpZ2VzdCgpO3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7aWYoIWUpcmV0dXJuO3RoaXMuSz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFsxXSkudXBkYXRlKGUpLmRpZ2VzdCgpO3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCl9O0htYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQ9ZnVuY3Rpb24gcmVzZWVkKGUsdCxyLGkpe2lmKHR5cGVvZiB0IT09XCJzdHJpbmdcIil7aT1yO3I9dDt0PW51bGx9ZT1uLnRvQXJyYXkoZSx0KTtyPW4udG9BcnJheShyLGkpO2EoZS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LFwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiBcIit0aGlzLm1pbkVudHJvcHkrXCIgYml0c1wiKTt0aGlzLl91cGRhdGUoZS5jb25jYXQocnx8W10pKTt0aGlzLl9yZXNlZWQ9MX07SG1hY0RSQkcucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uIGdlbmVyYXRlKGUsdCxyLGkpe2lmKHRoaXMuX3Jlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcihcIlJlc2VlZCBpcyByZXF1aXJlZFwiKTtpZih0eXBlb2YgdCE9PVwic3RyaW5nXCIpe2k9cjtyPXQ7dD1udWxsfWlmKHIpe3I9bi50b0FycmF5KHIsaXx8XCJoZXhcIik7dGhpcy5fdXBkYXRlKHIpfXZhciBhPVtdO3doaWxlKGEubGVuZ3RoPGUpe3RoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7YT1hLmNvbmNhdCh0aGlzLlYpfXZhciBzPWEuc2xpY2UoMCxlKTt0aGlzLl91cGRhdGUocik7dGhpcy5fcmVzZWVkKys7cmV0dXJuIG4uZW5jb2RlKHMsdCl9fSwzNzgyOmZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBPYmplY3QuY3JlYXRlPT09XCJmdW5jdGlvblwiKXtlLmV4cG9ydHM9ZnVuY3Rpb24gaW5oZXJpdHMoZSx0KXtpZih0KXtlLnN1cGVyXz10O2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KX19fWVsc2V7ZS5leHBvcnRzPWZ1bmN0aW9uIGluaGVyaXRzKGUsdCl7aWYodCl7ZS5zdXBlcl89dDt2YXIgVGVtcEN0b3I9ZnVuY3Rpb24oKXt9O1RlbXBDdG9yLnByb3RvdHlwZT10LnByb3RvdHlwZTtlLnByb3RvdHlwZT1uZXcgVGVtcEN0b3I7ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX19fX0sMzUzMzpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDkwMjkpO3ZhciBhPXIoNjkxMSkuQnVmZmVyO3ZhciBzPW5ldyBBcnJheSgxNik7ZnVuY3Rpb24gTUQ1KCl7bi5jYWxsKHRoaXMsNjQpO3RoaXMuX2E9MTczMjU4NDE5Mzt0aGlzLl9iPTQwMjMyMzM0MTc7dGhpcy5fYz0yNTYyMzgzMTAyO3RoaXMuX2Q9MjcxNzMzODc4fWkoTUQ1LG4pO01ENS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbigpe3ZhciBlPXM7Zm9yKHZhciB0PTA7dDwxNjsrK3QpZVt0XT10aGlzLl9ibG9jay5yZWFkSW50MzJMRSh0KjQpO3ZhciByPXRoaXMuX2E7dmFyIGk9dGhpcy5fYjt2YXIgbj10aGlzLl9jO3ZhciBhPXRoaXMuX2Q7cj1mbkYocixpLG4sYSxlWzBdLDM2MTQwOTAzNjAsNyk7YT1mbkYoYSxyLGksbixlWzFdLDM5MDU0MDI3MTAsMTIpO249Zm5GKG4sYSxyLGksZVsyXSw2MDYxMDU4MTksMTcpO2k9Zm5GKGksbixhLHIsZVszXSwzMjUwNDQxOTY2LDIyKTtyPWZuRihyLGksbixhLGVbNF0sNDExODU0ODM5OSw3KTthPWZuRihhLHIsaSxuLGVbNV0sMTIwMDA4MDQyNiwxMik7bj1mbkYobixhLHIsaSxlWzZdLDI4MjE3MzU5NTUsMTcpO2k9Zm5GKGksbixhLHIsZVs3XSw0MjQ5MjYxMzEzLDIyKTtyPWZuRihyLGksbixhLGVbOF0sMTc3MDAzNTQxNiw3KTthPWZuRihhLHIsaSxuLGVbOV0sMjMzNjU1Mjg3OSwxMik7bj1mbkYobixhLHIsaSxlWzEwXSw0Mjk0OTI1MjMzLDE3KTtpPWZuRihpLG4sYSxyLGVbMTFdLDIzMDQ1NjMxMzQsMjIpO3I9Zm5GKHIsaSxuLGEsZVsxMl0sMTgwNDYwMzY4Miw3KTthPWZuRihhLHIsaSxuLGVbMTNdLDQyNTQ2MjYxOTUsMTIpO249Zm5GKG4sYSxyLGksZVsxNF0sMjc5Mjk2NTAwNiwxNyk7aT1mbkYoaSxuLGEscixlWzE1XSwxMjM2NTM1MzI5LDIyKTtyPWZuRyhyLGksbixhLGVbMV0sNDEyOTE3MDc4Niw1KTthPWZuRyhhLHIsaSxuLGVbNl0sMzIyNTQ2NTY2NCw5KTtuPWZuRyhuLGEscixpLGVbMTFdLDY0MzcxNzcxMywxNCk7aT1mbkcoaSxuLGEscixlWzBdLDM5MjEwNjk5OTQsMjApO3I9Zm5HKHIsaSxuLGEsZVs1XSwzNTkzNDA4NjA1LDUpO2E9Zm5HKGEscixpLG4sZVsxMF0sMzgwMTYwODMsOSk7bj1mbkcobixhLHIsaSxlWzE1XSwzNjM0NDg4OTYxLDE0KTtpPWZuRyhpLG4sYSxyLGVbNF0sMzg4OTQyOTQ0OCwyMCk7cj1mbkcocixpLG4sYSxlWzldLDU2ODQ0NjQzOCw1KTthPWZuRyhhLHIsaSxuLGVbMTRdLDMyNzUxNjM2MDYsOSk7bj1mbkcobixhLHIsaSxlWzNdLDQxMDc2MDMzMzUsMTQpO2k9Zm5HKGksbixhLHIsZVs4XSwxMTYzNTMxNTAxLDIwKTtyPWZuRyhyLGksbixhLGVbMTNdLDI4NTAyODU4MjksNSk7YT1mbkcoYSxyLGksbixlWzJdLDQyNDM1NjM1MTIsOSk7bj1mbkcobixhLHIsaSxlWzddLDE3MzUzMjg0NzMsMTQpO2k9Zm5HKGksbixhLHIsZVsxMl0sMjM2ODM1OTU2MiwyMCk7cj1mbkgocixpLG4sYSxlWzVdLDQyOTQ1ODg3MzgsNCk7YT1mbkgoYSxyLGksbixlWzhdLDIyNzIzOTI4MzMsMTEpO249Zm5IKG4sYSxyLGksZVsxMV0sMTgzOTAzMDU2MiwxNik7aT1mbkgoaSxuLGEscixlWzE0XSw0MjU5NjU3NzQwLDIzKTtyPWZuSChyLGksbixhLGVbMV0sMjc2Mzk3NTIzNiw0KTthPWZuSChhLHIsaSxuLGVbNF0sMTI3Mjg5MzM1MywxMSk7bj1mbkgobixhLHIsaSxlWzddLDQxMzk0Njk2NjQsMTYpO2k9Zm5IKGksbixhLHIsZVsxMF0sMzIwMDIzNjY1NiwyMyk7cj1mbkgocixpLG4sYSxlWzEzXSw2ODEyNzkxNzQsNCk7YT1mbkgoYSxyLGksbixlWzBdLDM5MzY0MzAwNzQsMTEpO249Zm5IKG4sYSxyLGksZVszXSwzNTcyNDQ1MzE3LDE2KTtpPWZuSChpLG4sYSxyLGVbNl0sNzYwMjkxODksMjMpO3I9Zm5IKHIsaSxuLGEsZVs5XSwzNjU0NjAyODA5LDQpO2E9Zm5IKGEscixpLG4sZVsxMl0sMzg3MzE1MTQ2MSwxMSk7bj1mbkgobixhLHIsaSxlWzE1XSw1MzA3NDI1MjAsMTYpO2k9Zm5IKGksbixhLHIsZVsyXSwzMjk5NjI4NjQ1LDIzKTtyPWZuSShyLGksbixhLGVbMF0sNDA5NjMzNjQ1Miw2KTthPWZuSShhLHIsaSxuLGVbN10sMTEyNjg5MTQxNSwxMCk7bj1mbkkobixhLHIsaSxlWzE0XSwyODc4NjEyMzkxLDE1KTtpPWZuSShpLG4sYSxyLGVbNV0sNDIzNzUzMzI0MSwyMSk7cj1mbkkocixpLG4sYSxlWzEyXSwxNzAwNDg1NTcxLDYpO2E9Zm5JKGEscixpLG4sZVszXSwyMzk5OTgwNjkwLDEwKTtuPWZuSShuLGEscixpLGVbMTBdLDQyOTM5MTU3NzMsMTUpO2k9Zm5JKGksbixhLHIsZVsxXSwyMjQwMDQ0NDk3LDIxKTtyPWZuSShyLGksbixhLGVbOF0sMTg3MzMxMzM1OSw2KTthPWZuSShhLHIsaSxuLGVbMTVdLDQyNjQzNTU1NTIsMTApO249Zm5JKG4sYSxyLGksZVs2XSwyNzM0NzY4OTE2LDE1KTtpPWZuSShpLG4sYSxyLGVbMTNdLDEzMDkxNTE2NDksMjEpO3I9Zm5JKHIsaSxuLGEsZVs0XSw0MTQ5NDQ0MjI2LDYpO2E9Zm5JKGEscixpLG4sZVsxMV0sMzE3NDc1NjkxNywxMCk7bj1mbkkobixhLHIsaSxlWzJdLDcxODc4NzI1OSwxNSk7aT1mbkkoaSxuLGEscixlWzldLDM5NTE0ODE3NDUsMjEpO3RoaXMuX2E9dGhpcy5fYStyfDA7dGhpcy5fYj10aGlzLl9iK2l8MDt0aGlzLl9jPXRoaXMuX2MrbnwwO3RoaXMuX2Q9dGhpcy5fZCthfDB9O01ENS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbigpe3RoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdPTEyODtpZih0aGlzLl9ibG9ja09mZnNldD41Nil7dGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDY0KTt0aGlzLl91cGRhdGUoKTt0aGlzLl9ibG9ja09mZnNldD0wfXRoaXMuX2Jsb2NrLmZpbGwoMCx0aGlzLl9ibG9ja09mZnNldCw1Nik7dGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sNTYpO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLDYwKTt0aGlzLl91cGRhdGUoKTt2YXIgZT1hLmFsbG9jVW5zYWZlKDE2KTtlLndyaXRlSW50MzJMRSh0aGlzLl9hLDApO2Uud3JpdGVJbnQzMkxFKHRoaXMuX2IsNCk7ZS53cml0ZUludDMyTEUodGhpcy5fYyw4KTtlLndyaXRlSW50MzJMRSh0aGlzLl9kLDEyKTtyZXR1cm4gZX07ZnVuY3Rpb24gcm90bChlLHQpe3JldHVybiBlPDx0fGU+Pj4zMi10fWZ1bmN0aW9uIGZuRihlLHQscixpLG4sYSxzKXtyZXR1cm4gcm90bChlKyh0JnJ8fnQmaSkrbithfDAscykrdHwwfWZ1bmN0aW9uIGZuRyhlLHQscixpLG4sYSxzKXtyZXR1cm4gcm90bChlKyh0Jml8ciZ+aSkrbithfDAscykrdHwwfWZ1bmN0aW9uIGZuSChlLHQscixpLG4sYSxzKXtyZXR1cm4gcm90bChlKyh0XnJeaSkrbithfDAscykrdHwwfWZ1bmN0aW9uIGZuSShlLHQscixpLG4sYSxzKXtyZXR1cm4gcm90bChlKyhyXih0fH5pKSkrbithfDAscykrdHwwfWUuZXhwb3J0cz1NRDV9LDEzNTQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNzExKTt2YXIgbj1yKDM1MDApO2Z1bmN0aW9uIE1pbGxlclJhYmluKGUpe3RoaXMucmFuZD1lfHxuZXcgbi5SYW5kfWUuZXhwb3J0cz1NaWxsZXJSYWJpbjtNaWxsZXJSYWJpbi5jcmVhdGU9ZnVuY3Rpb24gY3JlYXRlKGUpe3JldHVybiBuZXcgTWlsbGVyUmFiaW4oZSl9O01pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZGJlbG93PWZ1bmN0aW9uIF9yYW5kYmVsb3coZSl7dmFyIHQ9ZS5iaXRMZW5ndGgoKTt2YXIgcj1NYXRoLmNlaWwodC84KTtkb3t2YXIgbj1uZXcgaSh0aGlzLnJhbmQuZ2VuZXJhdGUocikpfXdoaWxlKG4uY21wKGUpPj0wKTtyZXR1cm4gbn07TWlsbGVyUmFiaW4ucHJvdG90eXBlLl9yYW5kcmFuZ2U9ZnVuY3Rpb24gX3JhbmRyYW5nZShlLHQpe3ZhciByPXQuc3ViKGUpO3JldHVybiBlLmFkZCh0aGlzLl9yYW5kYmVsb3cocikpfTtNaWxsZXJSYWJpbi5wcm90b3R5cGUudGVzdD1mdW5jdGlvbiB0ZXN0KGUsdCxyKXt2YXIgbj1lLmJpdExlbmd0aCgpO3ZhciBhPWkubW9udChlKTt2YXIgcz1uZXcgaSgxKS50b1JlZChhKTtpZighdCl0PU1hdGgubWF4KDEsbi80OHwwKTt2YXIgbz1lLnN1Ym4oMSk7Zm9yKHZhciBoPTA7IW8udGVzdG4oaCk7aCsrKXt9dmFyIHU9ZS5zaHJuKGgpO3ZhciBkPW8udG9SZWQoYSk7dmFyIGM9dHJ1ZTtmb3IoO3Q+MDt0LS0pe3ZhciBsPXRoaXMuX3JhbmRyYW5nZShuZXcgaSgyKSxvKTtpZihyKXIobCk7dmFyIHA9bC50b1JlZChhKS5yZWRQb3codSk7aWYocC5jbXAocyk9PT0wfHxwLmNtcChkKT09PTApY29udGludWU7Zm9yKHZhciB2PTE7djxoO3YrKyl7cD1wLnJlZFNxcigpO2lmKHAuY21wKHMpPT09MClyZXR1cm4gZmFsc2U7aWYocC5jbXAoZCk9PT0wKWJyZWFrfWlmKHY9PT1oKXJldHVybiBmYWxzZX1yZXR1cm4gY307TWlsbGVyUmFiaW4ucHJvdG90eXBlLmdldERpdmlzb3I9ZnVuY3Rpb24gZ2V0RGl2aXNvcihlLHQpe3ZhciByPWUuYml0TGVuZ3RoKCk7dmFyIG49aS5tb250KGUpO3ZhciBhPW5ldyBpKDEpLnRvUmVkKG4pO2lmKCF0KXQ9TWF0aC5tYXgoMSxyLzQ4fDApO3ZhciBzPWUuc3VibigxKTtmb3IodmFyIG89MDshcy50ZXN0bihvKTtvKyspe312YXIgaD1lLnNocm4obyk7dmFyIHU9cy50b1JlZChuKTtmb3IoO3Q+MDt0LS0pe3ZhciBkPXRoaXMuX3JhbmRyYW5nZShuZXcgaSgyKSxzKTt2YXIgYz1lLmdjZChkKTtpZihjLmNtcG4oMSkhPT0wKXJldHVybiBjO3ZhciBsPWQudG9SZWQobikucmVkUG93KGgpO2lmKGwuY21wKGEpPT09MHx8bC5jbXAodSk9PT0wKWNvbnRpbnVlO2Zvcih2YXIgcD0xO3A8bztwKyspe2w9bC5yZWRTcXIoKTtpZihsLmNtcChhKT09PTApcmV0dXJuIGwuZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKGUpO2lmKGwuY21wKHUpPT09MClicmVha31pZihwPT09byl7bD1sLnJlZFNxcigpO3JldHVybiBsLmZyb21SZWQoKS5zdWJuKDEpLmdjZChlKX19cmV0dXJuIGZhbHNlfX0sMzUyMzpmdW5jdGlvbihlKXtlLmV4cG9ydHM9YXNzZXJ0O2Z1bmN0aW9uIGFzc2VydChlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0fHxcIkFzc2VydGlvbiBmYWlsZWRcIil9YXNzZXJ0LmVxdWFsPWZ1bmN0aW9uIGFzc2VydEVxdWFsKGUsdCxyKXtpZihlIT10KXRocm93IG5ldyBFcnJvcihyfHxcIkFzc2VydGlvbiBmYWlsZWQ6IFwiK2UrXCIgIT0gXCIrdCl9fSw2NTQ1OmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dDtmdW5jdGlvbiB0b0FycmF5KGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5zbGljZSgpO2lmKCFlKXJldHVybltdO3ZhciByPVtdO2lmKHR5cGVvZiBlIT09XCJzdHJpbmdcIil7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspcltpXT1lW2ldfDA7cmV0dXJuIHJ9aWYodD09PVwiaGV4XCIpe2U9ZS5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLFwiXCIpO2lmKGUubGVuZ3RoJTIhPT0wKWU9XCIwXCIrZTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krPTIpci5wdXNoKHBhcnNlSW50KGVbaV0rZVtpKzFdLDE2KSl9ZWxzZXtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG49ZS5jaGFyQ29kZUF0KGkpO3ZhciBhPW4+Pjg7dmFyIHM9biYyNTU7aWYoYSlyLnB1c2goYSxzKTtlbHNlIHIucHVzaChzKX19cmV0dXJuIHJ9ci50b0FycmF5PXRvQXJyYXk7ZnVuY3Rpb24gemVybzIoZSl7aWYoZS5sZW5ndGg9PT0xKXJldHVyblwiMFwiK2U7ZWxzZSByZXR1cm4gZX1yLnplcm8yPXplcm8yO2Z1bmN0aW9uIHRvSGV4KGUpe3ZhciB0PVwiXCI7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdCs9emVybzIoZVtyXS50b1N0cmluZygxNikpO3JldHVybiB0fXIudG9IZXg9dG9IZXg7ci5lbmNvZGU9ZnVuY3Rpb24gZW5jb2RlKGUsdCl7aWYodD09PVwiaGV4XCIpcmV0dXJuIHRvSGV4KGUpO2Vsc2UgcmV0dXJuIGV9fSw4Njg3OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDcxNjApO3QuY2VydGlmaWNhdGU9cig4NzgyKTt2YXIgbj1pLmRlZmluZShcIlJTQVByaXZhdGVLZXlcIiwoZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcInZlcnNpb25cIikuaW50KCksdGhpcy5rZXkoXCJtb2R1bHVzXCIpLmludCgpLHRoaXMua2V5KFwicHVibGljRXhwb25lbnRcIikuaW50KCksdGhpcy5rZXkoXCJwcml2YXRlRXhwb25lbnRcIikuaW50KCksdGhpcy5rZXkoXCJwcmltZTFcIikuaW50KCksdGhpcy5rZXkoXCJwcmltZTJcIikuaW50KCksdGhpcy5rZXkoXCJleHBvbmVudDFcIikuaW50KCksdGhpcy5rZXkoXCJleHBvbmVudDJcIikuaW50KCksdGhpcy5rZXkoXCJjb2VmZmljaWVudFwiKS5pbnQoKSl9KSk7dC5SU0FQcml2YXRlS2V5PW47dmFyIGE9aS5kZWZpbmUoXCJSU0FQdWJsaWNLZXlcIiwoZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcIm1vZHVsdXNcIikuaW50KCksdGhpcy5rZXkoXCJwdWJsaWNFeHBvbmVudFwiKS5pbnQoKSl9KSk7dC5SU0FQdWJsaWNLZXk9YTt2YXIgcz1pLmRlZmluZShcIlN1YmplY3RQdWJsaWNLZXlJbmZvXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikudXNlKG8pLHRoaXMua2V5KFwic3ViamVjdFB1YmxpY0tleVwiKS5iaXRzdHIoKSl9KSk7dC5QdWJsaWNLZXk9czt2YXIgbz1pLmRlZmluZShcIkFsZ29yaXRobUlkZW50aWZpZXJcIiwoZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcImFsZ29yaXRobVwiKS5vYmppZCgpLHRoaXMua2V5KFwibm9uZVwiKS5udWxsXygpLm9wdGlvbmFsKCksdGhpcy5rZXkoXCJjdXJ2ZVwiKS5vYmppZCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoXCJwYXJhbXNcIikuc2VxKCkub2JqKHRoaXMua2V5KFwicFwiKS5pbnQoKSx0aGlzLmtleShcInFcIikuaW50KCksdGhpcy5rZXkoXCJnXCIpLmludCgpKS5vcHRpb25hbCgpKX0pKTt2YXIgaD1pLmRlZmluZShcIlByaXZhdGVLZXlJbmZvXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwiYWxnb3JpdGhtXCIpLnVzZShvKSx0aGlzLmtleShcInN1YmplY3RQcml2YXRlS2V5XCIpLm9jdHN0cigpKX0pKTt0LlByaXZhdGVLZXk9aDt2YXIgdT1pLmRlZmluZShcIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikuc2VxKCkub2JqKHRoaXMua2V5KFwiaWRcIikub2JqaWQoKSx0aGlzLmtleShcImRlY3J5cHRcIikuc2VxKCkub2JqKHRoaXMua2V5KFwia2RlXCIpLnNlcSgpLm9iaih0aGlzLmtleShcImlkXCIpLm9iamlkKCksdGhpcy5rZXkoXCJrZGVwYXJhbXNcIikuc2VxKCkub2JqKHRoaXMua2V5KFwic2FsdFwiKS5vY3RzdHIoKSx0aGlzLmtleShcIml0ZXJzXCIpLmludCgpKSksdGhpcy5rZXkoXCJjaXBoZXJcIikuc2VxKCkub2JqKHRoaXMua2V5KFwiYWxnb1wiKS5vYmppZCgpLHRoaXMua2V5KFwiaXZcIikub2N0c3RyKCkpKSksdGhpcy5rZXkoXCJzdWJqZWN0UHJpdmF0ZUtleVwiKS5vY3RzdHIoKSl9KSk7dC5FbmNyeXB0ZWRQcml2YXRlS2V5PXU7dmFyIGQ9aS5kZWZpbmUoXCJEU0FQcml2YXRlS2V5XCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwicFwiKS5pbnQoKSx0aGlzLmtleShcInFcIikuaW50KCksdGhpcy5rZXkoXCJnXCIpLmludCgpLHRoaXMua2V5KFwicHViX2tleVwiKS5pbnQoKSx0aGlzLmtleShcInByaXZfa2V5XCIpLmludCgpKX0pKTt0LkRTQVByaXZhdGVLZXk9ZDt0LkRTQXBhcmFtPWkuZGVmaW5lKFwiRFNBcGFyYW1cIiwoZnVuY3Rpb24oKXt0aGlzLmludCgpfSkpO3ZhciBjPWkuZGVmaW5lKFwiRUNQcml2YXRlS2V5XCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwicHJpdmF0ZUtleVwiKS5vY3RzdHIoKSx0aGlzLmtleShcInBhcmFtZXRlcnNcIikub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UobCksdGhpcy5rZXkoXCJwdWJsaWNLZXlcIikub3B0aW9uYWwoKS5leHBsaWNpdCgxKS5iaXRzdHIoKSl9KSk7dC5FQ1ByaXZhdGVLZXk9Yzt2YXIgbD1pLmRlZmluZShcIkVDUGFyYW1ldGVyc1wiLChmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSkpO3Quc2lnbmF0dXJlPWkuZGVmaW5lKFwic2lnbmF0dXJlXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJyXCIpLmludCgpLHRoaXMua2V5KFwic1wiKS5pbnQoKSl9KSl9LDg3ODI6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoNzE2MCk7dmFyIG49aS5kZWZpbmUoXCJUaW1lXCIsKGZ1bmN0aW9uKCl7dGhpcy5jaG9pY2Uoe3V0Y1RpbWU6dGhpcy51dGN0aW1lKCksZ2VuZXJhbFRpbWU6dGhpcy5nZW50aW1lKCl9KX0pKTt2YXIgYT1pLmRlZmluZShcIkF0dHJpYnV0ZVR5cGVWYWx1ZVwiLChmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwidHlwZVwiKS5vYmppZCgpLHRoaXMua2V5KFwidmFsdWVcIikuYW55KCkpfSkpO3ZhciBzPWkuZGVmaW5lKFwiQWxnb3JpdGhtSWRlbnRpZmllclwiLChmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwiYWxnb3JpdGhtXCIpLm9iamlkKCksdGhpcy5rZXkoXCJwYXJhbWV0ZXJzXCIpLm9wdGlvbmFsKCksdGhpcy5rZXkoXCJjdXJ2ZVwiKS5vYmppZCgpLm9wdGlvbmFsKCkpfSkpO3ZhciBvPWkuZGVmaW5lKFwiU3ViamVjdFB1YmxpY0tleUluZm9cIiwoZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcImFsZ29yaXRobVwiKS51c2UocyksdGhpcy5rZXkoXCJzdWJqZWN0UHVibGljS2V5XCIpLmJpdHN0cigpKX0pKTt2YXIgaD1pLmRlZmluZShcIlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVcIiwoZnVuY3Rpb24oKXt0aGlzLnNldG9mKGEpfSkpO3ZhciB1PWkuZGVmaW5lKFwiUkROU2VxdWVuY2VcIiwoZnVuY3Rpb24oKXt0aGlzLnNlcW9mKGgpfSkpO3ZhciBkPWkuZGVmaW5lKFwiTmFtZVwiLChmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtyZG5TZXF1ZW5jZTp0aGlzLnVzZSh1KX0pfSkpO3ZhciBjPWkuZGVmaW5lKFwiVmFsaWRpdHlcIiwoZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcIm5vdEJlZm9yZVwiKS51c2UobiksdGhpcy5rZXkoXCJub3RBZnRlclwiKS51c2UobikpfSkpO3ZhciBsPWkuZGVmaW5lKFwiRXh0ZW5zaW9uXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJleHRuSURcIikub2JqaWQoKSx0aGlzLmtleShcImNyaXRpY2FsXCIpLmJvb2woKS5kZWYoZmFsc2UpLHRoaXMua2V5KFwiZXh0blZhbHVlXCIpLm9jdHN0cigpKX0pKTt2YXIgcD1pLmRlZmluZShcIlRCU0NlcnRpZmljYXRlXCIsKGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmV4cGxpY2l0KDApLmludCgpLm9wdGlvbmFsKCksdGhpcy5rZXkoXCJzZXJpYWxOdW1iZXJcIikuaW50KCksdGhpcy5rZXkoXCJzaWduYXR1cmVcIikudXNlKHMpLHRoaXMua2V5KFwiaXNzdWVyXCIpLnVzZShkKSx0aGlzLmtleShcInZhbGlkaXR5XCIpLnVzZShjKSx0aGlzLmtleShcInN1YmplY3RcIikudXNlKGQpLHRoaXMua2V5KFwic3ViamVjdFB1YmxpY0tleUluZm9cIikudXNlKG8pLHRoaXMua2V5KFwiaXNzdWVyVW5pcXVlSURcIikuaW1wbGljaXQoMSkuYml0c3RyKCkub3B0aW9uYWwoKSx0aGlzLmtleShcInN1YmplY3RVbmlxdWVJRFwiKS5pbXBsaWNpdCgyKS5iaXRzdHIoKS5vcHRpb25hbCgpLHRoaXMua2V5KFwiZXh0ZW5zaW9uc1wiKS5leHBsaWNpdCgzKS5zZXFvZihsKS5vcHRpb25hbCgpKX0pKTt2YXIgdj1pLmRlZmluZShcIlg1MDlDZXJ0aWZpY2F0ZVwiLChmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwidGJzQ2VydGlmaWNhdGVcIikudXNlKHApLHRoaXMua2V5KFwic2lnbmF0dXJlQWxnb3JpdGhtXCIpLnVzZShzKSx0aGlzLmtleShcInNpZ25hdHVyZVZhbHVlXCIpLmJpdHN0cigpKX0pKTtlLmV4cG9ydHM9dn0sNjUwMTpmdW5jdGlvbihlLHQscil7dmFyIGk9L1Byb2MtVHlwZTogNCxFTkNSWVBURURbXFxuXFxyXStERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspW1xcblxccl0rKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylbXFxuXFxyXSsvbTt2YXIgbj0vXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL207dmFyIGE9L14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLShbMC05QS16XFxuXFxyXFwrXFwvXFw9XSspLS0tLS1FTkQgXFwxLS0tLS0kL207dmFyIHM9cig4MzY4KTt2YXIgbz1yKDY1OTQpO3ZhciBoPXIoNjkxMSkuQnVmZmVyO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPWUudG9TdHJpbmcoKTt2YXIgdT1yLm1hdGNoKGkpO3ZhciBkO2lmKCF1KXt2YXIgYz1yLm1hdGNoKGEpO2Q9bmV3IGgoY1syXS5yZXBsYWNlKC9bXFxyXFxuXS9nLFwiXCIpLFwiYmFzZTY0XCIpfWVsc2V7dmFyIGw9XCJhZXNcIit1WzFdO3ZhciBwPWguZnJvbSh1WzJdLFwiaGV4XCIpO3ZhciB2PWguZnJvbSh1WzNdLnJlcGxhY2UoL1tcXHJcXG5dL2csXCJcIiksXCJiYXNlNjRcIik7dmFyIGI9cyh0LHAuc2xpY2UoMCw4KSxwYXJzZUludCh1WzFdLDEwKSkua2V5O3ZhciBtPVtdO3ZhciB5PW8uY3JlYXRlRGVjaXBoZXJpdihsLGIscCk7bS5wdXNoKHkudXBkYXRlKHYpKTttLnB1c2goeS5maW5hbCgpKTtkPWguY29uY2F0KG0pfXZhciBnPXIubWF0Y2gobilbMV07cmV0dXJue3RhZzpnLGRhdGE6ZH19fSw5OTAyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDg2ODcpO3ZhciBuPXIoMjUxMCk7dmFyIGE9cig2NTAxKTt2YXIgcz1yKDY1OTQpO3ZhciBvPXIoNDk3OCk7dmFyIGg9cig2OTExKS5CdWZmZXI7ZS5leHBvcnRzPXBhcnNlS2V5cztmdW5jdGlvbiBwYXJzZUtleXMoZSl7dmFyIHQ7aWYodHlwZW9mIGU9PT1cIm9iamVjdFwiJiYhaC5pc0J1ZmZlcihlKSl7dD1lLnBhc3NwaHJhc2U7ZT1lLmtleX1pZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2U9aC5mcm9tKGUpfXZhciByPWEoZSx0KTt2YXIgbj1yLnRhZzt2YXIgcz1yLmRhdGE7dmFyIG8sdTtzd2l0Y2gobil7Y2FzZVwiQ0VSVElGSUNBVEVcIjp1PWkuY2VydGlmaWNhdGUuZGVjb2RlKHMsXCJkZXJcIikudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm87Y2FzZVwiUFVCTElDIEtFWVwiOmlmKCF1KXt1PWkuUHVibGljS2V5LmRlY29kZShzLFwiZGVyXCIpfW89dS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oXCIuXCIpO3N3aXRjaChvKXtjYXNlXCIxLjIuODQwLjExMzU0OS4xLjEuMVwiOnJldHVybiBpLlJTQVB1YmxpY0tleS5kZWNvZGUodS5zdWJqZWN0UHVibGljS2V5LmRhdGEsXCJkZXJcIik7Y2FzZVwiMS4yLjg0MC4xMDA0NS4yLjFcIjp1LnN1YmplY3RQcml2YXRlS2V5PXUuc3ViamVjdFB1YmxpY0tleTtyZXR1cm57dHlwZTpcImVjXCIsZGF0YTp1fTtjYXNlXCIxLjIuODQwLjEwMDQwLjQuMVwiOnUuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PWkuRFNBcGFyYW0uZGVjb2RlKHUuc3ViamVjdFB1YmxpY0tleS5kYXRhLFwiZGVyXCIpO3JldHVybnt0eXBlOlwiZHNhXCIsZGF0YTp1LmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgaWQgXCIrbyl9dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgdHlwZSBcIituKTtjYXNlXCJFTkNSWVBURUQgUFJJVkFURSBLRVlcIjpzPWkuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUocyxcImRlclwiKTtzPWRlY3J5cHQocyx0KTtjYXNlXCJQUklWQVRFIEtFWVwiOnU9aS5Qcml2YXRlS2V5LmRlY29kZShzLFwiZGVyXCIpO289dS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oXCIuXCIpO3N3aXRjaChvKXtjYXNlXCIxLjIuODQwLjExMzU0OS4xLjEuMVwiOnJldHVybiBpLlJTQVByaXZhdGVLZXkuZGVjb2RlKHUuc3ViamVjdFByaXZhdGVLZXksXCJkZXJcIik7Y2FzZVwiMS4yLjg0MC4xMDA0NS4yLjFcIjpyZXR1cm57Y3VydmU6dS5hbGdvcml0aG0uY3VydmUscHJpdmF0ZUtleTppLkVDUHJpdmF0ZUtleS5kZWNvZGUodS5zdWJqZWN0UHJpdmF0ZUtleSxcImRlclwiKS5wcml2YXRlS2V5fTtjYXNlXCIxLjIuODQwLjEwMDQwLjQuMVwiOnUuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleT1pLkRTQXBhcmFtLmRlY29kZSh1LnN1YmplY3RQcml2YXRlS2V5LFwiZGVyXCIpO3JldHVybnt0eXBlOlwiZHNhXCIscGFyYW1zOnUuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSBpZCBcIitvKX10aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSB0eXBlIFwiK24pO2Nhc2VcIlJTQSBQVUJMSUMgS0VZXCI6cmV0dXJuIGkuUlNBUHVibGljS2V5LmRlY29kZShzLFwiZGVyXCIpO2Nhc2VcIlJTQSBQUklWQVRFIEtFWVwiOnJldHVybiBpLlJTQVByaXZhdGVLZXkuZGVjb2RlKHMsXCJkZXJcIik7Y2FzZVwiRFNBIFBSSVZBVEUgS0VZXCI6cmV0dXJue3R5cGU6XCJkc2FcIixwYXJhbXM6aS5EU0FQcml2YXRlS2V5LmRlY29kZShzLFwiZGVyXCIpfTtjYXNlXCJFQyBQUklWQVRFIEtFWVwiOnM9aS5FQ1ByaXZhdGVLZXkuZGVjb2RlKHMsXCJkZXJcIik7cmV0dXJue2N1cnZlOnMucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5OnMucHJpdmF0ZUtleX07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSB0eXBlIFwiK24pfX1wYXJzZUtleXMuc2lnbmF0dXJlPWkuc2lnbmF0dXJlO2Z1bmN0aW9uIGRlY3J5cHQoZSx0KXt2YXIgcj1lLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdDt2YXIgaT1wYXJzZUludChlLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwxMCk7dmFyIGE9bltlLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oXCIuXCIpXTt2YXIgdT1lLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdjt2YXIgZD1lLnN1YmplY3RQcml2YXRlS2V5O3ZhciBjPXBhcnNlSW50KGEuc3BsaXQoXCItXCIpWzFdLDEwKS84O3ZhciBsPW8ucGJrZGYyU3luYyh0LHIsaSxjLFwic2hhMVwiKTt2YXIgcD1zLmNyZWF0ZURlY2lwaGVyaXYoYSxsLHUpO3ZhciB2PVtdO3YucHVzaChwLnVwZGF0ZShkKSk7di5wdXNoKHAuZmluYWwoKSk7cmV0dXJuIGguY29uY2F0KHYpfX0sNDk3ODpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2MTEzKTt2YXIgbj1yKDUzNDkpO3ZhciBhPXIoNzAwNyk7dmFyIHM9cig1NDA3KTtmdW5jdGlvbiBuYXRpdmVQQktERjIoZSx0LHIsbyxoLHUpe24ocixvKTtlPXMoZSxhLFwiUGFzc3dvcmRcIik7dD1zKHQsYSxcIlNhbHRcIik7aWYodHlwZW9mIGg9PT1cImZ1bmN0aW9uXCIpe3U9aDtoPVwic2hhMVwifWlmKHR5cGVvZiB1IT09XCJmdW5jdGlvblwiKXRocm93IG5ldyBFcnJvcihcIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMlwiKTtyZXR1cm4gaS5wYmtkZjIoZSx0LHIsbyxoLHUpfWZ1bmN0aW9uIG5hdGl2ZVBCS0RGMlN5bmMoZSx0LHIsbyxoKXtuKHIsbyk7ZT1zKGUsYSxcIlBhc3N3b3JkXCIpO3Q9cyh0LGEsXCJTYWx0XCIpO2g9aHx8XCJzaGExXCI7cmV0dXJuIGkucGJrZGYyU3luYyhlLHQscixvLGgpfWlmKCFpLnBia2RmMlN5bmN8fGkucGJrZGYyU3luYy50b1N0cmluZygpLmluZGV4T2YoXCJrZXlsZW4sIGRpZ2VzdFwiKT09PS0xKXt0LnBia2RmMlN5bmM9cigyMTI3KTt0LnBia2RmMj1yKDk2MDEpfWVsc2V7dC5wYmtkZjJTeW5jPW5hdGl2ZVBCS0RGMlN5bmM7dC5wYmtkZjI9bmF0aXZlUEJLREYyfX0sOTYwMTpmdW5jdGlvbihlLHQscil7dmFyIGk9cig2OTExKS5CdWZmZXI7dmFyIG49cig1MzQ5KTt2YXIgYT1yKDcwMDcpO3ZhciBzPXIoMjEyNyk7dmFyIG89cig1NDA3KTt2YXIgaDt2YXIgdT1nbG9iYWwuY3J5cHRvJiZnbG9iYWwuY3J5cHRvLnN1YnRsZTt2YXIgZD17c2hhOlwiU0hBLTFcIixcInNoYS0xXCI6XCJTSEEtMVwiLHNoYTE6XCJTSEEtMVwiLHNoYTI1NjpcIlNIQS0yNTZcIixcInNoYS0yNTZcIjpcIlNIQS0yNTZcIixzaGEzODQ6XCJTSEEtMzg0XCIsXCJzaGEtMzg0XCI6XCJTSEEtMzg0XCIsXCJzaGEtNTEyXCI6XCJTSEEtNTEyXCIsc2hhNTEyOlwiU0hBLTUxMlwifTt2YXIgYz1bXTtmdW5jdGlvbiBjaGVja05hdGl2ZShlKXtpZihnbG9iYWwucHJvY2VzcyYmIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpfWlmKCF1fHwhdS5pbXBvcnRLZXl8fCF1LmRlcml2ZUJpdHMpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpfWlmKGNbZV0hPT11bmRlZmluZWQpe3JldHVybiBjW2VdfWg9aHx8aS5hbGxvYyg4KTt2YXIgdD1icm93c2VyUGJrZGYyKGgsaCwxMCwxMjgsZSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KSk7Y1tlXT10O3JldHVybiB0fWZ1bmN0aW9uIGJyb3dzZXJQYmtkZjIoZSx0LHIsbixhKXtyZXR1cm4gdS5pbXBvcnRLZXkoXCJyYXdcIixlLHtuYW1lOlwiUEJLREYyXCJ9LGZhbHNlLFtcImRlcml2ZUJpdHNcIl0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB1LmRlcml2ZUJpdHMoe25hbWU6XCJQQktERjJcIixzYWx0OnQsaXRlcmF0aW9uczpyLGhhc2g6e25hbWU6YX19LGUsbjw8Myl9KSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZnJvbShlKX0pKX1mdW5jdGlvbiByZXNvbHZlUHJvbWlzZShlLHQpe2UudGhlbigoZnVuY3Rpb24oZSl7cHJvY2Vzcy5uZXh0VGljaygoZnVuY3Rpb24oKXt0KG51bGwsZSl9KSl9KSwoZnVuY3Rpb24oZSl7cHJvY2Vzcy5uZXh0VGljaygoZnVuY3Rpb24oKXt0KGUpfSkpfSkpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscixpLGgsdSl7aWYodHlwZW9mIGg9PT1cImZ1bmN0aW9uXCIpe3U9aDtoPXVuZGVmaW5lZH1oPWh8fFwic2hhMVwiO3ZhciBjPWRbaC50b0xvd2VyQ2FzZSgpXTtpZighY3x8dHlwZW9mIGdsb2JhbC5Qcm9taXNlIT09XCJmdW5jdGlvblwiKXtyZXR1cm4gcHJvY2Vzcy5uZXh0VGljaygoZnVuY3Rpb24oKXt2YXIgbjt0cnl7bj1zKGUsdCxyLGksaCl9Y2F0Y2goZSl7cmV0dXJuIHUoZSl9dShudWxsLG4pfSkpfW4ocixpKTtlPW8oZSxhLFwiUGFzc3dvcmRcIik7dD1vKHQsYSxcIlNhbHRcIik7aWYodHlwZW9mIHUhPT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IEVycm9yKFwiTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyXCIpO3Jlc29sdmVQcm9taXNlKGNoZWNrTmF0aXZlKGMpLnRoZW4oKGZ1bmN0aW9uKG4pe2lmKG4pcmV0dXJuIGJyb3dzZXJQYmtkZjIoZSx0LHIsaSxjKTtyZXR1cm4gcyhlLHQscixpLGgpfSkpLHUpfX0sNzAwNzpmdW5jdGlvbihlKXt2YXIgdDtpZihwcm9jZXNzLmJyb3dzZXIpe3Q9XCJ1dGYtOFwifWVsc2UgaWYocHJvY2Vzcy52ZXJzaW9uKXt2YXIgcj1wYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoXCIuXCIpWzBdLnNsaWNlKDEpLDEwKTt0PXI+PTY/XCJ1dGYtOFwiOlwiYmluYXJ5XCJ9ZWxzZXt0PVwidXRmLThcIn1lLmV4cG9ydHM9dH0sNTM0OTpmdW5jdGlvbihlKXt2YXIgdD1NYXRoLnBvdygyLDMwKS0xO2UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyXCIpfWlmKGU8MCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkJhZCBpdGVyYXRpb25zXCIpfWlmKHR5cGVvZiByIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIktleSBsZW5ndGggbm90IGEgbnVtYmVyXCIpfWlmKHI8MHx8cj50fHxyIT09cil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkJhZCBrZXkgbGVuZ3RoXCIpfX19LDIxMjc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXttZDU6MTYsc2hhMToyMCxzaGEyMjQ6Mjgsc2hhMjU2OjMyLHNoYTM4NDo0OCxzaGE1MTI6NjQscm1kMTYwOjIwLHJpcGVtZDE2MDoyMH07dmFyIG49cig0ODczKTt2YXIgYT1yKDY5MTEpLkJ1ZmZlcjt2YXIgcz1yKDUzNDkpO3ZhciBvPXIoNzAwNyk7dmFyIGg9cig1NDA3KTtmdW5jdGlvbiBwYmtkZjIoZSx0LHIsdSxkKXtzKHIsdSk7ZT1oKGUsbyxcIlBhc3N3b3JkXCIpO3Q9aCh0LG8sXCJTYWx0XCIpO2Q9ZHx8XCJzaGExXCI7dmFyIGM9YS5hbGxvY1Vuc2FmZSh1KTt2YXIgbD1hLmFsbG9jVW5zYWZlKHQubGVuZ3RoKzQpO3QuY29weShsLDAsMCx0Lmxlbmd0aCk7dmFyIHA9MDt2YXIgdj1pW2RdO3ZhciBiPU1hdGguY2VpbCh1L3YpO2Zvcih2YXIgbT0xO208PWI7bSsrKXtsLndyaXRlVUludDMyQkUobSx0Lmxlbmd0aCk7dmFyIHk9bihkLGUpLnVwZGF0ZShsKS5kaWdlc3QoKTt2YXIgZz15O2Zvcih2YXIgXz0xO188cjtfKyspe2c9bihkLGUpLnVwZGF0ZShnKS5kaWdlc3QoKTtmb3IodmFyIHc9MDt3PHY7dysrKXlbd11ePWdbd119eS5jb3B5KGMscCk7cCs9dn1yZXR1cm4gY31lLmV4cG9ydHM9cGJrZGYyfSw1NDA3OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDY5MTEpLkJ1ZmZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2lmKGkuaXNCdWZmZXIoZSkpe3JldHVybiBlfWVsc2UgaWYodHlwZW9mIGU9PT1cInN0cmluZ1wiKXtyZXR1cm4gaS5mcm9tKGUsdCl9ZWxzZSBpZihBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpe3JldHVybiBpLmZyb20oZS5idWZmZXIpfWVsc2V7dGhyb3cgbmV3IFR5cGVFcnJvcihyK1wiIG11c3QgYmUgYSBzdHJpbmcsIGEgQnVmZmVyLCBhIHR5cGVkIGFycmF5IG9yIGEgRGF0YVZpZXdcIil9fX0sOTc4MzpmdW5jdGlvbihlLHQscil7dC5wdWJsaWNFbmNyeXB0PXIoMzk5NSk7dC5wcml2YXRlRGVjcnlwdD1yKDQzNjYpO3QucHJpdmF0ZUVuY3J5cHQ9ZnVuY3Rpb24gcHJpdmF0ZUVuY3J5cHQoZSxyKXtyZXR1cm4gdC5wdWJsaWNFbmNyeXB0KGUscix0cnVlKX07dC5wdWJsaWNEZWNyeXB0PWZ1bmN0aW9uIHB1YmxpY0RlY3J5cHQoZSxyKXtyZXR1cm4gdC5wcml2YXRlRGVjcnlwdChlLHIsdHJ1ZSl9fSw1NTIwOmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDk3MzkpO3ZhciBuPXIoNjkxMSkuQnVmZmVyO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPW4uYWxsb2MoMCk7dmFyIGE9MDt2YXIgczt3aGlsZShyLmxlbmd0aDx0KXtzPWkyb3BzKGErKyk7cj1uLmNvbmNhdChbcixpKFwic2hhMVwiKS51cGRhdGUoZSkudXBkYXRlKHMpLmRpZ2VzdCgpXSl9cmV0dXJuIHIuc2xpY2UoMCx0KX07ZnVuY3Rpb24gaTJvcHMoZSl7dmFyIHQ9bi5hbGxvY1Vuc2FmZSg0KTt0LndyaXRlVUludDMyQkUoZSwwKTtyZXR1cm4gdH19LDQzNjY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoOTkwMik7dmFyIG49cig1NTIwKTt2YXIgYT1yKDYzODYpO3ZhciBzPXIoNzExKTt2YXIgbz1yKDcxNjYpO3ZhciBoPXIoOTczOSk7dmFyIHU9cigxNjA3KTt2YXIgZD1yKDY5MTEpLkJ1ZmZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQoZSx0LHIpe3ZhciBuO2lmKGUucGFkZGluZyl7bj1lLnBhZGRpbmd9ZWxzZSBpZihyKXtuPTF9ZWxzZXtuPTR9dmFyIGE9aShlKTt2YXIgaD1hLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKHQubGVuZ3RoPmh8fG5ldyBzKHQpLmNtcChhLm1vZHVsdXMpPj0wKXt0aHJvdyBuZXcgRXJyb3IoXCJkZWNyeXB0aW9uIGVycm9yXCIpfXZhciBjO2lmKHIpe2M9dShuZXcgcyh0KSxhKX1lbHNle2M9byh0LGEpfXZhciBsPWQuYWxsb2MoaC1jLmxlbmd0aCk7Yz1kLmNvbmNhdChbbCxjXSxoKTtpZihuPT09NCl7cmV0dXJuIG9hZXAoYSxjKX1lbHNlIGlmKG49PT0xKXtyZXR1cm4gcGtjczEoYSxjLHIpfWVsc2UgaWYobj09PTMpe3JldHVybiBjfWVsc2V7dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBwYWRkaW5nXCIpfX07ZnVuY3Rpb24gb2FlcChlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7dmFyIGk9aChcInNoYTFcIikudXBkYXRlKGQuYWxsb2MoMCkpLmRpZ2VzdCgpO3ZhciBzPWkubGVuZ3RoO2lmKHRbMF0hPT0wKXt0aHJvdyBuZXcgRXJyb3IoXCJkZWNyeXB0aW9uIGVycm9yXCIpfXZhciBvPXQuc2xpY2UoMSxzKzEpO3ZhciB1PXQuc2xpY2UocysxKTt2YXIgYz1hKG8sbih1LHMpKTt2YXIgbD1hKHUsbihjLHItcy0xKSk7aWYoY29tcGFyZShpLGwuc2xpY2UoMCxzKSkpe3Rocm93IG5ldyBFcnJvcihcImRlY3J5cHRpb24gZXJyb3JcIil9dmFyIHA9czt3aGlsZShsW3BdPT09MCl7cCsrfWlmKGxbcCsrXSE9PTEpe3Rocm93IG5ldyBFcnJvcihcImRlY3J5cHRpb24gZXJyb3JcIil9cmV0dXJuIGwuc2xpY2UocCl9ZnVuY3Rpb24gcGtjczEoZSx0LHIpe3ZhciBpPXQuc2xpY2UoMCwyKTt2YXIgbj0yO3ZhciBhPTA7d2hpbGUodFtuKytdIT09MCl7aWYobj49dC5sZW5ndGgpe2ErKzticmVha319dmFyIHM9dC5zbGljZSgyLG4tMSk7aWYoaS50b1N0cmluZyhcImhleFwiKSE9PVwiMDAwMlwiJiYhcnx8aS50b1N0cmluZyhcImhleFwiKSE9PVwiMDAwMVwiJiZyKXthKyt9aWYocy5sZW5ndGg8OCl7YSsrfWlmKGEpe3Rocm93IG5ldyBFcnJvcihcImRlY3J5cHRpb24gZXJyb3JcIil9cmV0dXJuIHQuc2xpY2Uobil9ZnVuY3Rpb24gY29tcGFyZShlLHQpe2U9ZC5mcm9tKGUpO3Q9ZC5mcm9tKHQpO3ZhciByPTA7dmFyIGk9ZS5sZW5ndGg7aWYoZS5sZW5ndGghPT10Lmxlbmd0aCl7cisrO2k9TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpfXZhciBuPS0xO3doaWxlKCsrbjxpKXtyKz1lW25dXnRbbl19cmV0dXJuIHJ9fSwzOTk1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDk5MDIpO3ZhciBuPXIoNzIyMyk7dmFyIGE9cig5NzM5KTt2YXIgcz1yKDU1MjApO3ZhciBvPXIoNjM4Nik7dmFyIGg9cig3MTEpO3ZhciB1PXIoMTYwNyk7dmFyIGQ9cig3MTY2KTt2YXIgYz1yKDY5MTEpLkJ1ZmZlcjtlLmV4cG9ydHM9ZnVuY3Rpb24gcHVibGljRW5jcnlwdChlLHQscil7dmFyIG47aWYoZS5wYWRkaW5nKXtuPWUucGFkZGluZ31lbHNlIGlmKHIpe249MX1lbHNle249NH12YXIgYT1pKGUpO3ZhciBzO2lmKG49PT00KXtzPW9hZXAoYSx0KX1lbHNlIGlmKG49PT0xKXtzPXBrY3MxKGEsdCxyKX1lbHNlIGlmKG49PT0zKXtzPW5ldyBoKHQpO2lmKHMuY21wKGEubW9kdWx1cyk+PTApe3Rocm93IG5ldyBFcnJvcihcImRhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXNcIil9fWVsc2V7dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBwYWRkaW5nXCIpfWlmKHIpe3JldHVybiBkKHMsYSl9ZWxzZXtyZXR1cm4gdShzLGEpfX07ZnVuY3Rpb24gb2FlcChlLHQpe3ZhciByPWUubW9kdWx1cy5ieXRlTGVuZ3RoKCk7dmFyIGk9dC5sZW5ndGg7dmFyIHU9YShcInNoYTFcIikudXBkYXRlKGMuYWxsb2MoMCkpLmRpZ2VzdCgpO3ZhciBkPXUubGVuZ3RoO3ZhciBsPTIqZDtpZihpPnItbC0yKXt0aHJvdyBuZXcgRXJyb3IoXCJtZXNzYWdlIHRvbyBsb25nXCIpfXZhciBwPWMuYWxsb2Moci1pLWwtMik7dmFyIHY9ci1kLTE7dmFyIGI9bihkKTt2YXIgbT1vKGMuY29uY2F0KFt1LHAsYy5hbGxvYygxLDEpLHRdLHYpLHMoYix2KSk7dmFyIHk9byhiLHMobSxkKSk7cmV0dXJuIG5ldyBoKGMuY29uY2F0KFtjLmFsbG9jKDEpLHksbV0scikpfWZ1bmN0aW9uIHBrY3MxKGUsdCxyKXt2YXIgaT10Lmxlbmd0aDt2YXIgbj1lLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKGk+bi0xMSl7dGhyb3cgbmV3IEVycm9yKFwibWVzc2FnZSB0b28gbG9uZ1wiKX12YXIgYTtpZihyKXthPWMuYWxsb2Mobi1pLTMsMjU1KX1lbHNle2E9bm9uWmVybyhuLWktMyl9cmV0dXJuIG5ldyBoKGMuY29uY2F0KFtjLmZyb20oWzAscj8xOjJdKSxhLGMuYWxsb2MoMSksdF0sbikpfWZ1bmN0aW9uIG5vblplcm8oZSl7dmFyIHQ9Yy5hbGxvY1Vuc2FmZShlKTt2YXIgcj0wO3ZhciBpPW4oZSoyKTt2YXIgYT0wO3ZhciBzO3doaWxlKHI8ZSl7aWYoYT09PWkubGVuZ3RoKXtpPW4oZSoyKTthPTB9cz1pW2ErK107aWYocyl7dFtyKytdPXN9fXJldHVybiB0fX0sMTYwNzpmdW5jdGlvbihlLHQscil7dmFyIGk9cig3MTEpO3ZhciBuPXIoNjkxMSkuQnVmZmVyO2Z1bmN0aW9uIHdpdGhQdWJsaWMoZSx0KXtyZXR1cm4gbi5mcm9tKGUudG9SZWQoaS5tb250KHQubW9kdWx1cykpLnJlZFBvdyhuZXcgaSh0LnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpLnRvQXJyYXkoKSl9ZS5leHBvcnRzPXdpdGhQdWJsaWN9LDYzODY6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uIHhvcihlLHQpe3ZhciByPWUubGVuZ3RoO3ZhciBpPS0xO3doaWxlKCsraTxyKXtlW2ldXj10W2ldfXJldHVybiBlfX0sNzIyMzpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9NjU1MzY7dmFyIG49NDI5NDk2NzI5NTtmdW5jdGlvbiBvbGRCcm93c2VyKCl7dGhyb3cgbmV3IEVycm9yKFwiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExXCIpfXZhciBhPXIoNjkxMSkuQnVmZmVyO3ZhciBzPWdsb2JhbC5jcnlwdG98fGdsb2JhbC5tc0NyeXB0bztpZihzJiZzLmdldFJhbmRvbVZhbHVlcyl7ZS5leHBvcnRzPXJhbmRvbUJ5dGVzfWVsc2V7ZS5leHBvcnRzPW9sZEJyb3dzZXJ9ZnVuY3Rpb24gcmFuZG9tQnl0ZXMoZSx0KXtpZihlPm4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzXCIpO3ZhciByPWEuYWxsb2NVbnNhZmUoZSk7aWYoZT4wKXtpZihlPmkpe2Zvcih2YXIgbz0wO288ZTtvKz1pKXtzLmdldFJhbmRvbVZhbHVlcyhyLnNsaWNlKG8sbytpKSl9fWVsc2V7cy5nZXRSYW5kb21WYWx1ZXMocil9fWlmKHR5cGVvZiB0PT09XCJmdW5jdGlvblwiKXtyZXR1cm4gcHJvY2Vzcy5uZXh0VGljaygoZnVuY3Rpb24oKXt0KG51bGwscil9KSl9cmV0dXJuIHJ9fSw2NDQ1OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBvbGRCcm93c2VyKCl7dGhyb3cgbmV3IEVycm9yKFwic2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlclxcbnVzZSBjaHJvbWUsIEZpcmVGb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTFcIil9dmFyIGk9cig2OTExKTt2YXIgbj1yKDcyMjMpO3ZhciBhPWkuQnVmZmVyO3ZhciBzPWkua01heExlbmd0aDt2YXIgbz1nbG9iYWwuY3J5cHRvfHxnbG9iYWwubXNDcnlwdG87dmFyIGg9TWF0aC5wb3coMiwzMiktMTtmdW5jdGlvbiBhc3NlcnRPZmZzZXQoZSx0KXtpZih0eXBlb2YgZSE9PVwibnVtYmVyXCJ8fGUhPT1lKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwib2Zmc2V0IG11c3QgYmUgYSBudW1iZXJcIil9aWYoZT5ofHxlPDApe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMlwiKX1pZihlPnN8fGU+dCl7dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgb3V0IG9mIHJhbmdlXCIpfX1mdW5jdGlvbiBhc3NlcnRTaXplKGUsdCxyKXtpZih0eXBlb2YgZSE9PVwibnVtYmVyXCJ8fGUhPT1lKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwic2l6ZSBtdXN0IGJlIGEgbnVtYmVyXCIpfWlmKGU+aHx8ZTwwKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwic2l6ZSBtdXN0IGJlIGEgdWludDMyXCIpfWlmKGUrdD5yfHxlPnMpe3Rocm93IG5ldyBSYW5nZUVycm9yKFwiYnVmZmVyIHRvbyBzbWFsbFwiKX19aWYobyYmby5nZXRSYW5kb21WYWx1ZXN8fCFwcm9jZXNzLmJyb3dzZXIpe3QucmFuZG9tRmlsbD1yYW5kb21GaWxsO3QucmFuZG9tRmlsbFN5bmM9cmFuZG9tRmlsbFN5bmN9ZWxzZXt0LnJhbmRvbUZpbGw9b2xkQnJvd3Nlcjt0LnJhbmRvbUZpbGxTeW5jPW9sZEJyb3dzZXJ9ZnVuY3Rpb24gcmFuZG9tRmlsbChlLHQscixpKXtpZighYS5pc0J1ZmZlcihlKSYmIShlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZlwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpfWlmKHR5cGVvZiB0PT09XCJmdW5jdGlvblwiKXtpPXQ7dD0wO3I9ZS5sZW5ndGh9ZWxzZSBpZih0eXBlb2Ygcj09PVwiZnVuY3Rpb25cIil7aT1yO3I9ZS5sZW5ndGgtdH1lbHNlIGlmKHR5cGVvZiBpIT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNiXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyl9YXNzZXJ0T2Zmc2V0KHQsZS5sZW5ndGgpO2Fzc2VydFNpemUocix0LGUubGVuZ3RoKTtyZXR1cm4gYWN0dWFsRmlsbChlLHQscixpKX1mdW5jdGlvbiBhY3R1YWxGaWxsKGUsdCxyLGkpe2lmKHByb2Nlc3MuYnJvd3Nlcil7dmFyIGE9ZS5idWZmZXI7dmFyIHM9bmV3IFVpbnQ4QXJyYXkoYSx0LHIpO28uZ2V0UmFuZG9tVmFsdWVzKHMpO2lmKGkpe3Byb2Nlc3MubmV4dFRpY2soKGZ1bmN0aW9uKCl7aShudWxsLGUpfSkpO3JldHVybn1yZXR1cm4gZX1pZihpKXtuKHIsKGZ1bmN0aW9uKHIsbil7aWYocil7cmV0dXJuIGkocil9bi5jb3B5KGUsdCk7aShudWxsLGUpfSkpO3JldHVybn12YXIgaD1uKHIpO2guY29weShlLHQpO3JldHVybiBlfWZ1bmN0aW9uIHJhbmRvbUZpbGxTeW5jKGUsdCxyKXtpZih0eXBlb2YgdD09PVwidW5kZWZpbmVkXCIpe3Q9MH1pZighYS5pc0J1ZmZlcihlKSYmIShlIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZlwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpfWFzc2VydE9mZnNldCh0LGUubGVuZ3RoKTtpZihyPT09dW5kZWZpbmVkKXI9ZS5sZW5ndGgtdDthc3NlcnRTaXplKHIsdCxlLmxlbmd0aCk7cmV0dXJuIGFjdHVhbEZpbGwoZSx0LHIpfX0sNDY0NjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtjb25zdCB0PXt9O2Z1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShlLHIsaSl7aWYoIWkpe2k9RXJyb3J9ZnVuY3Rpb24gZ2V0TWVzc2FnZShlLHQsaSl7aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXtyZXR1cm4gcn1lbHNle3JldHVybiByKGUsdCxpKX19Y2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgaXtjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoZ2V0TWVzc2FnZShlLHQscikpfX1Ob2RlRXJyb3IucHJvdG90eXBlLm5hbWU9aS5uYW1lO05vZGVFcnJvci5wcm90b3R5cGUuY29kZT1lO3RbZV09Tm9kZUVycm9yfWZ1bmN0aW9uIG9uZU9mKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgcj1lLmxlbmd0aDtlPWUubWFwKChlPT5TdHJpbmcoZSkpKTtpZihyPjIpe3JldHVybmBvbmUgb2YgJHt0fSAke2Uuc2xpY2UoMCxyLTEpLmpvaW4oXCIsIFwiKX0sIG9yIGArZVtyLTFdfWVsc2UgaWYocj09PTIpe3JldHVybmBvbmUgb2YgJHt0fSAke2VbMF19IG9yICR7ZVsxXX1gfWVsc2V7cmV0dXJuYG9mICR7dH0gJHtlWzBdfWB9fWVsc2V7cmV0dXJuYG9mICR7dH0gJHtTdHJpbmcoZSl9YH19ZnVuY3Rpb24gc3RhcnRzV2l0aChlLHQscil7cmV0dXJuIGUuc3Vic3RyKCFyfHxyPDA/MDorcix0Lmxlbmd0aCk9PT10fWZ1bmN0aW9uIGVuZHNXaXRoKGUsdCxyKXtpZihyPT09dW5kZWZpbmVkfHxyPmUubGVuZ3RoKXtyPWUubGVuZ3RofXJldHVybiBlLnN1YnN0cmluZyhyLXQubGVuZ3RoLHIpPT09dH1mdW5jdGlvbiBpbmNsdWRlcyhlLHQscil7aWYodHlwZW9mIHIhPT1cIm51bWJlclwiKXtyPTB9aWYocit0Lmxlbmd0aD5lLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWVsc2V7cmV0dXJuIGUuaW5kZXhPZih0LHIpIT09LTF9fWNyZWF0ZUVycm9yVHlwZShcIkVSUl9JTlZBTElEX09QVF9WQUxVRVwiLChmdW5jdGlvbihlLHQpe3JldHVybidUaGUgdmFsdWUgXCInK3QrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicrZSsnXCInfSksVHlwZUVycm9yKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfSU5WQUxJRF9BUkdfVFlQRVwiLChmdW5jdGlvbihlLHQscil7bGV0IGk7aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiJiZzdGFydHNXaXRoKHQsXCJub3QgXCIpKXtpPVwibXVzdCBub3QgYmVcIjt0PXQucmVwbGFjZSgvXm5vdCAvLFwiXCIpfWVsc2V7aT1cIm11c3QgYmVcIn1sZXQgbjtpZihlbmRzV2l0aChlLFwiIGFyZ3VtZW50XCIpKXtuPWBUaGUgJHtlfSAke2l9ICR7b25lT2YodCxcInR5cGVcIil9YH1lbHNle2NvbnN0IHI9aW5jbHVkZXMoZSxcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIjtuPWBUaGUgXCIke2V9XCIgJHtyfSAke2l9ICR7b25lT2YodCxcInR5cGVcIil9YH1uKz1gLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHJ9YDtyZXR1cm4gbn0pLFR5cGVFcnJvcik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRlwiLFwic3RyZWFtLnB1c2goKSBhZnRlciBFT0ZcIik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URURcIiwoZnVuY3Rpb24oZSl7cmV0dXJuXCJUaGUgXCIrZStcIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkXCJ9KSk7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIixcIlByZW1hdHVyZSBjbG9zZVwiKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX0RFU1RST1lFRFwiLChmdW5jdGlvbihlKXtyZXR1cm5cIkNhbm5vdCBjYWxsIFwiK2UrXCIgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZFwifSkpO2NyZWF0ZUVycm9yVHlwZShcIkVSUl9NVUxUSVBMRV9DQUxMQkFDS1wiLFwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzXCIpO2NyZWF0ZUVycm9yVHlwZShcIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEVcIixcIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGVcIik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkRcIixcIndyaXRlIGFmdGVyIGVuZFwiKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX05VTExfVkFMVUVTXCIsXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiLFR5cGVFcnJvcik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1VOS05PV05fRU5DT0RJTkdcIiwoZnVuY3Rpb24oZSl7cmV0dXJuXCJVbmtub3duIGVuY29kaW5nOiBcIitlfSksVHlwZUVycm9yKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UXCIsXCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudFwiKTtlLmV4cG9ydHMucT10fSwyNDAzOmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpe3QucHVzaChyKX1yZXR1cm4gdH07ZS5leHBvcnRzPUR1cGxleDt2YXIgbj1yKDE3MDkpO3ZhciBhPXIoNzMzNyk7cigzNzgyKShEdXBsZXgsbik7e3ZhciBzPWkoYS5wcm90b3R5cGUpO2Zvcih2YXIgbz0wO288cy5sZW5ndGg7bysrKXt2YXIgaD1zW29dO2lmKCFEdXBsZXgucHJvdG90eXBlW2hdKUR1cGxleC5wcm90b3R5cGVbaF09YS5wcm90b3R5cGVbaF19fWZ1bmN0aW9uIER1cGxleChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKXJldHVybiBuZXcgRHVwbGV4KGUpO24uY2FsbCh0aGlzLGUpO2EuY2FsbCh0aGlzLGUpO3RoaXMuYWxsb3dIYWxmT3Blbj10cnVlO2lmKGUpe2lmKGUucmVhZGFibGU9PT1mYWxzZSl0aGlzLnJlYWRhYmxlPWZhbHNlO2lmKGUud3JpdGFibGU9PT1mYWxzZSl0aGlzLndyaXRhYmxlPWZhbHNlO2lmKGUuYWxsb3dIYWxmT3Blbj09PWZhbHNlKXt0aGlzLmFsbG93SGFsZk9wZW49ZmFsc2U7dGhpcy5vbmNlKFwiZW5kXCIsb25lbmQpfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsXCJ3cml0YWJsZUhpZ2hXYXRlck1hcmtcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSxcIndyaXRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLFwid3JpdGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pO2Z1bmN0aW9uIG9uZW5kKCl7aWYodGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZClyZXR1cm47cHJvY2Vzcy5uZXh0VGljayhvbkVuZE5ULHRoaXMpfWZ1bmN0aW9uIG9uRW5kTlQoZSl7ZS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlPT09dW5kZWZpbmVkfHx0aGlzLl93cml0YWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uIHNldChlKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlPT09dW5kZWZpbmVkfHx0aGlzLl93cml0YWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm59dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZTt0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1lfX0pfSw3ODg5OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9UGFzc1Rocm91Z2g7dmFyIGk9cigxMTcwKTtyKDM3ODIpKFBhc3NUaHJvdWdoLGkpO2Z1bmN0aW9uIFBhc3NUaHJvdWdoKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSlyZXR1cm4gbmV3IFBhc3NUaHJvdWdoKGUpO2kuY2FsbCh0aGlzLGUpfVBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyKXtyKG51bGwsZSl9fSwxNzA5OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9UmVhZGFibGU7dmFyIGk7UmVhZGFibGUuUmVhZGFibGVTdGF0ZT1SZWFkYWJsZVN0YXRlO3ZhciBuPXIoMjM2MSkuRXZlbnRFbWl0dGVyO3ZhciBhPWZ1bmN0aW9uIEVFbGlzdGVuZXJDb3VudChlLHQpe3JldHVybiBlLmxpc3RlbmVycyh0KS5sZW5ndGh9O3ZhciBzPXIoNDY3OCk7dmFyIG89cig0MzAwKS5CdWZmZXI7dmFyIGg9Z2xvYmFsLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGUpe3JldHVybiBvLmZyb20oZSl9ZnVuY3Rpb24gX2lzVWludDhBcnJheShlKXtyZXR1cm4gby5pc0J1ZmZlcihlKXx8ZSBpbnN0YW5jZW9mIGh9dmFyIHU9cigzODM3KTt2YXIgZDtpZih1JiZ1LmRlYnVnbG9nKXtkPXUuZGVidWdsb2coXCJzdHJlYW1cIil9ZWxzZXtkPWZ1bmN0aW9uIGRlYnVnKCl7fX12YXIgYz1yKDQzNzkpO3ZhciBsPXIoNzAyNSk7dmFyIHA9cig2Nzc2KSx2PXAuZ2V0SGlnaFdhdGVyTWFyazt2YXIgYj1yKDQ2NDYpLnEsbT1iLkVSUl9JTlZBTElEX0FSR19UWVBFLHk9Yi5FUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GLGc9Yi5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxfPWIuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDt2YXIgdzt2YXIgTTt2YXIgQjtyKDM3ODIpKFJlYWRhYmxlLHMpO3ZhciBFPWwuZXJyb3JPckRlc3Ryb3k7dmFyIGs9W1wiZXJyb3JcIixcImNsb3NlXCIsXCJkZXN0cm95XCIsXCJwYXVzZVwiLFwicmVzdW1lXCJdO2Z1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlLHQscil7aWYodHlwZW9mIGUucHJlcGVuZExpc3RlbmVyPT09XCJmdW5jdGlvblwiKXJldHVybiBlLnByZXBlbmRMaXN0ZW5lcih0LHIpO2lmKCFlLl9ldmVudHN8fCFlLl9ldmVudHNbdF0pZS5vbih0LHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlLl9ldmVudHNbdF0pKWUuX2V2ZW50c1t0XS51bnNoaWZ0KHIpO2Vsc2UgZS5fZXZlbnRzW3RdPVtyLGUuX2V2ZW50c1t0XV19ZnVuY3Rpb24gUmVhZGFibGVTdGF0ZShlLHQsbil7aT1pfHxyKDI0MDMpO2U9ZXx8e307aWYodHlwZW9mIG4hPT1cImJvb2xlYW5cIiluPXQgaW5zdGFuY2VvZiBpO3RoaXMub2JqZWN0TW9kZT0hIWUub2JqZWN0TW9kZTtpZihuKXRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhZS5yZWFkYWJsZU9iamVjdE1vZGU7dGhpcy5oaWdoV2F0ZXJNYXJrPXYodGhpcyxlLFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIsbik7dGhpcy5idWZmZXI9bmV3IGM7dGhpcy5sZW5ndGg9MDt0aGlzLnBpcGVzPW51bGw7dGhpcy5waXBlc0NvdW50PTA7dGhpcy5mbG93aW5nPW51bGw7dGhpcy5lbmRlZD1mYWxzZTt0aGlzLmVuZEVtaXR0ZWQ9ZmFsc2U7dGhpcy5yZWFkaW5nPWZhbHNlO3RoaXMuc3luYz10cnVlO3RoaXMubmVlZFJlYWRhYmxlPWZhbHNlO3RoaXMuZW1pdHRlZFJlYWRhYmxlPWZhbHNlO3RoaXMucmVhZGFibGVMaXN0ZW5pbmc9ZmFsc2U7dGhpcy5yZXN1bWVTY2hlZHVsZWQ9ZmFsc2U7dGhpcy5wYXVzZWQ9dHJ1ZTt0aGlzLmVtaXRDbG9zZT1lLmVtaXRDbG9zZSE9PWZhbHNlO3RoaXMuYXV0b0Rlc3Ryb3k9ISFlLmF1dG9EZXN0cm95O3RoaXMuZGVzdHJveWVkPWZhbHNlO3RoaXMuZGVmYXVsdEVuY29kaW5nPWUuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIjt0aGlzLmF3YWl0RHJhaW49MDt0aGlzLnJlYWRpbmdNb3JlPWZhbHNlO3RoaXMuZGVjb2Rlcj1udWxsO3RoaXMuZW5jb2Rpbmc9bnVsbDtpZihlLmVuY29kaW5nKXtpZighdyl3PXIoMzcwNCkuczt0aGlzLmRlY29kZXI9bmV3IHcoZS5lbmNvZGluZyk7dGhpcy5lbmNvZGluZz1lLmVuY29kaW5nfX1mdW5jdGlvbiBSZWFkYWJsZShlKXtpPWl8fHIoMjQwMyk7aWYoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKXJldHVybiBuZXcgUmVhZGFibGUoZSk7dmFyIHQ9dGhpcyBpbnN0YW5jZW9mIGk7dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgUmVhZGFibGVTdGF0ZShlLHRoaXMsdCk7dGhpcy5yZWFkYWJsZT10cnVlO2lmKGUpe2lmKHR5cGVvZiBlLnJlYWQ9PT1cImZ1bmN0aW9uXCIpdGhpcy5fcmVhZD1lLnJlYWQ7aWYodHlwZW9mIGUuZGVzdHJveT09PVwiZnVuY3Rpb25cIil0aGlzLl9kZXN0cm95PWUuZGVzdHJveX1zLmNhbGwodGhpcyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe2lmKCF0aGlzLl9yZWFkYWJsZVN0YXRlKXtyZXR1cm59dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZX19KTtSZWFkYWJsZS5wcm90b3R5cGUuZGVzdHJveT1sLmRlc3Ryb3k7UmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3k9bC51bmRlc3Ryb3k7UmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX07UmVhZGFibGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9yZWFkYWJsZVN0YXRlO3ZhciBpO2lmKCFyLm9iamVjdE1vZGUpe2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7dD10fHxyLmRlZmF1bHRFbmNvZGluZztpZih0IT09ci5lbmNvZGluZyl7ZT1vLmZyb20oZSx0KTt0PVwiXCJ9aT10cnVlfX1lbHNle2k9dHJ1ZX1yZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLGUsdCxmYWxzZSxpKX07UmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcyxlLG51bGwsdHJ1ZSxmYWxzZSl9O2Z1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoZSx0LHIsaSxuKXtkKFwicmVhZGFibGVBZGRDaHVua1wiLHQpO3ZhciBhPWUuX3JlYWRhYmxlU3RhdGU7aWYodD09PW51bGwpe2EucmVhZGluZz1mYWxzZTtvbkVvZkNodW5rKGUsYSl9ZWxzZXt2YXIgcztpZighbilzPWNodW5rSW52YWxpZChhLHQpO2lmKHMpe0UoZSxzKX1lbHNlIGlmKGEub2JqZWN0TW9kZXx8dCYmdC5sZW5ndGg+MCl7aWYodHlwZW9mIHQhPT1cInN0cmluZ1wiJiYhYS5vYmplY3RNb2RlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkhPT1vLnByb3RvdHlwZSl7dD1fdWludDhBcnJheVRvQnVmZmVyKHQpfWlmKGkpe2lmKGEuZW5kRW1pdHRlZClFKGUsbmV3IF8pO2Vsc2UgYWRkQ2h1bmsoZSxhLHQsdHJ1ZSl9ZWxzZSBpZihhLmVuZGVkKXtFKGUsbmV3IHkpfWVsc2UgaWYoYS5kZXN0cm95ZWQpe3JldHVybiBmYWxzZX1lbHNle2EucmVhZGluZz1mYWxzZTtpZihhLmRlY29kZXImJiFyKXt0PWEuZGVjb2Rlci53cml0ZSh0KTtpZihhLm9iamVjdE1vZGV8fHQubGVuZ3RoIT09MClhZGRDaHVuayhlLGEsdCxmYWxzZSk7ZWxzZSBtYXliZVJlYWRNb3JlKGUsYSl9ZWxzZXthZGRDaHVuayhlLGEsdCxmYWxzZSl9fX1lbHNlIGlmKCFpKXthLnJlYWRpbmc9ZmFsc2U7bWF5YmVSZWFkTW9yZShlLGEpfX1yZXR1cm4hYS5lbmRlZCYmKGEubGVuZ3RoPGEuaGlnaFdhdGVyTWFya3x8YS5sZW5ndGg9PT0wKX1mdW5jdGlvbiBhZGRDaHVuayhlLHQscixpKXtpZih0LmZsb3dpbmcmJnQubGVuZ3RoPT09MCYmIXQuc3luYyl7dC5hd2FpdERyYWluPTA7ZS5lbWl0KFwiZGF0YVwiLHIpfWVsc2V7dC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOnIubGVuZ3RoO2lmKGkpdC5idWZmZXIudW5zaGlmdChyKTtlbHNlIHQuYnVmZmVyLnB1c2gocik7aWYodC5uZWVkUmVhZGFibGUpZW1pdFJlYWRhYmxlKGUpfW1heWJlUmVhZE1vcmUoZSx0KX1mdW5jdGlvbiBjaHVua0ludmFsaWQoZSx0KXt2YXIgcjtpZighX2lzVWludDhBcnJheSh0KSYmdHlwZW9mIHQhPT1cInN0cmluZ1wiJiZ0IT09dW5kZWZpbmVkJiYhZS5vYmplY3RNb2RlKXtyPW5ldyBtKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSx0KX1yZXR1cm4gcn1SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPT09ZmFsc2V9O1JlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtpZighdyl3PXIoMzcwNCkuczt2YXIgdD1uZXcgdyhlKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9dDt0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZzt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkO3ZhciBuPVwiXCI7d2hpbGUoaSE9PW51bGwpe24rPXQud3JpdGUoaS5kYXRhKTtpPWkubmV4dH10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5jbGVhcigpO2lmKG4hPT1cIlwiKXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2gobik7dGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9bi5sZW5ndGg7cmV0dXJuIHRoaXN9O3ZhciBBPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsoZSl7aWYoZT49QSl7ZT1BfWVsc2V7ZS0tO2V8PWU+Pj4xO2V8PWU+Pj4yO2V8PWU+Pj40O2V8PWU+Pj44O2V8PWU+Pj4xNjtlKyt9cmV0dXJuIGV9ZnVuY3Rpb24gaG93TXVjaFRvUmVhZChlLHQpe2lmKGU8PTB8fHQubGVuZ3RoPT09MCYmdC5lbmRlZClyZXR1cm4gMDtpZih0Lm9iamVjdE1vZGUpcmV0dXJuIDE7aWYoZSE9PWUpe2lmKHQuZmxvd2luZyYmdC5sZW5ndGgpcmV0dXJuIHQuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gdC5sZW5ndGh9aWYoZT50LmhpZ2hXYXRlck1hcmspdC5oaWdoV2F0ZXJNYXJrPWNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKGUpO2lmKGU8PXQubGVuZ3RoKXJldHVybiBlO2lmKCF0LmVuZGVkKXt0Lm5lZWRSZWFkYWJsZT10cnVlO3JldHVybiAwfXJldHVybiB0Lmxlbmd0aH1SZWFkYWJsZS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlKXtkKFwicmVhZFwiLGUpO2U9cGFyc2VJbnQoZSwxMCk7dmFyIHQ9dGhpcy5fcmVhZGFibGVTdGF0ZTt2YXIgcj1lO2lmKGUhPT0wKXQuZW1pdHRlZFJlYWRhYmxlPWZhbHNlO2lmKGU9PT0wJiZ0Lm5lZWRSZWFkYWJsZSYmKCh0LmhpZ2hXYXRlck1hcmshPT0wP3QubGVuZ3RoPj10LmhpZ2hXYXRlck1hcms6dC5sZW5ndGg+MCl8fHQuZW5kZWQpKXtkKFwicmVhZDogZW1pdFJlYWRhYmxlXCIsdC5sZW5ndGgsdC5lbmRlZCk7aWYodC5sZW5ndGg9PT0wJiZ0LmVuZGVkKWVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO3JldHVybiBudWxsfWU9aG93TXVjaFRvUmVhZChlLHQpO2lmKGU9PT0wJiZ0LmVuZGVkKXtpZih0Lmxlbmd0aD09PTApZW5kUmVhZGFibGUodGhpcyk7cmV0dXJuIG51bGx9dmFyIGk9dC5uZWVkUmVhZGFibGU7ZChcIm5lZWQgcmVhZGFibGVcIixpKTtpZih0Lmxlbmd0aD09PTB8fHQubGVuZ3RoLWU8dC5oaWdoV2F0ZXJNYXJrKXtpPXRydWU7ZChcImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrXCIsaSl9aWYodC5lbmRlZHx8dC5yZWFkaW5nKXtpPWZhbHNlO2QoXCJyZWFkaW5nIG9yIGVuZGVkXCIsaSl9ZWxzZSBpZihpKXtkKFwiZG8gcmVhZFwiKTt0LnJlYWRpbmc9dHJ1ZTt0LnN5bmM9dHJ1ZTtpZih0Lmxlbmd0aD09PTApdC5uZWVkUmVhZGFibGU9dHJ1ZTt0aGlzLl9yZWFkKHQuaGlnaFdhdGVyTWFyayk7dC5zeW5jPWZhbHNlO2lmKCF0LnJlYWRpbmcpZT1ob3dNdWNoVG9SZWFkKHIsdCl9dmFyIG47aWYoZT4wKW49ZnJvbUxpc3QoZSx0KTtlbHNlIG49bnVsbDtpZihuPT09bnVsbCl7dC5uZWVkUmVhZGFibGU9dC5sZW5ndGg8PXQuaGlnaFdhdGVyTWFyaztlPTB9ZWxzZXt0Lmxlbmd0aC09ZTt0LmF3YWl0RHJhaW49MH1pZih0Lmxlbmd0aD09PTApe2lmKCF0LmVuZGVkKXQubmVlZFJlYWRhYmxlPXRydWU7aWYociE9PWUmJnQuZW5kZWQpZW5kUmVhZGFibGUodGhpcyl9aWYobiE9PW51bGwpdGhpcy5lbWl0KFwiZGF0YVwiLG4pO3JldHVybiBufTtmdW5jdGlvbiBvbkVvZkNodW5rKGUsdCl7ZChcIm9uRW9mQ2h1bmtcIik7aWYodC5lbmRlZClyZXR1cm47aWYodC5kZWNvZGVyKXt2YXIgcj10LmRlY29kZXIuZW5kKCk7aWYociYmci5sZW5ndGgpe3QuYnVmZmVyLnB1c2gocik7dC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOnIubGVuZ3RofX10LmVuZGVkPXRydWU7aWYodC5zeW5jKXtlbWl0UmVhZGFibGUoZSl9ZWxzZXt0Lm5lZWRSZWFkYWJsZT1mYWxzZTtpZighdC5lbWl0dGVkUmVhZGFibGUpe3QuZW1pdHRlZFJlYWRhYmxlPXRydWU7ZW1pdFJlYWRhYmxlXyhlKX19fWZ1bmN0aW9uIGVtaXRSZWFkYWJsZShlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2QoXCJlbWl0UmVhZGFibGVcIix0Lm5lZWRSZWFkYWJsZSx0LmVtaXR0ZWRSZWFkYWJsZSk7dC5uZWVkUmVhZGFibGU9ZmFsc2U7aWYoIXQuZW1pdHRlZFJlYWRhYmxlKXtkKFwiZW1pdFJlYWRhYmxlXCIsdC5mbG93aW5nKTt0LmVtaXR0ZWRSZWFkYWJsZT10cnVlO3Byb2Nlc3MubmV4dFRpY2soZW1pdFJlYWRhYmxlXyxlKX19ZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2QoXCJlbWl0UmVhZGFibGVfXCIsdC5kZXN0cm95ZWQsdC5sZW5ndGgsdC5lbmRlZCk7aWYoIXQuZGVzdHJveWVkJiYodC5sZW5ndGh8fHQuZW5kZWQpKXtlLmVtaXQoXCJyZWFkYWJsZVwiKTt0LmVtaXR0ZWRSZWFkYWJsZT1mYWxzZX10Lm5lZWRSZWFkYWJsZT0hdC5mbG93aW5nJiYhdC5lbmRlZCYmdC5sZW5ndGg8PXQuaGlnaFdhdGVyTWFyaztmbG93KGUpfWZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoZSx0KXtpZighdC5yZWFkaW5nTW9yZSl7dC5yZWFkaW5nTW9yZT10cnVlO3Byb2Nlc3MubmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sZSx0KX19ZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oZSx0KXt3aGlsZSghdC5yZWFkaW5nJiYhdC5lbmRlZCYmKHQubGVuZ3RoPHQuaGlnaFdhdGVyTWFya3x8dC5mbG93aW5nJiZ0Lmxlbmd0aD09PTApKXt2YXIgcj10Lmxlbmd0aDtkKFwibWF5YmVSZWFkTW9yZSByZWFkIDBcIik7ZS5yZWFkKDApO2lmKHI9PT10Lmxlbmd0aClicmVha310LnJlYWRpbmdNb3JlPWZhbHNlfVJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihlKXtFKHRoaXMsbmV3IGcoXCJfcmVhZCgpXCIpKX07UmVhZGFibGUucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKGkucGlwZXNDb3VudCl7Y2FzZSAwOmkucGlwZXM9ZTticmVhaztjYXNlIDE6aS5waXBlcz1baS5waXBlcyxlXTticmVhaztkZWZhdWx0OmkucGlwZXMucHVzaChlKTticmVha31pLnBpcGVzQ291bnQrPTE7ZChcInBpcGUgY291bnQ9JWQgb3B0cz0lalwiLGkucGlwZXNDb3VudCx0KTt2YXIgbj0oIXR8fHQuZW5kIT09ZmFsc2UpJiZlIT09cHJvY2Vzcy5zdGRvdXQmJmUhPT1wcm9jZXNzLnN0ZGVycjt2YXIgcz1uP29uZW5kOnVucGlwZTtpZihpLmVuZEVtaXR0ZWQpcHJvY2Vzcy5uZXh0VGljayhzKTtlbHNlIHIub25jZShcImVuZFwiLHMpO2Uub24oXCJ1bnBpcGVcIixvbnVucGlwZSk7ZnVuY3Rpb24gb251bnBpcGUoZSx0KXtkKFwib251bnBpcGVcIik7aWYoZT09PXIpe2lmKHQmJnQuaGFzVW5waXBlZD09PWZhbHNlKXt0Lmhhc1VucGlwZWQ9dHJ1ZTtjbGVhbnVwKCl9fX1mdW5jdGlvbiBvbmVuZCgpe2QoXCJvbmVuZFwiKTtlLmVuZCgpfXZhciBvPXBpcGVPbkRyYWluKHIpO2Uub24oXCJkcmFpblwiLG8pO3ZhciBoPWZhbHNlO2Z1bmN0aW9uIGNsZWFudXAoKXtkKFwiY2xlYW51cFwiKTtlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixvbmNsb3NlKTtlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsb25maW5pc2gpO2UucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLG8pO2UucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLG9uZXJyb3IpO2UucmVtb3ZlTGlzdGVuZXIoXCJ1bnBpcGVcIixvbnVucGlwZSk7ci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLG9uZW5kKTtyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdW5waXBlKTtyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLG9uZGF0YSk7aD10cnVlO2lmKGkuYXdhaXREcmFpbiYmKCFlLl93cml0YWJsZVN0YXRlfHxlLl93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpbygpfXIub24oXCJkYXRhXCIsb25kYXRhKTtmdW5jdGlvbiBvbmRhdGEodCl7ZChcIm9uZGF0YVwiKTt2YXIgbj1lLndyaXRlKHQpO2QoXCJkZXN0LndyaXRlXCIsbik7aWYobj09PWZhbHNlKXtpZigoaS5waXBlc0NvdW50PT09MSYmaS5waXBlcz09PWV8fGkucGlwZXNDb3VudD4xJiZpbmRleE9mKGkucGlwZXMsZSkhPT0tMSkmJiFoKXtkKFwiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlXCIsaS5hd2FpdERyYWluKTtpLmF3YWl0RHJhaW4rK31yLnBhdXNlKCl9fWZ1bmN0aW9uIG9uZXJyb3IodCl7ZChcIm9uZXJyb3JcIix0KTt1bnBpcGUoKTtlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixvbmVycm9yKTtpZihhKGUsXCJlcnJvclwiKT09PTApRShlLHQpfXByZXBlbmRMaXN0ZW5lcihlLFwiZXJyb3JcIixvbmVycm9yKTtmdW5jdGlvbiBvbmNsb3NlKCl7ZS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLG9uZmluaXNoKTt1bnBpcGUoKX1lLm9uY2UoXCJjbG9zZVwiLG9uY2xvc2UpO2Z1bmN0aW9uIG9uZmluaXNoKCl7ZChcIm9uZmluaXNoXCIpO2UucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLG9uY2xvc2UpO3VucGlwZSgpfWUub25jZShcImZpbmlzaFwiLG9uZmluaXNoKTtmdW5jdGlvbiB1bnBpcGUoKXtkKFwidW5waXBlXCIpO3IudW5waXBlKGUpfWUuZW1pdChcInBpcGVcIixyKTtpZighaS5mbG93aW5nKXtkKFwicGlwZSByZXN1bWVcIik7ci5yZXN1bWUoKX1yZXR1cm4gZX07ZnVuY3Rpb24gcGlwZU9uRHJhaW4oZSl7cmV0dXJuIGZ1bmN0aW9uIHBpcGVPbkRyYWluRnVuY3Rpb25SZXN1bHQoKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2QoXCJwaXBlT25EcmFpblwiLHQuYXdhaXREcmFpbik7aWYodC5hd2FpdERyYWluKXQuYXdhaXREcmFpbi0tO2lmKHQuYXdhaXREcmFpbj09PTAmJmEoZSxcImRhdGFcIikpe3QuZmxvd2luZz10cnVlO2Zsb3coZSl9fX1SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGU7dmFyIHI9e2hhc1VucGlwZWQ6ZmFsc2V9O2lmKHQucGlwZXNDb3VudD09PTApcmV0dXJuIHRoaXM7aWYodC5waXBlc0NvdW50PT09MSl7aWYoZSYmZSE9PXQucGlwZXMpcmV0dXJuIHRoaXM7aWYoIWUpZT10LnBpcGVzO3QucGlwZXM9bnVsbDt0LnBpcGVzQ291bnQ9MDt0LmZsb3dpbmc9ZmFsc2U7aWYoZSllLmVtaXQoXCJ1bnBpcGVcIix0aGlzLHIpO3JldHVybiB0aGlzfWlmKCFlKXt2YXIgaT10LnBpcGVzO3ZhciBuPXQucGlwZXNDb3VudDt0LnBpcGVzPW51bGw7dC5waXBlc0NvdW50PTA7dC5mbG93aW5nPWZhbHNlO2Zvcih2YXIgYT0wO2E8bjthKyspe2lbYV0uZW1pdChcInVucGlwZVwiLHRoaXMse2hhc1VucGlwZWQ6ZmFsc2V9KX1yZXR1cm4gdGhpc312YXIgcz1pbmRleE9mKHQucGlwZXMsZSk7aWYocz09PS0xKXJldHVybiB0aGlzO3QucGlwZXMuc3BsaWNlKHMsMSk7dC5waXBlc0NvdW50LT0xO2lmKHQucGlwZXNDb3VudD09PTEpdC5waXBlcz10LnBpcGVzWzBdO2UuZW1pdChcInVucGlwZVwiLHRoaXMscik7cmV0dXJuIHRoaXN9O1JlYWRhYmxlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3ZhciByPXMucHJvdG90eXBlLm9uLmNhbGwodGhpcyxlLHQpO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7aWYoZT09PVwiZGF0YVwiKXtpLnJlYWRhYmxlTGlzdGVuaW5nPXRoaXMubGlzdGVuZXJDb3VudChcInJlYWRhYmxlXCIpPjA7aWYoaS5mbG93aW5nIT09ZmFsc2UpdGhpcy5yZXN1bWUoKX1lbHNlIGlmKGU9PT1cInJlYWRhYmxlXCIpe2lmKCFpLmVuZEVtaXR0ZWQmJiFpLnJlYWRhYmxlTGlzdGVuaW5nKXtpLnJlYWRhYmxlTGlzdGVuaW5nPWkubmVlZFJlYWRhYmxlPXRydWU7aS5mbG93aW5nPWZhbHNlO2kuZW1pdHRlZFJlYWRhYmxlPWZhbHNlO2QoXCJvbiByZWFkYWJsZVwiLGkubGVuZ3RoLGkucmVhZGluZyk7aWYoaS5sZW5ndGgpe2VtaXRSZWFkYWJsZSh0aGlzKX1lbHNlIGlmKCFpLnJlYWRpbmcpe3Byb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljayx0aGlzKX19fXJldHVybiByfTtSZWFkYWJsZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9UmVhZGFibGUucHJvdG90eXBlLm9uO1JlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByPXMucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxlLHQpO2lmKGU9PT1cInJlYWRhYmxlXCIpe3Byb2Nlc3MubmV4dFRpY2sodXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcsdGhpcyl9cmV0dXJuIHJ9O1JlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQ9cy5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihlPT09XCJyZWFkYWJsZVwifHxlPT09dW5kZWZpbmVkKXtwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLHRoaXMpfXJldHVybiB0fTtmdW5jdGlvbiB1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyhlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO3QucmVhZGFibGVMaXN0ZW5pbmc9ZS5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MDtpZih0LnJlc3VtZVNjaGVkdWxlZCYmIXQucGF1c2VkKXt0LmZsb3dpbmc9dHJ1ZX1lbHNlIGlmKGUubGlzdGVuZXJDb3VudChcImRhdGFcIik+MCl7ZS5yZXN1bWUoKX19ZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhlKXtkKFwicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwXCIpO2UucmVhZCgwKX1SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZighZS5mbG93aW5nKXtkKFwicmVzdW1lXCIpO2UuZmxvd2luZz0hZS5yZWFkYWJsZUxpc3RlbmluZztyZXN1bWUodGhpcyxlKX1lLnBhdXNlZD1mYWxzZTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gcmVzdW1lKGUsdCl7aWYoIXQucmVzdW1lU2NoZWR1bGVkKXt0LnJlc3VtZVNjaGVkdWxlZD10cnVlO3Byb2Nlc3MubmV4dFRpY2socmVzdW1lXyxlLHQpfX1mdW5jdGlvbiByZXN1bWVfKGUsdCl7ZChcInJlc3VtZVwiLHQucmVhZGluZyk7aWYoIXQucmVhZGluZyl7ZS5yZWFkKDApfXQucmVzdW1lU2NoZWR1bGVkPWZhbHNlO2UuZW1pdChcInJlc3VtZVwiKTtmbG93KGUpO2lmKHQuZmxvd2luZyYmIXQucmVhZGluZyllLnJlYWQoMCl9UmVhZGFibGUucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7ZChcImNhbGwgcGF1c2UgZmxvd2luZz0lalwiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7aWYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nIT09ZmFsc2Upe2QoXCJwYXVzZVwiKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ZmFsc2U7dGhpcy5lbWl0KFwicGF1c2VcIil9dGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9dHJ1ZTtyZXR1cm4gdGhpc307ZnVuY3Rpb24gZmxvdyhlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO2QoXCJmbG93XCIsdC5mbG93aW5nKTt3aGlsZSh0LmZsb3dpbmcmJmUucmVhZCgpIT09bnVsbCl7fX1SZWFkYWJsZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3ZhciByPXRoaXMuX3JlYWRhYmxlU3RhdGU7dmFyIGk9ZmFsc2U7ZS5vbihcImVuZFwiLChmdW5jdGlvbigpe2QoXCJ3cmFwcGVkIGVuZFwiKTtpZihyLmRlY29kZXImJiFyLmVuZGVkKXt2YXIgZT1yLmRlY29kZXIuZW5kKCk7aWYoZSYmZS5sZW5ndGgpdC5wdXNoKGUpfXQucHVzaChudWxsKX0pKTtlLm9uKFwiZGF0YVwiLChmdW5jdGlvbihuKXtkKFwid3JhcHBlZCBkYXRhXCIpO2lmKHIuZGVjb2RlciluPXIuZGVjb2Rlci53cml0ZShuKTtpZihyLm9iamVjdE1vZGUmJihuPT09bnVsbHx8bj09PXVuZGVmaW5lZCkpcmV0dXJuO2Vsc2UgaWYoIXIub2JqZWN0TW9kZSYmKCFufHwhbi5sZW5ndGgpKXJldHVybjt2YXIgYT10LnB1c2gobik7aWYoIWEpe2k9dHJ1ZTtlLnBhdXNlKCl9fSkpO2Zvcih2YXIgbiBpbiBlKXtpZih0aGlzW25dPT09dW5kZWZpbmVkJiZ0eXBlb2YgZVtuXT09PVwiZnVuY3Rpb25cIil7dGhpc1tuXT1mdW5jdGlvbiBtZXRob2RXcmFwKHQpe3JldHVybiBmdW5jdGlvbiBtZXRob2RXcmFwUmV0dXJuRnVuY3Rpb24oKXtyZXR1cm4gZVt0XS5hcHBseShlLGFyZ3VtZW50cyl9fShuKX19Zm9yKHZhciBhPTA7YTxrLmxlbmd0aDthKyspe2Uub24oa1thXSx0aGlzLmVtaXQuYmluZCh0aGlzLGtbYV0pKX10aGlzLl9yZWFkPWZ1bmN0aW9uKHQpe2QoXCJ3cmFwcGVkIF9yZWFkXCIsdCk7aWYoaSl7aT1mYWxzZTtlLnJlc3VtZSgpfX07cmV0dXJuIHRoaXN9O2lmKHR5cGVvZiBTeW1ib2w9PT1cImZ1bmN0aW9uXCIpe1JlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtpZihNPT09dW5kZWZpbmVkKXtNPXIoNjg3MSl9cmV0dXJuIE0odGhpcyl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsXCJyZWFkYWJsZUhpZ2hXYXRlck1hcmtcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLFwicmVhZGFibGVCdWZmZXJcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsXCJyZWFkYWJsZUZsb3dpbmdcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sc2V0OmZ1bmN0aW9uIHNldChlKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlKXt0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ZX19fSk7UmVhZGFibGUuX2Zyb21MaXN0PWZyb21MaXN0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsXCJyZWFkYWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSk7ZnVuY3Rpb24gZnJvbUxpc3QoZSx0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuIG51bGw7dmFyIHI7aWYodC5vYmplY3RNb2RlKXI9dC5idWZmZXIuc2hpZnQoKTtlbHNlIGlmKCFlfHxlPj10Lmxlbmd0aCl7aWYodC5kZWNvZGVyKXI9dC5idWZmZXIuam9pbihcIlwiKTtlbHNlIGlmKHQuYnVmZmVyLmxlbmd0aD09PTEpcj10LmJ1ZmZlci5maXJzdCgpO2Vsc2Ugcj10LmJ1ZmZlci5jb25jYXQodC5sZW5ndGgpO3QuYnVmZmVyLmNsZWFyKCl9ZWxzZXtyPXQuYnVmZmVyLmNvbnN1bWUoZSx0LmRlY29kZXIpfXJldHVybiByfWZ1bmN0aW9uIGVuZFJlYWRhYmxlKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7ZChcImVuZFJlYWRhYmxlXCIsdC5lbmRFbWl0dGVkKTtpZighdC5lbmRFbWl0dGVkKXt0LmVuZGVkPXRydWU7cHJvY2Vzcy5uZXh0VGljayhlbmRSZWFkYWJsZU5ULHQsZSl9fWZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoZSx0KXtkKFwiZW5kUmVhZGFibGVOVFwiLGUuZW5kRW1pdHRlZCxlLmxlbmd0aCk7aWYoIWUuZW5kRW1pdHRlZCYmZS5sZW5ndGg9PT0wKXtlLmVuZEVtaXR0ZWQ9dHJ1ZTt0LnJlYWRhYmxlPWZhbHNlO3QuZW1pdChcImVuZFwiKTtpZihlLmF1dG9EZXN0cm95KXt2YXIgcj10Ll93cml0YWJsZVN0YXRlO2lmKCFyfHxyLmF1dG9EZXN0cm95JiZyLmZpbmlzaGVkKXt0LmRlc3Ryb3koKX19fX1pZih0eXBlb2YgU3ltYm9sPT09XCJmdW5jdGlvblwiKXtSZWFkYWJsZS5mcm9tPWZ1bmN0aW9uKGUsdCl7aWYoQj09PXVuZGVmaW5lZCl7Qj1yKDk3MjcpfXJldHVybiBCKFJlYWRhYmxlLGUsdCl9fWZ1bmN0aW9uIGluZGV4T2YoZSx0KXtmb3IodmFyIHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2lmKGVbcl09PT10KXJldHVybiByfXJldHVybi0xfX0sMTE3MDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPVRyYW5zZm9ybTt2YXIgaT1yKDQ2NDYpLnEsbj1pLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELGE9aS5FUlJfTVVMVElQTEVfQ0FMTEJBQ0sscz1pLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsbz1pLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMDt2YXIgaD1yKDI0MDMpO3IoMzc4MikoVHJhbnNmb3JtLGgpO2Z1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGUsdCl7dmFyIHI9dGhpcy5fdHJhbnNmb3JtU3RhdGU7ci50cmFuc2Zvcm1pbmc9ZmFsc2U7dmFyIGk9ci53cml0ZWNiO2lmKGk9PT1udWxsKXtyZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIixuZXcgYSl9ci53cml0ZWNodW5rPW51bGw7ci53cml0ZWNiPW51bGw7aWYodCE9bnVsbCl0aGlzLnB1c2godCk7aShlKTt2YXIgbj10aGlzLl9yZWFkYWJsZVN0YXRlO24ucmVhZGluZz1mYWxzZTtpZihuLm5lZWRSZWFkYWJsZXx8bi5sZW5ndGg8bi5oaWdoV2F0ZXJNYXJrKXt0aGlzLl9yZWFkKG4uaGlnaFdhdGVyTWFyayl9fWZ1bmN0aW9uIFRyYW5zZm9ybShlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKXJldHVybiBuZXcgVHJhbnNmb3JtKGUpO2guY2FsbCh0aGlzLGUpO3RoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTphZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ZmFsc2UsdHJhbnNmb3JtaW5nOmZhbHNlLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfTt0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT10cnVlO3RoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz1mYWxzZTtpZihlKXtpZih0eXBlb2YgZS50cmFuc2Zvcm09PT1cImZ1bmN0aW9uXCIpdGhpcy5fdHJhbnNmb3JtPWUudHJhbnNmb3JtO2lmKHR5cGVvZiBlLmZsdXNoPT09XCJmdW5jdGlvblwiKXRoaXMuX2ZsdXNoPWUuZmx1c2h9dGhpcy5vbihcInByZWZpbmlzaFwiLHByZWZpbmlzaCl9ZnVuY3Rpb24gcHJlZmluaXNoKCl7dmFyIGU9dGhpcztpZih0eXBlb2YgdGhpcy5fZmx1c2g9PT1cImZ1bmN0aW9uXCImJiF0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCl7dGhpcy5fZmx1c2goKGZ1bmN0aW9uKHQscil7ZG9uZShlLHQscil9KSl9ZWxzZXtkb25lKHRoaXMsbnVsbCxudWxsKX19VHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7dGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybT1mYWxzZTtyZXR1cm4gaC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsZSx0KX07VHJhbnNmb3JtLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyKXtyKG5ldyBuKFwiX3RyYW5zZm9ybSgpXCIpKX07VHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2kud3JpdGVjYj1yO2kud3JpdGVjaHVuaz1lO2kud3JpdGVlbmNvZGluZz10O2lmKCFpLnRyYW5zZm9ybWluZyl7dmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZTtpZihpLm5lZWRUcmFuc2Zvcm18fG4ubmVlZFJlYWRhYmxlfHxuLmxlbmd0aDxuLmhpZ2hXYXRlck1hcmspdGhpcy5fcmVhZChuLmhpZ2hXYXRlck1hcmspfX07VHJhbnNmb3JtLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZih0LndyaXRlY2h1bmshPT1udWxsJiYhdC50cmFuc2Zvcm1pbmcpe3QudHJhbnNmb3JtaW5nPXRydWU7dGhpcy5fdHJhbnNmb3JtKHQud3JpdGVjaHVuayx0LndyaXRlZW5jb2RpbmcsdC5hZnRlclRyYW5zZm9ybSl9ZWxzZXt0Lm5lZWRUcmFuc2Zvcm09dHJ1ZX19O1RyYW5zZm9ybS5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24oZSx0KXtoLnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsZSwoZnVuY3Rpb24oZSl7dChlKX0pKX07ZnVuY3Rpb24gZG9uZShlLHQscil7aWYodClyZXR1cm4gZS5lbWl0KFwiZXJyb3JcIix0KTtpZihyIT1udWxsKWUucHVzaChyKTtpZihlLl93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgbztpZihlLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IHM7cmV0dXJuIGUucHVzaChudWxsKX19LDczMzc6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1Xcml0YWJsZTtmdW5jdGlvbiBXcml0ZVJlcShlLHQscil7dGhpcy5jaHVuaz1lO3RoaXMuZW5jb2Rpbmc9dDt0aGlzLmNhbGxiYWNrPXI7dGhpcy5uZXh0PW51bGx9ZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChlKXt2YXIgdD10aGlzO3RoaXMubmV4dD1udWxsO3RoaXMuZW50cnk9bnVsbDt0aGlzLmZpbmlzaD1mdW5jdGlvbigpe29uQ29ya2VkRmluaXNoKHQsZSl9fXZhciBpO1dyaXRhYmxlLldyaXRhYmxlU3RhdGU9V3JpdGFibGVTdGF0ZTt2YXIgbj17ZGVwcmVjYXRlOnIoNjc2OSl9O3ZhciBhPXIoNDY3OCk7dmFyIHM9cig0MzAwKS5CdWZmZXI7dmFyIG89Z2xvYmFsLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGUpe3JldHVybiBzLmZyb20oZSl9ZnVuY3Rpb24gX2lzVWludDhBcnJheShlKXtyZXR1cm4gcy5pc0J1ZmZlcihlKXx8ZSBpbnN0YW5jZW9mIG99dmFyIGg9cig3MDI1KTt2YXIgdT1yKDY3NzYpLGQ9dS5nZXRIaWdoV2F0ZXJNYXJrO3ZhciBjPXIoNDY0NikucSxsPWMuRVJSX0lOVkFMSURfQVJHX1RZUEUscD1jLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELHY9Yy5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssYj1jLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsbT1jLkVSUl9TVFJFQU1fREVTVFJPWUVELHk9Yy5FUlJfU1RSRUFNX05VTExfVkFMVUVTLGc9Yy5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxfPWMuRVJSX1VOS05PV05fRU5DT0RJTkc7dmFyIHc9aC5lcnJvck9yRGVzdHJveTtyKDM3ODIpKFdyaXRhYmxlLGEpO2Z1bmN0aW9uIG5vcCgpe31mdW5jdGlvbiBXcml0YWJsZVN0YXRlKGUsdCxuKXtpPWl8fHIoMjQwMyk7ZT1lfHx7fTtpZih0eXBlb2YgbiE9PVwiYm9vbGVhblwiKW49dCBpbnN0YW5jZW9mIGk7dGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlO2lmKG4pdGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFlLndyaXRhYmxlT2JqZWN0TW9kZTt0aGlzLmhpZ2hXYXRlck1hcms9ZCh0aGlzLGUsXCJ3cml0YWJsZUhpZ2hXYXRlck1hcmtcIixuKTt0aGlzLmZpbmFsQ2FsbGVkPWZhbHNlO3RoaXMubmVlZERyYWluPWZhbHNlO3RoaXMuZW5kaW5nPWZhbHNlO3RoaXMuZW5kZWQ9ZmFsc2U7dGhpcy5maW5pc2hlZD1mYWxzZTt0aGlzLmRlc3Ryb3llZD1mYWxzZTt2YXIgYT1lLmRlY29kZVN0cmluZ3M9PT1mYWxzZTt0aGlzLmRlY29kZVN0cmluZ3M9IWE7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiO3RoaXMubGVuZ3RoPTA7dGhpcy53cml0aW5nPWZhbHNlO3RoaXMuY29ya2VkPTA7dGhpcy5zeW5jPXRydWU7dGhpcy5idWZmZXJQcm9jZXNzaW5nPWZhbHNlO3RoaXMub253cml0ZT1mdW5jdGlvbihlKXtvbndyaXRlKHQsZSl9O3RoaXMud3JpdGVjYj1udWxsO3RoaXMud3JpdGVsZW49MDt0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsO3RoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsO3RoaXMucGVuZGluZ2NiPTA7dGhpcy5wcmVmaW5pc2hlZD1mYWxzZTt0aGlzLmVycm9yRW1pdHRlZD1mYWxzZTt0aGlzLmVtaXRDbG9zZT1lLmVtaXRDbG9zZSE9PWZhbHNlO3RoaXMuYXV0b0Rlc3Ryb3k9ISFlLmF1dG9EZXN0cm95O3RoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MDt0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgQ29ya2VkUmVxdWVzdCh0aGlzKX1Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24gZ2V0QnVmZmVyKCl7dmFyIGU9dGhpcy5idWZmZXJlZFJlcXVlc3Q7dmFyIHQ9W107d2hpbGUoZSl7dC5wdXNoKGUpO2U9ZS5uZXh0fXJldHVybiB0fTsoZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLFwiYnVmZmVyXCIse2dldDpuLmRlcHJlY2F0ZSgoZnVuY3Rpb24gd3JpdGFibGVTdGF0ZUJ1ZmZlckdldHRlcigpe3JldHVybiB0aGlzLmdldEJ1ZmZlcigpfSksXCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBcIitcImluc3RlYWQuXCIsXCJERVAwMDAzXCIpfSl9Y2F0Y2goZSl7fX0pKCk7dmFyIE07aWYodHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmU3ltYm9sLmhhc0luc3RhbmNlJiZ0eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV09PT1cImZ1bmN0aW9uXCIpe009RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV07T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLFN5bWJvbC5oYXNJbnN0YW5jZSx7dmFsdWU6ZnVuY3Rpb24gdmFsdWUoZSl7aWYoTS5jYWxsKHRoaXMsZSkpcmV0dXJuIHRydWU7aWYodGhpcyE9PVdyaXRhYmxlKXJldHVybiBmYWxzZTtyZXR1cm4gZSYmZS5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RhdGV9fSl9ZWxzZXtNPWZ1bmN0aW9uIHJlYWxIYXNJbnN0YW5jZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXN9fWZ1bmN0aW9uIFdyaXRhYmxlKGUpe2k9aXx8cigyNDAzKTt2YXIgdD10aGlzIGluc3RhbmNlb2YgaTtpZighdCYmIU0uY2FsbChXcml0YWJsZSx0aGlzKSlyZXR1cm4gbmV3IFdyaXRhYmxlKGUpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IFdyaXRhYmxlU3RhdGUoZSx0aGlzLHQpO3RoaXMud3JpdGFibGU9dHJ1ZTtpZihlKXtpZih0eXBlb2YgZS53cml0ZT09PVwiZnVuY3Rpb25cIil0aGlzLl93cml0ZT1lLndyaXRlO2lmKHR5cGVvZiBlLndyaXRldj09PVwiZnVuY3Rpb25cIil0aGlzLl93cml0ZXY9ZS53cml0ZXY7aWYodHlwZW9mIGUuZGVzdHJveT09PVwiZnVuY3Rpb25cIil0aGlzLl9kZXN0cm95PWUuZGVzdHJveTtpZih0eXBlb2YgZS5maW5hbD09PVwiZnVuY3Rpb25cIil0aGlzLl9maW5hbD1lLmZpbmFsfWEuY2FsbCh0aGlzKX1Xcml0YWJsZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe3codGhpcyxuZXcgYil9O2Z1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoZSx0KXt2YXIgcj1uZXcgZzt3KGUscik7cHJvY2Vzcy5uZXh0VGljayh0LHIpfWZ1bmN0aW9uIHZhbGlkQ2h1bmsoZSx0LHIsaSl7dmFyIG47aWYocj09PW51bGwpe249bmV3IHl9ZWxzZSBpZih0eXBlb2YgciE9PVwic3RyaW5nXCImJiF0Lm9iamVjdE1vZGUpe249bmV3IGwoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCJdLHIpfWlmKG4pe3coZSxuKTtwcm9jZXNzLm5leHRUaWNrKGksbik7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVdyaXRhYmxlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcy5fd3JpdGFibGVTdGF0ZTt2YXIgbj1mYWxzZTt2YXIgYT0haS5vYmplY3RNb2RlJiZfaXNVaW50OEFycmF5KGUpO2lmKGEmJiFzLmlzQnVmZmVyKGUpKXtlPV91aW50OEFycmF5VG9CdWZmZXIoZSl9aWYodHlwZW9mIHQ9PT1cImZ1bmN0aW9uXCIpe3I9dDt0PW51bGx9aWYoYSl0PVwiYnVmZmVyXCI7ZWxzZSBpZighdCl0PWkuZGVmYXVsdEVuY29kaW5nO2lmKHR5cGVvZiByIT09XCJmdW5jdGlvblwiKXI9bm9wO2lmKGkuZW5kaW5nKXdyaXRlQWZ0ZXJFbmQodGhpcyxyKTtlbHNlIGlmKGF8fHZhbGlkQ2h1bmsodGhpcyxpLGUscikpe2kucGVuZGluZ2NiKys7bj13cml0ZU9yQnVmZmVyKHRoaXMsaSxhLGUsdCxyKX1yZXR1cm4gbn07V3JpdGFibGUucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfTtXcml0YWJsZS5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtpZihlLmNvcmtlZCl7ZS5jb3JrZWQtLTtpZighZS53cml0aW5nJiYhZS5jb3JrZWQmJiFlLmJ1ZmZlclByb2Nlc3NpbmcmJmUuYnVmZmVyZWRSZXF1ZXN0KWNsZWFyQnVmZmVyKHRoaXMsZSl9fTtXcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlKXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpZT1lLnRvTG93ZXJDYXNlKCk7aWYoIShbXCJoZXhcIixcInV0ZjhcIixcInV0Zi04XCIsXCJhc2NpaVwiLFwiYmluYXJ5XCIsXCJiYXNlNjRcIixcInVjczJcIixcInVjcy0yXCIsXCJ1dGYxNmxlXCIsXCJ1dGYtMTZsZVwiLFwicmF3XCJdLmluZGV4T2YoKGUrXCJcIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBfKGUpO3RoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPWU7cmV0dXJuIHRoaXN9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KTtmdW5jdGlvbiBkZWNvZGVDaHVuayhlLHQscil7aWYoIWUub2JqZWN0TW9kZSYmZS5kZWNvZGVTdHJpbmdzIT09ZmFsc2UmJnR5cGVvZiB0PT09XCJzdHJpbmdcIil7dD1zLmZyb20odCxyKX1yZXR1cm4gdH1PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSk7ZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihlLHQscixpLG4sYSl7aWYoIXIpe3ZhciBzPWRlY29kZUNodW5rKHQsaSxuKTtpZihpIT09cyl7cj10cnVlO249XCJidWZmZXJcIjtpPXN9fXZhciBvPXQub2JqZWN0TW9kZT8xOmkubGVuZ3RoO3QubGVuZ3RoKz1vO3ZhciBoPXQubGVuZ3RoPHQuaGlnaFdhdGVyTWFyaztpZighaCl0Lm5lZWREcmFpbj10cnVlO2lmKHQud3JpdGluZ3x8dC5jb3JrZWQpe3ZhciB1PXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDt0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOmksZW5jb2Rpbmc6bixpc0J1ZjpyLGNhbGxiYWNrOmEsbmV4dDpudWxsfTtpZih1KXt1Lm5leHQ9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0fWVsc2V7dC5idWZmZXJlZFJlcXVlc3Q9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0fXQuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZXtkb1dyaXRlKGUsdCxmYWxzZSxvLGksbixhKX1yZXR1cm4gaH1mdW5jdGlvbiBkb1dyaXRlKGUsdCxyLGksbixhLHMpe3Qud3JpdGVsZW49aTt0LndyaXRlY2I9czt0LndyaXRpbmc9dHJ1ZTt0LnN5bmM9dHJ1ZTtpZih0LmRlc3Ryb3llZCl0Lm9ud3JpdGUobmV3IG0oXCJ3cml0ZVwiKSk7ZWxzZSBpZihyKWUuX3dyaXRldihuLHQub253cml0ZSk7ZWxzZSBlLl93cml0ZShuLGEsdC5vbndyaXRlKTt0LnN5bmM9ZmFsc2V9ZnVuY3Rpb24gb253cml0ZUVycm9yKGUsdCxyLGksbil7LS10LnBlbmRpbmdjYjtpZihyKXtwcm9jZXNzLm5leHRUaWNrKG4saSk7cHJvY2Vzcy5uZXh0VGljayhmaW5pc2hNYXliZSxlLHQpO2UuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPXRydWU7dyhlLGkpfWVsc2V7bihpKTtlLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD10cnVlO3coZSxpKTtmaW5pc2hNYXliZShlLHQpfX1mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoZSl7ZS53cml0aW5nPWZhbHNlO2Uud3JpdGVjYj1udWxsO2UubGVuZ3RoLT1lLndyaXRlbGVuO2Uud3JpdGVsZW49MH1mdW5jdGlvbiBvbndyaXRlKGUsdCl7dmFyIHI9ZS5fd3JpdGFibGVTdGF0ZTt2YXIgaT1yLnN5bmM7dmFyIG49ci53cml0ZWNiO2lmKHR5cGVvZiBuIT09XCJmdW5jdGlvblwiKXRocm93IG5ldyB2O29ud3JpdGVTdGF0ZVVwZGF0ZShyKTtpZih0KW9ud3JpdGVFcnJvcihlLHIsaSx0LG4pO2Vsc2V7dmFyIGE9bmVlZEZpbmlzaChyKXx8ZS5kZXN0cm95ZWQ7aWYoIWEmJiFyLmNvcmtlZCYmIXIuYnVmZmVyUHJvY2Vzc2luZyYmci5idWZmZXJlZFJlcXVlc3Qpe2NsZWFyQnVmZmVyKGUscil9aWYoaSl7cHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlLGUscixhLG4pfWVsc2V7YWZ0ZXJXcml0ZShlLHIsYSxuKX19fWZ1bmN0aW9uIGFmdGVyV3JpdGUoZSx0LHIsaSl7aWYoIXIpb253cml0ZURyYWluKGUsdCk7dC5wZW5kaW5nY2ItLTtpKCk7ZmluaXNoTWF5YmUoZSx0KX1mdW5jdGlvbiBvbndyaXRlRHJhaW4oZSx0KXtpZih0Lmxlbmd0aD09PTAmJnQubmVlZERyYWluKXt0Lm5lZWREcmFpbj1mYWxzZTtlLmVtaXQoXCJkcmFpblwiKX19ZnVuY3Rpb24gY2xlYXJCdWZmZXIoZSx0KXt0LmJ1ZmZlclByb2Nlc3Npbmc9dHJ1ZTt2YXIgcj10LmJ1ZmZlcmVkUmVxdWVzdDtpZihlLl93cml0ZXYmJnImJnIubmV4dCl7dmFyIGk9dC5idWZmZXJlZFJlcXVlc3RDb3VudDt2YXIgbj1uZXcgQXJyYXkoaSk7dmFyIGE9dC5jb3JrZWRSZXF1ZXN0c0ZyZWU7YS5lbnRyeT1yO3ZhciBzPTA7dmFyIG89dHJ1ZTt3aGlsZShyKXtuW3NdPXI7aWYoIXIuaXNCdWYpbz1mYWxzZTtyPXIubmV4dDtzKz0xfW4uYWxsQnVmZmVycz1vO2RvV3JpdGUoZSx0LHRydWUsdC5sZW5ndGgsbixcIlwiLGEuZmluaXNoKTt0LnBlbmRpbmdjYisrO3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsO2lmKGEubmV4dCl7dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9YS5uZXh0O2EubmV4dD1udWxsfWVsc2V7dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IENvcmtlZFJlcXVlc3QodCl9dC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7d2hpbGUocil7dmFyIGg9ci5jaHVuazt2YXIgdT1yLmVuY29kaW5nO3ZhciBkPXIuY2FsbGJhY2s7dmFyIGM9dC5vYmplY3RNb2RlPzE6aC5sZW5ndGg7ZG9Xcml0ZShlLHQsZmFsc2UsYyxoLHUsZCk7cj1yLm5leHQ7dC5idWZmZXJlZFJlcXVlc3RDb3VudC0tO2lmKHQud3JpdGluZyl7YnJlYWt9fWlmKHI9PT1udWxsKXQubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsfXQuYnVmZmVyZWRSZXF1ZXN0PXI7dC5idWZmZXJQcm9jZXNzaW5nPWZhbHNlfVdyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3IobmV3IHAoXCJfd3JpdGUoKVwiKSl9O1dyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2PW51bGw7V3JpdGFibGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlLHQscil7dmFyIGk9dGhpcy5fd3JpdGFibGVTdGF0ZTtpZih0eXBlb2YgZT09PVwiZnVuY3Rpb25cIil7cj1lO2U9bnVsbDt0PW51bGx9ZWxzZSBpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIil7cj10O3Q9bnVsbH1pZihlIT09bnVsbCYmZSE9PXVuZGVmaW5lZCl0aGlzLndyaXRlKGUsdCk7aWYoaS5jb3JrZWQpe2kuY29ya2VkPTE7dGhpcy51bmNvcmsoKX1pZighaS5lbmRpbmcpZW5kV3JpdGFibGUodGhpcyxpLHIpO3JldHVybiB0aGlzfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLFwid3JpdGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pO2Z1bmN0aW9uIG5lZWRGaW5pc2goZSl7cmV0dXJuIGUuZW5kaW5nJiZlLmxlbmd0aD09PTAmJmUuYnVmZmVyZWRSZXF1ZXN0PT09bnVsbCYmIWUuZmluaXNoZWQmJiFlLndyaXRpbmd9ZnVuY3Rpb24gY2FsbEZpbmFsKGUsdCl7ZS5fZmluYWwoKGZ1bmN0aW9uKHIpe3QucGVuZGluZ2NiLS07aWYocil7dyhlLHIpfXQucHJlZmluaXNoZWQ9dHJ1ZTtlLmVtaXQoXCJwcmVmaW5pc2hcIik7ZmluaXNoTWF5YmUoZSx0KX0pKX1mdW5jdGlvbiBwcmVmaW5pc2goZSx0KXtpZighdC5wcmVmaW5pc2hlZCYmIXQuZmluYWxDYWxsZWQpe2lmKHR5cGVvZiBlLl9maW5hbD09PVwiZnVuY3Rpb25cIiYmIXQuZGVzdHJveWVkKXt0LnBlbmRpbmdjYisrO3QuZmluYWxDYWxsZWQ9dHJ1ZTtwcm9jZXNzLm5leHRUaWNrKGNhbGxGaW5hbCxlLHQpfWVsc2V7dC5wcmVmaW5pc2hlZD10cnVlO2UuZW1pdChcInByZWZpbmlzaFwiKX19fWZ1bmN0aW9uIGZpbmlzaE1heWJlKGUsdCl7dmFyIHI9bmVlZEZpbmlzaCh0KTtpZihyKXtwcmVmaW5pc2goZSx0KTtpZih0LnBlbmRpbmdjYj09PTApe3QuZmluaXNoZWQ9dHJ1ZTtlLmVtaXQoXCJmaW5pc2hcIik7aWYodC5hdXRvRGVzdHJveSl7dmFyIGk9ZS5fcmVhZGFibGVTdGF0ZTtpZighaXx8aS5hdXRvRGVzdHJveSYmaS5lbmRFbWl0dGVkKXtlLmRlc3Ryb3koKX19fX1yZXR1cm4gcn1mdW5jdGlvbiBlbmRXcml0YWJsZShlLHQscil7dC5lbmRpbmc9dHJ1ZTtmaW5pc2hNYXliZShlLHQpO2lmKHIpe2lmKHQuZmluaXNoZWQpcHJvY2Vzcy5uZXh0VGljayhyKTtlbHNlIGUub25jZShcImZpbmlzaFwiLHIpfXQuZW5kZWQ9dHJ1ZTtlLndyaXRhYmxlPWZhbHNlfWZ1bmN0aW9uIG9uQ29ya2VkRmluaXNoKGUsdCxyKXt2YXIgaT1lLmVudHJ5O2UuZW50cnk9bnVsbDt3aGlsZShpKXt2YXIgbj1pLmNhbGxiYWNrO3QucGVuZGluZ2NiLS07bihyKTtpPWkubmV4dH10LmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PWV9T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtpZih0aGlzLl93cml0YWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe2lmKCF0aGlzLl93cml0YWJsZVN0YXRlKXtyZXR1cm59dGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZX19KTtXcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveT1oLmRlc3Ryb3k7V3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3k9aC51bmRlc3Ryb3k7V3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX19LDY4NzE6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpO2Z1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLHQscil7aWYodCBpbiBlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTp0cnVlfSl9ZWxzZXtlW3RdPXJ9cmV0dXJuIGV9dmFyIG49cig5Njk4KTt2YXIgYT1TeW1ib2woXCJsYXN0UmVzb2x2ZVwiKTt2YXIgcz1TeW1ib2woXCJsYXN0UmVqZWN0XCIpO3ZhciBvPVN5bWJvbChcImVycm9yXCIpO3ZhciBoPVN5bWJvbChcImVuZGVkXCIpO3ZhciB1PVN5bWJvbChcImxhc3RQcm9taXNlXCIpO3ZhciBkPVN5bWJvbChcImhhbmRsZVByb21pc2VcIik7dmFyIGM9U3ltYm9sKFwic3RyZWFtXCIpO2Z1bmN0aW9uIGNyZWF0ZUl0ZXJSZXN1bHQoZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fWZ1bmN0aW9uIHJlYWRBbmRSZXNvbHZlKGUpe3ZhciB0PWVbYV07aWYodCE9PW51bGwpe3ZhciByPWVbY10ucmVhZCgpO2lmKHIhPT1udWxsKXtlW3VdPW51bGw7ZVthXT1udWxsO2Vbc109bnVsbDt0KGNyZWF0ZUl0ZXJSZXN1bHQocixmYWxzZSkpfX19ZnVuY3Rpb24gb25SZWFkYWJsZShlKXtwcm9jZXNzLm5leHRUaWNrKHJlYWRBbmRSZXNvbHZlLGUpfWZ1bmN0aW9uIHdyYXBGb3JOZXh0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7ZS50aGVuKChmdW5jdGlvbigpe2lmKHRbaF0pe3IoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsdHJ1ZSkpO3JldHVybn10W2RdKHIsaSl9KSxpKX19dmFyIGw9T2JqZWN0LmdldFByb3RvdHlwZU9mKChmdW5jdGlvbigpe30pKTt2YXIgcD1PYmplY3Quc2V0UHJvdG90eXBlT2YoKGk9e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1tjXX0sbmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGU9dGhpczt2YXIgdD10aGlzW29dO2lmKHQhPT1udWxsKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QodCl9aWYodGhpc1toXSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCx0cnVlKSl9aWYodGhpc1tjXS5kZXN0cm95ZWQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXtwcm9jZXNzLm5leHRUaWNrKChmdW5jdGlvbigpe2lmKGVbb10pe3IoZVtvXSl9ZWxzZXt0KGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLHRydWUpKX19KSl9KSl9dmFyIHI9dGhpc1t1XTt2YXIgaTtpZihyKXtpPW5ldyBQcm9taXNlKHdyYXBGb3JOZXh0KHIsdGhpcykpfWVsc2V7dmFyIG49dGhpc1tjXS5yZWFkKCk7aWYobiE9PW51bGwpe3JldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChuLGZhbHNlKSl9aT1uZXcgUHJvbWlzZSh0aGlzW2RdKX10aGlzW3VdPWk7cmV0dXJuIGl9fSxfZGVmaW5lUHJvcGVydHkoaSxTeW1ib2wuYXN5bmNJdGVyYXRvciwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxfZGVmaW5lUHJvcGVydHkoaSxcInJldHVyblwiLChmdW5jdGlvbiBfcmV0dXJuKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7ZVtjXS5kZXN0cm95KG51bGwsKGZ1bmN0aW9uKGUpe2lmKGUpe3IoZSk7cmV0dXJufXQoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsdHJ1ZSkpfSkpfSkpfSkpLGkpLGwpO3ZhciB2PWZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcihlKXt2YXIgdDt2YXIgcj1PYmplY3QuY3JlYXRlKHAsKHQ9e30sX2RlZmluZVByb3BlcnR5KHQsYyx7dmFsdWU6ZSx3cml0YWJsZTp0cnVlfSksX2RlZmluZVByb3BlcnR5KHQsYSx7dmFsdWU6bnVsbCx3cml0YWJsZTp0cnVlfSksX2RlZmluZVByb3BlcnR5KHQscyx7dmFsdWU6bnVsbCx3cml0YWJsZTp0cnVlfSksX2RlZmluZVByb3BlcnR5KHQsbyx7dmFsdWU6bnVsbCx3cml0YWJsZTp0cnVlfSksX2RlZmluZVByb3BlcnR5KHQsaCx7dmFsdWU6ZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOnRydWV9KSxfZGVmaW5lUHJvcGVydHkodCxkLHt2YWx1ZTpmdW5jdGlvbiB2YWx1ZShlLHQpe3ZhciBpPXJbY10ucmVhZCgpO2lmKGkpe3JbdV09bnVsbDtyW2FdPW51bGw7cltzXT1udWxsO2UoY3JlYXRlSXRlclJlc3VsdChpLGZhbHNlKSl9ZWxzZXtyW2FdPWU7cltzXT10fX0sd3JpdGFibGU6dHJ1ZX0pLHQpKTtyW3VdPW51bGw7bihlLChmdW5jdGlvbihlKXtpZihlJiZlLmNvZGUhPT1cIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIpe3ZhciB0PXJbc107aWYodCE9PW51bGwpe3JbdV09bnVsbDtyW2FdPW51bGw7cltzXT1udWxsO3QoZSl9cltvXT1lO3JldHVybn12YXIgaT1yW2FdO2lmKGkhPT1udWxsKXtyW3VdPW51bGw7clthXT1udWxsO3Jbc109bnVsbDtpKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLHRydWUpKX1yW2hdPXRydWV9KSk7ZS5vbihcInJlYWRhYmxlXCIsb25SZWFkYWJsZS5iaW5kKG51bGwscikpO3JldHVybiByfTtlLmV4cG9ydHM9dn0sNDM3OTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gb3duS2V5cyhlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYodClpPWkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSk7ci5wdXNoLmFwcGx5KHIsaSl9cmV0dXJuIHJ9ZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O2lmKHQlMil7b3duS2V5cyhPYmplY3QociksdHJ1ZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7X2RlZmluZVByb3BlcnR5KGUsdCxyW3RdKX0pKX1lbHNlIGlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKX1lbHNle293bktleXMoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9fXJldHVybiBlfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLHQscil7aWYodCBpbiBlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTp0cnVlfSl9ZWxzZXtlW3RdPXJ9cmV0dXJuIGV9ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9fWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBpPXRbcl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ZmFsc2U7aS5jb25maWd1cmFibGU9dHJ1ZTtpZihcInZhbHVlXCJpbiBpKWkud3JpdGFibGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxpLmtleSxpKX19ZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsdCxyKXtpZih0KV9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpO2lmKHIpX2RlZmluZVByb3BlcnRpZXMoZSxyKTtyZXR1cm4gZX12YXIgaT1yKDQzMDApLG49aS5CdWZmZXI7dmFyIGE9cigzODM3KSxzPWEuaW5zcGVjdDt2YXIgbz1zJiZzLmN1c3RvbXx8XCJpbnNwZWN0XCI7ZnVuY3Rpb24gY29weUJ1ZmZlcihlLHQscil7bi5wcm90b3R5cGUuY29weS5jYWxsKGUsdCxyKX1lLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBCdWZmZXJMaXN0KCl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsQnVmZmVyTGlzdCk7dGhpcy5oZWFkPW51bGw7dGhpcy50YWlsPW51bGw7dGhpcy5sZW5ndGg9MH1fY3JlYXRlQ2xhc3MoQnVmZmVyTGlzdCxbe2tleTpcInB1c2hcIix2YWx1ZTpmdW5jdGlvbiBwdXNoKGUpe3ZhciB0PXtkYXRhOmUsbmV4dDpudWxsfTtpZih0aGlzLmxlbmd0aD4wKXRoaXMudGFpbC5uZXh0PXQ7ZWxzZSB0aGlzLmhlYWQ9dDt0aGlzLnRhaWw9dDsrK3RoaXMubGVuZ3RofX0se2tleTpcInVuc2hpZnRcIix2YWx1ZTpmdW5jdGlvbiB1bnNoaWZ0KGUpe3ZhciB0PXtkYXRhOmUsbmV4dDp0aGlzLmhlYWR9O2lmKHRoaXMubGVuZ3RoPT09MCl0aGlzLnRhaWw9dDt0aGlzLmhlYWQ9dDsrK3RoaXMubGVuZ3RofX0se2tleTpcInNoaWZ0XCIsdmFsdWU6ZnVuY3Rpb24gc2hpZnQoKXtpZih0aGlzLmxlbmd0aD09PTApcmV0dXJuO3ZhciBlPXRoaXMuaGVhZC5kYXRhO2lmKHRoaXMubGVuZ3RoPT09MSl0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw7ZWxzZSB0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQ7LS10aGlzLmxlbmd0aDtyZXR1cm4gZX19LHtrZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uIGNsZWFyKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsO3RoaXMubGVuZ3RoPTB9fSx7a2V5Olwiam9pblwiLHZhbHVlOmZ1bmN0aW9uIGpvaW4oZSl7aWYodGhpcy5sZW5ndGg9PT0wKXJldHVyblwiXCI7dmFyIHQ9dGhpcy5oZWFkO3ZhciByPVwiXCIrdC5kYXRhO3doaWxlKHQ9dC5uZXh0KXtyKz1lK3QuZGF0YX1yZXR1cm4gcn19LHtrZXk6XCJjb25jYXRcIix2YWx1ZTpmdW5jdGlvbiBjb25jYXQoZSl7aWYodGhpcy5sZW5ndGg9PT0wKXJldHVybiBuLmFsbG9jKDApO3ZhciB0PW4uYWxsb2NVbnNhZmUoZT4+PjApO3ZhciByPXRoaXMuaGVhZDt2YXIgaT0wO3doaWxlKHIpe2NvcHlCdWZmZXIoci5kYXRhLHQsaSk7aSs9ci5kYXRhLmxlbmd0aDtyPXIubmV4dH1yZXR1cm4gdH19LHtrZXk6XCJjb25zdW1lXCIsdmFsdWU6ZnVuY3Rpb24gY29uc3VtZShlLHQpe3ZhciByO2lmKGU8dGhpcy5oZWFkLmRhdGEubGVuZ3RoKXtyPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsZSk7dGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UoZSl9ZWxzZSBpZihlPT09dGhpcy5oZWFkLmRhdGEubGVuZ3RoKXtyPXRoaXMuc2hpZnQoKX1lbHNle3I9dD90aGlzLl9nZXRTdHJpbmcoZSk6dGhpcy5fZ2V0QnVmZmVyKGUpfXJldHVybiByfX0se2tleTpcImZpcnN0XCIsdmFsdWU6ZnVuY3Rpb24gZmlyc3QoKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OlwiX2dldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uIF9nZXRTdHJpbmcoZSl7dmFyIHQ9dGhpcy5oZWFkO3ZhciByPTE7dmFyIGk9dC5kYXRhO2UtPWkubGVuZ3RoO3doaWxlKHQ9dC5uZXh0KXt2YXIgbj10LmRhdGE7dmFyIGE9ZT5uLmxlbmd0aD9uLmxlbmd0aDplO2lmKGE9PT1uLmxlbmd0aClpKz1uO2Vsc2UgaSs9bi5zbGljZSgwLGUpO2UtPWE7aWYoZT09PTApe2lmKGE9PT1uLmxlbmd0aCl7KytyO2lmKHQubmV4dCl0aGlzLmhlYWQ9dC5uZXh0O2Vsc2UgdGhpcy5oZWFkPXRoaXMudGFpbD1udWxsfWVsc2V7dGhpcy5oZWFkPXQ7dC5kYXRhPW4uc2xpY2UoYSl9YnJlYWt9KytyfXRoaXMubGVuZ3RoLT1yO3JldHVybiBpfX0se2tleTpcIl9nZXRCdWZmZXJcIix2YWx1ZTpmdW5jdGlvbiBfZ2V0QnVmZmVyKGUpe3ZhciB0PW4uYWxsb2NVbnNhZmUoZSk7dmFyIHI9dGhpcy5oZWFkO3ZhciBpPTE7ci5kYXRhLmNvcHkodCk7ZS09ci5kYXRhLmxlbmd0aDt3aGlsZShyPXIubmV4dCl7dmFyIGE9ci5kYXRhO3ZhciBzPWU+YS5sZW5ndGg/YS5sZW5ndGg6ZTthLmNvcHkodCx0Lmxlbmd0aC1lLDAscyk7ZS09cztpZihlPT09MCl7aWYocz09PWEubGVuZ3RoKXsrK2k7aWYoci5uZXh0KXRoaXMuaGVhZD1yLm5leHQ7ZWxzZSB0aGlzLmhlYWQ9dGhpcy50YWlsPW51bGx9ZWxzZXt0aGlzLmhlYWQ9cjtyLmRhdGE9YS5zbGljZShzKX1icmVha30rK2l9dGhpcy5sZW5ndGgtPWk7cmV0dXJuIHR9fSx7a2V5Om8sdmFsdWU6ZnVuY3Rpb24gdmFsdWUoZSx0KXtyZXR1cm4gcyh0aGlzLF9vYmplY3RTcHJlYWQoe30sdCx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OmZhbHNlfSkpfX1dKTtyZXR1cm4gQnVmZmVyTGlzdH0oKX0sNzAyNTpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBkZXN0cm95KGUsdCl7dmFyIHI9dGhpczt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtpZihpfHxuKXtpZih0KXt0KGUpfWVsc2UgaWYoZSl7aWYoIXRoaXMuX3dyaXRhYmxlU3RhdGUpe3Byb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsdGhpcyxlKX1lbHNlIGlmKCF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9dHJ1ZTtwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvck5ULHRoaXMsZSl9fXJldHVybiB0aGlzfWlmKHRoaXMuX3JlYWRhYmxlU3RhdGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPXRydWV9aWYodGhpcy5fd3JpdGFibGVTdGF0ZSl7dGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9dHJ1ZX10aGlzLl9kZXN0cm95KGV8fG51bGwsKGZ1bmN0aW9uKGUpe2lmKCF0JiZlKXtpZighci5fd3JpdGFibGVTdGF0ZSl7cHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JBbmRDbG9zZU5ULHIsZSl9ZWxzZSBpZighci5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQpe3IuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPXRydWU7cHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JBbmRDbG9zZU5ULHIsZSl9ZWxzZXtwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULHIpfX1lbHNlIGlmKHQpe3Byb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQscik7dChlKX1lbHNle3Byb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQscil9fSkpO3JldHVybiB0aGlzfWZ1bmN0aW9uIGVtaXRFcnJvckFuZENsb3NlTlQoZSx0KXtlbWl0RXJyb3JOVChlLHQpO2VtaXRDbG9zZU5UKGUpfWZ1bmN0aW9uIGVtaXRDbG9zZU5UKGUpe2lmKGUuX3dyaXRhYmxlU3RhdGUmJiFlLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZSlyZXR1cm47aWYoZS5fcmVhZGFibGVTdGF0ZSYmIWUuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlKXJldHVybjtlLmVtaXQoXCJjbG9zZVwiKX1mdW5jdGlvbiB1bmRlc3Ryb3koKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlKXt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1mYWxzZTt0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ZmFsc2U7dGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD1mYWxzZTt0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ZmFsc2V9aWYodGhpcy5fd3JpdGFibGVTdGF0ZSl7dGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZmFsc2U7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD1mYWxzZTt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz1mYWxzZTt0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPWZhbHNlO3RoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ZmFsc2U7dGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD1mYWxzZTt0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD1mYWxzZX19ZnVuY3Rpb24gZW1pdEVycm9yTlQoZSx0KXtlLmVtaXQoXCJlcnJvclwiLHQpfWZ1bmN0aW9uIGVycm9yT3JEZXN0cm95KGUsdCl7dmFyIHI9ZS5fcmVhZGFibGVTdGF0ZTt2YXIgaT1lLl93cml0YWJsZVN0YXRlO2lmKHImJnIuYXV0b0Rlc3Ryb3l8fGkmJmkuYXV0b0Rlc3Ryb3kpZS5kZXN0cm95KHQpO2Vsc2UgZS5lbWl0KFwiZXJyb3JcIix0KX1lLmV4cG9ydHM9e2Rlc3Ryb3k6ZGVzdHJveSx1bmRlc3Ryb3k6dW5kZXN0cm95LGVycm9yT3JEZXN0cm95OmVycm9yT3JEZXN0cm95fX0sOTY5ODpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig0NjQ2KS5xLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIG9uY2UoZSl7dmFyIHQ9ZmFsc2U7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodClyZXR1cm47dD10cnVlO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG49MDtuPHI7bisrKXtpW25dPWFyZ3VtZW50c1tuXX1lLmFwcGx5KHRoaXMsaSl9fWZ1bmN0aW9uIG5vb3AoKXt9ZnVuY3Rpb24gaXNSZXF1ZXN0KGUpe3JldHVybiBlLnNldEhlYWRlciYmdHlwZW9mIGUuYWJvcnQ9PT1cImZ1bmN0aW9uXCJ9ZnVuY3Rpb24gZW9zKGUsdCxyKXtpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIilyZXR1cm4gZW9zKGUsbnVsbCx0KTtpZighdCl0PXt9O3I9b25jZShyfHxub29wKTt2YXIgbj10LnJlYWRhYmxlfHx0LnJlYWRhYmxlIT09ZmFsc2UmJmUucmVhZGFibGU7dmFyIGE9dC53cml0YWJsZXx8dC53cml0YWJsZSE9PWZhbHNlJiZlLndyaXRhYmxlO3ZhciBzPWZ1bmN0aW9uIG9ubGVnYWN5ZmluaXNoKCl7aWYoIWUud3JpdGFibGUpaCgpfTt2YXIgbz1lLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkO3ZhciBoPWZ1bmN0aW9uIG9uZmluaXNoKCl7YT1mYWxzZTtvPXRydWU7aWYoIW4pci5jYWxsKGUpfTt2YXIgdT1lLl9yZWFkYWJsZVN0YXRlJiZlLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ7dmFyIGQ9ZnVuY3Rpb24gb25lbmQoKXtuPWZhbHNlO3U9dHJ1ZTtpZighYSlyLmNhbGwoZSl9O3ZhciBjPWZ1bmN0aW9uIG9uZXJyb3IodCl7ci5jYWxsKGUsdCl9O3ZhciBsPWZ1bmN0aW9uIG9uY2xvc2UoKXt2YXIgdDtpZihuJiYhdSl7aWYoIWUuX3JlYWRhYmxlU3RhdGV8fCFlLl9yZWFkYWJsZVN0YXRlLmVuZGVkKXQ9bmV3IGk7cmV0dXJuIHIuY2FsbChlLHQpfWlmKGEmJiFvKXtpZighZS5fd3JpdGFibGVTdGF0ZXx8IWUuX3dyaXRhYmxlU3RhdGUuZW5kZWQpdD1uZXcgaTtyZXR1cm4gci5jYWxsKGUsdCl9fTt2YXIgcD1mdW5jdGlvbiBvbnJlcXVlc3QoKXtlLnJlcS5vbihcImZpbmlzaFwiLGgpfTtpZihpc1JlcXVlc3QoZSkpe2Uub24oXCJjb21wbGV0ZVwiLGgpO2Uub24oXCJhYm9ydFwiLGwpO2lmKGUucmVxKXAoKTtlbHNlIGUub24oXCJyZXF1ZXN0XCIscCl9ZWxzZSBpZihhJiYhZS5fd3JpdGFibGVTdGF0ZSl7ZS5vbihcImVuZFwiLHMpO2Uub24oXCJjbG9zZVwiLHMpfWUub24oXCJlbmRcIixkKTtlLm9uKFwiZmluaXNoXCIsaCk7aWYodC5lcnJvciE9PWZhbHNlKWUub24oXCJlcnJvclwiLGMpO2Uub24oXCJjbG9zZVwiLGwpO3JldHVybiBmdW5jdGlvbigpe2UucmVtb3ZlTGlzdGVuZXIoXCJjb21wbGV0ZVwiLGgpO2UucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydFwiLGwpO2UucmVtb3ZlTGlzdGVuZXIoXCJyZXF1ZXN0XCIscCk7aWYoZS5yZXEpZS5yZXEucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixoKTtlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIscyk7ZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscyk7ZS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGgpO2UucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixkKTtlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixjKTtlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixsKX19ZS5leHBvcnRzPWVvc30sOTcyNzpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGUsdCxyLGksbixhLHMpe3RyeXt2YXIgbz1lW2FdKHMpO3ZhciBoPW8udmFsdWV9Y2F0Y2goZSl7cihlKTtyZXR1cm59aWYoby5kb25lKXt0KGgpfWVsc2V7UHJvbWlzZS5yZXNvbHZlKGgpLnRoZW4oaSxuKX19ZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGksbil7dmFyIGE9ZS5hcHBseSh0LHIpO2Z1bmN0aW9uIF9uZXh0KGUpe2FzeW5jR2VuZXJhdG9yU3RlcChhLGksbixfbmV4dCxfdGhyb3csXCJuZXh0XCIsZSl9ZnVuY3Rpb24gX3Rocm93KGUpe2FzeW5jR2VuZXJhdG9yU3RlcChhLGksbixfbmV4dCxfdGhyb3csXCJ0aHJvd1wiLGUpfV9uZXh0KHVuZGVmaW5lZCl9KSl9fWZ1bmN0aW9uIG93bktleXMoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2lmKHQpaT1pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpO3IucHVzaC5hcHBseShyLGkpfXJldHVybiByfWZ1bmN0aW9uIF9vYmplY3RTcHJlYWQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdIT1udWxsP2FyZ3VtZW50c1t0XTp7fTtpZih0JTIpe293bktleXMoT2JqZWN0KHIpLHRydWUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe19kZWZpbmVQcm9wZXJ0eShlLHQsclt0XSl9KSl9ZWxzZSBpZihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyl7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSl9ZWxzZXtvd25LZXlzKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfX1yZXR1cm4gZX1mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSx0LHIpe2lmKHQgaW4gZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWUsd3JpdGFibGU6dHJ1ZX0pfWVsc2V7ZVt0XT1yfXJldHVybiBlfXZhciBpPXIoNDY0NikucS5FUlJfSU5WQUxJRF9BUkdfVFlQRTtmdW5jdGlvbiBmcm9tKGUsdCxyKXt2YXIgbjtpZih0JiZ0eXBlb2YgdC5uZXh0PT09XCJmdW5jdGlvblwiKXtuPXR9ZWxzZSBpZih0JiZ0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSluPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7ZWxzZSBpZih0JiZ0W1N5bWJvbC5pdGVyYXRvcl0pbj10W1N5bWJvbC5pdGVyYXRvcl0oKTtlbHNlIHRocm93IG5ldyBpKFwiaXRlcmFibGVcIixbXCJJdGVyYWJsZVwiXSx0KTt2YXIgYT1uZXcgZShfb2JqZWN0U3ByZWFkKHtvYmplY3RNb2RlOnRydWV9LHIpKTt2YXIgcz1mYWxzZTthLl9yZWFkPWZ1bmN0aW9uKCl7aWYoIXMpe3M9dHJ1ZTtuZXh0KCl9fTtmdW5jdGlvbiBuZXh0KCl7cmV0dXJuIF9uZXh0Mi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gX25leHQyKCl7X25leHQyPV9hc3luY1RvR2VuZXJhdG9yKChmdW5jdGlvbiooKXt0cnl7dmFyIGU9eWllbGQgbi5uZXh0KCksdD1lLnZhbHVlLHI9ZS5kb25lO2lmKHIpe2EucHVzaChudWxsKX1lbHNlIGlmKGEucHVzaCh5aWVsZCB0KSl7bmV4dCgpfWVsc2V7cz1mYWxzZX19Y2F0Y2goZSl7YS5kZXN0cm95KGUpfX0pKTtyZXR1cm4gX25leHQyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYX1lLmV4cG9ydHM9ZnJvbX0sODQ0MjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk7ZnVuY3Rpb24gb25jZShlKXt2YXIgdD1mYWxzZTtyZXR1cm4gZnVuY3Rpb24oKXtpZih0KXJldHVybjt0PXRydWU7ZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19dmFyIG49cig0NjQ2KS5xLGE9bi5FUlJfTUlTU0lOR19BUkdTLHM9bi5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5jdGlvbiBub29wKGUpe2lmKGUpdGhyb3cgZX1mdW5jdGlvbiBpc1JlcXVlc3QoZSl7cmV0dXJuIGUuc2V0SGVhZGVyJiZ0eXBlb2YgZS5hYm9ydD09PVwiZnVuY3Rpb25cIn1mdW5jdGlvbiBkZXN0cm95ZXIoZSx0LG4sYSl7YT1vbmNlKGEpO3ZhciBvPWZhbHNlO2Uub24oXCJjbG9zZVwiLChmdW5jdGlvbigpe289dHJ1ZX0pKTtpZihpPT09dW5kZWZpbmVkKWk9cig5Njk4KTtpKGUse3JlYWRhYmxlOnQsd3JpdGFibGU6bn0sKGZ1bmN0aW9uKGUpe2lmKGUpcmV0dXJuIGEoZSk7bz10cnVlO2EoKX0pKTt2YXIgaD1mYWxzZTtyZXR1cm4gZnVuY3Rpb24odCl7aWYobylyZXR1cm47aWYoaClyZXR1cm47aD10cnVlO2lmKGlzUmVxdWVzdChlKSlyZXR1cm4gZS5hYm9ydCgpO2lmKHR5cGVvZiBlLmRlc3Ryb3k9PT1cImZ1bmN0aW9uXCIpcmV0dXJuIGUuZGVzdHJveSgpO2EodHx8bmV3IHMoXCJwaXBlXCIpKX19ZnVuY3Rpb24gY2FsbChlKXtlKCl9ZnVuY3Rpb24gcGlwZShlLHQpe3JldHVybiBlLnBpcGUodCl9ZnVuY3Rpb24gcG9wQ2FsbGJhY2soZSl7aWYoIWUubGVuZ3RoKXJldHVybiBub29wO2lmKHR5cGVvZiBlW2UubGVuZ3RoLTFdIT09XCJmdW5jdGlvblwiKXJldHVybiBub29wO3JldHVybiBlLnBvcCgpfWZ1bmN0aW9uIHBpcGVsaW5lKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspe3Rbcl09YXJndW1lbnRzW3JdfXZhciBpPXBvcENhbGxiYWNrKHQpO2lmKEFycmF5LmlzQXJyYXkodFswXSkpdD10WzBdO2lmKHQubGVuZ3RoPDIpe3Rocm93IG5ldyBhKFwic3RyZWFtc1wiKX12YXIgbjt2YXIgcz10Lm1hcCgoZnVuY3Rpb24oZSxyKXt2YXIgYT1yPHQubGVuZ3RoLTE7dmFyIG89cj4wO3JldHVybiBkZXN0cm95ZXIoZSxhLG8sKGZ1bmN0aW9uKGUpe2lmKCFuKW49ZTtpZihlKXMuZm9yRWFjaChjYWxsKTtpZihhKXJldHVybjtzLmZvckVhY2goY2FsbCk7aShuKX0pKX0pKTtyZXR1cm4gdC5yZWR1Y2UocGlwZSl9ZS5leHBvcnRzPXBpcGVsaW5lfSw2Nzc2OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgaT1yKDQ2NDYpLnEuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO2Z1bmN0aW9uIGhpZ2hXYXRlck1hcmtGcm9tKGUsdCxyKXtyZXR1cm4gZS5oaWdoV2F0ZXJNYXJrIT1udWxsP2UuaGlnaFdhdGVyTWFyazp0P2Vbcl06bnVsbH1mdW5jdGlvbiBnZXRIaWdoV2F0ZXJNYXJrKGUsdCxyLG4pe3ZhciBhPWhpZ2hXYXRlck1hcmtGcm9tKHQsbixyKTtpZihhIT1udWxsKXtpZighKGlzRmluaXRlKGEpJiZNYXRoLmZsb29yKGEpPT09YSl8fGE8MCl7dmFyIHM9bj9yOlwiaGlnaFdhdGVyTWFya1wiO3Rocm93IG5ldyBpKHMsYSl9cmV0dXJuIE1hdGguZmxvb3IoYSl9cmV0dXJuIGUub2JqZWN0TW9kZT8xNjoxNioxMDI0fWUuZXhwb3J0cz17Z2V0SGlnaFdhdGVyTWFyazpnZXRIaWdoV2F0ZXJNYXJrfX0sNDY3ODpmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoMjc4MSl9LDM3MjY6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoMjc4MSk7aWYocHJvY2Vzcy5lbnYuUkVBREFCTEVfU1RSRUFNPT09XCJkaXNhYmxlXCImJmkpe2UuZXhwb3J0cz1pLlJlYWRhYmxlO09iamVjdC5hc3NpZ24oZS5leHBvcnRzLGkpO2UuZXhwb3J0cy5TdHJlYW09aX1lbHNle3Q9ZS5leHBvcnRzPXIoMTcwOSk7dC5TdHJlYW09aXx8dDt0LlJlYWRhYmxlPXQ7dC5Xcml0YWJsZT1yKDczMzcpO3QuRHVwbGV4PXIoMjQwMyk7dC5UcmFuc2Zvcm09cigxMTcwKTt0LlBhc3NUaHJvdWdoPXIoNzg4OSk7dC5maW5pc2hlZD1yKDk2OTgpO3QucGlwZWxpbmU9cig4NDQyKX19LDMyMjU6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBpPXIoNDMwMCkuQnVmZmVyO3ZhciBuPXIoMzc4Mik7dmFyIGE9cig5MDI5KTt2YXIgcz1uZXcgQXJyYXkoMTYpO3ZhciBvPVswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdO3ZhciBoPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdO3ZhciB1PVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XTt2YXIgZD1bOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV07dmFyIGM9WzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF07dmFyIGw9WzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF07ZnVuY3Rpb24gUklQRU1EMTYwKCl7YS5jYWxsKHRoaXMsNjQpO3RoaXMuX2E9MTczMjU4NDE5Mzt0aGlzLl9iPTQwMjMyMzM0MTc7dGhpcy5fYz0yNTYyMzgzMTAyO3RoaXMuX2Q9MjcxNzMzODc4O3RoaXMuX2U9MzI4NTM3NzUyMH1uKFJJUEVNRDE2MCxhKTtSSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT1zO2Zvcih2YXIgdD0wO3Q8MTY7Kyt0KWVbdF09dGhpcy5fYmxvY2sucmVhZEludDMyTEUodCo0KTt2YXIgcj10aGlzLl9hfDA7dmFyIGk9dGhpcy5fYnwwO3ZhciBuPXRoaXMuX2N8MDt2YXIgYT10aGlzLl9kfDA7dmFyIHA9dGhpcy5fZXwwO3ZhciB2PXRoaXMuX2F8MDt2YXIgYj10aGlzLl9ifDA7dmFyIG09dGhpcy5fY3wwO3ZhciB5PXRoaXMuX2R8MDt2YXIgZz10aGlzLl9lfDA7Zm9yKHZhciBfPTA7Xzw4MDtfKz0xKXt2YXIgdzt2YXIgTTtpZihfPDE2KXt3PWZuMShyLGksbixhLHAsZVtvW19dXSxjWzBdLHVbX10pO009Zm41KHYsYixtLHksZyxlW2hbX11dLGxbMF0sZFtfXSl9ZWxzZSBpZihfPDMyKXt3PWZuMihyLGksbixhLHAsZVtvW19dXSxjWzFdLHVbX10pO009Zm40KHYsYixtLHksZyxlW2hbX11dLGxbMV0sZFtfXSl9ZWxzZSBpZihfPDQ4KXt3PWZuMyhyLGksbixhLHAsZVtvW19dXSxjWzJdLHVbX10pO009Zm4zKHYsYixtLHksZyxlW2hbX11dLGxbMl0sZFtfXSl9ZWxzZSBpZihfPDY0KXt3PWZuNChyLGksbixhLHAsZVtvW19dXSxjWzNdLHVbX10pO009Zm4yKHYsYixtLHksZyxlW2hbX11dLGxbM10sZFtfXSl9ZWxzZXt3PWZuNShyLGksbixhLHAsZVtvW19dXSxjWzRdLHVbX10pO009Zm4xKHYsYixtLHksZyxlW2hbX11dLGxbNF0sZFtfXSl9cj1wO3A9YTthPXJvdGwobiwxMCk7bj1pO2k9dzt2PWc7Zz15O3k9cm90bChtLDEwKTttPWI7Yj1NfXZhciBCPXRoaXMuX2Irbit5fDA7dGhpcy5fYj10aGlzLl9jK2ErZ3wwO3RoaXMuX2M9dGhpcy5fZCtwK3Z8MDt0aGlzLl9kPXRoaXMuX2UrcitifDA7dGhpcy5fZT10aGlzLl9hK2krbXwwO3RoaXMuX2E9Qn07UklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKCl7dGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK109MTI4O2lmKHRoaXMuX2Jsb2NrT2Zmc2V0PjU2KXt0aGlzLl9ibG9jay5maWxsKDAsdGhpcy5fYmxvY2tPZmZzZXQsNjQpO3RoaXMuX3VwZGF0ZSgpO3RoaXMuX2Jsb2NrT2Zmc2V0PTB9dGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2Jsb2NrT2Zmc2V0LDU2KTt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSw1Nik7dGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sNjApO3RoaXMuX3VwZGF0ZSgpO3ZhciBlPWkuYWxsb2M/aS5hbGxvYygyMCk6bmV3IGkoMjApO2Uud3JpdGVJbnQzMkxFKHRoaXMuX2EsMCk7ZS53cml0ZUludDMyTEUodGhpcy5fYiw0KTtlLndyaXRlSW50MzJMRSh0aGlzLl9jLDgpO2Uud3JpdGVJbnQzMkxFKHRoaXMuX2QsMTIpO2Uud3JpdGVJbnQzMkxFKHRoaXMuX2UsMTYpO3JldHVybiBlfTtmdW5jdGlvbiByb3RsKGUsdCl7cmV0dXJuIGU8PHR8ZT4+PjMyLXR9ZnVuY3Rpb24gZm4xKGUsdCxyLGksbixhLHMsbyl7cmV0dXJuIHJvdGwoZSsodF5yXmkpK2Erc3wwLG8pK258MH1mdW5jdGlvbiBmbjIoZSx0LHIsaSxuLGEscyxvKXtyZXR1cm4gcm90bChlKyh0JnJ8fnQmaSkrYStzfDAsbykrbnwwfWZ1bmN0aW9uIGZuMyhlLHQscixpLG4sYSxzLG8pe3JldHVybiByb3RsKGUrKCh0fH5yKV5pKSthK3N8MCxvKStufDB9ZnVuY3Rpb24gZm40KGUsdCxyLGksbixhLHMsbyl7cmV0dXJuIHJvdGwoZSsodCZpfHImfmkpK2Erc3wwLG8pK258MH1mdW5jdGlvbiBmbjUoZSx0LHIsaSxuLGEscyxvKXtyZXR1cm4gcm90bChlKyh0XihyfH5pKSkrYStzfDAsbykrbnwwfWUuZXhwb3J0cz1SSVBFTUQxNjB9LDUwNTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoNDMwMCk7dmFyIG49aS5CdWZmZXI7ZnVuY3Rpb24gY29weVByb3BzKGUsdCl7Zm9yKHZhciByIGluIGUpe3Rbcl09ZVtyXX19aWYobi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdyl7ZS5leHBvcnRzPWl9ZWxzZXtjb3B5UHJvcHMoaSx0KTt0LkJ1ZmZlcj1TYWZlQnVmZmVyfWZ1bmN0aW9uIFNhZmVCdWZmZXIoZSx0LHIpe3JldHVybiBuKGUsdCxyKX1TYWZlQnVmZmVyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTtjb3B5UHJvcHMobixTYWZlQnVmZmVyKTtTYWZlQnVmZmVyLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyXCIpfXJldHVybiBuKGUsdCxyKX07U2FmZUJ1ZmZlci5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYodHlwZW9mIGUhPT1cIm51bWJlclwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKX12YXIgaT1uKGUpO2lmKHQhPT11bmRlZmluZWQpe2lmKHR5cGVvZiByPT09XCJzdHJpbmdcIil7aS5maWxsKHQscil9ZWxzZXtpLmZpbGwodCl9fWVsc2V7aS5maWxsKDApfXJldHVybiBpfTtTYWZlQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIG4oZSl9O1NhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIGkuU2xvd0J1ZmZlcihlKX19LDY5MTE6ZnVuY3Rpb24oZSx0LHIpe1xuLyohIHNhZmUtYnVmZmVyLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG52YXIgaT1yKDQzMDApO3ZhciBuPWkuQnVmZmVyO2Z1bmN0aW9uIGNvcHlQcm9wcyhlLHQpe2Zvcih2YXIgciBpbiBlKXt0W3JdPWVbcl19fWlmKG4uZnJvbSYmbi5hbGxvYyYmbi5hbGxvY1Vuc2FmZSYmbi5hbGxvY1Vuc2FmZVNsb3cpe2UuZXhwb3J0cz1pfWVsc2V7Y29weVByb3BzKGksdCk7dC5CdWZmZXI9U2FmZUJ1ZmZlcn1mdW5jdGlvbiBTYWZlQnVmZmVyKGUsdCxyKXtyZXR1cm4gbihlLHQscil9U2FmZUJ1ZmZlci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7Y29weVByb3BzKG4sU2FmZUJ1ZmZlcik7U2FmZUJ1ZmZlci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtpZih0eXBlb2YgZT09PVwibnVtYmVyXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlclwiKX1yZXR1cm4gbihlLHQscil9O1NhZmVCdWZmZXIuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9dmFyIGk9bihlKTtpZih0IT09dW5kZWZpbmVkKXtpZih0eXBlb2Ygcj09PVwic3RyaW5nXCIpe2kuZmlsbCh0LHIpfWVsc2V7aS5maWxsKHQpfX1lbHNle2kuZmlsbCgwKX1yZXR1cm4gaX07U2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZih0eXBlb2YgZSE9PVwibnVtYmVyXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpfXJldHVybiBuKGUpfTtTYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZih0eXBlb2YgZSE9PVwibnVtYmVyXCIpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpfXJldHVybiBpLlNsb3dCdWZmZXIoZSl9fSwyODU4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDY5MTEpLkJ1ZmZlcjtmdW5jdGlvbiBIYXNoKGUsdCl7dGhpcy5fYmxvY2s9aS5hbGxvYyhlKTt0aGlzLl9maW5hbFNpemU9dDt0aGlzLl9ibG9ja1NpemU9ZTt0aGlzLl9sZW49MH1IYXNoLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe3Q9dHx8XCJ1dGY4XCI7ZT1pLmZyb20oZSx0KX12YXIgcj10aGlzLl9ibG9jazt2YXIgbj10aGlzLl9ibG9ja1NpemU7dmFyIGE9ZS5sZW5ndGg7dmFyIHM9dGhpcy5fbGVuO2Zvcih2YXIgbz0wO288YTspe3ZhciBoPXMlbjt2YXIgdT1NYXRoLm1pbihhLW8sbi1oKTtmb3IodmFyIGQ9MDtkPHU7ZCsrKXtyW2grZF09ZVtvK2RdfXMrPXU7bys9dTtpZihzJW49PT0wKXt0aGlzLl91cGRhdGUocil9fXRoaXMuX2xlbis9YTtyZXR1cm4gdGhpc307SGFzaC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbdF09MTI4O3RoaXMuX2Jsb2NrLmZpbGwoMCx0KzEpO2lmKHQ+PXRoaXMuX2ZpbmFsU2l6ZSl7dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt0aGlzLl9ibG9jay5maWxsKDApfXZhciByPXRoaXMuX2xlbio4O2lmKHI8PTQyOTQ5NjcyOTUpe3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUocix0aGlzLl9ibG9ja1NpemUtNCl9ZWxzZXt2YXIgaT0ociY0Mjk0OTY3Mjk1KT4+PjA7dmFyIG49KHItaSkvNDI5NDk2NzI5Njt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKG4sdGhpcy5fYmxvY2tTaXplLTgpO3RoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUoaSx0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgYT10aGlzLl9oYXNoKCk7cmV0dXJuIGU/YS50b1N0cmluZyhlKTphfTtIYXNoLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiX3VwZGF0ZSBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzXCIpfTtlLmV4cG9ydHM9SGFzaH0sNDM3MTpmdW5jdGlvbihlLHQscil7dmFyIGk9ZS5leHBvcnRzPWZ1bmN0aW9uIFNIQShlKXtlPWUudG9Mb3dlckNhc2UoKTt2YXIgdD1pW2VdO2lmKCF0KXRocm93IG5ldyBFcnJvcihlK1wiIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVlc3RzKVwiKTtyZXR1cm4gbmV3IHR9O2kuc2hhPXIoNDAxOCk7aS5zaGExPXIoNDE3OSk7aS5zaGEyMjQ9cig1MzIpO2kuc2hhMjU2PXIoMTg0Myk7aS5zaGEzODQ9cig3NDU1KTtpLnNoYTUxMj1yKDk5MzQpfSw0MDE4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDM3ODIpO3ZhciBuPXIoMjg1OCk7dmFyIGE9cig2OTExKS5CdWZmZXI7dmFyIHM9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4fDAsMzM5NTQ2OTc4MnwwXTt2YXIgbz1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIFNoYSgpe3RoaXMuaW5pdCgpO3RoaXMuX3c9bztuLmNhbGwodGhpcyw2NCw1Nil9aShTaGEsbik7U2hhLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5fYT0xNzMyNTg0MTkzO3RoaXMuX2I9NDAyMzIzMzQxNzt0aGlzLl9jPTI1NjIzODMxMDI7dGhpcy5fZD0yNzE3MzM4Nzg7dGhpcy5fZT0zMjg1Mzc3NTIwO3JldHVybiB0aGlzfTtmdW5jdGlvbiByb3RsNShlKXtyZXR1cm4gZTw8NXxlPj4+Mjd9ZnVuY3Rpb24gcm90bDMwKGUpe3JldHVybiBlPDwzMHxlPj4+Mn1mdW5jdGlvbiBmdChlLHQscixpKXtpZihlPT09MClyZXR1cm4gdCZyfH50Jmk7aWYoZT09PTIpcmV0dXJuIHQmcnx0Jml8ciZpO3JldHVybiB0XnJeaX1TaGEucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdzt2YXIgcj10aGlzLl9hfDA7dmFyIGk9dGhpcy5fYnwwO3ZhciBuPXRoaXMuX2N8MDt2YXIgYT10aGlzLl9kfDA7dmFyIG89dGhpcy5fZXwwO2Zvcih2YXIgaD0wO2g8MTY7KytoKXRbaF09ZS5yZWFkSW50MzJCRShoKjQpO2Zvcig7aDw4MDsrK2gpdFtoXT10W2gtM11edFtoLThdXnRbaC0xNF1edFtoLTE2XTtmb3IodmFyIHU9MDt1PDgwOysrdSl7dmFyIGQ9fn4odS8yMCk7dmFyIGM9cm90bDUocikrZnQoZCxpLG4sYSkrbyt0W3VdK3NbZF18MDtvPWE7YT1uO249cm90bDMwKGkpO2k9cjtyPWN9dGhpcy5fYT1yK3RoaXMuX2F8MDt0aGlzLl9iPWkrdGhpcy5fYnwwO3RoaXMuX2M9bit0aGlzLl9jfDA7dGhpcy5fZD1hK3RoaXMuX2R8MDt0aGlzLl9lPW8rdGhpcy5fZXwwfTtTaGEucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9YS5hbGxvY1Vuc2FmZSgyMCk7ZS53cml0ZUludDMyQkUodGhpcy5fYXwwLDApO2Uud3JpdGVJbnQzMkJFKHRoaXMuX2J8MCw0KTtlLndyaXRlSW50MzJCRSh0aGlzLl9jfDAsOCk7ZS53cml0ZUludDMyQkUodGhpcy5fZHwwLDEyKTtlLndyaXRlSW50MzJCRSh0aGlzLl9lfDAsMTYpO3JldHVybiBlfTtlLmV4cG9ydHM9U2hhfSw0MTc5OmZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1yKDM3ODIpO3ZhciBuPXIoMjg1OCk7dmFyIGE9cig2OTExKS5CdWZmZXI7dmFyIHM9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4fDAsMzM5NTQ2OTc4MnwwXTt2YXIgbz1uZXcgQXJyYXkoODApO2Z1bmN0aW9uIFNoYTEoKXt0aGlzLmluaXQoKTt0aGlzLl93PW87bi5jYWxsKHRoaXMsNjQsNTYpfWkoU2hhMSxuKTtTaGExLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5fYT0xNzMyNTg0MTkzO3RoaXMuX2I9NDAyMzIzMzQxNzt0aGlzLl9jPTI1NjIzODMxMDI7dGhpcy5fZD0yNzE3MzM4Nzg7dGhpcy5fZT0zMjg1Mzc3NTIwO3JldHVybiB0aGlzfTtmdW5jdGlvbiByb3RsMShlKXtyZXR1cm4gZTw8MXxlPj4+MzF9ZnVuY3Rpb24gcm90bDUoZSl7cmV0dXJuIGU8PDV8ZT4+PjI3fWZ1bmN0aW9uIHJvdGwzMChlKXtyZXR1cm4gZTw8MzB8ZT4+PjJ9ZnVuY3Rpb24gZnQoZSx0LHIsaSl7aWYoZT09PTApcmV0dXJuIHQmcnx+dCZpO2lmKGU9PT0yKXJldHVybiB0JnJ8dCZpfHImaTtyZXR1cm4gdF5yXml9U2hhMS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl93O3ZhciByPXRoaXMuX2F8MDt2YXIgaT10aGlzLl9ifDA7dmFyIG49dGhpcy5fY3wwO3ZhciBhPXRoaXMuX2R8MDt2YXIgbz10aGlzLl9lfDA7Zm9yKHZhciBoPTA7aDwxNjsrK2gpdFtoXT1lLnJlYWRJbnQzMkJFKGgqNCk7Zm9yKDtoPDgwOysraCl0W2hdPXJvdGwxKHRbaC0zXV50W2gtOF1edFtoLTE0XV50W2gtMTZdKTtmb3IodmFyIHU9MDt1PDgwOysrdSl7dmFyIGQ9fn4odS8yMCk7dmFyIGM9cm90bDUocikrZnQoZCxpLG4sYSkrbyt0W3VdK3NbZF18MDtvPWE7YT1uO249cm90bDMwKGkpO2k9cjtyPWN9dGhpcy5fYT1yK3RoaXMuX2F8MDt0aGlzLl9iPWkrdGhpcy5fYnwwO3RoaXMuX2M9bit0aGlzLl9jfDA7dGhpcy5fZD1hK3RoaXMuX2R8MDt0aGlzLl9lPW8rdGhpcy5fZXwwfTtTaGExLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBlPWEuYWxsb2NVbnNhZmUoMjApO2Uud3JpdGVJbnQzMkJFKHRoaXMuX2F8MCwwKTtlLndyaXRlSW50MzJCRSh0aGlzLl9ifDAsNCk7ZS53cml0ZUludDMyQkUodGhpcy5fY3wwLDgpO2Uud3JpdGVJbnQzMkJFKHRoaXMuX2R8MCwxMik7ZS53cml0ZUludDMyQkUodGhpcy5fZXwwLDE2KTtyZXR1cm4gZX07ZS5leHBvcnRzPVNoYTF9LDUzMjpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDE4NDMpO3ZhciBhPXIoMjg1OCk7dmFyIHM9cig2OTExKS5CdWZmZXI7dmFyIG89bmV3IEFycmF5KDY0KTtmdW5jdGlvbiBTaGEyMjQoKXt0aGlzLmluaXQoKTt0aGlzLl93PW87YS5jYWxsKHRoaXMsNjQsNTYpfWkoU2hhMjI0LG4pO1NoYTIyNC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuX2E9MzIzODM3MTAzMjt0aGlzLl9iPTkxNDE1MDY2Mzt0aGlzLl9jPTgxMjcwMjk5OTt0aGlzLl9kPTQxNDQ5MTI2OTc7dGhpcy5fZT00MjkwNzc1ODU3O3RoaXMuX2Y9MTc1MDYwMzAyNTt0aGlzLl9nPTE2OTQwNzY4Mzk7dGhpcy5faD0zMjA0MDc1NDI4O3JldHVybiB0aGlzfTtTaGEyMjQucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7dmFyIGU9cy5hbGxvY1Vuc2FmZSgyOCk7ZS53cml0ZUludDMyQkUodGhpcy5fYSwwKTtlLndyaXRlSW50MzJCRSh0aGlzLl9iLDQpO2Uud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCk7ZS53cml0ZUludDMyQkUodGhpcy5fZCwxMik7ZS53cml0ZUludDMyQkUodGhpcy5fZSwxNik7ZS53cml0ZUludDMyQkUodGhpcy5fZiwyMCk7ZS53cml0ZUludDMyQkUodGhpcy5fZywyNCk7cmV0dXJuIGV9O2UuZXhwb3J0cz1TaGEyMjR9LDE4NDM6ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPXIoMzc4Mik7dmFyIG49cigyODU4KTt2YXIgYT1yKDY5MTEpLkJ1ZmZlcjt2YXIgcz1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XTt2YXIgbz1uZXcgQXJyYXkoNjQpO2Z1bmN0aW9uIFNoYTI1Nigpe3RoaXMuaW5pdCgpO3RoaXMuX3c9bztuLmNhbGwodGhpcyw2NCw1Nil9aShTaGEyNTYsbik7U2hhMjU2LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5fYT0xNzc5MDMzNzAzO3RoaXMuX2I9MzE0NDEzNDI3Nzt0aGlzLl9jPTEwMTM5MDQyNDI7dGhpcy5fZD0yNzczNDgwNzYyO3RoaXMuX2U9MTM1OTg5MzExOTt0aGlzLl9mPTI2MDA4MjI5MjQ7dGhpcy5fZz01Mjg3MzQ2MzU7dGhpcy5faD0xNTQxNDU5MjI1O3JldHVybiB0aGlzfTtmdW5jdGlvbiBjaChlLHQscil7cmV0dXJuIHJeZSYodF5yKX1mdW5jdGlvbiBtYWooZSx0LHIpe3JldHVybiBlJnR8ciYoZXx0KX1mdW5jdGlvbiBzaWdtYTAoZSl7cmV0dXJuKGU+Pj4yfGU8PDMwKV4oZT4+PjEzfGU8PDE5KV4oZT4+PjIyfGU8PDEwKX1mdW5jdGlvbiBzaWdtYTEoZSl7cmV0dXJuKGU+Pj42fGU8PDI2KV4oZT4+PjExfGU8PDIxKV4oZT4+PjI1fGU8PDcpfWZ1bmN0aW9uIGdhbW1hMChlKXtyZXR1cm4oZT4+Pjd8ZTw8MjUpXihlPj4+MTh8ZTw8MTQpXmU+Pj4zfWZ1bmN0aW9uIGdhbW1hMShlKXtyZXR1cm4oZT4+PjE3fGU8PDE1KV4oZT4+PjE5fGU8PDEzKV5lPj4+MTB9U2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3c7dmFyIHI9dGhpcy5fYXwwO3ZhciBpPXRoaXMuX2J8MDt2YXIgbj10aGlzLl9jfDA7dmFyIGE9dGhpcy5fZHwwO3ZhciBvPXRoaXMuX2V8MDt2YXIgaD10aGlzLl9mfDA7dmFyIHU9dGhpcy5fZ3wwO3ZhciBkPXRoaXMuX2h8MDtmb3IodmFyIGM9MDtjPDE2OysrYyl0W2NdPWUucmVhZEludDMyQkUoYyo0KTtmb3IoO2M8NjQ7KytjKXRbY109Z2FtbWExKHRbYy0yXSkrdFtjLTddK2dhbW1hMCh0W2MtMTVdKSt0W2MtMTZdfDA7Zm9yKHZhciBsPTA7bDw2NDsrK2wpe3ZhciBwPWQrc2lnbWExKG8pK2NoKG8saCx1KStzW2xdK3RbbF18MDt2YXIgdj1zaWdtYTAocikrbWFqKHIsaSxuKXwwO2Q9dTt1PWg7aD1vO289YStwfDA7YT1uO249aTtpPXI7cj1wK3Z8MH10aGlzLl9hPXIrdGhpcy5fYXwwO3RoaXMuX2I9aSt0aGlzLl9ifDA7dGhpcy5fYz1uK3RoaXMuX2N8MDt0aGlzLl9kPWErdGhpcy5fZHwwO3RoaXMuX2U9byt0aGlzLl9lfDA7dGhpcy5fZj1oK3RoaXMuX2Z8MDt0aGlzLl9nPXUrdGhpcy5fZ3wwO3RoaXMuX2g9ZCt0aGlzLl9ofDB9O1NoYTI1Ni5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgZT1hLmFsbG9jVW5zYWZlKDMyKTtlLndyaXRlSW50MzJCRSh0aGlzLl9hLDApO2Uud3JpdGVJbnQzMkJFKHRoaXMuX2IsNCk7ZS53cml0ZUludDMyQkUodGhpcy5fYyw4KTtlLndyaXRlSW50MzJCRSh0aGlzLl9kLDEyKTtlLndyaXRlSW50MzJCRSh0aGlzLl9lLDE2KTtlLndyaXRlSW50MzJCRSh0aGlzLl9mLDIwKTtlLndyaXRlSW50MzJCRSh0aGlzLl9nLDI0KTtlLndyaXRlSW50MzJCRSh0aGlzLl9oLDI4KTtyZXR1cm4gZX07ZS5leHBvcnRzPVNoYTI1Nn0sNzQ1NTpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDk5MzQpO3ZhciBhPXIoMjg1OCk7dmFyIHM9cig2OTExKS5CdWZmZXI7dmFyIG89bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24gU2hhMzg0KCl7dGhpcy5pbml0KCk7dGhpcy5fdz1vO2EuY2FsbCh0aGlzLDEyOCwxMTIpfWkoU2hhMzg0LG4pO1NoYTM4NC5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuX2FoPTM0MTgwNzAzNjU7dGhpcy5fYmg9MTY1NDI3MDI1MDt0aGlzLl9jaD0yNDM4NTI5MzcwO3RoaXMuX2RoPTM1NTQ2MjM2MDt0aGlzLl9laD0xNzMxNDA1NDE1O3RoaXMuX2ZoPTIzOTQxODAyMzE7dGhpcy5fZ2g9MzY3NTAwODUyNTt0aGlzLl9oaD0xMjAzMDYyODEzO3RoaXMuX2FsPTMyMzgzNzEwMzI7dGhpcy5fYmw9OTE0MTUwNjYzO3RoaXMuX2NsPTgxMjcwMjk5OTt0aGlzLl9kbD00MTQ0OTEyNjk3O3RoaXMuX2VsPTQyOTA3NzU4NTc7dGhpcy5fZmw9MTc1MDYwMzAyNTt0aGlzLl9nbD0xNjk0MDc2ODM5O3RoaXMuX2hsPTMyMDQwNzU0Mjg7cmV0dXJuIHRoaXN9O1NoYTM4NC5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgZT1zLmFsbG9jVW5zYWZlKDQ4KTtmdW5jdGlvbiB3cml0ZUludDY0QkUodCxyLGkpe2Uud3JpdGVJbnQzMkJFKHQsaSk7ZS53cml0ZUludDMyQkUocixpKzQpfXdyaXRlSW50NjRCRSh0aGlzLl9haCx0aGlzLl9hbCwwKTt3cml0ZUludDY0QkUodGhpcy5fYmgsdGhpcy5fYmwsOCk7d3JpdGVJbnQ2NEJFKHRoaXMuX2NoLHRoaXMuX2NsLDE2KTt3cml0ZUludDY0QkUodGhpcy5fZGgsdGhpcy5fZGwsMjQpO3dyaXRlSW50NjRCRSh0aGlzLl9laCx0aGlzLl9lbCwzMik7d3JpdGVJbnQ2NEJFKHRoaXMuX2ZoLHRoaXMuX2ZsLDQwKTtyZXR1cm4gZX07ZS5leHBvcnRzPVNoYTM4NH0sOTkzNDpmdW5jdGlvbihlLHQscil7dmFyIGk9cigzNzgyKTt2YXIgbj1yKDI4NTgpO3ZhciBhPXIoNjkxMSkuQnVmZmVyO3ZhciBzPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV07dmFyIG89bmV3IEFycmF5KDE2MCk7ZnVuY3Rpb24gU2hhNTEyKCl7dGhpcy5pbml0KCk7dGhpcy5fdz1vO24uY2FsbCh0aGlzLDEyOCwxMTIpfWkoU2hhNTEyLG4pO1NoYTUxMi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3RoaXMuX2FoPTE3NzkwMzM3MDM7dGhpcy5fYmg9MzE0NDEzNDI3Nzt0aGlzLl9jaD0xMDEzOTA0MjQyO3RoaXMuX2RoPTI3NzM0ODA3NjI7dGhpcy5fZWg9MTM1OTg5MzExOTt0aGlzLl9maD0yNjAwODIyOTI0O3RoaXMuX2doPTUyODczNDYzNTt0aGlzLl9oaD0xNTQxNDU5MjI1O3RoaXMuX2FsPTQwODkyMzU3MjA7dGhpcy5fYmw9MjIyNzg3MzU5NTt0aGlzLl9jbD00MjcxMTc1NzIzO3RoaXMuX2RsPTE1OTU3NTAxMjk7dGhpcy5fZWw9MjkxNzU2NTEzNzt0aGlzLl9mbD03MjU1MTExOTk7dGhpcy5fZ2w9NDIxNTM4OTU0Nzt0aGlzLl9obD0zMjcwMzMyMDk7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIENoKGUsdCxyKXtyZXR1cm4gcl5lJih0XnIpfWZ1bmN0aW9uIG1haihlLHQscil7cmV0dXJuIGUmdHxyJihlfHQpfWZ1bmN0aW9uIHNpZ21hMChlLHQpe3JldHVybihlPj4+Mjh8dDw8NCleKHQ+Pj4yfGU8PDMwKV4odD4+Pjd8ZTw8MjUpfWZ1bmN0aW9uIHNpZ21hMShlLHQpe3JldHVybihlPj4+MTR8dDw8MTgpXihlPj4+MTh8dDw8MTQpXih0Pj4+OXxlPDwyMyl9ZnVuY3Rpb24gR2FtbWEwKGUsdCl7cmV0dXJuKGU+Pj4xfHQ8PDMxKV4oZT4+Pjh8dDw8MjQpXmU+Pj43fWZ1bmN0aW9uIEdhbW1hMGwoZSx0KXtyZXR1cm4oZT4+PjF8dDw8MzEpXihlPj4+OHx0PDwyNCleKGU+Pj43fHQ8PDI1KX1mdW5jdGlvbiBHYW1tYTEoZSx0KXtyZXR1cm4oZT4+PjE5fHQ8PDEzKV4odD4+PjI5fGU8PDMpXmU+Pj42fWZ1bmN0aW9uIEdhbW1hMWwoZSx0KXtyZXR1cm4oZT4+PjE5fHQ8PDEzKV4odD4+PjI5fGU8PDMpXihlPj4+Nnx0PDwyNil9ZnVuY3Rpb24gZ2V0Q2FycnkoZSx0KXtyZXR1cm4gZT4+PjA8dD4+PjA/MTowfVNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl93O3ZhciByPXRoaXMuX2FofDA7dmFyIGk9dGhpcy5fYmh8MDt2YXIgbj10aGlzLl9jaHwwO3ZhciBhPXRoaXMuX2RofDA7dmFyIG89dGhpcy5fZWh8MDt2YXIgaD10aGlzLl9maHwwO3ZhciB1PXRoaXMuX2dofDA7dmFyIGQ9dGhpcy5faGh8MDt2YXIgYz10aGlzLl9hbHwwO3ZhciBsPXRoaXMuX2JsfDA7dmFyIHA9dGhpcy5fY2x8MDt2YXIgdj10aGlzLl9kbHwwO3ZhciBiPXRoaXMuX2VsfDA7dmFyIG09dGhpcy5fZmx8MDt2YXIgeT10aGlzLl9nbHwwO3ZhciBnPXRoaXMuX2hsfDA7Zm9yKHZhciBfPTA7XzwzMjtfKz0yKXt0W19dPWUucmVhZEludDMyQkUoXyo0KTt0W18rMV09ZS5yZWFkSW50MzJCRShfKjQrNCl9Zm9yKDtfPDE2MDtfKz0yKXt2YXIgdz10W18tMTUqMl07dmFyIE09dFtfLTE1KjIrMV07dmFyIEI9R2FtbWEwKHcsTSk7dmFyIEU9R2FtbWEwbChNLHcpO3c9dFtfLTIqMl07TT10W18tMioyKzFdO3ZhciBrPUdhbW1hMSh3LE0pO3ZhciBBPUdhbW1hMWwoTSx3KTt2YXIgTj10W18tNyoyXTt2YXIgUD10W18tNyoyKzFdO3ZhciB4PXRbXy0xNioyXTt2YXIgST10W18tMTYqMisxXTt2YXIgQz1FK1B8MDt2YXIgRD1CK04rZ2V0Q2FycnkoQyxFKXwwO0M9QytBfDA7RD1EK2srZ2V0Q2FycnkoQyxBKXwwO0M9QytJfDA7RD1EK3grZ2V0Q2FycnkoQyxJKXwwO3RbX109RDt0W18rMV09Q31mb3IodmFyIFQ9MDtUPDE2MDtUKz0yKXtEPXRbVF07Qz10W1QrMV07dmFyIGo9bWFqKHIsaSxuKTt2YXIgcT1tYWooYyxsLHApO3ZhciBPPXNpZ21hMChyLGMpO3ZhciBIPXNpZ21hMChjLHIpO3ZhciBMPXNpZ21hMShvLGIpO3ZhciB6PXNpZ21hMShiLG8pO3ZhciBGPXNbVF07dmFyIFU9c1tUKzFdO3ZhciBXPUNoKG8saCx1KTt2YXIgVj1DaChiLG0seSk7dmFyIEc9Zyt6fDA7dmFyIEo9ZCtMK2dldENhcnJ5KEcsZyl8MDtHPUcrVnwwO0o9SitXK2dldENhcnJ5KEcsVil8MDtHPUcrVXwwO0o9SitGK2dldENhcnJ5KEcsVSl8MDtHPUcrQ3wwO0o9SitEK2dldENhcnJ5KEcsQyl8MDt2YXIgWj1IK3F8MDt2YXIgWD1PK2orZ2V0Q2FycnkoWixIKXwwO2Q9dTtnPXk7dT1oO3k9bTtoPW87bT1iO2I9ditHfDA7bz1hK0orZ2V0Q2FycnkoYix2KXwwO2E9bjt2PXA7bj1pO3A9bDtpPXI7bD1jO2M9RytafDA7cj1KK1grZ2V0Q2FycnkoYyxHKXwwfXRoaXMuX2FsPXRoaXMuX2FsK2N8MDt0aGlzLl9ibD10aGlzLl9ibCtsfDA7dGhpcy5fY2w9dGhpcy5fY2wrcHwwO3RoaXMuX2RsPXRoaXMuX2RsK3Z8MDt0aGlzLl9lbD10aGlzLl9lbCtifDA7dGhpcy5fZmw9dGhpcy5fZmwrbXwwO3RoaXMuX2dsPXRoaXMuX2dsK3l8MDt0aGlzLl9obD10aGlzLl9obCtnfDA7dGhpcy5fYWg9dGhpcy5fYWgrcitnZXRDYXJyeSh0aGlzLl9hbCxjKXwwO3RoaXMuX2JoPXRoaXMuX2JoK2krZ2V0Q2FycnkodGhpcy5fYmwsbCl8MDt0aGlzLl9jaD10aGlzLl9jaCtuK2dldENhcnJ5KHRoaXMuX2NsLHApfDA7dGhpcy5fZGg9dGhpcy5fZGgrYStnZXRDYXJyeSh0aGlzLl9kbCx2KXwwO3RoaXMuX2VoPXRoaXMuX2VoK28rZ2V0Q2FycnkodGhpcy5fZWwsYil8MDt0aGlzLl9maD10aGlzLl9maCtoK2dldENhcnJ5KHRoaXMuX2ZsLG0pfDA7dGhpcy5fZ2g9dGhpcy5fZ2grdStnZXRDYXJyeSh0aGlzLl9nbCx5KXwwO3RoaXMuX2hoPXRoaXMuX2hoK2QrZ2V0Q2FycnkodGhpcy5faGwsZyl8MH07U2hhNTEyLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciBlPWEuYWxsb2NVbnNhZmUoNjQpO2Z1bmN0aW9uIHdyaXRlSW50NjRCRSh0LHIsaSl7ZS53cml0ZUludDMyQkUodCxpKTtlLndyaXRlSW50MzJCRShyLGkrNCl9d3JpdGVJbnQ2NEJFKHRoaXMuX2FoLHRoaXMuX2FsLDApO3dyaXRlSW50NjRCRSh0aGlzLl9iaCx0aGlzLl9ibCw4KTt3cml0ZUludDY0QkUodGhpcy5fY2gsdGhpcy5fY2wsMTYpO3dyaXRlSW50NjRCRSh0aGlzLl9kaCx0aGlzLl9kbCwyNCk7d3JpdGVJbnQ2NEJFKHRoaXMuX2VoLHRoaXMuX2VsLDMyKTt3cml0ZUludDY0QkUodGhpcy5fZmgsdGhpcy5fZmwsNDApO3dyaXRlSW50NjRCRSh0aGlzLl9naCx0aGlzLl9nbCw0OCk7d3JpdGVJbnQ2NEJFKHRoaXMuX2hoLHRoaXMuX2hsLDU2KTtyZXR1cm4gZX07ZS5leHBvcnRzPVNoYTUxMn0sMzcwNDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig1MDU1KS5CdWZmZXI7dmFyIG49aS5pc0VuY29kaW5nfHxmdW5jdGlvbihlKXtlPVwiXCIrZTtzd2l0Y2goZSYmZS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOmNhc2VcInJhd1wiOnJldHVybiB0cnVlO2RlZmF1bHQ6cmV0dXJuIGZhbHNlfX07ZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGUpe2lmKCFlKXJldHVyblwidXRmOFwiO3ZhciB0O3doaWxlKHRydWUpe3N3aXRjaChlKXtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm5cInV0ZjhcIjtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm5cInV0ZjE2bGVcIjtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm5cImxhdGluMVwiO2Nhc2VcImJhc2U2NFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiaGV4XCI6cmV0dXJuIGU7ZGVmYXVsdDppZih0KXJldHVybjtlPShcIlwiK2UpLnRvTG93ZXJDYXNlKCk7dD10cnVlfX19ZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZSl7dmFyIHQ9X25vcm1hbGl6ZUVuY29kaW5nKGUpO2lmKHR5cGVvZiB0IT09XCJzdHJpbmdcIiYmKGkuaXNFbmNvZGluZz09PW58fCFuKGUpKSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitlKTtyZXR1cm4gdHx8ZX10LnM9U3RyaW5nRGVjb2RlcjtmdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGUpe3RoaXMuZW5jb2Rpbmc9bm9ybWFsaXplRW5jb2RpbmcoZSk7dmFyIHQ7c3dpdGNoKHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9dXRmMTZUZXh0O3RoaXMuZW5kPXV0ZjE2RW5kO3Q9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD11dGY4RmlsbExhc3Q7dD00O2JyZWFrO2Nhc2VcImJhc2U2NFwiOnRoaXMudGV4dD1iYXNlNjRUZXh0O3RoaXMuZW5kPWJhc2U2NEVuZDt0PTM7YnJlYWs7ZGVmYXVsdDp0aGlzLndyaXRlPXNpbXBsZVdyaXRlO3RoaXMuZW5kPXNpbXBsZUVuZDtyZXR1cm59dGhpcy5sYXN0TmVlZD0wO3RoaXMubGFzdFRvdGFsPTA7dGhpcy5sYXN0Q2hhcj1pLmFsbG9jVW5zYWZlKHQpfVN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe2lmKGUubGVuZ3RoPT09MClyZXR1cm5cIlwiO3ZhciB0O3ZhciByO2lmKHRoaXMubGFzdE5lZWQpe3Q9dGhpcy5maWxsTGFzdChlKTtpZih0PT09dW5kZWZpbmVkKXJldHVyblwiXCI7cj10aGlzLmxhc3ROZWVkO3RoaXMubGFzdE5lZWQ9MH1lbHNle3I9MH1pZihyPGUubGVuZ3RoKXJldHVybiB0P3QrdGhpcy50ZXh0KGUscik6dGhpcy50ZXh0KGUscik7cmV0dXJuIHR8fFwiXCJ9O1N0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZD11dGY4RW5kO1N0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQ9dXRmOFRleHQ7U3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24oZSl7aWYodGhpcy5sYXN0TmVlZDw9ZS5sZW5ndGgpe2UuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKTtyZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpfWUuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCxlLmxlbmd0aCk7dGhpcy5sYXN0TmVlZC09ZS5sZW5ndGh9O2Z1bmN0aW9uIHV0ZjhDaGVja0J5dGUoZSl7aWYoZTw9MTI3KXJldHVybiAwO2Vsc2UgaWYoZT4+NT09PTYpcmV0dXJuIDI7ZWxzZSBpZihlPj40PT09MTQpcmV0dXJuIDM7ZWxzZSBpZihlPj4zPT09MzApcmV0dXJuIDQ7cmV0dXJuIGU+PjY9PT0yPy0xOi0yfWZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoZSx0LHIpe3ZhciBpPXQubGVuZ3RoLTE7aWYoaTxyKXJldHVybiAwO3ZhciBuPXV0ZjhDaGVja0J5dGUodFtpXSk7aWYobj49MCl7aWYobj4wKWUubGFzdE5lZWQ9bi0xO3JldHVybiBufWlmKC0taTxyfHxuPT09LTIpcmV0dXJuIDA7bj11dGY4Q2hlY2tCeXRlKHRbaV0pO2lmKG4+PTApe2lmKG4+MCllLmxhc3ROZWVkPW4tMjtyZXR1cm4gbn1pZigtLWk8cnx8bj09PS0yKXJldHVybiAwO249dXRmOENoZWNrQnl0ZSh0W2ldKTtpZihuPj0wKXtpZihuPjApe2lmKG49PT0yKW49MDtlbHNlIGUubGFzdE5lZWQ9bi0zfXJldHVybiBufXJldHVybiAwfWZ1bmN0aW9uIHV0ZjhDaGVja0V4dHJhQnl0ZXMoZSx0LHIpe2lmKCh0WzBdJjE5MikhPT0xMjgpe2UubGFzdE5lZWQ9MDtyZXR1cm5cIu+/vVwifWlmKGUubGFzdE5lZWQ+MSYmdC5sZW5ndGg+MSl7aWYoKHRbMV0mMTkyKSE9PTEyOCl7ZS5sYXN0TmVlZD0xO3JldHVyblwi77+9XCJ9aWYoZS5sYXN0TmVlZD4yJiZ0Lmxlbmd0aD4yKXtpZigodFsyXSYxOTIpIT09MTI4KXtlLmxhc3ROZWVkPTI7cmV0dXJuXCLvv71cIn19fX1mdW5jdGlvbiB1dGY4RmlsbExhc3QoZSl7dmFyIHQ9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDt2YXIgcj11dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsZSx0KTtpZihyIT09dW5kZWZpbmVkKXJldHVybiByO2lmKHRoaXMubGFzdE5lZWQ8PWUubGVuZ3RoKXtlLmNvcHkodGhpcy5sYXN0Q2hhcix0LDAsdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKX1lLmNvcHkodGhpcy5sYXN0Q2hhcix0LDAsZS5sZW5ndGgpO3RoaXMubGFzdE5lZWQtPWUubGVuZ3RofWZ1bmN0aW9uIHV0ZjhUZXh0KGUsdCl7dmFyIHI9dXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLGUsdCk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGUudG9TdHJpbmcoXCJ1dGY4XCIsdCk7dGhpcy5sYXN0VG90YWw9cjt2YXIgaT1lLmxlbmd0aC0oci10aGlzLmxhc3ROZWVkKTtlLmNvcHkodGhpcy5sYXN0Q2hhciwwLGkpO3JldHVybiBlLnRvU3RyaW5nKFwidXRmOFwiLHQsaSl9ZnVuY3Rpb24gdXRmOEVuZChlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7aWYodGhpcy5sYXN0TmVlZClyZXR1cm4gdCtcIu+/vVwiO3JldHVybiB0fWZ1bmN0aW9uIHV0ZjE2VGV4dChlLHQpe2lmKChlLmxlbmd0aC10KSUyPT09MCl7dmFyIHI9ZS50b1N0cmluZyhcInV0ZjE2bGVcIix0KTtpZihyKXt2YXIgaT1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk7aWYoaT49NTUyOTYmJmk8PTU2MzE5KXt0aGlzLmxhc3ROZWVkPTI7dGhpcy5sYXN0VG90YWw9NDt0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMl07dGhpcy5sYXN0Q2hhclsxXT1lW2UubGVuZ3RoLTFdO3JldHVybiByLnNsaWNlKDAsLTEpfX1yZXR1cm4gcn10aGlzLmxhc3ROZWVkPTE7dGhpcy5sYXN0VG90YWw9Mjt0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMV07cmV0dXJuIGUudG9TdHJpbmcoXCJ1dGYxNmxlXCIsdCxlLmxlbmd0aC0xKX1mdW5jdGlvbiB1dGYxNkVuZChlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIHI9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gdCt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwidXRmMTZsZVwiLDAscil9cmV0dXJuIHR9ZnVuY3Rpb24gYmFzZTY0VGV4dChlLHQpe3ZhciByPShlLmxlbmd0aC10KSUzO2lmKHI9PT0wKXJldHVybiBlLnRvU3RyaW5nKFwiYmFzZTY0XCIsdCk7dGhpcy5sYXN0TmVlZD0zLXI7dGhpcy5sYXN0VG90YWw9MztpZihyPT09MSl7dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTFdfWVsc2V7dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdO3RoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXX1yZXR1cm4gZS50b1N0cmluZyhcImJhc2U2NFwiLHQsZS5sZW5ndGgtcil9ZnVuY3Rpb24gYmFzZTY0RW5kKGUpe3ZhciB0PWUmJmUubGVuZ3RoP3RoaXMud3JpdGUoZSk6XCJcIjtpZih0aGlzLmxhc3ROZWVkKXJldHVybiB0K3RoaXMubGFzdENoYXIudG9TdHJpbmcoXCJiYXNlNjRcIiwwLDMtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHR9ZnVuY3Rpb24gc2ltcGxlV3JpdGUoZSl7cmV0dXJuIGUudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gc2ltcGxlRW5kKGUpe3JldHVybiBlJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCJ9fSw2NzY5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1kZXByZWNhdGU7ZnVuY3Rpb24gZGVwcmVjYXRlKGUsdCl7aWYoY29uZmlnKFwibm9EZXByZWNhdGlvblwiKSl7cmV0dXJuIGV9dmFyIHI9ZmFsc2U7ZnVuY3Rpb24gZGVwcmVjYXRlZCgpe2lmKCFyKXtpZihjb25maWcoXCJ0aHJvd0RlcHJlY2F0aW9uXCIpKXt0aHJvdyBuZXcgRXJyb3IodCl9ZWxzZSBpZihjb25maWcoXCJ0cmFjZURlcHJlY2F0aW9uXCIpKXtjb25zb2xlLnRyYWNlKHQpfWVsc2V7Y29uc29sZS53YXJuKHQpfXI9dHJ1ZX1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGRlcHJlY2F0ZWR9ZnVuY3Rpb24gY29uZmlnKGUpe3RyeXtpZighZ2xvYmFsLmxvY2FsU3RvcmFnZSlyZXR1cm4gZmFsc2V9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlfXZhciB0PWdsb2JhbC5sb2NhbFN0b3JhZ2VbZV07aWYobnVsbD09dClyZXR1cm4gZmFsc2U7cmV0dXJuIFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpPT09XCJ0cnVlXCJ9fSw0MzAwOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwiYnVmZmVyXCIpfSw2MTEzOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwiY3J5cHRvXCIpfSwyMzYxOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwiZXZlbnRzXCIpfSwyNzgxOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwic3RyZWFtXCIpfSwxNTc2OmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwic3RyaW5nX2RlY29kZXJcIil9LDM4Mzc6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPXJlcXVpcmUoXCJ1dGlsXCIpfSw2MTQ0OmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwidm1cIil9LDU4NjY6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPUpTT04ucGFyc2UoJ3tcImFlcy0xMjgtZWNiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MCxcIm1vZGVcIjpcIkVDQlwiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMtMTkyLWVjYlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjAsXCJtb2RlXCI6XCJFQ0JcIixcInR5cGVcIjpcImJsb2NrXCJ9LFwiYWVzLTI1Ni1lY2JcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjowLFwibW9kZVwiOlwiRUNCXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlcy0xMjgtY2JjXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MTYsXCJtb2RlXCI6XCJDQkNcIixcInR5cGVcIjpcImJsb2NrXCJ9LFwiYWVzLTE5Mi1jYmNcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MTkyLFwiaXZcIjoxNixcIm1vZGVcIjpcIkNCQ1wiLFwidHlwZVwiOlwiYmxvY2tcIn0sXCJhZXMtMjU2LWNiY1wiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoyNTYsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0JDXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlczEyOFwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0JDXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlczE5MlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0JDXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlczI1NlwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoyNTYsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0JDXCIsXCJ0eXBlXCI6XCJibG9ja1wifSxcImFlcy0xMjgtY2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xOTItY2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0yNTYtY2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xMjgtY2ZiOFwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCOFwiLFwidHlwZVwiOlwic3RyZWFtXCJ9LFwiYWVzLTE5Mi1jZmI4XCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkI4XCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMjU2LWNmYjhcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNGQjhcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xMjgtY2ZiMVwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxMjgsXCJpdlwiOjE2LFwibW9kZVwiOlwiQ0ZCMVwiLFwidHlwZVwiOlwic3RyZWFtXCJ9LFwiYWVzLTE5Mi1jZmIxXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJDRkIxXCIsXCJ0eXBlXCI6XCJzdHJlYW1cIn0sXCJhZXMtMjU2LWNmYjFcIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjoxNixcIm1vZGVcIjpcIkNGQjFcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xMjgtb2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MTYsXCJtb2RlXCI6XCJPRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xOTItb2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJPRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0yNTYtb2ZiXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTYsXCJtb2RlXCI6XCJPRkJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xMjgtY3RyXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MTYsXCJtb2RlXCI6XCJDVFJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xOTItY3RyXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjE5MixcIml2XCI6MTYsXCJtb2RlXCI6XCJDVFJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0yNTYtY3RyXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjI1NixcIml2XCI6MTYsXCJtb2RlXCI6XCJDVFJcIixcInR5cGVcIjpcInN0cmVhbVwifSxcImFlcy0xMjgtZ2NtXCI6e1wiY2lwaGVyXCI6XCJBRVNcIixcImtleVwiOjEyOCxcIml2XCI6MTIsXCJtb2RlXCI6XCJHQ01cIixcInR5cGVcIjpcImF1dGhcIn0sXCJhZXMtMTkyLWdjbVwiOntcImNpcGhlclwiOlwiQUVTXCIsXCJrZXlcIjoxOTIsXCJpdlwiOjEyLFwibW9kZVwiOlwiR0NNXCIsXCJ0eXBlXCI6XCJhdXRoXCJ9LFwiYWVzLTI1Ni1nY21cIjp7XCJjaXBoZXJcIjpcIkFFU1wiLFwia2V5XCI6MjU2LFwiaXZcIjoxMixcIm1vZGVcIjpcIkdDTVwiLFwidHlwZVwiOlwiYXV0aFwifX0nKX0sMjkwODpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgne1wic2hhMjI0V2l0aFJTQUVuY3J5cHRpb25cIjp7XCJzaWduXCI6XCJyc2FcIixcImhhc2hcIjpcInNoYTIyNFwiLFwiaWRcIjpcIjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjXCJ9LFwiUlNBLVNIQTIyNFwiOntcInNpZ25cIjpcImVjZHNhL3JzYVwiLFwiaGFzaFwiOlwic2hhMjI0XCIsXCJpZFwiOlwiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWNcIn0sXCJzaGEyNTZXaXRoUlNBRW5jcnlwdGlvblwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwic2hhMjU2XCIsXCJpZFwiOlwiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjBcIn0sXCJSU0EtU0hBMjU2XCI6e1wic2lnblwiOlwiZWNkc2EvcnNhXCIsXCJoYXNoXCI6XCJzaGEyNTZcIixcImlkXCI6XCIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMFwifSxcInNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uXCI6e1wic2lnblwiOlwicnNhXCIsXCJoYXNoXCI6XCJzaGEzODRcIixcImlkXCI6XCIzMDQxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDIwNTAwMDQzMFwifSxcIlJTQS1TSEEzODRcIjp7XCJzaWduXCI6XCJlY2RzYS9yc2FcIixcImhhc2hcIjpcInNoYTM4NFwiLFwiaWRcIjpcIjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwXCJ9LFwic2hhNTEyV2l0aFJTQUVuY3J5cHRpb25cIjp7XCJzaWduXCI6XCJyc2FcIixcImhhc2hcIjpcInNoYTUxMlwiLFwiaWRcIjpcIjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwXCJ9LFwiUlNBLVNIQTUxMlwiOntcInNpZ25cIjpcImVjZHNhL3JzYVwiLFwiaGFzaFwiOlwic2hhNTEyXCIsXCJpZFwiOlwiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDBcIn0sXCJSU0EtU0hBMVwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwic2hhMVwiLFwiaWRcIjpcIjMwMjEzMDA5MDYwNTJiMGUwMzAyMWEwNTAwMDQxNFwifSxcImVjZHNhLXdpdGgtU0hBMVwiOntcInNpZ25cIjpcImVjZHNhXCIsXCJoYXNoXCI6XCJzaGExXCIsXCJpZFwiOlwiXCJ9LFwic2hhMjU2XCI6e1wic2lnblwiOlwiZWNkc2FcIixcImhhc2hcIjpcInNoYTI1NlwiLFwiaWRcIjpcIlwifSxcInNoYTIyNFwiOntcInNpZ25cIjpcImVjZHNhXCIsXCJoYXNoXCI6XCJzaGEyMjRcIixcImlkXCI6XCJcIn0sXCJzaGEzODRcIjp7XCJzaWduXCI6XCJlY2RzYVwiLFwiaGFzaFwiOlwic2hhMzg0XCIsXCJpZFwiOlwiXCJ9LFwic2hhNTEyXCI6e1wic2lnblwiOlwiZWNkc2FcIixcImhhc2hcIjpcInNoYTUxMlwiLFwiaWRcIjpcIlwifSxcIkRTQS1TSEFcIjp7XCJzaWduXCI6XCJkc2FcIixcImhhc2hcIjpcInNoYTFcIixcImlkXCI6XCJcIn0sXCJEU0EtU0hBMVwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMVwiLFwiaWRcIjpcIlwifSxcIkRTQVwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMVwiLFwiaWRcIjpcIlwifSxcIkRTQS1XSVRILVNIQTIyNFwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMjI0XCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVNIQTIyNFwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhMjI0XCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVdJVEgtU0hBMjU2XCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGEyNTZcIixcImlkXCI6XCJcIn0sXCJEU0EtU0hBMjU2XCI6e1wic2lnblwiOlwiZHNhXCIsXCJoYXNoXCI6XCJzaGEyNTZcIixcImlkXCI6XCJcIn0sXCJEU0EtV0lUSC1TSEEzODRcIjp7XCJzaWduXCI6XCJkc2FcIixcImhhc2hcIjpcInNoYTM4NFwiLFwiaWRcIjpcIlwifSxcIkRTQS1TSEEzODRcIjp7XCJzaWduXCI6XCJkc2FcIixcImhhc2hcIjpcInNoYTM4NFwiLFwiaWRcIjpcIlwifSxcIkRTQS1XSVRILVNIQTUxMlwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhNTEyXCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVNIQTUxMlwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwic2hhNTEyXCIsXCJpZFwiOlwiXCJ9LFwiRFNBLVJJUEVNRDE2MFwiOntcInNpZ25cIjpcImRzYVwiLFwiaGFzaFwiOlwicm1kMTYwXCIsXCJpZFwiOlwiXCJ9LFwicmlwZW1kMTYwV2l0aFJTQVwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwicm1kMTYwXCIsXCJpZFwiOlwiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0XCJ9LFwiUlNBLVJJUEVNRDE2MFwiOntcInNpZ25cIjpcInJzYVwiLFwiaGFzaFwiOlwicm1kMTYwXCIsXCJpZFwiOlwiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0XCJ9LFwibWQ1V2l0aFJTQUVuY3J5cHRpb25cIjp7XCJzaWduXCI6XCJyc2FcIixcImhhc2hcIjpcIm1kNVwiLFwiaWRcIjpcIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMFwifSxcIlJTQS1NRDVcIjp7XCJzaWduXCI6XCJyc2FcIixcImhhc2hcIjpcIm1kNVwiLFwiaWRcIjpcIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDUwNTAwMDQxMFwifX0nKX0sOTI2NzpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgne1wiMS4zLjEzMi4wLjEwXCI6XCJzZWNwMjU2azFcIixcIjEuMy4xMzIuMC4zM1wiOlwicDIyNFwiLFwiMS4yLjg0MC4xMDA0NS4zLjEuMVwiOlwicDE5MlwiLFwiMS4yLjg0MC4xMDA0NS4zLjEuN1wiOlwicDI1NlwiLFwiMS4zLjEzMi4wLjM0XCI6XCJwMzg0XCIsXCIxLjMuMTMyLjAuMzVcIjpcInA1MjFcIn0nKX0sNzk5MjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9SlNPTi5wYXJzZSgne1wibW9kcDFcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJ9LFwibW9kcDJcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHA1XCI6e1wiZ2VuXCI6XCIwMlwiLFwicHJpbWVcIjpcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxNFwiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxNVwiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmZcIn0sXCJtb2RwMTZcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZlwifSxcIm1vZHAxN1wiOntcImdlblwiOlwiMDJcIixcInByaW1lXCI6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGNjNDAyNGZmZmZmZmZmZmZmZmZmZmZcIn0sXCJtb2RwMThcIjp7XCJnZW5cIjpcIjAyXCIsXCJwcmltZVwiOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDI4NDkyMzZjM2ZhYjRkMjdjNzAyNmMxZDRkY2IyNjAyNjQ2ZGVjOTc1MWU3NjNkYmEzN2JkZjhmZjk0MDZhZDllNTMwZWU1ZGIzODJmNDEzMDAxYWViMDZhNTNlZDkwMjdkODMxMTc5NzI3YjA4NjVhODkxOGRhM2VkYmViY2Y5YjE0ZWQ0NGNlNmNiYWNlZDRiYjFiZGI3ZjE0NDdlNmNjMjU0YjMzMjA1MTUxMmJkN2FmNDI2ZmI4ZjQwMTM3OGNkMmJmNTk4M2NhMDFjNjRiOTJlY2YwMzJlYTE1ZDE3MjFkMDNmNDgyZDdjZTZlNzRmZWY2ZDU1ZTcwMmY0Njk4MGM4MmI1YTg0MDMxOTAwYjFjOWU1OWU3Yzk3ZmJlYzdlOGYzMjNhOTdhN2UzNmNjODhiZTBmMWQ0NWI3ZmY1ODVhYzU0YmQ0MDdiMjJiNDE1NGFhY2M4ZjZkN2ViZjQ4ZTFkODE0Y2M1ZWQyMGY4MDM3ZTBhNzk3MTVlZWYyOWJlMzI4MDZhMWQ1OGJiN2M1ZGE3NmY1NTBhYTNkOGExZmJmZjBlYjE5Y2NiMWEzMTNkNTVjZGE1NmM5ZWMyZWYyOTYzMjM4N2ZlOGQ3NmUzYzA0NjgwNDNlOGY2NjNmNDg2MGVlMTJiZjJkNWIwYjc0NzRkNmU2OTRmOTFlNmRiZTExNTk3NGEzOTI2ZjEyZmVlNWU0Mzg3NzdjYjZhOTMyZGY4Y2Q4YmVjNGQwNzNiOTMxYmEzYmM4MzJiNjhkOWRkMzAwNzQxZmE3YmY4YWZjNDdlZDI1NzZmNjkzNmJhNDI0NjYzYWFiNjM5YzVhZTRmNTY4MzQyM2I0NzQyYmYxYzk3ODIzOGYxNmNiZTM5ZDY1MmRlM2ZkYjhiZWZjODQ4YWQ5MjIyMjJlMDRhNDAzN2MwNzEzZWI1N2E4MWEyM2YwYzczNDczZmM2NDZjZWEzMDZiNGJjYmM4ODYyZjgzODVkZGZhOWQ0YjdmYTJjMDg3ZTg3OTY4MzMwM2VkNWJkZDNhMDYyYjNjZjViM2EyNzhhNjZkMmExM2Y4M2Y0NGY4MmRkZjMxMGVlMDc0YWI2YTM2NDU5N2U4OTlhMDI1NWRjMTY0ZjMxY2M1MDg0Njg1MWRmOWFiNDgxOTVkZWQ3ZWExYjFkNTEwYmQ3ZWU3NGQ3M2ZhZjM2YmMzMWVjZmEyNjgzNTkwNDZmNGViODc5ZjkyNDAwOTQzOGI0ODFjNmNkNzg4OWEwMDJlZDVlZTM4MmJjOTE5MGRhNmZjMDI2ZTQ3OTU1OGU0NDc1Njc3ZTlhYTllMzA1MGUyNzY1Njk0ZGZjODFmNTZlODgwYjk2ZTcxNjBjOTgwZGQ5OGVkZDNkZmZmZmZmZmZmZmZmZmZmZmZcIn19Jyl9LDI1MzE6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPXtpODpcIjYuNS4zXCJ9fSwyNTEwOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1KU09OLnBhcnNlKCd7XCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xXCI6XCJhZXMtMTI4LWVjYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMlwiOlwiYWVzLTEyOC1jYmNcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjNcIjpcImFlcy0xMjgtb2ZiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40XCI6XCJhZXMtMTI4LWNmYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjFcIjpcImFlcy0xOTItZWNiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMlwiOlwiYWVzLTE5Mi1jYmNcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIzXCI6XCJhZXMtMTkyLW9mYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjRcIjpcImFlcy0xOTItY2ZiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MVwiOlwiYWVzLTI1Ni1lY2JcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQyXCI6XCJhZXMtMjU2LWNiY1wiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDNcIjpcImFlcy0yNTYtb2ZiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NFwiOlwiYWVzLTI1Ni1jZmJcIn0nKX19O3ZhciB0PXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIGk9dFtyXTtpZihpIT09dW5kZWZpbmVkKXtyZXR1cm4gaS5leHBvcnRzfXZhciBuPXRbcl09e2lkOnIsbG9hZGVkOmZhbHNlLGV4cG9ydHM6e319O3ZhciBhPXRydWU7dHJ5e2Vbcl0uY2FsbChuLmV4cG9ydHMsbixuLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7YT1mYWxzZX1maW5hbGx5e2lmKGEpZGVsZXRlIHRbcl19bi5sb2FkZWQ9dHJ1ZTtyZXR1cm4gbi5leHBvcnRzfSFmdW5jdGlvbigpe19fbmNjd3Bja19yZXF1aXJlX18ubm1kPWZ1bmN0aW9uKGUpe2UucGF0aHM9W107aWYoIWUuY2hpbGRyZW4pZS5jaGlsZHJlbj1bXTtyZXR1cm4gZX19KCk7aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciByPXt9OyFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXI7ZS5yYW5kb21CeXRlcz1lLnJuZz1lLnBzZXVkb1JhbmRvbUJ5dGVzPWUucHJuZz1fX25jY3dwY2tfcmVxdWlyZV9fKDcyMjMpO2UuY3JlYXRlSGFzaD1lLkhhc2g9X19uY2N3cGNrX3JlcXVpcmVfXyg5NzM5KTtlLmNyZWF0ZUhtYWM9ZS5IbWFjPV9fbmNjd3Bja19yZXF1aXJlX18oNDg3Myk7dmFyIHQ9X19uY2N3cGNrX3JlcXVpcmVfXyg5Mjc2KTt2YXIgaT1PYmplY3Qua2V5cyh0KTt2YXIgbj1bXCJzaGExXCIsXCJzaGEyMjRcIixcInNoYTI1NlwiLFwic2hhMzg0XCIsXCJzaGE1MTJcIixcIm1kNVwiLFwicm1kMTYwXCJdLmNvbmNhdChpKTtlLmdldEhhc2hlcz1mdW5jdGlvbigpe3JldHVybiBufTt2YXIgYT1fX25jY3dwY2tfcmVxdWlyZV9fKDQ5NzgpO2UucGJrZGYyPWEucGJrZGYyO2UucGJrZGYyU3luYz1hLnBia2RmMlN5bmM7dmFyIHM9X19uY2N3cGNrX3JlcXVpcmVfXyg4OTk2KTtlLkNpcGhlcj1zLkNpcGhlcjtlLmNyZWF0ZUNpcGhlcj1zLmNyZWF0ZUNpcGhlcjtlLkNpcGhlcml2PXMuQ2lwaGVyaXY7ZS5jcmVhdGVDaXBoZXJpdj1zLmNyZWF0ZUNpcGhlcml2O2UuRGVjaXBoZXI9cy5EZWNpcGhlcjtlLmNyZWF0ZURlY2lwaGVyPXMuY3JlYXRlRGVjaXBoZXI7ZS5EZWNpcGhlcml2PXMuRGVjaXBoZXJpdjtlLmNyZWF0ZURlY2lwaGVyaXY9cy5jcmVhdGVEZWNpcGhlcml2O2UuZ2V0Q2lwaGVycz1zLmdldENpcGhlcnM7ZS5saXN0Q2lwaGVycz1zLmxpc3RDaXBoZXJzO3ZhciBvPV9fbmNjd3Bja19yZXF1aXJlX18oNjU4Nyk7ZS5EaWZmaWVIZWxsbWFuR3JvdXA9by5EaWZmaWVIZWxsbWFuR3JvdXA7ZS5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9by5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA7ZS5nZXREaWZmaWVIZWxsbWFuPW8uZ2V0RGlmZmllSGVsbG1hbjtlLmNyZWF0ZURpZmZpZUhlbGxtYW49by5jcmVhdGVEaWZmaWVIZWxsbWFuO2UuRGlmZmllSGVsbG1hbj1vLkRpZmZpZUhlbGxtYW47dmFyIGg9X19uY2N3cGNrX3JlcXVpcmVfXyg0MDc4KTtlLmNyZWF0ZVNpZ249aC5jcmVhdGVTaWduO2UuU2lnbj1oLlNpZ247ZS5jcmVhdGVWZXJpZnk9aC5jcmVhdGVWZXJpZnk7ZS5WZXJpZnk9aC5WZXJpZnk7ZS5jcmVhdGVFQ0RIPV9fbmNjd3Bja19yZXF1aXJlX18oOTk0Mik7dmFyIHU9X19uY2N3cGNrX3JlcXVpcmVfXyg5NzgzKTtlLnB1YmxpY0VuY3J5cHQ9dS5wdWJsaWNFbmNyeXB0O2UucHJpdmF0ZUVuY3J5cHQ9dS5wcml2YXRlRW5jcnlwdDtlLnB1YmxpY0RlY3J5cHQ9dS5wdWJsaWNEZWNyeXB0O2UucHJpdmF0ZURlY3J5cHQ9dS5wcml2YXRlRGVjcnlwdDt2YXIgZD1fX25jY3dwY2tfcmVxdWlyZV9fKDY0NDUpO2UucmFuZG9tRmlsbD1kLnJhbmRvbUZpbGw7ZS5yYW5kb21GaWxsU3luYz1kLnJhbmRvbUZpbGxTeW5jO2UuY3JlYXRlQ3JlZGVudGlhbHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoW1wic29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIixcIndlIGFjY2VwdCBwdWxsIHJlcXVlc3RzXCIsXCJodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnlcIl0uam9pbihcIlxcblwiKSl9O2UuY29uc3RhbnRzPXtESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FOjIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6MSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOjQsREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUjo4LE5QTl9FTkFCTEVEOjEsQUxQTl9FTkFCTEVEOjEsUlNBX1BLQ1MxX1BBRERJTkc6MSxSU0FfU1NMVjIzX1BBRERJTkc6MixSU0FfTk9fUEFERElORzozLFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6NCxSU0FfWDkzMV9QQURESU5HOjUsUlNBX1BLQ1MxX1BTU19QQURESU5HOjYsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOjIsUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQ6NCxQT0lOVF9DT05WRVJTSU9OX0hZQlJJRDo2fX0oKTttb2R1bGUuZXhwb3J0cz1yfSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/crypto-browserify/index.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/events/events.js":
/*!**********************************************************!*\
!*** ./node_modules/next/dist/compiled/events/events.js ***!
\**********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){\"use strict\";var e={864:function(e){var t=typeof Reflect===\"object\"?Reflect:null;var n=t&&typeof t.apply===\"function\"?t.apply:function ReflectApply(e,t,n){return Function.prototype.apply.call(e,t,n)};var r;if(t&&typeof t.ownKeys===\"function\"){r=t.ownKeys}else if(Object.getOwnPropertySymbols){r=function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}}else{r=function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e)}}function ProcessEmitWarning(e){if(console&&console.warn)console.warn(e)}var i=Number.isNaN||function NumberIsNaN(e){return e!==e};function EventEmitter(){EventEmitter.init.call(this)}e.exports=EventEmitter;e.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=undefined;var s=10;function checkListener(e){if(typeof e!==\"function\"){throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}}Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:true,get:function(){return s},set:function(e){if(typeof e!==\"number\"||e<0||i(e)){throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\")}s=e}});EventEmitter.init=function(){if(this._events===undefined||this._events===Object.getPrototypeOf(this)._events){this._events=Object.create(null);this._eventsCount=0}this._maxListeners=this._maxListeners||undefined};EventEmitter.prototype.setMaxListeners=function setMaxListeners(e){if(typeof e!==\"number\"||e<0||i(e)){throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\")}this._maxListeners=e;return this};function _getMaxListeners(e){if(e._maxListeners===undefined)return EventEmitter.defaultMaxListeners;return e._maxListeners}EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function emit(e){var t=[];for(var r=1;r<arguments.length;r++)t.push(arguments[r]);var i=e===\"error\";var s=this._events;if(s!==undefined)i=i&&s.error===undefined;else if(!i)return false;if(i){var o;if(t.length>0)o=t[0];if(o instanceof Error){throw o}var f=new Error(\"Unhandled error.\"+(o?\" (\"+o.message+\")\":\"\"));f.context=o;throw f}var u=s[e];if(u===undefined)return false;if(typeof u===\"function\"){n(u,this,t)}else{var a=u.length;var c=arrayClone(u,a);for(var r=0;r<a;++r)n(c[r],this,t)}return true};function _addListener(e,t,n,r){var i;var s;var o;checkListener(n);s=e._events;if(s===undefined){s=e._events=Object.create(null);e._eventsCount=0}else{if(s.newListener!==undefined){e.emit(\"newListener\",t,n.listener?n.listener:n);s=e._events}o=s[t]}if(o===undefined){o=s[t]=n;++e._eventsCount}else{if(typeof o===\"function\"){o=s[t]=r?[n,o]:[o,n]}else if(r){o.unshift(n)}else{o.push(n)}i=_getMaxListeners(e);if(i>0&&o.length>i&&!o.warned){o.warned=true;var f=new Error(\"Possible EventEmitter memory leak detected. \"+o.length+\" \"+String(t)+\" listeners \"+\"added. Use emitter.setMaxListeners() to \"+\"increase limit\");f.name=\"MaxListenersExceededWarning\";f.emitter=e;f.type=t;f.count=o.length;ProcessEmitWarning(f)}}return e}EventEmitter.prototype.addListener=function addListener(e,t){return _addListener(this,e,t,false)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(e,t){return _addListener(this,e,t,true)};function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=true;if(arguments.length===0)return this.listener.call(this.target);return this.listener.apply(this.target,arguments)}}function _onceWrap(e,t,n){var r={fired:false,wrapFn:undefined,target:e,type:t,listener:n};var i=onceWrapper.bind(r);i.listener=n;r.wrapFn=i;return i}EventEmitter.prototype.once=function once(e,t){checkListener(t);this.on(e,_onceWrap(this,e,t));return this};EventEmitter.prototype.prependOnceListener=function prependOnceListener(e,t){checkListener(t);this.prependListener(e,_onceWrap(this,e,t));return this};EventEmitter.prototype.removeListener=function removeListener(e,t){var n,r,i,s,o;checkListener(t);r=this._events;if(r===undefined)return this;n=r[e];if(n===undefined)return this;if(n===t||n.listener===t){if(--this._eventsCount===0)this._events=Object.create(null);else{delete r[e];if(r.removeListener)this.emit(\"removeListener\",e,n.listener||t)}}else if(typeof n!==\"function\"){i=-1;for(s=n.length-1;s>=0;s--){if(n[s]===t||n[s].listener===t){o=n[s].listener;i=s;break}}if(i<0)return this;if(i===0)n.shift();else{spliceOne(n,i)}if(n.length===1)r[e]=n[0];if(r.removeListener!==undefined)this.emit(\"removeListener\",e,o||t)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function removeAllListeners(e){var t,n,r;n=this._events;if(n===undefined)return this;if(n.removeListener===undefined){if(arguments.length===0){this._events=Object.create(null);this._eventsCount=0}else if(n[e]!==undefined){if(--this._eventsCount===0)this._events=Object.create(null);else delete n[e]}return this}if(arguments.length===0){var i=Object.keys(n);var s;for(r=0;r<i.length;++r){s=i[r];if(s===\"removeListener\")continue;this.removeAllListeners(s)}this.removeAllListeners(\"removeListener\");this._events=Object.create(null);this._eventsCount=0;return this}t=n[e];if(typeof t===\"function\"){this.removeListener(e,t)}else if(t!==undefined){for(r=t.length-1;r>=0;r--){this.removeListener(e,t[r])}}return this};function _listeners(e,t,n){var r=e._events;if(r===undefined)return[];var i=r[t];if(i===undefined)return[];if(typeof i===\"function\")return n?[i.listener||i]:[i];return n?unwrapListeners(i):arrayClone(i,i.length)}EventEmitter.prototype.listeners=function listeners(e){return _listeners(this,e,true)};EventEmitter.prototype.rawListeners=function rawListeners(e){return _listeners(this,e,false)};EventEmitter.listenerCount=function(e,t){if(typeof e.listenerCount===\"function\"){return e.listenerCount(t)}else{return listenerCount.call(e,t)}};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(e){var t=this._events;if(t!==undefined){var n=t[e];if(typeof n===\"function\"){return 1}else if(n!==undefined){return n.length}}return 0}EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?r(this._events):[]};function arrayClone(e,t){var n=new Array(t);for(var r=0;r<t;++r)n[r]=e[r];return n}function spliceOne(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}function unwrapListeners(e){var t=new Array(e.length);for(var n=0;n<t.length;++n){t[n]=e[n].listener||e[n]}return t}function once(e,t){return new Promise((function(n,r){function errorListener(n){e.removeListener(t,resolver);r(n)}function resolver(){if(typeof e.removeListener===\"function\"){e.removeListener(\"error\",errorListener)}n([].slice.call(arguments))}eventTargetAgnosticAddListener(e,t,resolver,{once:true});if(t!==\"error\"){addErrorHandlerIfEventEmitter(e,errorListener,{once:true})}}))}function addErrorHandlerIfEventEmitter(e,t,n){if(typeof e.on===\"function\"){eventTargetAgnosticAddListener(e,\"error\",t,n)}}function eventTargetAgnosticAddListener(e,t,n,r){if(typeof e.on===\"function\"){if(r.once){e.once(t,n)}else{e.on(t,n)}}else if(typeof e.addEventListener===\"function\"){e.addEventListener(t,(function wrapListener(i){if(r.once){e.removeEventListener(t,wrapListener)}n(i)}))}else{throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof e)}}}};var t={};function __nccwpck_require__(n){var r=t[n];if(r!==undefined){return r.exports}var i=t[n]={exports:{}};var s=true;try{e[n](i,i.exports,__nccwpck_require__);s=false}finally{if(s)delete t[n]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var n=__nccwpck_require__(864);module.exports=n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL2V2ZW50cy9ldmVudHMuanMiLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVksYUFBYSxPQUFPLGdCQUFnQiw2Q0FBNkMsMEVBQTBFLDZDQUE2QyxNQUFNLHFDQUFxQyxZQUFZLHNDQUFzQyw2QkFBNkIsOEVBQThFLEtBQUssNkJBQTZCLHNDQUFzQywrQkFBK0IseUNBQXlDLDRDQUE0QyxjQUFjLHdCQUF3Qiw2QkFBNkIsdUJBQXVCLG9CQUFvQix1Q0FBdUMseUNBQXlDLHNDQUFzQywrQ0FBK0MsU0FBUywwQkFBMEIsMEJBQTBCLGtHQUFrRywwREFBMEQsK0JBQStCLFNBQVMsaUJBQWlCLG1DQUFtQyw4SEFBOEgsS0FBSyxFQUFFLDZCQUE2QixpRkFBaUYsaUNBQWlDLG9CQUFvQixrREFBa0QsbUVBQW1FLG1DQUFtQyw0R0FBNEcscUJBQXFCLGFBQWEsNkJBQTZCLHVFQUF1RSx1QkFBdUIsa0VBQWtFLCtCQUErQiw2Q0FBNkMsU0FBUyxZQUFZLG1CQUFtQix5QkFBeUIsa0JBQWtCLG1CQUFtQiwwQ0FBMEMsd0JBQXdCLE1BQU0sTUFBTSxxQkFBcUIsdUJBQXVCLFFBQVEsOERBQThELFlBQVksUUFBUSxXQUFXLDhCQUE4QiwwQkFBMEIsWUFBWSxLQUFLLGVBQWUsc0JBQXNCLFlBQVksSUFBSSxtQkFBbUIsYUFBYSwrQkFBK0IsTUFBTSxNQUFNLE1BQU0saUJBQWlCLFlBQVksa0JBQWtCLGdDQUFnQyxpQkFBaUIsS0FBSyw4QkFBOEIsZ0RBQWdELFlBQVksT0FBTyxrQkFBa0IsU0FBUyxpQkFBaUIsS0FBSywwQkFBMEIscUJBQXFCLFdBQVcsYUFBYSxLQUFLLFVBQVUsc0JBQXNCLCtCQUErQixjQUFjLGlLQUFpSyxxQ0FBcUMsWUFBWSxTQUFTLGlCQUFpQix1QkFBdUIsU0FBUyw2REFBNkQscUNBQXFDLDZEQUE2RCxxRUFBcUUsb0NBQW9DLHVCQUF1QixnQkFBZ0Isa0RBQWtELGdCQUFnQiwrREFBK0QsbURBQW1ELDBCQUEwQixPQUFPLHlEQUF5RCwwQkFBMEIsYUFBYSxXQUFXLFNBQVMsK0NBQStDLGlCQUFpQiwrQkFBK0IsYUFBYSw2RUFBNkUsaUJBQWlCLDRDQUE0QyxhQUFhLG1FQUFtRSxjQUFjLGlCQUFpQixlQUFlLDZCQUE2QixPQUFPLDZCQUE2QiwwQkFBMEIsNERBQTRELEtBQUssWUFBWSxpRUFBaUUsK0JBQStCLEtBQUssaUJBQWlCLEtBQUssS0FBSyxnQ0FBZ0MsZ0JBQWdCLElBQUksT0FBTyxtQkFBbUIsbUJBQW1CLEtBQUssZUFBZSwwQkFBMEIsbUVBQW1FLGFBQWEsaUVBQWlFLHlFQUF5RSxVQUFVLGVBQWUsNkJBQTZCLGlDQUFpQyx5QkFBeUIsaUNBQWlDLG9CQUFvQiwwQkFBMEIsNERBQTRELGlCQUFpQixZQUFZLHlCQUF5QixxQkFBcUIsTUFBTSxRQUFRLFdBQVcsS0FBSyxPQUFPLGlDQUFpQywyQkFBMkIsMENBQTBDLGlDQUFpQyxvQkFBb0IsWUFBWSxPQUFPLDBCQUEwQix5QkFBeUIsdUJBQXVCLGlCQUFpQixLQUFLLEtBQUssNkJBQTZCLGFBQWEsMkJBQTJCLGdCQUFnQiwwQkFBMEIsV0FBVywwQkFBMEIsc0RBQXNELG1EQUFtRCx1REFBdUQsZ0NBQWdDLDZEQUE2RCxpQ0FBaUMseUNBQXlDLHdDQUF3QywwQkFBMEIsS0FBSyxpQ0FBaUMsbURBQW1ELDBCQUEwQixtQkFBbUIsa0JBQWtCLFdBQVcsMEJBQTBCLFNBQVMsdUJBQXVCLGlCQUFpQixTQUFTLHdEQUF3RCwrQ0FBK0MseUJBQXlCLG1CQUFtQixZQUFZLElBQUksY0FBYyxTQUFTLHdCQUF3QixLQUFLLGFBQWEsZ0JBQWdCLFFBQVEsNEJBQTRCLDBCQUEwQixZQUFZLFdBQVcsS0FBSyx5QkFBeUIsU0FBUyxtQkFBbUIsa0NBQWtDLDBCQUEwQiw2QkFBNkIsS0FBSyxvQkFBb0IseUNBQXlDLHdDQUF3Qyw0QkFBNEIsNkNBQTZDLFVBQVUsRUFBRSxnQkFBZ0IsK0NBQStDLFVBQVUsR0FBRyxHQUFHLDhDQUE4Qyw2QkFBNkIsK0NBQStDLGlEQUFpRCw2QkFBNkIsV0FBVyxZQUFZLEtBQUssV0FBVyxnREFBZ0QsK0NBQStDLFdBQVcsc0NBQXNDLEtBQUssR0FBRyxLQUFLLHdHQUF3RyxTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxzQ0FBc0MsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsbUVBQW1FLFNBQVMsS0FBSywrQkFBK0IsaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvZXZlbnRzL2V2ZW50cy5qcz83NjUyIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXs4NjQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dHlwZW9mIFJlZmxlY3Q9PT1cIm9iamVjdFwiP1JlZmxlY3Q6bnVsbDt2YXIgbj10JiZ0eXBlb2YgdC5hcHBseT09PVwiZnVuY3Rpb25cIj90LmFwcGx5OmZ1bmN0aW9uIFJlZmxlY3RBcHBseShlLHQsbil7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGUsdCxuKX07dmFyIHI7aWYodCYmdHlwZW9mIHQub3duS2V5cz09PVwiZnVuY3Rpb25cIil7cj10Lm93bktleXN9ZWxzZSBpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXtyPWZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9fWVsc2V7cj1mdW5jdGlvbiBSZWZsZWN0T3duS2V5cyhlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSl9fWZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyhlKXtpZihjb25zb2xlJiZjb25zb2xlLndhcm4pY29uc29sZS53YXJuKGUpfXZhciBpPU51bWJlci5pc05hTnx8ZnVuY3Rpb24gTnVtYmVySXNOYU4oZSl7cmV0dXJuIGUhPT1lfTtmdW5jdGlvbiBFdmVudEVtaXR0ZXIoKXtFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpfWUuZXhwb3J0cz1FdmVudEVtaXR0ZXI7ZS5leHBvcnRzLm9uY2U9b25jZTtFdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyPUV2ZW50RW1pdHRlcjtFdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHM9dW5kZWZpbmVkO0V2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50PTA7RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXVuZGVmaW5lZDt2YXIgcz0xMDtmdW5jdGlvbiBjaGVja0xpc3RlbmVyKGUpe2lmKHR5cGVvZiBlIT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiBlKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlcixcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBzfSxzZXQ6ZnVuY3Rpb24oZSl7aWYodHlwZW9mIGUhPT1cIm51bWJlclwifHxlPDB8fGkoZSkpe3Rocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlK1wiLlwiKX1zPWV9fSk7RXZlbnRFbWl0dGVyLmluaXQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9ldmVudHM9PT11bmRlZmluZWR8fHRoaXMuX2V2ZW50cz09PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKXt0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9ldmVudHNDb3VudD0wfXRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHVuZGVmaW5lZH07RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcInx8ZTwwfHxpKGUpKXt0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrZStcIi5cIil9dGhpcy5fbWF4TGlzdGVuZXJzPWU7cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIF9nZXRNYXhMaXN0ZW5lcnMoZSl7aWYoZS5fbWF4TGlzdGVuZXJzPT09dW5kZWZpbmVkKXJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztyZXR1cm4gZS5fbWF4TGlzdGVuZXJzfUV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpe3JldHVybiBfZ2V0TWF4TGlzdGVuZXJzKHRoaXMpfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24gZW1pdChlKXt2YXIgdD1bXTtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXQucHVzaChhcmd1bWVudHNbcl0pO3ZhciBpPWU9PT1cImVycm9yXCI7dmFyIHM9dGhpcy5fZXZlbnRzO2lmKHMhPT11bmRlZmluZWQpaT1pJiZzLmVycm9yPT09dW5kZWZpbmVkO2Vsc2UgaWYoIWkpcmV0dXJuIGZhbHNlO2lmKGkpe3ZhciBvO2lmKHQubGVuZ3RoPjApbz10WzBdO2lmKG8gaW5zdGFuY2VvZiBFcnJvcil7dGhyb3cgb312YXIgZj1uZXcgRXJyb3IoXCJVbmhhbmRsZWQgZXJyb3IuXCIrKG8/XCIgKFwiK28ubWVzc2FnZStcIilcIjpcIlwiKSk7Zi5jb250ZXh0PW87dGhyb3cgZn12YXIgdT1zW2VdO2lmKHU9PT11bmRlZmluZWQpcmV0dXJuIGZhbHNlO2lmKHR5cGVvZiB1PT09XCJmdW5jdGlvblwiKXtuKHUsdGhpcyx0KX1lbHNle3ZhciBhPXUubGVuZ3RoO3ZhciBjPWFycmF5Q2xvbmUodSxhKTtmb3IodmFyIHI9MDtyPGE7KytyKW4oY1tyXSx0aGlzLHQpfXJldHVybiB0cnVlfTtmdW5jdGlvbiBfYWRkTGlzdGVuZXIoZSx0LG4scil7dmFyIGk7dmFyIHM7dmFyIG87Y2hlY2tMaXN0ZW5lcihuKTtzPWUuX2V2ZW50cztpZihzPT09dW5kZWZpbmVkKXtzPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpO2UuX2V2ZW50c0NvdW50PTB9ZWxzZXtpZihzLm5ld0xpc3RlbmVyIT09dW5kZWZpbmVkKXtlLmVtaXQoXCJuZXdMaXN0ZW5lclwiLHQsbi5saXN0ZW5lcj9uLmxpc3RlbmVyOm4pO3M9ZS5fZXZlbnRzfW89c1t0XX1pZihvPT09dW5kZWZpbmVkKXtvPXNbdF09bjsrK2UuX2V2ZW50c0NvdW50fWVsc2V7aWYodHlwZW9mIG89PT1cImZ1bmN0aW9uXCIpe289c1t0XT1yP1tuLG9dOltvLG5dfWVsc2UgaWYocil7by51bnNoaWZ0KG4pfWVsc2V7by5wdXNoKG4pfWk9X2dldE1heExpc3RlbmVycyhlKTtpZihpPjAmJm8ubGVuZ3RoPmkmJiFvLndhcm5lZCl7by53YXJuZWQ9dHJ1ZTt2YXIgZj1uZXcgRXJyb3IoXCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuIFwiK28ubGVuZ3RoK1wiIFwiK1N0cmluZyh0KStcIiBsaXN0ZW5lcnMgXCIrXCJhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gXCIrXCJpbmNyZWFzZSBsaW1pdFwiKTtmLm5hbWU9XCJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdcIjtmLmVtaXR0ZXI9ZTtmLnR5cGU9dDtmLmNvdW50PW8ubGVuZ3RoO1Byb2Nlc3NFbWl0V2FybmluZyhmKX19cmV0dXJuIGV9RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbiBhZGRMaXN0ZW5lcihlLHQpe3JldHVybiBfYWRkTGlzdGVuZXIodGhpcyxlLHQsZmFsc2UpfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uPUV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGUsdCl7cmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLGUsdCx0cnVlKX07ZnVuY3Rpb24gb25jZVdyYXBwZXIoKXtpZighdGhpcy5maXJlZCl7dGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKTt0aGlzLmZpcmVkPXRydWU7aWYoYXJndW1lbnRzLmxlbmd0aD09PTApcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7cmV0dXJuIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX19ZnVuY3Rpb24gX29uY2VXcmFwKGUsdCxuKXt2YXIgcj17ZmlyZWQ6ZmFsc2Usd3JhcEZuOnVuZGVmaW5lZCx0YXJnZXQ6ZSx0eXBlOnQsbGlzdGVuZXI6bn07dmFyIGk9b25jZVdyYXBwZXIuYmluZChyKTtpLmxpc3RlbmVyPW47ci53cmFwRm49aTtyZXR1cm4gaX1FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24gb25jZShlLHQpe2NoZWNrTGlzdGVuZXIodCk7dGhpcy5vbihlLF9vbmNlV3JhcCh0aGlzLGUsdCkpO3JldHVybiB0aGlzfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcihlLHQpe2NoZWNrTGlzdGVuZXIodCk7dGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxfb25jZVdyYXAodGhpcyxlLHQpKTtyZXR1cm4gdGhpc307RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihlLHQpe3ZhciBuLHIsaSxzLG87Y2hlY2tMaXN0ZW5lcih0KTtyPXRoaXMuX2V2ZW50cztpZihyPT09dW5kZWZpbmVkKXJldHVybiB0aGlzO249cltlXTtpZihuPT09dW5kZWZpbmVkKXJldHVybiB0aGlzO2lmKG49PT10fHxuLmxpc3RlbmVyPT09dCl7aWYoLS10aGlzLl9ldmVudHNDb3VudD09PTApdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk7ZWxzZXtkZWxldGUgcltlXTtpZihyLnJlbW92ZUxpc3RlbmVyKXRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsZSxuLmxpc3RlbmVyfHx0KX19ZWxzZSBpZih0eXBlb2YgbiE9PVwiZnVuY3Rpb25cIil7aT0tMTtmb3Iocz1uLmxlbmd0aC0xO3M+PTA7cy0tKXtpZihuW3NdPT09dHx8bltzXS5saXN0ZW5lcj09PXQpe289bltzXS5saXN0ZW5lcjtpPXM7YnJlYWt9fWlmKGk8MClyZXR1cm4gdGhpcztpZihpPT09MCluLnNoaWZ0KCk7ZWxzZXtzcGxpY2VPbmUobixpKX1pZihuLmxlbmd0aD09PTEpcltlXT1uWzBdO2lmKHIucmVtb3ZlTGlzdGVuZXIhPT11bmRlZmluZWQpdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIixlLG98fHQpfXJldHVybiB0aGlzfTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZj1FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO0V2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyhlKXt2YXIgdCxuLHI7bj10aGlzLl9ldmVudHM7aWYobj09PXVuZGVmaW5lZClyZXR1cm4gdGhpcztpZihuLnJlbW92ZUxpc3RlbmVyPT09dW5kZWZpbmVkKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MCl7dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZXZlbnRzQ291bnQ9MH1lbHNlIGlmKG5bZV0hPT11bmRlZmluZWQpe2lmKC0tdGhpcy5fZXZlbnRzQ291bnQ9PT0wKXRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpO2Vsc2UgZGVsZXRlIG5bZV19cmV0dXJuIHRoaXN9aWYoYXJndW1lbnRzLmxlbmd0aD09PTApe3ZhciBpPU9iamVjdC5rZXlzKG4pO3ZhciBzO2ZvcihyPTA7cjxpLmxlbmd0aDsrK3Ipe3M9aVtyXTtpZihzPT09XCJyZW1vdmVMaXN0ZW5lclwiKWNvbnRpbnVlO3RoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKHMpfXRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFwicmVtb3ZlTGlzdGVuZXJcIik7dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fZXZlbnRzQ291bnQ9MDtyZXR1cm4gdGhpc310PW5bZV07aWYodHlwZW9mIHQ9PT1cImZ1bmN0aW9uXCIpe3RoaXMucmVtb3ZlTGlzdGVuZXIoZSx0KX1lbHNlIGlmKHQhPT11bmRlZmluZWQpe2ZvcihyPXQubGVuZ3RoLTE7cj49MDtyLS0pe3RoaXMucmVtb3ZlTGlzdGVuZXIoZSx0W3JdKX19cmV0dXJuIHRoaXN9O2Z1bmN0aW9uIF9saXN0ZW5lcnMoZSx0LG4pe3ZhciByPWUuX2V2ZW50cztpZihyPT09dW5kZWZpbmVkKXJldHVybltdO3ZhciBpPXJbdF07aWYoaT09PXVuZGVmaW5lZClyZXR1cm5bXTtpZih0eXBlb2YgaT09PVwiZnVuY3Rpb25cIilyZXR1cm4gbj9baS5saXN0ZW5lcnx8aV06W2ldO3JldHVybiBuP3Vud3JhcExpc3RlbmVycyhpKTphcnJheUNsb25lKGksaS5sZW5ndGgpfUV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uIGxpc3RlbmVycyhlKXtyZXR1cm4gX2xpc3RlbmVycyh0aGlzLGUsdHJ1ZSl9O0V2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uIHJhd0xpc3RlbmVycyhlKXtyZXR1cm4gX2xpc3RlbmVycyh0aGlzLGUsZmFsc2UpfTtFdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlLHQpe2lmKHR5cGVvZiBlLmxpc3RlbmVyQ291bnQ9PT1cImZ1bmN0aW9uXCIpe3JldHVybiBlLmxpc3RlbmVyQ291bnQodCl9ZWxzZXtyZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGUsdCl9fTtFdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9bGlzdGVuZXJDb3VudDtmdW5jdGlvbiBsaXN0ZW5lckNvdW50KGUpe3ZhciB0PXRoaXMuX2V2ZW50cztpZih0IT09dW5kZWZpbmVkKXt2YXIgbj10W2VdO2lmKHR5cGVvZiBuPT09XCJmdW5jdGlvblwiKXtyZXR1cm4gMX1lbHNlIGlmKG4hPT11bmRlZmluZWQpe3JldHVybiBuLmxlbmd0aH19cmV0dXJuIDB9RXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uIGV2ZW50TmFtZXMoKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9yKHRoaXMuX2V2ZW50cyk6W119O2Z1bmN0aW9uIGFycmF5Q2xvbmUoZSx0KXt2YXIgbj1uZXcgQXJyYXkodCk7Zm9yKHZhciByPTA7cjx0OysrciluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gc3BsaWNlT25lKGUsdCl7Zm9yKDt0KzE8ZS5sZW5ndGg7dCsrKWVbdF09ZVt0KzFdO2UucG9wKCl9ZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGUpe3ZhciB0PW5ldyBBcnJheShlLmxlbmd0aCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24pe3Rbbl09ZVtuXS5saXN0ZW5lcnx8ZVtuXX1yZXR1cm4gdH1mdW5jdGlvbiBvbmNlKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLHIpe2Z1bmN0aW9uIGVycm9yTGlzdGVuZXIobil7ZS5yZW1vdmVMaXN0ZW5lcih0LHJlc29sdmVyKTtyKG4pfWZ1bmN0aW9uIHJlc29sdmVyKCl7aWYodHlwZW9mIGUucmVtb3ZlTGlzdGVuZXI9PT1cImZ1bmN0aW9uXCIpe2UucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGVycm9yTGlzdGVuZXIpfW4oW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX1ldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZSx0LHJlc29sdmVyLHtvbmNlOnRydWV9KTtpZih0IT09XCJlcnJvclwiKXthZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlLGVycm9yTGlzdGVuZXIse29uY2U6dHJ1ZX0pfX0pKX1mdW5jdGlvbiBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlLHQsbil7aWYodHlwZW9mIGUub249PT1cImZ1bmN0aW9uXCIpe2V2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlLFwiZXJyb3JcIix0LG4pfX1mdW5jdGlvbiBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZSx0LG4scil7aWYodHlwZW9mIGUub249PT1cImZ1bmN0aW9uXCIpe2lmKHIub25jZSl7ZS5vbmNlKHQsbil9ZWxzZXtlLm9uKHQsbil9fWVsc2UgaWYodHlwZW9mIGUuYWRkRXZlbnRMaXN0ZW5lcj09PVwiZnVuY3Rpb25cIil7ZS5hZGRFdmVudExpc3RlbmVyKHQsKGZ1bmN0aW9uIHdyYXBMaXN0ZW5lcihpKXtpZihyLm9uY2Upe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHdyYXBMaXN0ZW5lcil9bihpKX0pKX1lbHNle3Rocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIGUpfX19fTt2YXIgdD17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKG4pe3ZhciByPXRbbl07aWYociE9PXVuZGVmaW5lZCl7cmV0dXJuIHIuZXhwb3J0c312YXIgaT10W25dPXtleHBvcnRzOnt9fTt2YXIgcz10cnVlO3RyeXtlW25dKGksaS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO3M9ZmFsc2V9ZmluYWxseXtpZihzKWRlbGV0ZSB0W25dfXJldHVybiBpLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciBuPV9fbmNjd3Bja19yZXF1aXJlX18oODY0KTttb2R1bGUuZXhwb3J0cz1ufSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/events/events.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/stream-browserify/index.js":
/*!********************************************************************!*\
!*** ./node_modules/next/dist/compiled/stream-browserify/index.js ***!
\********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n(function(){var e={782:function(e){if(typeof Object.create===\"function\"){e.exports=function inherits(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}}else{e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}}}},646:function(e){\"use strict\";const t={};function createErrorType(e,r,n){if(!n){n=Error}function getMessage(e,t,n){if(typeof r===\"string\"){return r}else{return r(e,t,n)}}class NodeError extends n{constructor(e,t,r){super(getMessage(e,t,r))}}NodeError.prototype.name=n.name;NodeError.prototype.code=e;t[e]=NodeError}function oneOf(e,t){if(Array.isArray(e)){const r=e.length;e=e.map((e=>String(e)));if(r>2){return`one of ${t} ${e.slice(0,r-1).join(\", \")}, or `+e[r-1]}else if(r===2){return`one of ${t} ${e[0]} or ${e[1]}`}else{return`of ${t} ${e[0]}`}}else{return`of ${t} ${String(e)}`}}function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function endsWith(e,t,r){if(r===undefined||r>e.length){r=e.length}return e.substring(r-t.length,r)===t}function includes(e,t,r){if(typeof r!==\"number\"){r=0}if(r+t.length>e.length){return false}else{return e.indexOf(t,r)!==-1}}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError);createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){let n;if(typeof t===\"string\"&&startsWith(t,\"not \")){n=\"must not be\";t=t.replace(/^not /,\"\")}else{n=\"must be\"}let i;if(endsWith(e,\" argument\")){i=`The ${e} ${n} ${oneOf(t,\"type\")}`}else{const r=includes(e,\".\")?\"property\":\"argument\";i=`The \"${e}\" ${r} ${n} ${oneOf(t,\"type\")}`}i+=`. Received type ${typeof r}`;return i}),TypeError);createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"}));createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");createErrorType(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"}));createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError);createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");e.exports.q=t},403:function(e,t,r){\"use strict\";var n=Object.keys||function(e){var t=[];for(var r in e){t.push(r)}return t};e.exports=Duplex;var i=r(709);var a=r(337);r(782)(Duplex,i);{var o=n(a.prototype);for(var s=0;s<o.length;s++){var f=o[s];if(!Duplex.prototype[f])Duplex.prototype[f]=a.prototype[f]}}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);i.call(this,e);a.call(this,e);this.allowHalfOpen=true;if(e){if(e.readable===false)this.readable=false;if(e.writable===false)this.writable=false;if(e.allowHalfOpen===false){this.allowHalfOpen=false;this.once(\"end\",onend)}}}Object.defineProperty(Duplex.prototype,\"writableHighWaterMark\",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});Object.defineProperty(Duplex.prototype,\"writableBuffer\",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(Duplex.prototype,\"writableLength\",{enumerable:false,get:function get(){return this._writableState.length}});function onend(){if(this._writableState.ended)return;process.nextTick(onEndNT,this)}function onEndNT(e){e.end()}Object.defineProperty(Duplex.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._readableState===undefined||this._writableState===undefined){return false}return this._readableState.destroyed&&this._writableState.destroyed},set:function set(e){if(this._readableState===undefined||this._writableState===undefined){return}this._readableState.destroyed=e;this._writableState.destroyed=e}})},889:function(e,t,r){\"use strict\";e.exports=PassThrough;var n=r(170);r(782)(PassThrough,n);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);n.call(this,e)}PassThrough.prototype._transform=function(e,t,r){r(null,e)}},709:function(e,t,r){\"use strict\";e.exports=Readable;var n;Readable.ReadableState=ReadableState;var i=r(361).EventEmitter;var a=function EElistenerCount(e,t){return e.listeners(t).length};var o=r(678);var s=r(300).Buffer;var f=__webpack_require__.g.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return s.from(e)}function _isUint8Array(e){return s.isBuffer(e)||e instanceof f}var l=r(837);var u;if(l&&l.debuglog){u=l.debuglog(\"stream\")}else{u=function debug(){}}var d=r(379);var c=r(25);var h=r(776),p=h.getHighWaterMark;var b=r(646).q,g=b.ERR_INVALID_ARG_TYPE,y=b.ERR_STREAM_PUSH_AFTER_EOF,_=b.ERR_METHOD_NOT_IMPLEMENTED,v=b.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;var w;var m;var S;r(782)(Readable,o);var R=c.errorOrDestroy;var E=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function prependListener(e,t,r){if(typeof e.prependListener===\"function\")return e.prependListener(t,r);if(!e._events||!e._events[t])e.on(t,r);else if(Array.isArray(e._events[t]))e._events[t].unshift(r);else e._events[t]=[r,e._events[t]]}function ReadableState(e,t,i){n=n||r(403);e=e||{};if(typeof i!==\"boolean\")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.readableObjectMode;this.highWaterMark=p(this,e,\"readableHighWaterMark\",i);this.buffer=new d;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.paused=true;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||\"utf8\";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!w)w=r(704).s;this.decoder=new w(e.encoding);this.encoding=e.encoding}}function Readable(e){n=n||r(403);if(!(this instanceof Readable))return new Readable(e);var t=this instanceof n;this._readableState=new ReadableState(e,this,t);this.readable=true;if(e){if(typeof e.read===\"function\")this._read=e.read;if(typeof e.destroy===\"function\")this._destroy=e.destroy}o.call(this)}Object.defineProperty(Readable.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function set(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=c.destroy;Readable.prototype._undestroy=c.undestroy;Readable.prototype._destroy=function(e,t){t(e)};Readable.prototype.push=function(e,t){var r=this._readableState;var n;if(!r.objectMode){if(typeof e===\"string\"){t=t||r.defaultEncoding;if(t!==r.encoding){e=s.from(e,t);t=\"\"}n=true}}else{n=true}return readableAddChunk(this,e,t,false,n)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,r,n,i){u(\"readableAddChunk\",t);var a=e._readableState;if(t===null){a.reading=false;onEofChunk(e,a)}else{var o;if(!i)o=chunkInvalid(a,t);if(o){R(e,o)}else if(a.objectMode||t&&t.length>0){if(typeof t!==\"string\"&&!a.objectMode&&Object.getPrototypeOf(t)!==s.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(a.endEmitted)R(e,new v);else addChunk(e,a,t,true)}else if(a.ended){R(e,new y)}else if(a.destroyed){return false}else{a.reading=false;if(a.decoder&&!r){t=a.decoder.write(t);if(a.objectMode||t.length!==0)addChunk(e,a,t,false);else maybeReadMore(e,a)}else{addChunk(e,a,t,false)}}}else if(!n){a.reading=false;maybeReadMore(e,a)}}return!a.ended&&(a.length<a.highWaterMark||a.length===0)}function addChunk(e,t,r,n){if(t.flowing&&t.length===0&&!t.sync){t.awaitDrain=0;e.emit(\"data\",r)}else{t.length+=t.objectMode?1:r.length;if(n)t.buffer.unshift(r);else t.buffer.push(r);if(t.needReadable)emitReadable(e)}maybeReadMore(e,t)}function chunkInvalid(e,t){var r;if(!_isUint8Array(t)&&typeof t!==\"string\"&&t!==undefined&&!e.objectMode){r=new g(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t)}return r}Readable.prototype.isPaused=function(){return this._readableState.flowing===false};Readable.prototype.setEncoding=function(e){if(!w)w=r(704).s;var t=new w(e);this._readableState.decoder=t;this._readableState.encoding=this._readableState.decoder.encoding;var n=this._readableState.buffer.head;var i=\"\";while(n!==null){i+=t.write(n.data);n=n.next}this._readableState.buffer.clear();if(i!==\"\")this._readableState.buffer.push(i);this._readableState.length=i.length;return this};var T=1073741824;function computeNewHighWaterMark(e){if(e>=T){e=T}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){u(\"read\",e);e=parseInt(e,10);var t=this._readableState;var r=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended)){u(\"read: emitReadable\",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;u(\"need readable\",n);if(t.length===0||t.length-e<t.highWaterMark){n=true;u(\"length less than watermark\",n)}if(t.ended||t.reading){n=false;u(\"reading or ended\",n)}else if(n){u(\"do read\");t.reading=true;t.sync=true;if(t.length===0)t.needReadable=true;this._read(t.highWaterMark);t.sync=false;if(!t.reading)e=howMuchToRead(r,t)}var i;if(e>0)i=fromList(e,t);else i=null;if(i===null){t.needReadable=t.length<=t.highWaterMark;e=0}else{t.length-=e;t.awaitDrain=0}if(t.length===0){if(!t.ended)t.needReadable=true;if(r!==e&&t.ended)endReadable(this)}if(i!==null)this.emit(\"data\",i);return i};function onEofChunk(e,t){u(\"onEofChunk\");if(t.ended)return;if(t.decoder){var r=t.decoder.end();if(r&&r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;if(t.sync){emitReadable(e)}else{t.needReadable=false;if(!t.emittedReadable){t.emittedReadable=true;emitReadable_(e)}}}function emitReadable(e){var t=e._readableState;u(\"emitReadable\",t.needReadable,t.emittedReadable);t.needReadable=false;if(!t.emittedReadable){u(\"emitReadable\",t.flowing);t.emittedReadable=true;process.nextTick(emitReadable_,e)}}function emitReadable_(e){var t=e._readableState;u(\"emitReadable_\",t.destroyed,t.length,t.ended);if(!t.destroyed&&(t.length||t.ended)){e.emit(\"readable\");t.emittedReadable=false}t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark;flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;process.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){while(!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&t.length===0)){var r=t.length;u(\"maybeReadMore read 0\");e.read(0);if(r===t.length)break}t.readingMore=false}Readable.prototype._read=function(e){R(this,new _(\"_read()\"))};Readable.prototype.pipe=function(e,t){var r=this;var n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e);break}n.pipesCount+=1;u(\"pipe count=%d opts=%j\",n.pipesCount,t);var i=(!t||t.end!==false)&&e!==process.stdout&&e!==process.stderr;var o=i?onend:unpipe;if(n.endEmitted)process.nextTick(o);else r.once(\"end\",o);e.on(\"unpipe\",onunpipe);function onunpipe(e,t){u(\"onunpipe\");if(e===r){if(t&&t.hasUnpiped===false){t.hasUnpiped=true;cleanup()}}}function onend(){u(\"onend\");e.end()}var s=pipeOnDrain(r);e.on(\"drain\",s);var f=false;function cleanup(){u(\"cleanup\");e.removeListener(\"close\",onclose);e.removeListener(\"finish\",onfinish);e.removeListener(\"drain\",s);e.removeListener(\"error\",onerror);e.removeListener(\"unpipe\",onunpipe);r.removeListener(\"end\",onend);r.removeListener(\"end\",unpipe);r.removeListener(\"data\",ondata);f=true;if(n.awaitDrain&&(!e._writableState||e._writableState.needDrain))s()}r.on(\"data\",ondata);function ondata(t){u(\"ondata\");var i=e.write(t);u(\"dest.write\",i);if(i===false){if((n.pipesCount===1&&n.pipes===e||n.pipesCount>1&&indexOf(n.pipes,e)!==-1)&&!f){u(\"false write response, pause\",n.awaitDrain);n.awaitDrain++}r.pause()}}function onerror(t){u(\"onerror\",t);unpipe();e.removeListener(\"error\",onerror);if(a(e,\"error\")===0)R(e,t)}prependListener(e,\"error\",onerror);function onclose(){e.removeListener(\"finish\",onfinish);unpipe()}e.once(\"close\",onclose);function onfinish(){u(\"onfinish\");e.removeListener(\"close\",onclose);unpipe()}e.once(\"finish\",onfinish);function unpipe(){u(\"unpipe\");r.unpipe(e)}e.emit(\"pipe\",r);if(!n.flowing){u(\"pipe resume\");r.resume()}return e};function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;u(\"pipeOnDrain\",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&a(e,\"data\")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var r={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit(\"unpipe\",this,r);return this}if(!e){var n=t.pipes;var i=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var a=0;a<i;a++){n[a].emit(\"unpipe\",this,{hasUnpiped:false})}return this}var o=indexOf(t.pipes,e);if(o===-1)return this;t.pipes.splice(o,1);t.pipesCount-=1;if(t.pipesCount===1)t.pipes=t.pipes[0];e.emit(\"unpipe\",this,r);return this};Readable.prototype.on=function(e,t){var r=o.prototype.on.call(this,e,t);var n=this._readableState;if(e===\"data\"){n.readableListening=this.listenerCount(\"readable\")>0;if(n.flowing!==false)this.resume()}else if(e===\"readable\"){if(!n.endEmitted&&!n.readableListening){n.readableListening=n.needReadable=true;n.flowing=false;n.emittedReadable=false;u(\"on readable\",n.length,n.reading);if(n.length){emitReadable(this)}else if(!n.reading){process.nextTick(nReadingNextTick,this)}}}return r};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);if(e===\"readable\"){process.nextTick(updateReadableListening,this)}return r};Readable.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);if(e===\"readable\"||e===undefined){process.nextTick(updateReadableListening,this)}return t};function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0;if(t.resumeScheduled&&!t.paused){t.flowing=true}else if(e.listenerCount(\"data\")>0){e.resume()}}function nReadingNextTick(e){u(\"readable nexttick read 0\");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){u(\"resume\");e.flowing=!e.readableListening;resume(this,e)}e.paused=false;return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;process.nextTick(resume_,e,t)}}function resume_(e,t){u(\"resume\",t.reading);if(!t.reading){e.read(0)}t.resumeScheduled=false;e.emit(\"resume\");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){u(\"call pause flowing=%j\",this._readableState.flowing);if(this._readableState.flowing!==false){u(\"pause\");this._readableState.flowing=false;this.emit(\"pause\")}this._readableState.paused=true;return this};function flow(e){var t=e._readableState;u(\"flow\",t.flowing);while(t.flowing&&e.read()!==null){}}Readable.prototype.wrap=function(e){var t=this;var r=this._readableState;var n=false;e.on(\"end\",(function(){u(\"wrapped end\");if(r.decoder&&!r.ended){var e=r.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on(\"data\",(function(i){u(\"wrapped data\");if(r.decoder)i=r.decoder.write(i);if(r.objectMode&&(i===null||i===undefined))return;else if(!r.objectMode&&(!i||!i.length))return;var a=t.push(i);if(!a){n=true;e.pause()}}));for(var i in e){if(this[i]===undefined&&typeof e[i]===\"function\"){this[i]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(i)}}for(var a=0;a<E.length;a++){e.on(E[a],this.emit.bind(this,E[a]))}this._read=function(t){u(\"wrapped _read\",t);if(n){n=false;e.resume()}};return this};if(typeof Symbol===\"function\"){Readable.prototype[Symbol.asyncIterator]=function(){if(m===undefined){m=r(871)}return m(this)}}Object.defineProperty(Readable.prototype,\"readableHighWaterMark\",{enumerable:false,get:function get(){return this._readableState.highWaterMark}});Object.defineProperty(Readable.prototype,\"readableBuffer\",{enumerable:false,get:function get(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Readable.prototype,\"readableFlowing\",{enumerable:false,get:function get(){return this._readableState.flowing},set:function set(e){if(this._readableState){this._readableState.flowing=e}}});Readable._fromList=fromList;Object.defineProperty(Readable.prototype,\"readableLength\",{enumerable:false,get:function get(){return this._readableState.length}});function fromList(e,t){if(t.length===0)return null;var r;if(t.objectMode)r=t.buffer.shift();else if(!e||e>=t.length){if(t.decoder)r=t.buffer.join(\"\");else if(t.buffer.length===1)r=t.buffer.first();else r=t.buffer.concat(t.length);t.buffer.clear()}else{r=t.buffer.consume(e,t.decoder)}return r}function endReadable(e){var t=e._readableState;u(\"endReadable\",t.endEmitted);if(!t.endEmitted){t.ended=true;process.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){u(\"endReadableNT\",e.endEmitted,e.length);if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit(\"end\");if(e.autoDestroy){var r=t._writableState;if(!r||r.autoDestroy&&r.finished){t.destroy()}}}}if(typeof Symbol===\"function\"){Readable.from=function(e,t){if(S===undefined){S=r(727)}return S(Readable,e,t)}}function indexOf(e,t){for(var r=0,n=e.length;r<n;r++){if(e[r]===t)return r}return-1}},170:function(e,t,r){\"use strict\";e.exports=Transform;var n=r(646).q,i=n.ERR_METHOD_NOT_IMPLEMENTED,a=n.ERR_MULTIPLE_CALLBACK,o=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=n.ERR_TRANSFORM_WITH_LENGTH_0;var f=r(403);r(782)(Transform,f);function afterTransform(e,t){var r=this._transformState;r.transforming=false;var n=r.writecb;if(n===null){return this.emit(\"error\",new a)}r.writechunk=null;r.writecb=null;if(t!=null)this.push(t);n(e);var i=this._readableState;i.reading=false;if(i.needReadable||i.length<i.highWaterMark){this._read(i.highWaterMark)}}function Transform(e){if(!(this instanceof Transform))return new Transform(e);f.call(this,e);this._transformState={afterTransform:afterTransform.bind(this),needTransform:false,transforming:false,writecb:null,writechunk:null,writeencoding:null};this._readableState.needReadable=true;this._readableState.sync=false;if(e){if(typeof e.transform===\"function\")this._transform=e.transform;if(typeof e.flush===\"function\")this._flush=e.flush}this.on(\"prefinish\",prefinish)}function prefinish(){var e=this;if(typeof this._flush===\"function\"&&!this._readableState.destroyed){this._flush((function(t,r){done(e,t,r)}))}else{done(this,null,null)}}Transform.prototype.push=function(e,t){this._transformState.needTransform=false;return f.prototype.push.call(this,e,t)};Transform.prototype._transform=function(e,t,r){r(new i(\"_transform()\"))};Transform.prototype._write=function(e,t,r){var n=this._transformState;n.writecb=r;n.writechunk=e;n.writeencoding=t;if(!n.transforming){var i=this._readableState;if(n.needTransform||i.needReadable||i.length<i.highWaterMark)this._read(i.highWaterMark)}};Transform.prototype._read=function(e){var t=this._transformState;if(t.writechunk!==null&&!t.transforming){t.transforming=true;this._transform(t.writechunk,t.writeencoding,t.afterTransform)}else{t.needTransform=true}};Transform.prototype._destroy=function(e,t){f.prototype._destroy.call(this,e,(function(e){t(e)}))};function done(e,t,r){if(t)return e.emit(\"error\",t);if(r!=null)e.push(r);if(e._writableState.length)throw new s;if(e._transformState.transforming)throw new o;return e.push(null)}},337:function(e,t,r){\"use strict\";e.exports=Writable;function WriteReq(e,t,r){this.chunk=e;this.encoding=t;this.callback=r;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var n;Writable.WritableState=WritableState;var i={deprecate:r(769)};var a=r(678);var o=r(300).Buffer;var s=__webpack_require__.g.Uint8Array||function(){};function _uint8ArrayToBuffer(e){return o.from(e)}function _isUint8Array(e){return o.isBuffer(e)||e instanceof s}var f=r(25);var l=r(776),u=l.getHighWaterMark;var d=r(646).q,c=d.ERR_INVALID_ARG_TYPE,h=d.ERR_METHOD_NOT_IMPLEMENTED,p=d.ERR_MULTIPLE_CALLBACK,b=d.ERR_STREAM_CANNOT_PIPE,g=d.ERR_STREAM_DESTROYED,y=d.ERR_STREAM_NULL_VALUES,_=d.ERR_STREAM_WRITE_AFTER_END,v=d.ERR_UNKNOWN_ENCODING;var w=f.errorOrDestroy;r(782)(Writable,a);function nop(){}function WritableState(e,t,i){n=n||r(403);e=e||{};if(typeof i!==\"boolean\")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.writableObjectMode;this.highWaterMark=u(this,e,\"writableHighWaterMark\",i);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var a=e.decodeStrings===false;this.decodeStrings=!a;this.defaultEncoding=e.defaultEncoding||\"utf8\";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,\"buffer\",{get:i.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer \"+\"instead.\",\"DEP0003\")})}catch(e){}})();var m;if(typeof Symbol===\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]===\"function\"){m=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(e){if(m.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{m=function realHasInstance(e){return e instanceof this}}function Writable(e){n=n||r(403);var t=this instanceof n;if(!t&&!m.call(Writable,this))return new Writable(e);this._writableState=new WritableState(e,this,t);this.writable=true;if(e){if(typeof e.write===\"function\")this._write=e.write;if(typeof e.writev===\"function\")this._writev=e.writev;if(typeof e.destroy===\"function\")this._destroy=e.destroy;if(typeof e.final===\"function\")this._final=e.final}a.call(this)}Writable.prototype.pipe=function(){w(this,new b)};function writeAfterEnd(e,t){var r=new _;w(e,r);process.nextTick(t,r)}function validChunk(e,t,r,n){var i;if(r===null){i=new y}else if(typeof r!==\"string\"&&!t.objectMode){i=new c(\"chunk\",[\"string\",\"Buffer\"],r)}if(i){w(e,i);process.nextTick(n,i);return false}return true}Writable.prototype.write=function(e,t,r){var n=this._writableState;var i=false;var a=!n.objectMode&&_isUint8Array(e);if(a&&!o.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t===\"function\"){r=t;t=null}if(a)t=\"buffer\";else if(!t)t=n.defaultEncoding;if(typeof r!==\"function\")r=nop;if(n.ending)writeAfterEnd(this,r);else if(a||validChunk(this,n,e,r)){n.pendingcb++;i=writeOrBuffer(this,n,a,e,t,r)}return i};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e===\"string\")e=e.toLowerCase();if(!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new v(e);this._writableState.defaultEncoding=e;return this};Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(e,t,r){if(!e.objectMode&&e.decodeStrings!==false&&typeof t===\"string\"){t=o.from(t,r)}return t}Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,r,n,i,a){if(!r){var o=decodeChunk(t,n,i);if(n!==o){r=true;i=\"buffer\";n=o}}var s=t.objectMode?1:n.length;t.length+=s;var f=t.length<t.highWaterMark;if(!f)t.needDrain=true;if(t.writing||t.corked){var l=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:i,isBuf:r,callback:a,next:null};if(l){l.next=t.lastBufferedRequest}else{t.bufferedRequest=t.lastBufferedRequest}t.bufferedRequestCount+=1}else{doWrite(e,t,false,s,n,i,a)}return f}function doWrite(e,t,r,n,i,a,o){t.writelen=n;t.writecb=o;t.writing=true;t.sync=true;if(t.destroyed)t.onwrite(new g(\"write\"));else if(r)e._writev(i,t.onwrite);else e._write(i,a,t.onwrite);t.sync=false}function onwriteError(e,t,r,n,i){--t.pendingcb;if(r){process.nextTick(i,n);process.nextTick(finishMaybe,e,t);e._writableState.errorEmitted=true;w(e,n)}else{i(n);e._writableState.errorEmitted=true;w(e,n);finishMaybe(e,t)}}function onwriteStateUpdate(e){e.writing=false;e.writecb=null;e.length-=e.writelen;e.writelen=0}function onwrite(e,t){var r=e._writableState;var n=r.sync;var i=r.writecb;if(typeof i!==\"function\")throw new p;onwriteStateUpdate(r);if(t)onwriteError(e,r,n,t,i);else{var a=needFinish(r)||e.destroyed;if(!a&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest){clearBuffer(e,r)}if(n){process.nextTick(afterWrite,e,r,a,i)}else{afterWrite(e,r,a,i)}}}function afterWrite(e,t,r,n){if(!r)onwriteDrain(e,t);t.pendingcb--;n();finishMaybe(e,t)}function onwriteDrain(e,t){if(t.length===0&&t.needDrain){t.needDrain=false;e.emit(\"drain\")}}function clearBuffer(e,t){t.bufferProcessing=true;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount;var i=new Array(n);var a=t.corkedRequestsFree;a.entry=r;var o=0;var s=true;while(r){i[o]=r;if(!r.isBuf)s=false;r=r.next;o+=1}i.allBuffers=s;doWrite(e,t,true,t.length,i,\"\",a.finish);t.pendingcb++;t.lastBufferedRequest=null;if(a.next){t.corkedRequestsFree=a.next;a.next=null}else{t.corkedRequestsFree=new CorkedRequest(t)}t.bufferedRequestCount=0}else{while(r){var f=r.chunk;var l=r.encoding;var u=r.callback;var d=t.objectMode?1:f.length;doWrite(e,t,false,d,f,l,u);r=r.next;t.bufferedRequestCount--;if(t.writing){break}}if(r===null)t.lastBufferedRequest=null}t.bufferedRequest=r;t.bufferProcessing=false}Writable.prototype._write=function(e,t,r){r(new h(\"_write()\"))};Writable.prototype._writev=null;Writable.prototype.end=function(e,t,r){var n=this._writableState;if(typeof e===\"function\"){r=e;e=null;t=null}else if(typeof t===\"function\"){r=t;t=null}if(e!==null&&e!==undefined)this.write(e,t);if(n.corked){n.corked=1;this.uncork()}if(!n.ending)endWritable(this,n,r);return this};Object.defineProperty(Writable.prototype,\"writableLength\",{enumerable:false,get:function get(){return this._writableState.length}});function needFinish(e){return e.ending&&e.length===0&&e.bufferedRequest===null&&!e.finished&&!e.writing}function callFinal(e,t){e._final((function(r){t.pendingcb--;if(r){w(e,r)}t.prefinished=true;e.emit(\"prefinish\");finishMaybe(e,t)}))}function prefinish(e,t){if(!t.prefinished&&!t.finalCalled){if(typeof e._final===\"function\"&&!t.destroyed){t.pendingcb++;t.finalCalled=true;process.nextTick(callFinal,e,t)}else{t.prefinished=true;e.emit(\"prefinish\")}}}function finishMaybe(e,t){var r=needFinish(t);if(r){prefinish(e,t);if(t.pendingcb===0){t.finished=true;e.emit(\"finish\");if(t.autoDestroy){var n=e._readableState;if(!n||n.autoDestroy&&n.endEmitted){e.destroy()}}}}return r}function endWritable(e,t,r){t.ending=true;finishMaybe(e,t);if(r){if(t.finished)process.nextTick(r);else e.once(\"finish\",r)}t.ended=true;e.writable=false}function onCorkedFinish(e,t,r){var n=e.entry;e.entry=null;while(n){var i=n.callback;t.pendingcb--;i(r);n=n.next}t.corkedRequestsFree.next=e}Object.defineProperty(Writable.prototype,\"destroyed\",{enumerable:false,get:function get(){if(this._writableState===undefined){return false}return this._writableState.destroyed},set:function set(e){if(!this._writableState){return}this._writableState.destroyed=e}});Writable.prototype.destroy=f.destroy;Writable.prototype._undestroy=f.undestroy;Writable.prototype._destroy=function(e,t){t(e)}},871:function(e,t,r){\"use strict\";var n;function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}var i=r(698);var a=Symbol(\"lastResolve\");var o=Symbol(\"lastReject\");var s=Symbol(\"error\");var f=Symbol(\"ended\");var l=Symbol(\"lastPromise\");var u=Symbol(\"handlePromise\");var d=Symbol(\"stream\");function createIterResult(e,t){return{value:e,done:t}}function readAndResolve(e){var t=e[a];if(t!==null){var r=e[d].read();if(r!==null){e[l]=null;e[a]=null;e[o]=null;t(createIterResult(r,false))}}}function onReadable(e){process.nextTick(readAndResolve,e)}function wrapForNext(e,t){return function(r,n){e.then((function(){if(t[f]){r(createIterResult(undefined,true));return}t[u](r,n)}),n)}}var c=Object.getPrototypeOf((function(){}));var h=Object.setPrototypeOf((n={get stream(){return this[d]},next:function next(){var e=this;var t=this[s];if(t!==null){return Promise.reject(t)}if(this[f]){return Promise.resolve(createIterResult(undefined,true))}if(this[d].destroyed){return new Promise((function(t,r){process.nextTick((function(){if(e[s]){r(e[s])}else{t(createIterResult(undefined,true))}}))}))}var r=this[l];var n;if(r){n=new Promise(wrapForNext(r,this))}else{var i=this[d].read();if(i!==null){return Promise.resolve(createIterResult(i,false))}n=new Promise(this[u])}this[l]=n;return n}},_defineProperty(n,Symbol.asyncIterator,(function(){return this})),_defineProperty(n,\"return\",(function _return(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){if(e){r(e);return}t(createIterResult(undefined,true))}))}))})),n),c);var p=function createReadableStreamAsyncIterator(e){var t;var r=Object.create(h,(t={},_defineProperty(t,d,{value:e,writable:true}),_defineProperty(t,a,{value:null,writable:true}),_defineProperty(t,o,{value:null,writable:true}),_defineProperty(t,s,{value:null,writable:true}),_defineProperty(t,f,{value:e._readableState.endEmitted,writable:true}),_defineProperty(t,u,{value:function value(e,t){var n=r[d].read();if(n){r[l]=null;r[a]=null;r[o]=null;e(createIterResult(n,false))}else{r[a]=e;r[o]=t}},writable:true}),t));r[l]=null;i(e,(function(e){if(e&&e.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var t=r[o];if(t!==null){r[l]=null;r[a]=null;r[o]=null;t(e)}r[s]=e;return}var n=r[a];if(n!==null){r[l]=null;r[a]=null;r[o]=null;n(createIterResult(undefined,true))}r[f]=true}));e.on(\"readable\",onReadable.bind(null,r));return r};e.exports=p},379:function(e,t,r){\"use strict\";function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);if(t)n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}));r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};if(t%2){ownKeys(Object(r),true).forEach((function(t){_defineProperty(e,t,r[t])}))}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}}return e}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}function _classCallCheck(e,t){if(!(e instanceof t)){throw new TypeError(\"Cannot call a class as a function\")}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||false;n.configurable=true;if(\"value\"in n)n.writable=true;Object.defineProperty(e,n.key,n)}}function _createClass(e,t,r){if(t)_defineProperties(e.prototype,t);if(r)_defineProperties(e,r);return e}var n=r(300),i=n.Buffer;var a=r(837),o=a.inspect;var s=o&&o.custom||\"inspect\";function copyBuffer(e,t,r){i.prototype.copy.call(e,t,r)}e.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}_createClass(BufferList,[{key:\"push\",value:function push(e){var t={data:e,next:null};if(this.length>0)this.tail.next=t;else this.head=t;this.tail=t;++this.length}},{key:\"unshift\",value:function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length}},{key:\"shift\",value:function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e}},{key:\"clear\",value:function clear(){this.head=this.tail=null;this.length=0}},{key:\"join\",value:function join(e){if(this.length===0)return\"\";var t=this.head;var r=\"\"+t.data;while(t=t.next){r+=e+t.data}return r}},{key:\"concat\",value:function concat(e){if(this.length===0)return i.alloc(0);var t=i.allocUnsafe(e>>>0);var r=this.head;var n=0;while(r){copyBuffer(r.data,t,n);n+=r.data.length;r=r.next}return t}},{key:\"consume\",value:function consume(e,t){var r;if(e<this.head.data.length){r=this.head.data.slice(0,e);this.head.data=this.head.data.slice(e)}else if(e===this.head.data.length){r=this.shift()}else{r=t?this._getString(e):this._getBuffer(e)}return r}},{key:\"first\",value:function first(){return this.head.data}},{key:\"_getString\",value:function _getString(e){var t=this.head;var r=1;var n=t.data;e-=n.length;while(t=t.next){var i=t.data;var a=e>i.length?i.length:e;if(a===i.length)n+=i;else n+=i.slice(0,e);e-=a;if(e===0){if(a===i.length){++r;if(t.next)this.head=t.next;else this.head=this.tail=null}else{this.head=t;t.data=i.slice(a)}break}++r}this.length-=r;return n}},{key:\"_getBuffer\",value:function _getBuffer(e){var t=i.allocUnsafe(e);var r=this.head;var n=1;r.data.copy(t);e-=r.data.length;while(r=r.next){var a=r.data;var o=e>a.length?a.length:e;a.copy(t,t.length-e,0,o);e-=o;if(e===0){if(o===a.length){++n;if(r.next)this.head=r.next;else this.head=this.tail=null}else{this.head=r;r.data=a.slice(o)}break}++n}this.length-=n;return t}},{key:s,value:function value(e,t){return o(this,_objectSpread({},t,{depth:0,customInspect:false}))}}]);return BufferList}()},25:function(e){\"use strict\";function destroy(e,t){var r=this;var n=this._readableState&&this._readableState.destroyed;var i=this._writableState&&this._writableState.destroyed;if(n||i){if(t){t(e)}else if(e){if(!this._writableState){process.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!r._writableState){process.nextTick(emitErrorAndCloseNT,r,e)}else if(!r._writableState.errorEmitted){r._writableState.errorEmitted=true;process.nextTick(emitErrorAndCloseNT,r,e)}else{process.nextTick(emitCloseNT,r)}}else if(t){process.nextTick(emitCloseNT,r);t(e)}else{process.nextTick(emitCloseNT,r)}}));return this}function emitErrorAndCloseNT(e,t){emitErrorNT(e,t);emitCloseNT(e)}function emitCloseNT(e){if(e._writableState&&!e._writableState.emitClose)return;if(e._readableState&&!e._readableState.emitClose)return;e.emit(\"close\")}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit(\"error\",t)}function errorOrDestroy(e,t){var r=e._readableState;var n=e._writableState;if(r&&r.autoDestroy||n&&n.autoDestroy)e.destroy(t);else e.emit(\"error\",t)}e.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},698:function(e,t,r){\"use strict\";var n=r(646).q.ERR_STREAM_PREMATURE_CLOSE;function once(e){var t=false;return function(){if(t)return;t=true;for(var r=arguments.length,n=new Array(r),i=0;i<r;i++){n[i]=arguments[i]}e.apply(this,n)}}function noop(){}function isRequest(e){return e.setHeader&&typeof e.abort===\"function\"}function eos(e,t,r){if(typeof t===\"function\")return eos(e,null,t);if(!t)t={};r=once(r||noop);var i=t.readable||t.readable!==false&&e.readable;var a=t.writable||t.writable!==false&&e.writable;var o=function onlegacyfinish(){if(!e.writable)f()};var s=e._writableState&&e._writableState.finished;var f=function onfinish(){a=false;s=true;if(!i)r.call(e)};var l=e._readableState&&e._readableState.endEmitted;var u=function onend(){i=false;l=true;if(!a)r.call(e)};var d=function onerror(t){r.call(e,t)};var c=function onclose(){var t;if(i&&!l){if(!e._readableState||!e._readableState.ended)t=new n;return r.call(e,t)}if(a&&!s){if(!e._writableState||!e._writableState.ended)t=new n;return r.call(e,t)}};var h=function onrequest(){e.req.on(\"finish\",f)};if(isRequest(e)){e.on(\"complete\",f);e.on(\"abort\",c);if(e.req)h();else e.on(\"request\",h)}else if(a&&!e._writableState){e.on(\"end\",o);e.on(\"close\",o)}e.on(\"end\",u);e.on(\"finish\",f);if(t.error!==false)e.on(\"error\",d);e.on(\"close\",c);return function(){e.removeListener(\"complete\",f);e.removeListener(\"abort\",c);e.removeListener(\"request\",h);if(e.req)e.req.removeListener(\"finish\",f);e.removeListener(\"end\",o);e.removeListener(\"close\",o);e.removeListener(\"finish\",f);e.removeListener(\"end\",u);e.removeListener(\"error\",d);e.removeListener(\"close\",c)}}e.exports=eos},727:function(e,t,r){\"use strict\";function asyncGeneratorStep(e,t,r,n,i,a,o){try{var s=e[a](o);var f=s.value}catch(e){r(e);return}if(s.done){t(f)}else{Promise.resolve(f).then(n,i)}}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var a=e.apply(t,r);function _next(e){asyncGeneratorStep(a,n,i,_next,_throw,\"next\",e)}function _throw(e){asyncGeneratorStep(a,n,i,_next,_throw,\"throw\",e)}_next(undefined)}))}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);if(t)n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}));r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};if(t%2){ownKeys(Object(r),true).forEach((function(t){_defineProperty(e,t,r[t])}))}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(r))}else{ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}}return e}function _defineProperty(e,t,r){if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}var n=r(646).q.ERR_INVALID_ARG_TYPE;function from(e,t,r){var i;if(t&&typeof t.next===\"function\"){i=t}else if(t&&t[Symbol.asyncIterator])i=t[Symbol.asyncIterator]();else if(t&&t[Symbol.iterator])i=t[Symbol.iterator]();else throw new n(\"iterable\",[\"Iterable\"],t);var a=new e(_objectSpread({objectMode:true},r));var o=false;a._read=function(){if(!o){o=true;next()}};function next(){return _next2.apply(this,arguments)}function _next2(){_next2=_asyncToGenerator((function*(){try{var e=yield i.next(),t=e.value,r=e.done;if(r){a.push(null)}else if(a.push(yield t)){next()}else{o=false}}catch(e){a.destroy(e)}}));return _next2.apply(this,arguments)}return a}e.exports=from},442:function(e,t,r){\"use strict\";var n;function once(e){var t=false;return function(){if(t)return;t=true;e.apply(void 0,arguments)}}var i=r(646).q,a=i.ERR_MISSING_ARGS,o=i.ERR_STREAM_DESTROYED;function noop(e){if(e)throw e}function isRequest(e){return e.setHeader&&typeof e.abort===\"function\"}function destroyer(e,t,i,a){a=once(a);var s=false;e.on(\"close\",(function(){s=true}));if(n===undefined)n=r(698);n(e,{readable:t,writable:i},(function(e){if(e)return a(e);s=true;a()}));var f=false;return function(t){if(s)return;if(f)return;f=true;if(isRequest(e))return e.abort();if(typeof e.destroy===\"function\")return e.destroy();a(t||new o(\"pipe\"))}}function call(e){e()}function pipe(e,t){return e.pipe(t)}function popCallback(e){if(!e.length)return noop;if(typeof e[e.length-1]!==\"function\")return noop;return e.pop()}function pipeline(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++){t[r]=arguments[r]}var n=popCallback(t);if(Array.isArray(t[0]))t=t[0];if(t.length<2){throw new a(\"streams\")}var i;var o=t.map((function(e,r){var a=r<t.length-1;var s=r>0;return destroyer(e,a,s,(function(e){if(!i)i=e;if(e)o.forEach(call);if(a)return;o.forEach(call);n(i)}))}));return t.reduce(pipe)}e.exports=pipeline},776:function(e,t,r){\"use strict\";var n=r(646).q.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function getHighWaterMark(e,t,r,i){var a=highWaterMarkFrom(t,i,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var o=i?r:\"highWaterMark\";throw new n(o,a)}return Math.floor(a)}return e.objectMode?16:16*1024}e.exports={getHighWaterMark:getHighWaterMark}},678:function(e,t,r){e.exports=r(781)},55:function(e,t,r){var n=r(300);var i=n.Buffer;function copyProps(e,t){for(var r in e){t[r]=e[r]}}if(i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow){e.exports=n}else{copyProps(n,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,r){return i(e,t,r)}SafeBuffer.prototype=Object.create(i.prototype);copyProps(i,SafeBuffer);SafeBuffer.from=function(e,t,r){if(typeof e===\"number\"){throw new TypeError(\"Argument must not be a number\")}return i(e,t,r)};SafeBuffer.alloc=function(e,t,r){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}var n=i(e);if(t!==undefined){if(typeof r===\"string\"){n.fill(t,r)}else{n.fill(t)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n.SlowBuffer(e)}},173:function(e,t,r){e.exports=Stream;var n=r(361).EventEmitter;var i=r(782);i(Stream,n);Stream.Readable=r(709);Stream.Writable=r(337);Stream.Duplex=r(403);Stream.Transform=r(170);Stream.PassThrough=r(889);Stream.finished=r(698);Stream.pipeline=r(442);Stream.Stream=Stream;function Stream(){n.call(this)}Stream.prototype.pipe=function(e,t){var r=this;function ondata(t){if(e.writable){if(false===e.write(t)&&r.pause){r.pause()}}}r.on(\"data\",ondata);function ondrain(){if(r.readable&&r.resume){r.resume()}}e.on(\"drain\",ondrain);if(!e._isStdio&&(!t||t.end!==false)){r.on(\"end\",onend);r.on(\"close\",onclose)}var i=false;function onend(){if(i)return;i=true;e.end()}function onclose(){if(i)return;i=true;if(typeof e.destroy===\"function\")e.destroy()}function onerror(e){cleanup();if(n.listenerCount(this,\"error\")===0){throw e}}r.on(\"error\",onerror);e.on(\"error\",onerror);function cleanup(){r.removeListener(\"data\",ondata);e.removeListener(\"drain\",ondrain);r.removeListener(\"end\",onend);r.removeListener(\"close\",onclose);r.removeListener(\"error\",onerror);e.removeListener(\"error\",onerror);r.removeListener(\"end\",cleanup);r.removeListener(\"close\",cleanup);e.removeListener(\"close\",cleanup)}r.on(\"end\",cleanup);r.on(\"close\",cleanup);e.on(\"close\",cleanup);e.emit(\"pipe\",r);return e}},704:function(e,t,r){\"use strict\";var n=r(55).Buffer;var i=n.isEncoding||function(e){e=\"\"+e;switch(e&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return true;default:return false}};function _normalizeEncoding(e){if(!e)return\"utf8\";var t;while(true){switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!==\"string\"&&(n.isEncoding===i||!i(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}t.s=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case\"utf16le\":this.text=utf16Text;this.end=utf16End;t=4;break;case\"utf8\":this.fillLast=utf8FillLast;t=4;break;case\"base64\":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=n.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return\"\";var t;var r;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return\"\";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r<e.length)return t?t+this.text(e,r):this.text(e,r);return t||\"\"};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(e){if(this.lastNeed<=e.length){e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length);this.lastNeed-=e.length};function utf8CheckByte(e){if(e<=127)return 0;else if(e>>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,r){var n=t.length-1;if(n<r)return 0;var i=utf8CheckByte(t[n]);if(i>=0){if(i>0)e.lastNeed=i-1;return i}if(--n<r||i===-2)return 0;i=utf8CheckByte(t[n]);if(i>=0){if(i>0)e.lastNeed=i-2;return i}if(--n<r||i===-2)return 0;i=utf8CheckByte(t[n]);if(i>=0){if(i>0){if(i===2)i=0;else e.lastNeed=i-3}return i}return 0}function utf8CheckExtraBytes(e,t,r){if((t[0]&192)!==128){e.lastNeed=0;return\"<22>\"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return\"<22>\"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return\"<22>\"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,e,t);if(r!==undefined)return r;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var r=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);e.copy(this.lastChar,0,n);return e.toString(\"utf8\",t,n)}function utf8End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+\"<22>\";return t}function utf16Text(e,t){if((e.length-t)%2===0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString(\"utf16le\",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function base64Text(e,t){var r=(e.length-t)%3;if(r===0)return e.toString(\"base64\",t);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString(\"base64\",t,e.length-r)}function base64End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed)return t+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):\"\"}},769:function(e){e.exports=deprecate;function deprecate(e,t){if(config(\"noDeprecation\")){return e}var r=false;function deprecated(){if(!r){if(config(\"throwDeprecation\")){throw new Error(t)}else if(config(\"traceDeprecation\")){console.trace(t)}else{console.warn(t)}r=true}return e.apply(this,arguments)}return deprecated}function config(e){try{if(!__webpack_require__.g.localStorage)return false}catch(e){return false}var t=__webpack_require__.g.localStorage[e];if(null==t)return false;return String(t).toLowerCase()===\"true\"}},300:function(e){\"use strict\";e.exports=__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")},361:function(e){\"use strict\";e.exports=__webpack_require__(/*! events */ \"./node_modules/next/dist/compiled/events/events.js\")},781:function(e){\"use strict\";e.exports=(__webpack_require__(/*! events */ \"./node_modules/next/dist/compiled/events/events.js\").EventEmitter)},837:function(e){\"use strict\";e.exports=__webpack_require__(/*! util */ \"./node_modules/next/dist/compiled/util/util.js\")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var i=t[r]={exports:{}};var a=true;try{e[r](i,i.exports,__nccwpck_require__);a=false}finally{if(a)delete t[r]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r=__nccwpck_require__(173);module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7O0FBQUEsWUFBWSxPQUFPLGdCQUFnQixzQ0FBc0MsaUNBQWlDLE1BQU0sV0FBVyx1Q0FBdUMsYUFBYSwwREFBMEQsSUFBSSxLQUFLLGlDQUFpQyxNQUFNLFdBQVcsMEJBQTBCLCtCQUErQix5QkFBeUIsNkJBQTZCLGlCQUFpQixhQUFhLFdBQVcsZ0NBQWdDLE9BQU8sUUFBUSwyQkFBMkIsd0JBQXdCLFNBQVMsS0FBSyxpQkFBaUIsMEJBQTBCLG1CQUFtQiwwQkFBMEIsZ0NBQWdDLDJCQUEyQixlQUFlLG9CQUFvQixxQkFBcUIsaUJBQWlCLHdCQUF3QixRQUFRLGdCQUFnQixHQUFHLEVBQUUsMEJBQTBCLGNBQWMsZUFBZSxnQkFBZ0IsR0FBRyxFQUFFLE1BQU0sS0FBSyxLQUFLLEVBQUUsS0FBSyxZQUFZLEdBQUcsRUFBRSxLQUFLLEdBQUcsS0FBSyxZQUFZLEdBQUcsRUFBRSxVQUFVLEdBQUcsMkJBQTJCLDJDQUEyQyx5QkFBeUIsOEJBQThCLFdBQVcscUNBQXFDLHlCQUF5Qix3QkFBd0IsSUFBSSx3QkFBd0IsYUFBYSxLQUFLLDRCQUE0Qix1REFBdUQsd0RBQXdELGFBQWEsd0RBQXdELE1BQU0sOENBQThDLGdCQUFnQix3QkFBd0IsS0FBSyxZQUFZLE1BQU0sNEJBQTRCLFNBQVMsR0FBRyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLDhDQUE4QyxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixTQUFTLEVBQUUsU0FBUyxhQUFhLHVFQUF1RSwwREFBMEQsNENBQTRDLEdBQUcsZ0VBQWdFLG9EQUFvRCx1REFBdUQsR0FBRywwRUFBMEUsc0VBQXNFLGdFQUFnRSwwRkFBMEYsb0RBQW9ELDZCQUE2QixhQUFhLHlGQUF5RixjQUFjLHFCQUFxQixhQUFhLCtCQUErQixTQUFT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YUFBYSxNQUFNLHFCQUFNLGlCQUFpQix3QkFBd0IseUNBQXlDLGlCQUFpQixhQUFhLFVBQVUsbUJBQU8sQ0FBQyxpRUFBUSxFQUFFLGlCQUFpQixhQUFhLFVBQVUsbUJBQU8sQ0FBQyxrRUFBUSxFQUFFLGlCQUFpQixhQUFhLFVBQVUsc0dBQThCLENBQUMsaUJBQWlCLGFBQWEsVUFBVSxtQkFBTyxDQUFDLDREQUFNLElBQUksU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLG1FQUFtRSxTQUFTLEtBQUssK0JBQStCLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzPzkzNDUiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIGU9ezc4MjpmdW5jdGlvbihlKXtpZih0eXBlb2YgT2JqZWN0LmNyZWF0ZT09PVwiZnVuY3Rpb25cIil7ZS5leHBvcnRzPWZ1bmN0aW9uIGluaGVyaXRzKGUsdCl7aWYodCl7ZS5zdXBlcl89dDtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOmZhbHNlLHdyaXRhYmxlOnRydWUsY29uZmlndXJhYmxlOnRydWV9fSl9fX1lbHNle2UuZXhwb3J0cz1mdW5jdGlvbiBpbmhlcml0cyhlLHQpe2lmKHQpe2Uuc3VwZXJfPXQ7dmFyIFRlbXBDdG9yPWZ1bmN0aW9uKCl7fTtUZW1wQ3Rvci5wcm90b3R5cGU9dC5wcm90b3R5cGU7ZS5wcm90b3R5cGU9bmV3IFRlbXBDdG9yO2UucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9fX19LDY0NjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtjb25zdCB0PXt9O2Z1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShlLHIsbil7aWYoIW4pe249RXJyb3J9ZnVuY3Rpb24gZ2V0TWVzc2FnZShlLHQsbil7aWYodHlwZW9mIHI9PT1cInN0cmluZ1wiKXtyZXR1cm4gcn1lbHNle3JldHVybiByKGUsdCxuKX19Y2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgbntjb25zdHJ1Y3RvcihlLHQscil7c3VwZXIoZ2V0TWVzc2FnZShlLHQscikpfX1Ob2RlRXJyb3IucHJvdG90eXBlLm5hbWU9bi5uYW1lO05vZGVFcnJvci5wcm90b3R5cGUuY29kZT1lO3RbZV09Tm9kZUVycm9yfWZ1bmN0aW9uIG9uZU9mKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgcj1lLmxlbmd0aDtlPWUubWFwKChlPT5TdHJpbmcoZSkpKTtpZihyPjIpe3JldHVybmBvbmUgb2YgJHt0fSAke2Uuc2xpY2UoMCxyLTEpLmpvaW4oXCIsIFwiKX0sIG9yIGArZVtyLTFdfWVsc2UgaWYocj09PTIpe3JldHVybmBvbmUgb2YgJHt0fSAke2VbMF19IG9yICR7ZVsxXX1gfWVsc2V7cmV0dXJuYG9mICR7dH0gJHtlWzBdfWB9fWVsc2V7cmV0dXJuYG9mICR7dH0gJHtTdHJpbmcoZSl9YH19ZnVuY3Rpb24gc3RhcnRzV2l0aChlLHQscil7cmV0dXJuIGUuc3Vic3RyKCFyfHxyPDA/MDorcix0Lmxlbmd0aCk9PT10fWZ1bmN0aW9uIGVuZHNXaXRoKGUsdCxyKXtpZihyPT09dW5kZWZpbmVkfHxyPmUubGVuZ3RoKXtyPWUubGVuZ3RofXJldHVybiBlLnN1YnN0cmluZyhyLXQubGVuZ3RoLHIpPT09dH1mdW5jdGlvbiBpbmNsdWRlcyhlLHQscil7aWYodHlwZW9mIHIhPT1cIm51bWJlclwiKXtyPTB9aWYocit0Lmxlbmd0aD5lLmxlbmd0aCl7cmV0dXJuIGZhbHNlfWVsc2V7cmV0dXJuIGUuaW5kZXhPZih0LHIpIT09LTF9fWNyZWF0ZUVycm9yVHlwZShcIkVSUl9JTlZBTElEX09QVF9WQUxVRVwiLChmdW5jdGlvbihlLHQpe3JldHVybidUaGUgdmFsdWUgXCInK3QrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicrZSsnXCInfSksVHlwZUVycm9yKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfSU5WQUxJRF9BUkdfVFlQRVwiLChmdW5jdGlvbihlLHQscil7bGV0IG47aWYodHlwZW9mIHQ9PT1cInN0cmluZ1wiJiZzdGFydHNXaXRoKHQsXCJub3QgXCIpKXtuPVwibXVzdCBub3QgYmVcIjt0PXQucmVwbGFjZSgvXm5vdCAvLFwiXCIpfWVsc2V7bj1cIm11c3QgYmVcIn1sZXQgaTtpZihlbmRzV2l0aChlLFwiIGFyZ3VtZW50XCIpKXtpPWBUaGUgJHtlfSAke259ICR7b25lT2YodCxcInR5cGVcIil9YH1lbHNle2NvbnN0IHI9aW5jbHVkZXMoZSxcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIjtpPWBUaGUgXCIke2V9XCIgJHtyfSAke259ICR7b25lT2YodCxcInR5cGVcIil9YH1pKz1gLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIHJ9YDtyZXR1cm4gaX0pLFR5cGVFcnJvcik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRlwiLFwic3RyZWFtLnB1c2goKSBhZnRlciBFT0ZcIik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URURcIiwoZnVuY3Rpb24oZSl7cmV0dXJuXCJUaGUgXCIrZStcIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkXCJ9KSk7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIixcIlByZW1hdHVyZSBjbG9zZVwiKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX0RFU1RST1lFRFwiLChmdW5jdGlvbihlKXtyZXR1cm5cIkNhbm5vdCBjYWxsIFwiK2UrXCIgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZFwifSkpO2NyZWF0ZUVycm9yVHlwZShcIkVSUl9NVUxUSVBMRV9DQUxMQkFDS1wiLFwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzXCIpO2NyZWF0ZUVycm9yVHlwZShcIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEVcIixcIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGVcIik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkRcIixcIndyaXRlIGFmdGVyIGVuZFwiKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX05VTExfVkFMVUVTXCIsXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiLFR5cGVFcnJvcik7Y3JlYXRlRXJyb3JUeXBlKFwiRVJSX1VOS05PV05fRU5DT0RJTkdcIiwoZnVuY3Rpb24oZSl7cmV0dXJuXCJVbmtub3duIGVuY29kaW5nOiBcIitlfSksVHlwZUVycm9yKTtjcmVhdGVFcnJvclR5cGUoXCJFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UXCIsXCJzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudFwiKTtlLmV4cG9ydHMucT10fSw0MDM6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gZSl7dC5wdXNoKHIpfXJldHVybiB0fTtlLmV4cG9ydHM9RHVwbGV4O3ZhciBpPXIoNzA5KTt2YXIgYT1yKDMzNyk7cig3ODIpKER1cGxleCxpKTt7dmFyIG89bihhLnByb3RvdHlwZSk7Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspe3ZhciBmPW9bc107aWYoIUR1cGxleC5wcm90b3R5cGVbZl0pRHVwbGV4LnByb3RvdHlwZVtmXT1hLnByb3RvdHlwZVtmXX19ZnVuY3Rpb24gRHVwbGV4KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpcmV0dXJuIG5ldyBEdXBsZXgoZSk7aS5jYWxsKHRoaXMsZSk7YS5jYWxsKHRoaXMsZSk7dGhpcy5hbGxvd0hhbGZPcGVuPXRydWU7aWYoZSl7aWYoZS5yZWFkYWJsZT09PWZhbHNlKXRoaXMucmVhZGFibGU9ZmFsc2U7aWYoZS53cml0YWJsZT09PWZhbHNlKXRoaXMud3JpdGFibGU9ZmFsc2U7aWYoZS5hbGxvd0hhbGZPcGVuPT09ZmFsc2Upe3RoaXMuYWxsb3dIYWxmT3Blbj1mYWxzZTt0aGlzLm9uY2UoXCJlbmRcIixvbmVuZCl9fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLFwid3JpdGFibGVCdWZmZXJcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsXCJ3cml0YWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSk7ZnVuY3Rpb24gb25lbmQoKXtpZih0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKXJldHVybjtwcm9jZXNzLm5leHRUaWNrKG9uRW5kTlQsdGhpcyl9ZnVuY3Rpb24gb25FbmROVChlKXtlLmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLFwiZGVzdHJveWVkXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGU9PT11bmRlZmluZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGU9PT11bmRlZmluZWQpe3JldHVybiBmYWxzZX1yZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGU9PT11bmRlZmluZWR8fHRoaXMuX3dyaXRhYmxlU3RhdGU9PT11bmRlZmluZWQpe3JldHVybn10aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1lO3RoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWV9fSl9LDg4OTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPVBhc3NUaHJvdWdoO3ZhciBuPXIoMTcwKTtyKDc4MikoUGFzc1Rocm91Z2gsbik7ZnVuY3Rpb24gUGFzc1Rocm91Z2goZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKXJldHVybiBuZXcgUGFzc1Rocm91Z2goZSk7bi5jYWxsKHRoaXMsZSl9UGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3IobnVsbCxlKX19LDcwOTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPVJlYWRhYmxlO3ZhciBuO1JlYWRhYmxlLlJlYWRhYmxlU3RhdGU9UmVhZGFibGVTdGF0ZTt2YXIgaT1yKDM2MSkuRXZlbnRFbWl0dGVyO3ZhciBhPWZ1bmN0aW9uIEVFbGlzdGVuZXJDb3VudChlLHQpe3JldHVybiBlLmxpc3RlbmVycyh0KS5sZW5ndGh9O3ZhciBvPXIoNjc4KTt2YXIgcz1yKDMwMCkuQnVmZmVyO3ZhciBmPWdsb2JhbC5VaW50OEFycmF5fHxmdW5jdGlvbigpe307ZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihlKXtyZXR1cm4gcy5mcm9tKGUpfWZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkoZSl7cmV0dXJuIHMuaXNCdWZmZXIoZSl8fGUgaW5zdGFuY2VvZiBmfXZhciBsPXIoODM3KTt2YXIgdTtpZihsJiZsLmRlYnVnbG9nKXt1PWwuZGVidWdsb2coXCJzdHJlYW1cIil9ZWxzZXt1PWZ1bmN0aW9uIGRlYnVnKCl7fX12YXIgZD1yKDM3OSk7dmFyIGM9cigyNSk7dmFyIGg9cig3NzYpLHA9aC5nZXRIaWdoV2F0ZXJNYXJrO3ZhciBiPXIoNjQ2KS5xLGc9Yi5FUlJfSU5WQUxJRF9BUkdfVFlQRSx5PWIuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixfPWIuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsdj1iLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7dmFyIHc7dmFyIG07dmFyIFM7cig3ODIpKFJlYWRhYmxlLG8pO3ZhciBSPWMuZXJyb3JPckRlc3Ryb3k7dmFyIEU9W1wiZXJyb3JcIixcImNsb3NlXCIsXCJkZXN0cm95XCIsXCJwYXVzZVwiLFwicmVzdW1lXCJdO2Z1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlLHQscil7aWYodHlwZW9mIGUucHJlcGVuZExpc3RlbmVyPT09XCJmdW5jdGlvblwiKXJldHVybiBlLnByZXBlbmRMaXN0ZW5lcih0LHIpO2lmKCFlLl9ldmVudHN8fCFlLl9ldmVudHNbdF0pZS5vbih0LHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlLl9ldmVudHNbdF0pKWUuX2V2ZW50c1t0XS51bnNoaWZ0KHIpO2Vsc2UgZS5fZXZlbnRzW3RdPVtyLGUuX2V2ZW50c1t0XV19ZnVuY3Rpb24gUmVhZGFibGVTdGF0ZShlLHQsaSl7bj1ufHxyKDQwMyk7ZT1lfHx7fTtpZih0eXBlb2YgaSE9PVwiYm9vbGVhblwiKWk9dCBpbnN0YW5jZW9mIG47dGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlO2lmKGkpdGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISFlLnJlYWRhYmxlT2JqZWN0TW9kZTt0aGlzLmhpZ2hXYXRlck1hcms9cCh0aGlzLGUsXCJyZWFkYWJsZUhpZ2hXYXRlck1hcmtcIixpKTt0aGlzLmJ1ZmZlcj1uZXcgZDt0aGlzLmxlbmd0aD0wO3RoaXMucGlwZXM9bnVsbDt0aGlzLnBpcGVzQ291bnQ9MDt0aGlzLmZsb3dpbmc9bnVsbDt0aGlzLmVuZGVkPWZhbHNlO3RoaXMuZW5kRW1pdHRlZD1mYWxzZTt0aGlzLnJlYWRpbmc9ZmFsc2U7dGhpcy5zeW5jPXRydWU7dGhpcy5uZWVkUmVhZGFibGU9ZmFsc2U7dGhpcy5lbWl0dGVkUmVhZGFibGU9ZmFsc2U7dGhpcy5yZWFkYWJsZUxpc3RlbmluZz1mYWxzZTt0aGlzLnJlc3VtZVNjaGVkdWxlZD1mYWxzZTt0aGlzLnBhdXNlZD10cnVlO3RoaXMuZW1pdENsb3NlPWUuZW1pdENsb3NlIT09ZmFsc2U7dGhpcy5hdXRvRGVzdHJveT0hIWUuYXV0b0Rlc3Ryb3k7dGhpcy5kZXN0cm95ZWQ9ZmFsc2U7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiO3RoaXMuYXdhaXREcmFpbj0wO3RoaXMucmVhZGluZ01vcmU9ZmFsc2U7dGhpcy5kZWNvZGVyPW51bGw7dGhpcy5lbmNvZGluZz1udWxsO2lmKGUuZW5jb2Rpbmcpe2lmKCF3KXc9cig3MDQpLnM7dGhpcy5kZWNvZGVyPW5ldyB3KGUuZW5jb2RpbmcpO3RoaXMuZW5jb2Rpbmc9ZS5lbmNvZGluZ319ZnVuY3Rpb24gUmVhZGFibGUoZSl7bj1ufHxyKDQwMyk7aWYoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKXJldHVybiBuZXcgUmVhZGFibGUoZSk7dmFyIHQ9dGhpcyBpbnN0YW5jZW9mIG47dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgUmVhZGFibGVTdGF0ZShlLHRoaXMsdCk7dGhpcy5yZWFkYWJsZT10cnVlO2lmKGUpe2lmKHR5cGVvZiBlLnJlYWQ9PT1cImZ1bmN0aW9uXCIpdGhpcy5fcmVhZD1lLnJlYWQ7aWYodHlwZW9mIGUuZGVzdHJveT09PVwiZnVuY3Rpb25cIil0aGlzLl9kZXN0cm95PWUuZGVzdHJveX1vLmNhbGwodGhpcyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe2lmKCF0aGlzLl9yZWFkYWJsZVN0YXRlKXtyZXR1cm59dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZX19KTtSZWFkYWJsZS5wcm90b3R5cGUuZGVzdHJveT1jLmRlc3Ryb3k7UmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3k9Yy51bmRlc3Ryb3k7UmVhZGFibGUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX07UmVhZGFibGUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9yZWFkYWJsZVN0YXRlO3ZhciBuO2lmKCFyLm9iamVjdE1vZGUpe2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7dD10fHxyLmRlZmF1bHRFbmNvZGluZztpZih0IT09ci5lbmNvZGluZyl7ZT1zLmZyb20oZSx0KTt0PVwiXCJ9bj10cnVlfX1lbHNle249dHJ1ZX1yZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLGUsdCxmYWxzZSxuKX07UmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcyxlLG51bGwsdHJ1ZSxmYWxzZSl9O2Z1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoZSx0LHIsbixpKXt1KFwicmVhZGFibGVBZGRDaHVua1wiLHQpO3ZhciBhPWUuX3JlYWRhYmxlU3RhdGU7aWYodD09PW51bGwpe2EucmVhZGluZz1mYWxzZTtvbkVvZkNodW5rKGUsYSl9ZWxzZXt2YXIgbztpZighaSlvPWNodW5rSW52YWxpZChhLHQpO2lmKG8pe1IoZSxvKX1lbHNlIGlmKGEub2JqZWN0TW9kZXx8dCYmdC5sZW5ndGg+MCl7aWYodHlwZW9mIHQhPT1cInN0cmluZ1wiJiYhYS5vYmplY3RNb2RlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkhPT1zLnByb3RvdHlwZSl7dD1fdWludDhBcnJheVRvQnVmZmVyKHQpfWlmKG4pe2lmKGEuZW5kRW1pdHRlZClSKGUsbmV3IHYpO2Vsc2UgYWRkQ2h1bmsoZSxhLHQsdHJ1ZSl9ZWxzZSBpZihhLmVuZGVkKXtSKGUsbmV3IHkpfWVsc2UgaWYoYS5kZXN0cm95ZWQpe3JldHVybiBmYWxzZX1lbHNle2EucmVhZGluZz1mYWxzZTtpZihhLmRlY29kZXImJiFyKXt0PWEuZGVjb2Rlci53cml0ZSh0KTtpZihhLm9iamVjdE1vZGV8fHQubGVuZ3RoIT09MClhZGRDaHVuayhlLGEsdCxmYWxzZSk7ZWxzZSBtYXliZVJlYWRNb3JlKGUsYSl9ZWxzZXthZGRDaHVuayhlLGEsdCxmYWxzZSl9fX1lbHNlIGlmKCFuKXthLnJlYWRpbmc9ZmFsc2U7bWF5YmVSZWFkTW9yZShlLGEpfX1yZXR1cm4hYS5lbmRlZCYmKGEubGVuZ3RoPGEuaGlnaFdhdGVyTWFya3x8YS5sZW5ndGg9PT0wKX1mdW5jdGlvbiBhZGRDaHVuayhlLHQscixuKXtpZih0LmZsb3dpbmcmJnQubGVuZ3RoPT09MCYmIXQuc3luYyl7dC5hd2FpdERyYWluPTA7ZS5lbWl0KFwiZGF0YVwiLHIpfWVsc2V7dC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOnIubGVuZ3RoO2lmKG4pdC5idWZmZXIudW5zaGlmdChyKTtlbHNlIHQuYnVmZmVyLnB1c2gocik7aWYodC5uZWVkUmVhZGFibGUpZW1pdFJlYWRhYmxlKGUpfW1heWJlUmVhZE1vcmUoZSx0KX1mdW5jdGlvbiBjaHVua0ludmFsaWQoZSx0KXt2YXIgcjtpZighX2lzVWludDhBcnJheSh0KSYmdHlwZW9mIHQhPT1cInN0cmluZ1wiJiZ0IT09dW5kZWZpbmVkJiYhZS5vYmplY3RNb2RlKXtyPW5ldyBnKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSx0KX1yZXR1cm4gcn1SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPT09ZmFsc2V9O1JlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbihlKXtpZighdyl3PXIoNzA0KS5zO3ZhciB0PW5ldyB3KGUpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj10O3RoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVuY29kaW5nO3ZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQ7dmFyIGk9XCJcIjt3aGlsZShuIT09bnVsbCl7aSs9dC53cml0ZShuLmRhdGEpO249bi5uZXh0fXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCk7aWYoaSE9PVwiXCIpdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChpKTt0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1pLmxlbmd0aDtyZXR1cm4gdGhpc307dmFyIFQ9MTA3Mzc0MTgyNDtmdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhlKXtpZihlPj1UKXtlPVR9ZWxzZXtlLS07ZXw9ZT4+PjE7ZXw9ZT4+PjI7ZXw9ZT4+PjQ7ZXw9ZT4+Pjg7ZXw9ZT4+PjE2O2UrK31yZXR1cm4gZX1mdW5jdGlvbiBob3dNdWNoVG9SZWFkKGUsdCl7aWYoZTw9MHx8dC5sZW5ndGg9PT0wJiZ0LmVuZGVkKXJldHVybiAwO2lmKHQub2JqZWN0TW9kZSlyZXR1cm4gMTtpZihlIT09ZSl7aWYodC5mbG93aW5nJiZ0Lmxlbmd0aClyZXR1cm4gdC5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiB0Lmxlbmd0aH1pZihlPnQuaGlnaFdhdGVyTWFyayl0LmhpZ2hXYXRlck1hcms9Y29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsoZSk7aWYoZTw9dC5sZW5ndGgpcmV0dXJuIGU7aWYoIXQuZW5kZWQpe3QubmVlZFJlYWRhYmxlPXRydWU7cmV0dXJuIDB9cmV0dXJuIHQubGVuZ3RofVJlYWRhYmxlLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGUpe3UoXCJyZWFkXCIsZSk7ZT1wYXJzZUludChlLDEwKTt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlO3ZhciByPWU7aWYoZSE9PTApdC5lbWl0dGVkUmVhZGFibGU9ZmFsc2U7aWYoZT09PTAmJnQubmVlZFJlYWRhYmxlJiYoKHQuaGlnaFdhdGVyTWFyayE9PTA/dC5sZW5ndGg+PXQuaGlnaFdhdGVyTWFyazp0Lmxlbmd0aD4wKXx8dC5lbmRlZCkpe3UoXCJyZWFkOiBlbWl0UmVhZGFibGVcIix0Lmxlbmd0aCx0LmVuZGVkKTtpZih0Lmxlbmd0aD09PTAmJnQuZW5kZWQpZW5kUmVhZGFibGUodGhpcyk7ZWxzZSBlbWl0UmVhZGFibGUodGhpcyk7cmV0dXJuIG51bGx9ZT1ob3dNdWNoVG9SZWFkKGUsdCk7aWYoZT09PTAmJnQuZW5kZWQpe2lmKHQubGVuZ3RoPT09MCllbmRSZWFkYWJsZSh0aGlzKTtyZXR1cm4gbnVsbH12YXIgbj10Lm5lZWRSZWFkYWJsZTt1KFwibmVlZCByZWFkYWJsZVwiLG4pO2lmKHQubGVuZ3RoPT09MHx8dC5sZW5ndGgtZTx0LmhpZ2hXYXRlck1hcmspe249dHJ1ZTt1KFwibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmtcIixuKX1pZih0LmVuZGVkfHx0LnJlYWRpbmcpe249ZmFsc2U7dShcInJlYWRpbmcgb3IgZW5kZWRcIixuKX1lbHNlIGlmKG4pe3UoXCJkbyByZWFkXCIpO3QucmVhZGluZz10cnVlO3Quc3luYz10cnVlO2lmKHQubGVuZ3RoPT09MCl0Lm5lZWRSZWFkYWJsZT10cnVlO3RoaXMuX3JlYWQodC5oaWdoV2F0ZXJNYXJrKTt0LnN5bmM9ZmFsc2U7aWYoIXQucmVhZGluZyllPWhvd011Y2hUb1JlYWQocix0KX12YXIgaTtpZihlPjApaT1mcm9tTGlzdChlLHQpO2Vsc2UgaT1udWxsO2lmKGk9PT1udWxsKXt0Lm5lZWRSZWFkYWJsZT10Lmxlbmd0aDw9dC5oaWdoV2F0ZXJNYXJrO2U9MH1lbHNle3QubGVuZ3RoLT1lO3QuYXdhaXREcmFpbj0wfWlmKHQubGVuZ3RoPT09MCl7aWYoIXQuZW5kZWQpdC5uZWVkUmVhZGFibGU9dHJ1ZTtpZihyIT09ZSYmdC5lbmRlZCllbmRSZWFkYWJsZSh0aGlzKX1pZihpIT09bnVsbCl0aGlzLmVtaXQoXCJkYXRhXCIsaSk7cmV0dXJuIGl9O2Z1bmN0aW9uIG9uRW9mQ2h1bmsoZSx0KXt1KFwib25Fb2ZDaHVua1wiKTtpZih0LmVuZGVkKXJldHVybjtpZih0LmRlY29kZXIpe3ZhciByPXQuZGVjb2Rlci5lbmQoKTtpZihyJiZyLmxlbmd0aCl7dC5idWZmZXIucHVzaChyKTt0Lmxlbmd0aCs9dC5vYmplY3RNb2RlPzE6ci5sZW5ndGh9fXQuZW5kZWQ9dHJ1ZTtpZih0LnN5bmMpe2VtaXRSZWFkYWJsZShlKX1lbHNle3QubmVlZFJlYWRhYmxlPWZhbHNlO2lmKCF0LmVtaXR0ZWRSZWFkYWJsZSl7dC5lbWl0dGVkUmVhZGFibGU9dHJ1ZTtlbWl0UmVhZGFibGVfKGUpfX19ZnVuY3Rpb24gZW1pdFJlYWRhYmxlKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dShcImVtaXRSZWFkYWJsZVwiLHQubmVlZFJlYWRhYmxlLHQuZW1pdHRlZFJlYWRhYmxlKTt0Lm5lZWRSZWFkYWJsZT1mYWxzZTtpZighdC5lbWl0dGVkUmVhZGFibGUpe3UoXCJlbWl0UmVhZGFibGVcIix0LmZsb3dpbmcpO3QuZW1pdHRlZFJlYWRhYmxlPXRydWU7cHJvY2Vzcy5uZXh0VGljayhlbWl0UmVhZGFibGVfLGUpfX1mdW5jdGlvbiBlbWl0UmVhZGFibGVfKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dShcImVtaXRSZWFkYWJsZV9cIix0LmRlc3Ryb3llZCx0Lmxlbmd0aCx0LmVuZGVkKTtpZighdC5kZXN0cm95ZWQmJih0Lmxlbmd0aHx8dC5lbmRlZCkpe2UuZW1pdChcInJlYWRhYmxlXCIpO3QuZW1pdHRlZFJlYWRhYmxlPWZhbHNlfXQubmVlZFJlYWRhYmxlPSF0LmZsb3dpbmcmJiF0LmVuZGVkJiZ0Lmxlbmd0aDw9dC5oaWdoV2F0ZXJNYXJrO2Zsb3coZSl9ZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShlLHQpe2lmKCF0LnJlYWRpbmdNb3JlKXt0LnJlYWRpbmdNb3JlPXRydWU7cHJvY2Vzcy5uZXh0VGljayhtYXliZVJlYWRNb3JlXyxlLHQpfX1mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhlLHQpe3doaWxlKCF0LnJlYWRpbmcmJiF0LmVuZGVkJiYodC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrfHx0LmZsb3dpbmcmJnQubGVuZ3RoPT09MCkpe3ZhciByPXQubGVuZ3RoO3UoXCJtYXliZVJlYWRNb3JlIHJlYWQgMFwiKTtlLnJlYWQoMCk7aWYocj09PXQubGVuZ3RoKWJyZWFrfXQucmVhZGluZ01vcmU9ZmFsc2V9UmVhZGFibGUucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKGUpe1IodGhpcyxuZXcgXyhcIl9yZWFkKClcIikpfTtSZWFkYWJsZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7dmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2gobi5waXBlc0NvdW50KXtjYXNlIDA6bi5waXBlcz1lO2JyZWFrO2Nhc2UgMTpuLnBpcGVzPVtuLnBpcGVzLGVdO2JyZWFrO2RlZmF1bHQ6bi5waXBlcy5wdXNoKGUpO2JyZWFrfW4ucGlwZXNDb3VudCs9MTt1KFwicGlwZSBjb3VudD0lZCBvcHRzPSVqXCIsbi5waXBlc0NvdW50LHQpO3ZhciBpPSghdHx8dC5lbmQhPT1mYWxzZSkmJmUhPT1wcm9jZXNzLnN0ZG91dCYmZSE9PXByb2Nlc3Muc3RkZXJyO3ZhciBvPWk/b25lbmQ6dW5waXBlO2lmKG4uZW5kRW1pdHRlZClwcm9jZXNzLm5leHRUaWNrKG8pO2Vsc2Ugci5vbmNlKFwiZW5kXCIsbyk7ZS5vbihcInVucGlwZVwiLG9udW5waXBlKTtmdW5jdGlvbiBvbnVucGlwZShlLHQpe3UoXCJvbnVucGlwZVwiKTtpZihlPT09cil7aWYodCYmdC5oYXNVbnBpcGVkPT09ZmFsc2Upe3QuaGFzVW5waXBlZD10cnVlO2NsZWFudXAoKX19fWZ1bmN0aW9uIG9uZW5kKCl7dShcIm9uZW5kXCIpO2UuZW5kKCl9dmFyIHM9cGlwZU9uRHJhaW4ocik7ZS5vbihcImRyYWluXCIscyk7dmFyIGY9ZmFsc2U7ZnVuY3Rpb24gY2xlYW51cCgpe3UoXCJjbGVhbnVwXCIpO2UucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLG9uY2xvc2UpO2UucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixvbmZpbmlzaCk7ZS5yZW1vdmVMaXN0ZW5lcihcImRyYWluXCIscyk7ZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsb25lcnJvcik7ZS5yZW1vdmVMaXN0ZW5lcihcInVucGlwZVwiLG9udW5waXBlKTtyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsb25lbmQpO3IucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix1bnBpcGUpO3IucmVtb3ZlTGlzdGVuZXIoXCJkYXRhXCIsb25kYXRhKTtmPXRydWU7aWYobi5hd2FpdERyYWluJiYoIWUuX3dyaXRhYmxlU3RhdGV8fGUuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSlzKCl9ci5vbihcImRhdGFcIixvbmRhdGEpO2Z1bmN0aW9uIG9uZGF0YSh0KXt1KFwib25kYXRhXCIpO3ZhciBpPWUud3JpdGUodCk7dShcImRlc3Qud3JpdGVcIixpKTtpZihpPT09ZmFsc2Upe2lmKChuLnBpcGVzQ291bnQ9PT0xJiZuLnBpcGVzPT09ZXx8bi5waXBlc0NvdW50PjEmJmluZGV4T2Yobi5waXBlcyxlKSE9PS0xKSYmIWYpe3UoXCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2VcIixuLmF3YWl0RHJhaW4pO24uYXdhaXREcmFpbisrfXIucGF1c2UoKX19ZnVuY3Rpb24gb25lcnJvcih0KXt1KFwib25lcnJvclwiLHQpO3VucGlwZSgpO2UucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLG9uZXJyb3IpO2lmKGEoZSxcImVycm9yXCIpPT09MClSKGUsdCl9cHJlcGVuZExpc3RlbmVyKGUsXCJlcnJvclwiLG9uZXJyb3IpO2Z1bmN0aW9uIG9uY2xvc2UoKXtlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsb25maW5pc2gpO3VucGlwZSgpfWUub25jZShcImNsb3NlXCIsb25jbG9zZSk7ZnVuY3Rpb24gb25maW5pc2goKXt1KFwib25maW5pc2hcIik7ZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsb25jbG9zZSk7dW5waXBlKCl9ZS5vbmNlKFwiZmluaXNoXCIsb25maW5pc2gpO2Z1bmN0aW9uIHVucGlwZSgpe3UoXCJ1bnBpcGVcIik7ci51bnBpcGUoZSl9ZS5lbWl0KFwicGlwZVwiLHIpO2lmKCFuLmZsb3dpbmcpe3UoXCJwaXBlIHJlc3VtZVwiKTtyLnJlc3VtZSgpfXJldHVybiBlfTtmdW5jdGlvbiBwaXBlT25EcmFpbihlKXtyZXR1cm4gZnVuY3Rpb24gcGlwZU9uRHJhaW5GdW5jdGlvblJlc3VsdCgpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dShcInBpcGVPbkRyYWluXCIsdC5hd2FpdERyYWluKTtpZih0LmF3YWl0RHJhaW4pdC5hd2FpdERyYWluLS07aWYodC5hd2FpdERyYWluPT09MCYmYShlLFwiZGF0YVwiKSl7dC5mbG93aW5nPXRydWU7ZmxvdyhlKX19fVJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVhZGFibGVTdGF0ZTt2YXIgcj17aGFzVW5waXBlZDpmYWxzZX07aWYodC5waXBlc0NvdW50PT09MClyZXR1cm4gdGhpcztpZih0LnBpcGVzQ291bnQ9PT0xKXtpZihlJiZlIT09dC5waXBlcylyZXR1cm4gdGhpcztpZighZSllPXQucGlwZXM7dC5waXBlcz1udWxsO3QucGlwZXNDb3VudD0wO3QuZmxvd2luZz1mYWxzZTtpZihlKWUuZW1pdChcInVucGlwZVwiLHRoaXMscik7cmV0dXJuIHRoaXN9aWYoIWUpe3ZhciBuPXQucGlwZXM7dmFyIGk9dC5waXBlc0NvdW50O3QucGlwZXM9bnVsbDt0LnBpcGVzQ291bnQ9MDt0LmZsb3dpbmc9ZmFsc2U7Zm9yKHZhciBhPTA7YTxpO2ErKyl7blthXS5lbWl0KFwidW5waXBlXCIsdGhpcyx7aGFzVW5waXBlZDpmYWxzZX0pfXJldHVybiB0aGlzfXZhciBvPWluZGV4T2YodC5waXBlcyxlKTtpZihvPT09LTEpcmV0dXJuIHRoaXM7dC5waXBlcy5zcGxpY2UobywxKTt0LnBpcGVzQ291bnQtPTE7aWYodC5waXBlc0NvdW50PT09MSl0LnBpcGVzPXQucGlwZXNbMF07ZS5lbWl0KFwidW5waXBlXCIsdGhpcyxyKTtyZXR1cm4gdGhpc307UmVhZGFibGUucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGUsdCl7dmFyIHI9by5wcm90b3R5cGUub24uY2FsbCh0aGlzLGUsdCk7dmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZTtpZihlPT09XCJkYXRhXCIpe24ucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MDtpZihuLmZsb3dpbmchPT1mYWxzZSl0aGlzLnJlc3VtZSgpfWVsc2UgaWYoZT09PVwicmVhZGFibGVcIil7aWYoIW4uZW5kRW1pdHRlZCYmIW4ucmVhZGFibGVMaXN0ZW5pbmcpe24ucmVhZGFibGVMaXN0ZW5pbmc9bi5uZWVkUmVhZGFibGU9dHJ1ZTtuLmZsb3dpbmc9ZmFsc2U7bi5lbWl0dGVkUmVhZGFibGU9ZmFsc2U7dShcIm9uIHJlYWRhYmxlXCIsbi5sZW5ndGgsbi5yZWFkaW5nKTtpZihuLmxlbmd0aCl7ZW1pdFJlYWRhYmxlKHRoaXMpfWVsc2UgaWYoIW4ucmVhZGluZyl7cHJvY2Vzcy5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLHRoaXMpfX19cmV0dXJuIHJ9O1JlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1SZWFkYWJsZS5wcm90b3R5cGUub247UmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9by5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLGUsdCk7aWYoZT09PVwicmVhZGFibGVcIil7cHJvY2Vzcy5uZXh0VGljayh1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyx0aGlzKX1yZXR1cm4gcn07UmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbihlKXt2YXIgdD1vLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKGU9PT1cInJlYWRhYmxlXCJ8fGU9PT11bmRlZmluZWQpe3Byb2Nlc3MubmV4dFRpY2sodXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcsdGhpcyl9cmV0dXJuIHR9O2Z1bmN0aW9uIHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dC5yZWFkYWJsZUxpc3RlbmluZz1lLmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wO2lmKHQucmVzdW1lU2NoZWR1bGVkJiYhdC5wYXVzZWQpe3QuZmxvd2luZz10cnVlfWVsc2UgaWYoZS5saXN0ZW5lckNvdW50KFwiZGF0YVwiKT4wKXtlLnJlc3VtZSgpfX1mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKGUpe3UoXCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDBcIik7ZS5yZWFkKDApfVJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlO2lmKCFlLmZsb3dpbmcpe3UoXCJyZXN1bWVcIik7ZS5mbG93aW5nPSFlLnJlYWRhYmxlTGlzdGVuaW5nO3Jlc3VtZSh0aGlzLGUpfWUucGF1c2VkPWZhbHNlO3JldHVybiB0aGlzfTtmdW5jdGlvbiByZXN1bWUoZSx0KXtpZighdC5yZXN1bWVTY2hlZHVsZWQpe3QucmVzdW1lU2NoZWR1bGVkPXRydWU7cHJvY2Vzcy5uZXh0VGljayhyZXN1bWVfLGUsdCl9fWZ1bmN0aW9uIHJlc3VtZV8oZSx0KXt1KFwicmVzdW1lXCIsdC5yZWFkaW5nKTtpZighdC5yZWFkaW5nKXtlLnJlYWQoMCl9dC5yZXN1bWVTY2hlZHVsZWQ9ZmFsc2U7ZS5lbWl0KFwicmVzdW1lXCIpO2Zsb3coZSk7aWYodC5mbG93aW5nJiYhdC5yZWFkaW5nKWUucmVhZCgwKX1SZWFkYWJsZS5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt1KFwiY2FsbCBwYXVzZSBmbG93aW5nPSVqXCIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtpZih0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmchPT1mYWxzZSl7dShcInBhdXNlXCIpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz1mYWxzZTt0aGlzLmVtaXQoXCJwYXVzZVwiKX10aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZD10cnVlO3JldHVybiB0aGlzfTtmdW5jdGlvbiBmbG93KGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dShcImZsb3dcIix0LmZsb3dpbmcpO3doaWxlKHQuZmxvd2luZyYmZS5yZWFkKCkhPT1udWxsKXt9fVJlYWRhYmxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7dmFyIHI9dGhpcy5fcmVhZGFibGVTdGF0ZTt2YXIgbj1mYWxzZTtlLm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7dShcIndyYXBwZWQgZW5kXCIpO2lmKHIuZGVjb2RlciYmIXIuZW5kZWQpe3ZhciBlPXIuZGVjb2Rlci5lbmQoKTtpZihlJiZlLmxlbmd0aCl0LnB1c2goZSl9dC5wdXNoKG51bGwpfSkpO2Uub24oXCJkYXRhXCIsKGZ1bmN0aW9uKGkpe3UoXCJ3cmFwcGVkIGRhdGFcIik7aWYoci5kZWNvZGVyKWk9ci5kZWNvZGVyLndyaXRlKGkpO2lmKHIub2JqZWN0TW9kZSYmKGk9PT1udWxsfHxpPT09dW5kZWZpbmVkKSlyZXR1cm47ZWxzZSBpZighci5vYmplY3RNb2RlJiYoIWl8fCFpLmxlbmd0aCkpcmV0dXJuO3ZhciBhPXQucHVzaChpKTtpZighYSl7bj10cnVlO2UucGF1c2UoKX19KSk7Zm9yKHZhciBpIGluIGUpe2lmKHRoaXNbaV09PT11bmRlZmluZWQmJnR5cGVvZiBlW2ldPT09XCJmdW5jdGlvblwiKXt0aGlzW2ldPWZ1bmN0aW9uIG1ldGhvZFdyYXAodCl7cmV0dXJuIGZ1bmN0aW9uIG1ldGhvZFdyYXBSZXR1cm5GdW5jdGlvbigpe3JldHVybiBlW3RdLmFwcGx5KGUsYXJndW1lbnRzKX19KGkpfX1mb3IodmFyIGE9MDthPEUubGVuZ3RoO2ErKyl7ZS5vbihFW2FdLHRoaXMuZW1pdC5iaW5kKHRoaXMsRVthXSkpfXRoaXMuX3JlYWQ9ZnVuY3Rpb24odCl7dShcIndyYXBwZWQgX3JlYWRcIix0KTtpZihuKXtuPWZhbHNlO2UucmVzdW1lKCl9fTtyZXR1cm4gdGhpc307aWYodHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIil7UmVhZGFibGUucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe2lmKG09PT11bmRlZmluZWQpe209cig4NzEpfXJldHVybiBtKHRoaXMpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSxcInJlYWRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLFwicmVhZGFibGVGbG93aW5nXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbiBzZXQoZSl7aWYodGhpcy5fcmVhZGFibGVTdGF0ZSl7dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPWV9fX0pO1JlYWRhYmxlLl9mcm9tTGlzdD1mcm9tTGlzdDtPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLFwicmVhZGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pO2Z1bmN0aW9uIGZyb21MaXN0KGUsdCl7aWYodC5sZW5ndGg9PT0wKXJldHVybiBudWxsO3ZhciByO2lmKHQub2JqZWN0TW9kZSlyPXQuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZighZXx8ZT49dC5sZW5ndGgpe2lmKHQuZGVjb2RlcilyPXQuYnVmZmVyLmpvaW4oXCJcIik7ZWxzZSBpZih0LmJ1ZmZlci5sZW5ndGg9PT0xKXI9dC5idWZmZXIuZmlyc3QoKTtlbHNlIHI9dC5idWZmZXIuY29uY2F0KHQubGVuZ3RoKTt0LmJ1ZmZlci5jbGVhcigpfWVsc2V7cj10LmJ1ZmZlci5jb25zdW1lKGUsdC5kZWNvZGVyKX1yZXR1cm4gcn1mdW5jdGlvbiBlbmRSZWFkYWJsZShlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO3UoXCJlbmRSZWFkYWJsZVwiLHQuZW5kRW1pdHRlZCk7aWYoIXQuZW5kRW1pdHRlZCl7dC5lbmRlZD10cnVlO3Byb2Nlc3MubmV4dFRpY2soZW5kUmVhZGFibGVOVCx0LGUpfX1mdW5jdGlvbiBlbmRSZWFkYWJsZU5UKGUsdCl7dShcImVuZFJlYWRhYmxlTlRcIixlLmVuZEVtaXR0ZWQsZS5sZW5ndGgpO2lmKCFlLmVuZEVtaXR0ZWQmJmUubGVuZ3RoPT09MCl7ZS5lbmRFbWl0dGVkPXRydWU7dC5yZWFkYWJsZT1mYWxzZTt0LmVtaXQoXCJlbmRcIik7aWYoZS5hdXRvRGVzdHJveSl7dmFyIHI9dC5fd3JpdGFibGVTdGF0ZTtpZighcnx8ci5hdXRvRGVzdHJveSYmci5maW5pc2hlZCl7dC5kZXN0cm95KCl9fX19aWYodHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIil7UmVhZGFibGUuZnJvbT1mdW5jdGlvbihlLHQpe2lmKFM9PT11bmRlZmluZWQpe1M9cig3MjcpfXJldHVybiBTKFJlYWRhYmxlLGUsdCl9fWZ1bmN0aW9uIGluZGV4T2YoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2lmKGVbcl09PT10KXJldHVybiByfXJldHVybi0xfX0sMTcwOmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9VHJhbnNmb3JtO3ZhciBuPXIoNjQ2KS5xLGk9bi5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxhPW4uRVJSX01VTFRJUExFX0NBTExCQUNLLG89bi5FUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HLHM9bi5FUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzA7dmFyIGY9cig0MDMpO3IoNzgyKShUcmFuc2Zvcm0sZik7ZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZSx0KXt2YXIgcj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtyLnRyYW5zZm9ybWluZz1mYWxzZTt2YXIgbj1yLndyaXRlY2I7aWYobj09PW51bGwpe3JldHVybiB0aGlzLmVtaXQoXCJlcnJvclwiLG5ldyBhKX1yLndyaXRlY2h1bms9bnVsbDtyLndyaXRlY2I9bnVsbDtpZih0IT1udWxsKXRoaXMucHVzaCh0KTtuKGUpO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7aS5yZWFkaW5nPWZhbHNlO2lmKGkubmVlZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1hcmspe3RoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX19ZnVuY3Rpb24gVHJhbnNmb3JtKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpcmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSk7Zi5jYWxsKHRoaXMsZSk7dGhpcy5fdHJhbnNmb3JtU3RhdGU9e2FmdGVyVHJhbnNmb3JtOmFmdGVyVHJhbnNmb3JtLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTpmYWxzZSx0cmFuc2Zvcm1pbmc6ZmFsc2Usd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9O3RoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPXRydWU7dGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jPWZhbHNlO2lmKGUpe2lmKHR5cGVvZiBlLnRyYW5zZm9ybT09PVwiZnVuY3Rpb25cIil0aGlzLl90cmFuc2Zvcm09ZS50cmFuc2Zvcm07aWYodHlwZW9mIGUuZmx1c2g9PT1cImZ1bmN0aW9uXCIpdGhpcy5fZmx1c2g9ZS5mbHVzaH10aGlzLm9uKFwicHJlZmluaXNoXCIscHJlZmluaXNoKX1mdW5jdGlvbiBwcmVmaW5pc2goKXt2YXIgZT10aGlzO2lmKHR5cGVvZiB0aGlzLl9mbHVzaD09PVwiZnVuY3Rpb25cIiYmIXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkKXt0aGlzLl9mbHVzaCgoZnVuY3Rpb24odCxyKXtkb25lKGUsdCxyKX0pKX1lbHNle2RvbmUodGhpcyxudWxsLG51bGwpfX1UcmFuc2Zvcm0ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXt0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPWZhbHNlO3JldHVybiBmLnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyxlLHQpfTtUcmFuc2Zvcm0ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3IobmV3IGkoXCJfdHJhbnNmb3JtKClcIikpfTtUcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fdHJhbnNmb3JtU3RhdGU7bi53cml0ZWNiPXI7bi53cml0ZWNodW5rPWU7bi53cml0ZWVuY29kaW5nPXQ7aWYoIW4udHJhbnNmb3JtaW5nKXt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlO2lmKG4ubmVlZFRyYW5zZm9ybXx8aS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyayl0aGlzLl9yZWFkKGkuaGlnaFdhdGVyTWFyayl9fTtUcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKHQud3JpdGVjaHVuayE9PW51bGwmJiF0LnRyYW5zZm9ybWluZyl7dC50cmFuc2Zvcm1pbmc9dHJ1ZTt0aGlzLl90cmFuc2Zvcm0odC53cml0ZWNodW5rLHQud3JpdGVlbmNvZGluZyx0LmFmdGVyVHJhbnNmb3JtKX1lbHNle3QubmVlZFRyYW5zZm9ybT10cnVlfX07VHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihlLHQpe2YucHJvdG90eXBlLl9kZXN0cm95LmNhbGwodGhpcyxlLChmdW5jdGlvbihlKXt0KGUpfSkpfTtmdW5jdGlvbiBkb25lKGUsdCxyKXtpZih0KXJldHVybiBlLmVtaXQoXCJlcnJvclwiLHQpO2lmKHIhPW51bGwpZS5wdXNoKHIpO2lmKGUuX3dyaXRhYmxlU3RhdGUubGVuZ3RoKXRocm93IG5ldyBzO2lmKGUuX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZyl0aHJvdyBuZXcgbztyZXR1cm4gZS5wdXNoKG51bGwpfX0sMzM3OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9V3JpdGFibGU7ZnVuY3Rpb24gV3JpdGVSZXEoZSx0LHIpe3RoaXMuY2h1bms9ZTt0aGlzLmVuY29kaW5nPXQ7dGhpcy5jYWxsYmFjaz1yO3RoaXMubmV4dD1udWxsfWZ1bmN0aW9uIENvcmtlZFJlcXVlc3QoZSl7dmFyIHQ9dGhpczt0aGlzLm5leHQ9bnVsbDt0aGlzLmVudHJ5PW51bGw7dGhpcy5maW5pc2g9ZnVuY3Rpb24oKXtvbkNvcmtlZEZpbmlzaCh0LGUpfX12YXIgbjtXcml0YWJsZS5Xcml0YWJsZVN0YXRlPVdyaXRhYmxlU3RhdGU7dmFyIGk9e2RlcHJlY2F0ZTpyKDc2OSl9O3ZhciBhPXIoNjc4KTt2YXIgbz1yKDMwMCkuQnVmZmVyO3ZhciBzPWdsb2JhbC5VaW50OEFycmF5fHxmdW5jdGlvbigpe307ZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihlKXtyZXR1cm4gby5mcm9tKGUpfWZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkoZSl7cmV0dXJuIG8uaXNCdWZmZXIoZSl8fGUgaW5zdGFuY2VvZiBzfXZhciBmPXIoMjUpO3ZhciBsPXIoNzc2KSx1PWwuZ2V0SGlnaFdhdGVyTWFyazt2YXIgZD1yKDY0NikucSxjPWQuRVJSX0lOVkFMSURfQVJHX1RZUEUsaD1kLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELHA9ZC5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssYj1kLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsZz1kLkVSUl9TVFJFQU1fREVTVFJPWUVELHk9ZC5FUlJfU1RSRUFNX05VTExfVkFMVUVTLF89ZC5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCx2PWQuRVJSX1VOS05PV05fRU5DT0RJTkc7dmFyIHc9Zi5lcnJvck9yRGVzdHJveTtyKDc4MikoV3JpdGFibGUsYSk7ZnVuY3Rpb24gbm9wKCl7fWZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUoZSx0LGkpe249bnx8cig0MDMpO2U9ZXx8e307aWYodHlwZW9mIGkhPT1cImJvb2xlYW5cIilpPXQgaW5zdGFuY2VvZiBuO3RoaXMub2JqZWN0TW9kZT0hIWUub2JqZWN0TW9kZTtpZihpKXRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhZS53cml0YWJsZU9iamVjdE1vZGU7dGhpcy5oaWdoV2F0ZXJNYXJrPXUodGhpcyxlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIsaSk7dGhpcy5maW5hbENhbGxlZD1mYWxzZTt0aGlzLm5lZWREcmFpbj1mYWxzZTt0aGlzLmVuZGluZz1mYWxzZTt0aGlzLmVuZGVkPWZhbHNlO3RoaXMuZmluaXNoZWQ9ZmFsc2U7dGhpcy5kZXN0cm95ZWQ9ZmFsc2U7dmFyIGE9ZS5kZWNvZGVTdHJpbmdzPT09ZmFsc2U7dGhpcy5kZWNvZGVTdHJpbmdzPSFhO3RoaXMuZGVmYXVsdEVuY29kaW5nPWUuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIjt0aGlzLmxlbmd0aD0wO3RoaXMud3JpdGluZz1mYWxzZTt0aGlzLmNvcmtlZD0wO3RoaXMuc3luYz10cnVlO3RoaXMuYnVmZmVyUHJvY2Vzc2luZz1mYWxzZTt0aGlzLm9ud3JpdGU9ZnVuY3Rpb24oZSl7b253cml0ZSh0LGUpfTt0aGlzLndyaXRlY2I9bnVsbDt0aGlzLndyaXRlbGVuPTA7dGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbDt0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbDt0aGlzLnBlbmRpbmdjYj0wO3RoaXMucHJlZmluaXNoZWQ9ZmFsc2U7dGhpcy5lcnJvckVtaXR0ZWQ9ZmFsc2U7dGhpcy5lbWl0Q2xvc2U9ZS5lbWl0Q2xvc2UhPT1mYWxzZTt0aGlzLmF1dG9EZXN0cm95PSEhZS5hdXRvRGVzdHJveTt0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTA7dGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IENvcmtlZFJlcXVlc3QodGhpcyl9V3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uIGdldEJ1ZmZlcigpe3ZhciBlPXRoaXMuYnVmZmVyZWRSZXF1ZXN0O3ZhciB0PVtdO3doaWxlKGUpe3QucHVzaChlKTtlPWUubmV4dH1yZXR1cm4gdH07KGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6aS5kZXByZWNhdGUoKGZ1bmN0aW9uIHdyaXRhYmxlU3RhdGVCdWZmZXJHZXR0ZXIoKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0pLFwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgXCIrXCJpbnN0ZWFkLlwiLFwiREVQMDAwM1wiKX0pfWNhdGNoKGUpe319KSgpO3ZhciBtO2lmKHR5cGVvZiBTeW1ib2w9PT1cImZ1bmN0aW9uXCImJlN5bWJvbC5oYXNJbnN0YW5jZSYmdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdPT09XCJmdW5jdGlvblwiKXttPUZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uIHZhbHVlKGUpe2lmKG0uY2FsbCh0aGlzLGUpKXJldHVybiB0cnVlO2lmKHRoaXMhPT1Xcml0YWJsZSlyZXR1cm4gZmFsc2U7cmV0dXJuIGUmJmUuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlfX0pfWVsc2V7bT1mdW5jdGlvbiByZWFsSGFzSW5zdGFuY2UoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzfX1mdW5jdGlvbiBXcml0YWJsZShlKXtuPW58fHIoNDAzKTt2YXIgdD10aGlzIGluc3RhbmNlb2YgbjtpZighdCYmIW0uY2FsbChXcml0YWJsZSx0aGlzKSlyZXR1cm4gbmV3IFdyaXRhYmxlKGUpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IFdyaXRhYmxlU3RhdGUoZSx0aGlzLHQpO3RoaXMud3JpdGFibGU9dHJ1ZTtpZihlKXtpZih0eXBlb2YgZS53cml0ZT09PVwiZnVuY3Rpb25cIil0aGlzLl93cml0ZT1lLndyaXRlO2lmKHR5cGVvZiBlLndyaXRldj09PVwiZnVuY3Rpb25cIil0aGlzLl93cml0ZXY9ZS53cml0ZXY7aWYodHlwZW9mIGUuZGVzdHJveT09PVwiZnVuY3Rpb25cIil0aGlzLl9kZXN0cm95PWUuZGVzdHJveTtpZih0eXBlb2YgZS5maW5hbD09PVwiZnVuY3Rpb25cIil0aGlzLl9maW5hbD1lLmZpbmFsfWEuY2FsbCh0aGlzKX1Xcml0YWJsZS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe3codGhpcyxuZXcgYil9O2Z1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoZSx0KXt2YXIgcj1uZXcgXzt3KGUscik7cHJvY2Vzcy5uZXh0VGljayh0LHIpfWZ1bmN0aW9uIHZhbGlkQ2h1bmsoZSx0LHIsbil7dmFyIGk7aWYocj09PW51bGwpe2k9bmV3IHl9ZWxzZSBpZih0eXBlb2YgciE9PVwic3RyaW5nXCImJiF0Lm9iamVjdE1vZGUpe2k9bmV3IGMoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCJdLHIpfWlmKGkpe3coZSxpKTtwcm9jZXNzLm5leHRUaWNrKG4saSk7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfVdyaXRhYmxlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fd3JpdGFibGVTdGF0ZTt2YXIgaT1mYWxzZTt2YXIgYT0hbi5vYmplY3RNb2RlJiZfaXNVaW50OEFycmF5KGUpO2lmKGEmJiFvLmlzQnVmZmVyKGUpKXtlPV91aW50OEFycmF5VG9CdWZmZXIoZSl9aWYodHlwZW9mIHQ9PT1cImZ1bmN0aW9uXCIpe3I9dDt0PW51bGx9aWYoYSl0PVwiYnVmZmVyXCI7ZWxzZSBpZighdCl0PW4uZGVmYXVsdEVuY29kaW5nO2lmKHR5cGVvZiByIT09XCJmdW5jdGlvblwiKXI9bm9wO2lmKG4uZW5kaW5nKXdyaXRlQWZ0ZXJFbmQodGhpcyxyKTtlbHNlIGlmKGF8fHZhbGlkQ2h1bmsodGhpcyxuLGUscikpe24ucGVuZGluZ2NiKys7aT13cml0ZU9yQnVmZmVyKHRoaXMsbixhLGUsdCxyKX1yZXR1cm4gaX07V3JpdGFibGUucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfTtXcml0YWJsZS5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtpZihlLmNvcmtlZCl7ZS5jb3JrZWQtLTtpZighZS53cml0aW5nJiYhZS5jb3JrZWQmJiFlLmJ1ZmZlclByb2Nlc3NpbmcmJmUuYnVmZmVyZWRSZXF1ZXN0KWNsZWFyQnVmZmVyKHRoaXMsZSl9fTtXcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlKXtpZih0eXBlb2YgZT09PVwic3RyaW5nXCIpZT1lLnRvTG93ZXJDYXNlKCk7aWYoIShbXCJoZXhcIixcInV0ZjhcIixcInV0Zi04XCIsXCJhc2NpaVwiLFwiYmluYXJ5XCIsXCJiYXNlNjRcIixcInVjczJcIixcInVjcy0yXCIsXCJ1dGYxNmxlXCIsXCJ1dGYtMTZsZVwiLFwicmF3XCJdLmluZGV4T2YoKGUrXCJcIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyB2KGUpO3RoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nPWU7cmV0dXJuIHRoaXN9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KTtmdW5jdGlvbiBkZWNvZGVDaHVuayhlLHQscil7aWYoIWUub2JqZWN0TW9kZSYmZS5kZWNvZGVTdHJpbmdzIT09ZmFsc2UmJnR5cGVvZiB0PT09XCJzdHJpbmdcIil7dD1vLmZyb20odCxyKX1yZXR1cm4gdH1PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ZmFsc2UsZ2V0OmZ1bmN0aW9uIGdldCgpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSk7ZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihlLHQscixuLGksYSl7aWYoIXIpe3ZhciBvPWRlY29kZUNodW5rKHQsbixpKTtpZihuIT09byl7cj10cnVlO2k9XCJidWZmZXJcIjtuPW99fXZhciBzPXQub2JqZWN0TW9kZT8xOm4ubGVuZ3RoO3QubGVuZ3RoKz1zO3ZhciBmPXQubGVuZ3RoPHQuaGlnaFdhdGVyTWFyaztpZighZil0Lm5lZWREcmFpbj10cnVlO2lmKHQud3JpdGluZ3x8dC5jb3JrZWQpe3ZhciBsPXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDt0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9e2NodW5rOm4sZW5jb2Rpbmc6aSxpc0J1ZjpyLGNhbGxiYWNrOmEsbmV4dDpudWxsfTtpZihsKXtsLm5leHQ9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0fWVsc2V7dC5idWZmZXJlZFJlcXVlc3Q9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0fXQuYnVmZmVyZWRSZXF1ZXN0Q291bnQrPTF9ZWxzZXtkb1dyaXRlKGUsdCxmYWxzZSxzLG4saSxhKX1yZXR1cm4gZn1mdW5jdGlvbiBkb1dyaXRlKGUsdCxyLG4saSxhLG8pe3Qud3JpdGVsZW49bjt0LndyaXRlY2I9bzt0LndyaXRpbmc9dHJ1ZTt0LnN5bmM9dHJ1ZTtpZih0LmRlc3Ryb3llZCl0Lm9ud3JpdGUobmV3IGcoXCJ3cml0ZVwiKSk7ZWxzZSBpZihyKWUuX3dyaXRldihpLHQub253cml0ZSk7ZWxzZSBlLl93cml0ZShpLGEsdC5vbndyaXRlKTt0LnN5bmM9ZmFsc2V9ZnVuY3Rpb24gb253cml0ZUVycm9yKGUsdCxyLG4saSl7LS10LnBlbmRpbmdjYjtpZihyKXtwcm9jZXNzLm5leHRUaWNrKGksbik7cHJvY2Vzcy5uZXh0VGljayhmaW5pc2hNYXliZSxlLHQpO2UuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPXRydWU7dyhlLG4pfWVsc2V7aShuKTtlLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD10cnVlO3coZSxuKTtmaW5pc2hNYXliZShlLHQpfX1mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoZSl7ZS53cml0aW5nPWZhbHNlO2Uud3JpdGVjYj1udWxsO2UubGVuZ3RoLT1lLndyaXRlbGVuO2Uud3JpdGVsZW49MH1mdW5jdGlvbiBvbndyaXRlKGUsdCl7dmFyIHI9ZS5fd3JpdGFibGVTdGF0ZTt2YXIgbj1yLnN5bmM7dmFyIGk9ci53cml0ZWNiO2lmKHR5cGVvZiBpIT09XCJmdW5jdGlvblwiKXRocm93IG5ldyBwO29ud3JpdGVTdGF0ZVVwZGF0ZShyKTtpZih0KW9ud3JpdGVFcnJvcihlLHIsbix0LGkpO2Vsc2V7dmFyIGE9bmVlZEZpbmlzaChyKXx8ZS5kZXN0cm95ZWQ7aWYoIWEmJiFyLmNvcmtlZCYmIXIuYnVmZmVyUHJvY2Vzc2luZyYmci5idWZmZXJlZFJlcXVlc3Qpe2NsZWFyQnVmZmVyKGUscil9aWYobil7cHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlLGUscixhLGkpfWVsc2V7YWZ0ZXJXcml0ZShlLHIsYSxpKX19fWZ1bmN0aW9uIGFmdGVyV3JpdGUoZSx0LHIsbil7aWYoIXIpb253cml0ZURyYWluKGUsdCk7dC5wZW5kaW5nY2ItLTtuKCk7ZmluaXNoTWF5YmUoZSx0KX1mdW5jdGlvbiBvbndyaXRlRHJhaW4oZSx0KXtpZih0Lmxlbmd0aD09PTAmJnQubmVlZERyYWluKXt0Lm5lZWREcmFpbj1mYWxzZTtlLmVtaXQoXCJkcmFpblwiKX19ZnVuY3Rpb24gY2xlYXJCdWZmZXIoZSx0KXt0LmJ1ZmZlclByb2Nlc3Npbmc9dHJ1ZTt2YXIgcj10LmJ1ZmZlcmVkUmVxdWVzdDtpZihlLl93cml0ZXYmJnImJnIubmV4dCl7dmFyIG49dC5idWZmZXJlZFJlcXVlc3RDb3VudDt2YXIgaT1uZXcgQXJyYXkobik7dmFyIGE9dC5jb3JrZWRSZXF1ZXN0c0ZyZWU7YS5lbnRyeT1yO3ZhciBvPTA7dmFyIHM9dHJ1ZTt3aGlsZShyKXtpW29dPXI7aWYoIXIuaXNCdWYpcz1mYWxzZTtyPXIubmV4dDtvKz0xfWkuYWxsQnVmZmVycz1zO2RvV3JpdGUoZSx0LHRydWUsdC5sZW5ndGgsaSxcIlwiLGEuZmluaXNoKTt0LnBlbmRpbmdjYisrO3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsO2lmKGEubmV4dCl7dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9YS5uZXh0O2EubmV4dD1udWxsfWVsc2V7dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IENvcmtlZFJlcXVlc3QodCl9dC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7d2hpbGUocil7dmFyIGY9ci5jaHVuazt2YXIgbD1yLmVuY29kaW5nO3ZhciB1PXIuY2FsbGJhY2s7dmFyIGQ9dC5vYmplY3RNb2RlPzE6Zi5sZW5ndGg7ZG9Xcml0ZShlLHQsZmFsc2UsZCxmLGwsdSk7cj1yLm5leHQ7dC5idWZmZXJlZFJlcXVlc3RDb3VudC0tO2lmKHQud3JpdGluZyl7YnJlYWt9fWlmKHI9PT1udWxsKXQubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsfXQuYnVmZmVyZWRSZXF1ZXN0PXI7dC5idWZmZXJQcm9jZXNzaW5nPWZhbHNlfVdyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3IobmV3IGgoXCJfd3JpdGUoKVwiKSl9O1dyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2PW51bGw7V3JpdGFibGUucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fd3JpdGFibGVTdGF0ZTtpZih0eXBlb2YgZT09PVwiZnVuY3Rpb25cIil7cj1lO2U9bnVsbDt0PW51bGx9ZWxzZSBpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIil7cj10O3Q9bnVsbH1pZihlIT09bnVsbCYmZSE9PXVuZGVmaW5lZCl0aGlzLndyaXRlKGUsdCk7aWYobi5jb3JrZWQpe24uY29ya2VkPTE7dGhpcy51bmNvcmsoKX1pZighbi5lbmRpbmcpZW5kV3JpdGFibGUodGhpcyxuLHIpO3JldHVybiB0aGlzfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLFwid3JpdGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTpmYWxzZSxnZXQ6ZnVuY3Rpb24gZ2V0KCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pO2Z1bmN0aW9uIG5lZWRGaW5pc2goZSl7cmV0dXJuIGUuZW5kaW5nJiZlLmxlbmd0aD09PTAmJmUuYnVmZmVyZWRSZXF1ZXN0PT09bnVsbCYmIWUuZmluaXNoZWQmJiFlLndyaXRpbmd9ZnVuY3Rpb24gY2FsbEZpbmFsKGUsdCl7ZS5fZmluYWwoKGZ1bmN0aW9uKHIpe3QucGVuZGluZ2NiLS07aWYocil7dyhlLHIpfXQucHJlZmluaXNoZWQ9dHJ1ZTtlLmVtaXQoXCJwcmVmaW5pc2hcIik7ZmluaXNoTWF5YmUoZSx0KX0pKX1mdW5jdGlvbiBwcmVmaW5pc2goZSx0KXtpZighdC5wcmVmaW5pc2hlZCYmIXQuZmluYWxDYWxsZWQpe2lmKHR5cGVvZiBlLl9maW5hbD09PVwiZnVuY3Rpb25cIiYmIXQuZGVzdHJveWVkKXt0LnBlbmRpbmdjYisrO3QuZmluYWxDYWxsZWQ9dHJ1ZTtwcm9jZXNzLm5leHRUaWNrKGNhbGxGaW5hbCxlLHQpfWVsc2V7dC5wcmVmaW5pc2hlZD10cnVlO2UuZW1pdChcInByZWZpbmlzaFwiKX19fWZ1bmN0aW9uIGZpbmlzaE1heWJlKGUsdCl7dmFyIHI9bmVlZEZpbmlzaCh0KTtpZihyKXtwcmVmaW5pc2goZSx0KTtpZih0LnBlbmRpbmdjYj09PTApe3QuZmluaXNoZWQ9dHJ1ZTtlLmVtaXQoXCJmaW5pc2hcIik7aWYodC5hdXRvRGVzdHJveSl7dmFyIG49ZS5fcmVhZGFibGVTdGF0ZTtpZighbnx8bi5hdXRvRGVzdHJveSYmbi5lbmRFbWl0dGVkKXtlLmRlc3Ryb3koKX19fX1yZXR1cm4gcn1mdW5jdGlvbiBlbmRXcml0YWJsZShlLHQscil7dC5lbmRpbmc9dHJ1ZTtmaW5pc2hNYXliZShlLHQpO2lmKHIpe2lmKHQuZmluaXNoZWQpcHJvY2Vzcy5uZXh0VGljayhyKTtlbHNlIGUub25jZShcImZpbmlzaFwiLHIpfXQuZW5kZWQ9dHJ1ZTtlLndyaXRhYmxlPWZhbHNlfWZ1bmN0aW9uIG9uQ29ya2VkRmluaXNoKGUsdCxyKXt2YXIgbj1lLmVudHJ5O2UuZW50cnk9bnVsbDt3aGlsZShuKXt2YXIgaT1uLmNhbGxiYWNrO3QucGVuZGluZ2NiLS07aShyKTtuPW4ubmV4dH10LmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PWV9T2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOmZhbHNlLGdldDpmdW5jdGlvbiBnZXQoKXtpZih0aGlzLl93cml0YWJsZVN0YXRlPT09dW5kZWZpbmVkKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24gc2V0KGUpe2lmKCF0aGlzLl93cml0YWJsZVN0YXRlKXtyZXR1cm59dGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZX19KTtXcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveT1mLmRlc3Ryb3k7V3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3k9Zi51bmRlc3Ryb3k7V3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX19LDg3MTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG47ZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsdCxyKXtpZih0IGluIGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlLHdyaXRhYmxlOnRydWV9KX1lbHNle2VbdF09cn1yZXR1cm4gZX12YXIgaT1yKDY5OCk7dmFyIGE9U3ltYm9sKFwibGFzdFJlc29sdmVcIik7dmFyIG89U3ltYm9sKFwibGFzdFJlamVjdFwiKTt2YXIgcz1TeW1ib2woXCJlcnJvclwiKTt2YXIgZj1TeW1ib2woXCJlbmRlZFwiKTt2YXIgbD1TeW1ib2woXCJsYXN0UHJvbWlzZVwiKTt2YXIgdT1TeW1ib2woXCJoYW5kbGVQcm9taXNlXCIpO3ZhciBkPVN5bWJvbChcInN0cmVhbVwiKTtmdW5jdGlvbiBjcmVhdGVJdGVyUmVzdWx0KGUsdCl7cmV0dXJue3ZhbHVlOmUsZG9uZTp0fX1mdW5jdGlvbiByZWFkQW5kUmVzb2x2ZShlKXt2YXIgdD1lW2FdO2lmKHQhPT1udWxsKXt2YXIgcj1lW2RdLnJlYWQoKTtpZihyIT09bnVsbCl7ZVtsXT1udWxsO2VbYV09bnVsbDtlW29dPW51bGw7dChjcmVhdGVJdGVyUmVzdWx0KHIsZmFsc2UpKX19fWZ1bmN0aW9uIG9uUmVhZGFibGUoZSl7cHJvY2Vzcy5uZXh0VGljayhyZWFkQW5kUmVzb2x2ZSxlKX1mdW5jdGlvbiB3cmFwRm9yTmV4dChlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2UudGhlbigoZnVuY3Rpb24oKXtpZih0W2ZdKXtyKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLHRydWUpKTtyZXR1cm59dFt1XShyLG4pfSksbil9fXZhciBjPU9iamVjdC5nZXRQcm90b3R5cGVPZigoZnVuY3Rpb24oKXt9KSk7dmFyIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mKChuPXtnZXQgc3RyZWFtKCl7cmV0dXJuIHRoaXNbZF19LG5leHQ6ZnVuY3Rpb24gbmV4dCgpe3ZhciBlPXRoaXM7dmFyIHQ9dGhpc1tzXTtpZih0IT09bnVsbCl7cmV0dXJuIFByb21pc2UucmVqZWN0KHQpfWlmKHRoaXNbZl0pe3JldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsdHJ1ZSkpfWlmKHRoaXNbZF0uZGVzdHJveWVkKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7cHJvY2Vzcy5uZXh0VGljaygoZnVuY3Rpb24oKXtpZihlW3NdKXtyKGVbc10pfWVsc2V7dChjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCx0cnVlKSl9fSkpfSkpfXZhciByPXRoaXNbbF07dmFyIG47aWYocil7bj1uZXcgUHJvbWlzZSh3cmFwRm9yTmV4dChyLHRoaXMpKX1lbHNle3ZhciBpPXRoaXNbZF0ucmVhZCgpO2lmKGkhPT1udWxsKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQoaSxmYWxzZSkpfW49bmV3IFByb21pc2UodGhpc1t1XSl9dGhpc1tsXT1uO3JldHVybiBufX0sX2RlZmluZVByb3BlcnR5KG4sU3ltYm9sLmFzeW5jSXRlcmF0b3IsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksX2RlZmluZVByb3BlcnR5KG4sXCJyZXR1cm5cIiwoZnVuY3Rpb24gX3JldHVybigpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe2VbZF0uZGVzdHJveShudWxsLChmdW5jdGlvbihlKXtpZihlKXtyKGUpO3JldHVybn10KGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLHRydWUpKX0pKX0pKX0pKSxuKSxjKTt2YXIgcD1mdW5jdGlvbiBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IoZSl7dmFyIHQ7dmFyIHI9T2JqZWN0LmNyZWF0ZShoLCh0PXt9LF9kZWZpbmVQcm9wZXJ0eSh0LGQse3ZhbHVlOmUsd3JpdGFibGU6dHJ1ZX0pLF9kZWZpbmVQcm9wZXJ0eSh0LGEse3ZhbHVlOm51bGwsd3JpdGFibGU6dHJ1ZX0pLF9kZWZpbmVQcm9wZXJ0eSh0LG8se3ZhbHVlOm51bGwsd3JpdGFibGU6dHJ1ZX0pLF9kZWZpbmVQcm9wZXJ0eSh0LHMse3ZhbHVlOm51bGwsd3JpdGFibGU6dHJ1ZX0pLF9kZWZpbmVQcm9wZXJ0eSh0LGYse3ZhbHVlOmUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTp0cnVlfSksX2RlZmluZVByb3BlcnR5KHQsdSx7dmFsdWU6ZnVuY3Rpb24gdmFsdWUoZSx0KXt2YXIgbj1yW2RdLnJlYWQoKTtpZihuKXtyW2xdPW51bGw7clthXT1udWxsO3Jbb109bnVsbDtlKGNyZWF0ZUl0ZXJSZXN1bHQobixmYWxzZSkpfWVsc2V7clthXT1lO3Jbb109dH19LHdyaXRhYmxlOnRydWV9KSx0KSk7cltsXT1udWxsO2koZSwoZnVuY3Rpb24oZSl7aWYoZSYmZS5jb2RlIT09XCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVwiKXt2YXIgdD1yW29dO2lmKHQhPT1udWxsKXtyW2xdPW51bGw7clthXT1udWxsO3Jbb109bnVsbDt0KGUpfXJbc109ZTtyZXR1cm59dmFyIG49clthXTtpZihuIT09bnVsbCl7cltsXT1udWxsO3JbYV09bnVsbDtyW29dPW51bGw7bihjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCx0cnVlKSl9cltmXT10cnVlfSkpO2Uub24oXCJyZWFkYWJsZVwiLG9uUmVhZGFibGUuYmluZChudWxsLHIpKTtyZXR1cm4gcn07ZS5leHBvcnRzPXB9LDM3OTpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gb3duS2V5cyhlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYodCluPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSk7ci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O2lmKHQlMil7b3duS2V5cyhPYmplY3QociksdHJ1ZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7X2RlZmluZVByb3BlcnR5KGUsdCxyW3RdKX0pKX1lbHNlIGlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKX1lbHNle293bktleXMoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9fXJldHVybiBlfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLHQscil7aWYodCBpbiBlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTp0cnVlfSl9ZWxzZXtlW3RdPXJ9cmV0dXJuIGV9ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9fWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ZmFsc2U7bi5jb25maWd1cmFibGU9dHJ1ZTtpZihcInZhbHVlXCJpbiBuKW4ud3JpdGFibGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsdCxyKXtpZih0KV9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpO2lmKHIpX2RlZmluZVByb3BlcnRpZXMoZSxyKTtyZXR1cm4gZX12YXIgbj1yKDMwMCksaT1uLkJ1ZmZlcjt2YXIgYT1yKDgzNyksbz1hLmluc3BlY3Q7dmFyIHM9byYmby5jdXN0b218fFwiaW5zcGVjdFwiO2Z1bmN0aW9uIGNvcHlCdWZmZXIoZSx0LHIpe2kucHJvdG90eXBlLmNvcHkuY2FsbChlLHQscil9ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQnVmZmVyTGlzdCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLEJ1ZmZlckxpc3QpO3RoaXMuaGVhZD1udWxsO3RoaXMudGFpbD1udWxsO3RoaXMubGVuZ3RoPTB9X2NyZWF0ZUNsYXNzKEJ1ZmZlckxpc3QsW3trZXk6XCJwdXNoXCIsdmFsdWU6ZnVuY3Rpb24gcHVzaChlKXt2YXIgdD17ZGF0YTplLG5leHQ6bnVsbH07aWYodGhpcy5sZW5ndGg+MCl0aGlzLnRhaWwubmV4dD10O2Vsc2UgdGhpcy5oZWFkPXQ7dGhpcy50YWlsPXQ7Kyt0aGlzLmxlbmd0aH19LHtrZXk6XCJ1bnNoaWZ0XCIsdmFsdWU6ZnVuY3Rpb24gdW5zaGlmdChlKXt2YXIgdD17ZGF0YTplLG5leHQ6dGhpcy5oZWFkfTtpZih0aGlzLmxlbmd0aD09PTApdGhpcy50YWlsPXQ7dGhpcy5oZWFkPXQ7Kyt0aGlzLmxlbmd0aH19LHtrZXk6XCJzaGlmdFwiLHZhbHVlOmZ1bmN0aW9uIHNoaWZ0KCl7aWYodGhpcy5sZW5ndGg9PT0wKXJldHVybjt2YXIgZT10aGlzLmhlYWQuZGF0YTtpZih0aGlzLmxlbmd0aD09PTEpdGhpcy5oZWFkPXRoaXMudGFpbD1udWxsO2Vsc2UgdGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0Oy0tdGhpcy5sZW5ndGg7cmV0dXJuIGV9fSx7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbiBjbGVhcigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDt0aGlzLmxlbmd0aD0wfX0se2tleTpcImpvaW5cIix2YWx1ZTpmdW5jdGlvbiBqb2luKGUpe2lmKHRoaXMubGVuZ3RoPT09MClyZXR1cm5cIlwiO3ZhciB0PXRoaXMuaGVhZDt2YXIgcj1cIlwiK3QuZGF0YTt3aGlsZSh0PXQubmV4dCl7cis9ZSt0LmRhdGF9cmV0dXJuIHJ9fSx7a2V5OlwiY29uY2F0XCIsdmFsdWU6ZnVuY3Rpb24gY29uY2F0KGUpe2lmKHRoaXMubGVuZ3RoPT09MClyZXR1cm4gaS5hbGxvYygwKTt2YXIgdD1pLmFsbG9jVW5zYWZlKGU+Pj4wKTt2YXIgcj10aGlzLmhlYWQ7dmFyIG49MDt3aGlsZShyKXtjb3B5QnVmZmVyKHIuZGF0YSx0LG4pO24rPXIuZGF0YS5sZW5ndGg7cj1yLm5leHR9cmV0dXJuIHR9fSx7a2V5OlwiY29uc3VtZVwiLHZhbHVlOmZ1bmN0aW9uIGNvbnN1bWUoZSx0KXt2YXIgcjtpZihlPHRoaXMuaGVhZC5kYXRhLmxlbmd0aCl7cj10aGlzLmhlYWQuZGF0YS5zbGljZSgwLGUpO3RoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKGUpfWVsc2UgaWYoZT09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aCl7cj10aGlzLnNoaWZ0KCl9ZWxzZXtyPXQ/dGhpcy5fZ2V0U3RyaW5nKGUpOnRoaXMuX2dldEJ1ZmZlcihlKX1yZXR1cm4gcn19LHtrZXk6XCJmaXJzdFwiLHZhbHVlOmZ1bmN0aW9uIGZpcnN0KCl7cmV0dXJuIHRoaXMuaGVhZC5kYXRhfX0se2tleTpcIl9nZXRTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbiBfZ2V0U3RyaW5nKGUpe3ZhciB0PXRoaXMuaGVhZDt2YXIgcj0xO3ZhciBuPXQuZGF0YTtlLT1uLmxlbmd0aDt3aGlsZSh0PXQubmV4dCl7dmFyIGk9dC5kYXRhO3ZhciBhPWU+aS5sZW5ndGg/aS5sZW5ndGg6ZTtpZihhPT09aS5sZW5ndGgpbis9aTtlbHNlIG4rPWkuc2xpY2UoMCxlKTtlLT1hO2lmKGU9PT0wKXtpZihhPT09aS5sZW5ndGgpeysrcjtpZih0Lm5leHQpdGhpcy5oZWFkPXQubmV4dDtlbHNlIHRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbH1lbHNle3RoaXMuaGVhZD10O3QuZGF0YT1pLnNsaWNlKGEpfWJyZWFrfSsrcn10aGlzLmxlbmd0aC09cjtyZXR1cm4gbn19LHtrZXk6XCJfZ2V0QnVmZmVyXCIsdmFsdWU6ZnVuY3Rpb24gX2dldEJ1ZmZlcihlKXt2YXIgdD1pLmFsbG9jVW5zYWZlKGUpO3ZhciByPXRoaXMuaGVhZDt2YXIgbj0xO3IuZGF0YS5jb3B5KHQpO2UtPXIuZGF0YS5sZW5ndGg7d2hpbGUocj1yLm5leHQpe3ZhciBhPXIuZGF0YTt2YXIgbz1lPmEubGVuZ3RoP2EubGVuZ3RoOmU7YS5jb3B5KHQsdC5sZW5ndGgtZSwwLG8pO2UtPW87aWYoZT09PTApe2lmKG89PT1hLmxlbmd0aCl7KytuO2lmKHIubmV4dCl0aGlzLmhlYWQ9ci5uZXh0O2Vsc2UgdGhpcy5oZWFkPXRoaXMudGFpbD1udWxsfWVsc2V7dGhpcy5oZWFkPXI7ci5kYXRhPWEuc2xpY2Uobyl9YnJlYWt9KytufXRoaXMubGVuZ3RoLT1uO3JldHVybiB0fX0se2tleTpzLHZhbHVlOmZ1bmN0aW9uIHZhbHVlKGUsdCl7cmV0dXJuIG8odGhpcyxfb2JqZWN0U3ByZWFkKHt9LHQse2RlcHRoOjAsY3VzdG9tSW5zcGVjdDpmYWxzZX0pKX19XSk7cmV0dXJuIEJ1ZmZlckxpc3R9KCl9LDI1OmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGRlc3Ryb3koZSx0KXt2YXIgcj10aGlzO3ZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO3ZhciBpPXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO2lmKG58fGkpe2lmKHQpe3QoZSl9ZWxzZSBpZihlKXtpZighdGhpcy5fd3JpdGFibGVTdGF0ZSl7cHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JOVCx0aGlzLGUpfWVsc2UgaWYoIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKXt0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD10cnVlO3Byb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsdGhpcyxlKX19cmV0dXJuIHRoaXN9aWYodGhpcy5fcmVhZGFibGVTdGF0ZSl7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dHJ1ZX1pZih0aGlzLl93cml0YWJsZVN0YXRlKXt0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10cnVlfXRoaXMuX2Rlc3Ryb3koZXx8bnVsbCwoZnVuY3Rpb24oZSl7aWYoIXQmJmUpe2lmKCFyLl93cml0YWJsZVN0YXRlKXtwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQscixlKX1lbHNlIGlmKCFyLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCl7ci5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9dHJ1ZTtwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQscixlKX1lbHNle3Byb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQscil9fWVsc2UgaWYodCl7cHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCxyKTt0KGUpfWVsc2V7cHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCxyKX19KSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gZW1pdEVycm9yQW5kQ2xvc2VOVChlLHQpe2VtaXRFcnJvck5UKGUsdCk7ZW1pdENsb3NlTlQoZSl9ZnVuY3Rpb24gZW1pdENsb3NlTlQoZSl7aWYoZS5fd3JpdGFibGVTdGF0ZSYmIWUuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlKXJldHVybjtpZihlLl9yZWFkYWJsZVN0YXRlJiYhZS5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2UpcmV0dXJuO2UuZW1pdChcImNsb3NlXCIpfWZ1bmN0aW9uIHVuZGVzdHJveSgpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGUpe3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPWZhbHNlO3RoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz1mYWxzZTt0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPWZhbHNlO3RoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD1mYWxzZX1pZih0aGlzLl93cml0YWJsZVN0YXRlKXt0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1mYWxzZTt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPWZhbHNlO3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPWZhbHNlO3RoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ZmFsc2U7dGhpcy5fd3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD1mYWxzZTt0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPWZhbHNlO3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPWZhbHNlfX1mdW5jdGlvbiBlbWl0RXJyb3JOVChlLHQpe2UuZW1pdChcImVycm9yXCIsdCl9ZnVuY3Rpb24gZXJyb3JPckRlc3Ryb3koZSx0KXt2YXIgcj1lLl9yZWFkYWJsZVN0YXRlO3ZhciBuPWUuX3dyaXRhYmxlU3RhdGU7aWYociYmci5hdXRvRGVzdHJveXx8biYmbi5hdXRvRGVzdHJveSllLmRlc3Ryb3kodCk7ZWxzZSBlLmVtaXQoXCJlcnJvclwiLHQpfWUuZXhwb3J0cz17ZGVzdHJveTpkZXN0cm95LHVuZGVzdHJveTp1bmRlc3Ryb3ksZXJyb3JPckRlc3Ryb3k6ZXJyb3JPckRlc3Ryb3l9fSw2OTg6ZnVuY3Rpb24oZSx0LHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNjQ2KS5xLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIG9uY2UoZSl7dmFyIHQ9ZmFsc2U7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodClyZXR1cm47dD10cnVlO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKXtuW2ldPWFyZ3VtZW50c1tpXX1lLmFwcGx5KHRoaXMsbil9fWZ1bmN0aW9uIG5vb3AoKXt9ZnVuY3Rpb24gaXNSZXF1ZXN0KGUpe3JldHVybiBlLnNldEhlYWRlciYmdHlwZW9mIGUuYWJvcnQ9PT1cImZ1bmN0aW9uXCJ9ZnVuY3Rpb24gZW9zKGUsdCxyKXtpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIilyZXR1cm4gZW9zKGUsbnVsbCx0KTtpZighdCl0PXt9O3I9b25jZShyfHxub29wKTt2YXIgaT10LnJlYWRhYmxlfHx0LnJlYWRhYmxlIT09ZmFsc2UmJmUucmVhZGFibGU7dmFyIGE9dC53cml0YWJsZXx8dC53cml0YWJsZSE9PWZhbHNlJiZlLndyaXRhYmxlO3ZhciBvPWZ1bmN0aW9uIG9ubGVnYWN5ZmluaXNoKCl7aWYoIWUud3JpdGFibGUpZigpfTt2YXIgcz1lLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkO3ZhciBmPWZ1bmN0aW9uIG9uZmluaXNoKCl7YT1mYWxzZTtzPXRydWU7aWYoIWkpci5jYWxsKGUpfTt2YXIgbD1lLl9yZWFkYWJsZVN0YXRlJiZlLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ7dmFyIHU9ZnVuY3Rpb24gb25lbmQoKXtpPWZhbHNlO2w9dHJ1ZTtpZighYSlyLmNhbGwoZSl9O3ZhciBkPWZ1bmN0aW9uIG9uZXJyb3IodCl7ci5jYWxsKGUsdCl9O3ZhciBjPWZ1bmN0aW9uIG9uY2xvc2UoKXt2YXIgdDtpZihpJiYhbCl7aWYoIWUuX3JlYWRhYmxlU3RhdGV8fCFlLl9yZWFkYWJsZVN0YXRlLmVuZGVkKXQ9bmV3IG47cmV0dXJuIHIuY2FsbChlLHQpfWlmKGEmJiFzKXtpZighZS5fd3JpdGFibGVTdGF0ZXx8IWUuX3dyaXRhYmxlU3RhdGUuZW5kZWQpdD1uZXcgbjtyZXR1cm4gci5jYWxsKGUsdCl9fTt2YXIgaD1mdW5jdGlvbiBvbnJlcXVlc3QoKXtlLnJlcS5vbihcImZpbmlzaFwiLGYpfTtpZihpc1JlcXVlc3QoZSkpe2Uub24oXCJjb21wbGV0ZVwiLGYpO2Uub24oXCJhYm9ydFwiLGMpO2lmKGUucmVxKWgoKTtlbHNlIGUub24oXCJyZXF1ZXN0XCIsaCl9ZWxzZSBpZihhJiYhZS5fd3JpdGFibGVTdGF0ZSl7ZS5vbihcImVuZFwiLG8pO2Uub24oXCJjbG9zZVwiLG8pfWUub24oXCJlbmRcIix1KTtlLm9uKFwiZmluaXNoXCIsZik7aWYodC5lcnJvciE9PWZhbHNlKWUub24oXCJlcnJvclwiLGQpO2Uub24oXCJjbG9zZVwiLGMpO3JldHVybiBmdW5jdGlvbigpe2UucmVtb3ZlTGlzdGVuZXIoXCJjb21wbGV0ZVwiLGYpO2UucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydFwiLGMpO2UucmVtb3ZlTGlzdGVuZXIoXCJyZXF1ZXN0XCIsaCk7aWYoZS5yZXEpZS5yZXEucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixmKTtlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsbyk7ZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsbyk7ZS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGYpO2UucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix1KTtlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixkKTtlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixjKX19ZS5leHBvcnRzPWVvc30sNzI3OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZSx0LHIsbixpLGEsbyl7dHJ5e3ZhciBzPWVbYV0obyk7dmFyIGY9cy52YWx1ZX1jYXRjaChlKXtyKGUpO3JldHVybn1pZihzLmRvbmUpe3QoZil9ZWxzZXtQcm9taXNlLnJlc29sdmUoZikudGhlbihuLGkpfX1mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixpKXt2YXIgYT1lLmFwcGx5KHQscik7ZnVuY3Rpb24gX25leHQoZSl7YXN5bmNHZW5lcmF0b3JTdGVwKGEsbixpLF9uZXh0LF90aHJvdyxcIm5leHRcIixlKX1mdW5jdGlvbiBfdGhyb3coZSl7YXN5bmNHZW5lcmF0b3JTdGVwKGEsbixpLF9uZXh0LF90aHJvdyxcInRocm93XCIsZSl9X25leHQodW5kZWZpbmVkKX0pKX19ZnVuY3Rpb24gb3duS2V5cyhlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7aWYodCluPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSk7ci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gX29iamVjdFNwcmVhZChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF0hPW51bGw/YXJndW1lbnRzW3RdOnt9O2lmKHQlMil7b3duS2V5cyhPYmplY3QociksdHJ1ZSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7X2RlZmluZVByb3BlcnR5KGUsdCxyW3RdKX0pKX1lbHNlIGlmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKX1lbHNle293bktleXMoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9fXJldHVybiBlfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShlLHQscil7aWYodCBpbiBlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZSx3cml0YWJsZTp0cnVlfSl9ZWxzZXtlW3RdPXJ9cmV0dXJuIGV9dmFyIG49cig2NDYpLnEuRVJSX0lOVkFMSURfQVJHX1RZUEU7ZnVuY3Rpb24gZnJvbShlLHQscil7dmFyIGk7aWYodCYmdHlwZW9mIHQubmV4dD09PVwiZnVuY3Rpb25cIil7aT10fWVsc2UgaWYodCYmdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0paT10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO2Vsc2UgaWYodCYmdFtTeW1ib2wuaXRlcmF0b3JdKWk9dFtTeW1ib2wuaXRlcmF0b3JdKCk7ZWxzZSB0aHJvdyBuZXcgbihcIml0ZXJhYmxlXCIsW1wiSXRlcmFibGVcIl0sdCk7dmFyIGE9bmV3IGUoX29iamVjdFNwcmVhZCh7b2JqZWN0TW9kZTp0cnVlfSxyKSk7dmFyIG89ZmFsc2U7YS5fcmVhZD1mdW5jdGlvbigpe2lmKCFvKXtvPXRydWU7bmV4dCgpfX07ZnVuY3Rpb24gbmV4dCgpe3JldHVybiBfbmV4dDIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIF9uZXh0Migpe19uZXh0Mj1fYXN5bmNUb0dlbmVyYXRvcigoZnVuY3Rpb24qKCl7dHJ5e3ZhciBlPXlpZWxkIGkubmV4dCgpLHQ9ZS52YWx1ZSxyPWUuZG9uZTtpZihyKXthLnB1c2gobnVsbCl9ZWxzZSBpZihhLnB1c2goeWllbGQgdCkpe25leHQoKX1lbHNle289ZmFsc2V9fWNhdGNoKGUpe2EuZGVzdHJveShlKX19KSk7cmV0dXJuIF9uZXh0Mi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGF9ZS5leHBvcnRzPWZyb219LDQ0MjpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG47ZnVuY3Rpb24gb25jZShlKXt2YXIgdD1mYWxzZTtyZXR1cm4gZnVuY3Rpb24oKXtpZih0KXJldHVybjt0PXRydWU7ZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19dmFyIGk9cig2NDYpLnEsYT1pLkVSUl9NSVNTSU5HX0FSR1Msbz1pLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIG5vb3AoZSl7aWYoZSl0aHJvdyBlfWZ1bmN0aW9uIGlzUmVxdWVzdChlKXtyZXR1cm4gZS5zZXRIZWFkZXImJnR5cGVvZiBlLmFib3J0PT09XCJmdW5jdGlvblwifWZ1bmN0aW9uIGRlc3Ryb3llcihlLHQsaSxhKXthPW9uY2UoYSk7dmFyIHM9ZmFsc2U7ZS5vbihcImNsb3NlXCIsKGZ1bmN0aW9uKCl7cz10cnVlfSkpO2lmKG49PT11bmRlZmluZWQpbj1yKDY5OCk7bihlLHtyZWFkYWJsZTp0LHdyaXRhYmxlOml9LChmdW5jdGlvbihlKXtpZihlKXJldHVybiBhKGUpO3M9dHJ1ZTthKCl9KSk7dmFyIGY9ZmFsc2U7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKHMpcmV0dXJuO2lmKGYpcmV0dXJuO2Y9dHJ1ZTtpZihpc1JlcXVlc3QoZSkpcmV0dXJuIGUuYWJvcnQoKTtpZih0eXBlb2YgZS5kZXN0cm95PT09XCJmdW5jdGlvblwiKXJldHVybiBlLmRlc3Ryb3koKTthKHR8fG5ldyBvKFwicGlwZVwiKSl9fWZ1bmN0aW9uIGNhbGwoZSl7ZSgpfWZ1bmN0aW9uIHBpcGUoZSx0KXtyZXR1cm4gZS5waXBlKHQpfWZ1bmN0aW9uIHBvcENhbGxiYWNrKGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gbm9vcDtpZih0eXBlb2YgZVtlLmxlbmd0aC0xXSE9PVwiZnVuY3Rpb25cIilyZXR1cm4gbm9vcDtyZXR1cm4gZS5wb3AoKX1mdW5jdGlvbiBwaXBlbGluZSgpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXt0W3JdPWFyZ3VtZW50c1tyXX12YXIgbj1wb3BDYWxsYmFjayh0KTtpZihBcnJheS5pc0FycmF5KHRbMF0pKXQ9dFswXTtpZih0Lmxlbmd0aDwyKXt0aHJvdyBuZXcgYShcInN0cmVhbXNcIil9dmFyIGk7dmFyIG89dC5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIGE9cjx0Lmxlbmd0aC0xO3ZhciBzPXI+MDtyZXR1cm4gZGVzdHJveWVyKGUsYSxzLChmdW5jdGlvbihlKXtpZighaSlpPWU7aWYoZSlvLmZvckVhY2goY2FsbCk7aWYoYSlyZXR1cm47by5mb3JFYWNoKGNhbGwpO24oaSl9KSl9KSk7cmV0dXJuIHQucmVkdWNlKHBpcGUpfWUuZXhwb3J0cz1waXBlbGluZX0sNzc2OmZ1bmN0aW9uKGUsdCxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDY0NikucS5FUlJfSU5WQUxJRF9PUFRfVkFMVUU7ZnVuY3Rpb24gaGlnaFdhdGVyTWFya0Zyb20oZSx0LHIpe3JldHVybiBlLmhpZ2hXYXRlck1hcmshPW51bGw/ZS5oaWdoV2F0ZXJNYXJrOnQ/ZVtyXTpudWxsfWZ1bmN0aW9uIGdldEhpZ2hXYXRlck1hcmsoZSx0LHIsaSl7dmFyIGE9aGlnaFdhdGVyTWFya0Zyb20odCxpLHIpO2lmKGEhPW51bGwpe2lmKCEoaXNGaW5pdGUoYSkmJk1hdGguZmxvb3IoYSk9PT1hKXx8YTwwKXt2YXIgbz1pP3I6XCJoaWdoV2F0ZXJNYXJrXCI7dGhyb3cgbmV3IG4obyxhKX1yZXR1cm4gTWF0aC5mbG9vcihhKX1yZXR1cm4gZS5vYmplY3RNb2RlPzE2OjE2KjEwMjR9ZS5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmdldEhpZ2hXYXRlck1hcmt9fSw2Nzg6ZnVuY3Rpb24oZSx0LHIpe2UuZXhwb3J0cz1yKDc4MSl9LDU1OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMwMCk7dmFyIGk9bi5CdWZmZXI7ZnVuY3Rpb24gY29weVByb3BzKGUsdCl7Zm9yKHZhciByIGluIGUpe3Rbcl09ZVtyXX19aWYoaS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdyl7ZS5leHBvcnRzPW59ZWxzZXtjb3B5UHJvcHMobix0KTt0LkJ1ZmZlcj1TYWZlQnVmZmVyfWZ1bmN0aW9uIFNhZmVCdWZmZXIoZSx0LHIpe3JldHVybiBpKGUsdCxyKX1TYWZlQnVmZmVyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKTtjb3B5UHJvcHMoaSxTYWZlQnVmZmVyKTtTYWZlQnVmZmVyLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlPT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyXCIpfXJldHVybiBpKGUsdCxyKX07U2FmZUJ1ZmZlci5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYodHlwZW9mIGUhPT1cIm51bWJlclwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKX12YXIgbj1pKGUpO2lmKHQhPT11bmRlZmluZWQpe2lmKHR5cGVvZiByPT09XCJzdHJpbmdcIil7bi5maWxsKHQscil9ZWxzZXtuLmZpbGwodCl9fWVsc2V7bi5maWxsKDApfXJldHVybiBufTtTYWZlQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIGkoZSl9O1NhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIG4uU2xvd0J1ZmZlcihlKX19LDE3MzpmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPVN0cmVhbTt2YXIgbj1yKDM2MSkuRXZlbnRFbWl0dGVyO3ZhciBpPXIoNzgyKTtpKFN0cmVhbSxuKTtTdHJlYW0uUmVhZGFibGU9cig3MDkpO1N0cmVhbS5Xcml0YWJsZT1yKDMzNyk7U3RyZWFtLkR1cGxleD1yKDQwMyk7U3RyZWFtLlRyYW5zZm9ybT1yKDE3MCk7U3RyZWFtLlBhc3NUaHJvdWdoPXIoODg5KTtTdHJlYW0uZmluaXNoZWQ9cig2OTgpO1N0cmVhbS5waXBlbGluZT1yKDQ0Mik7U3RyZWFtLlN0cmVhbT1TdHJlYW07ZnVuY3Rpb24gU3RyZWFtKCl7bi5jYWxsKHRoaXMpfVN0cmVhbS5wcm90b3R5cGUucGlwZT1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXM7ZnVuY3Rpb24gb25kYXRhKHQpe2lmKGUud3JpdGFibGUpe2lmKGZhbHNlPT09ZS53cml0ZSh0KSYmci5wYXVzZSl7ci5wYXVzZSgpfX19ci5vbihcImRhdGFcIixvbmRhdGEpO2Z1bmN0aW9uIG9uZHJhaW4oKXtpZihyLnJlYWRhYmxlJiZyLnJlc3VtZSl7ci5yZXN1bWUoKX19ZS5vbihcImRyYWluXCIsb25kcmFpbik7aWYoIWUuX2lzU3RkaW8mJighdHx8dC5lbmQhPT1mYWxzZSkpe3Iub24oXCJlbmRcIixvbmVuZCk7ci5vbihcImNsb3NlXCIsb25jbG9zZSl9dmFyIGk9ZmFsc2U7ZnVuY3Rpb24gb25lbmQoKXtpZihpKXJldHVybjtpPXRydWU7ZS5lbmQoKX1mdW5jdGlvbiBvbmNsb3NlKCl7aWYoaSlyZXR1cm47aT10cnVlO2lmKHR5cGVvZiBlLmRlc3Ryb3k9PT1cImZ1bmN0aW9uXCIpZS5kZXN0cm95KCl9ZnVuY3Rpb24gb25lcnJvcihlKXtjbGVhbnVwKCk7aWYobi5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKT09PTApe3Rocm93IGV9fXIub24oXCJlcnJvclwiLG9uZXJyb3IpO2Uub24oXCJlcnJvclwiLG9uZXJyb3IpO2Z1bmN0aW9uIGNsZWFudXAoKXtyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLG9uZGF0YSk7ZS5yZW1vdmVMaXN0ZW5lcihcImRyYWluXCIsb25kcmFpbik7ci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLG9uZW5kKTtyLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixvbmNsb3NlKTtyLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixvbmVycm9yKTtlLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixvbmVycm9yKTtyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsY2xlYW51cCk7ci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsY2xlYW51cCk7ZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsY2xlYW51cCl9ci5vbihcImVuZFwiLGNsZWFudXApO3Iub24oXCJjbG9zZVwiLGNsZWFudXApO2Uub24oXCJjbG9zZVwiLGNsZWFudXApO2UuZW1pdChcInBpcGVcIixyKTtyZXR1cm4gZX19LDcwNDpmdW5jdGlvbihlLHQscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig1NSkuQnVmZmVyO3ZhciBpPW4uaXNFbmNvZGluZ3x8ZnVuY3Rpb24oZSl7ZT1cIlwiK2U7c3dpdGNoKGUmJmUudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpjYXNlXCJyYXdcIjpyZXR1cm4gdHJ1ZTtkZWZhdWx0OnJldHVybiBmYWxzZX19O2Z1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlKXtpZighZSlyZXR1cm5cInV0ZjhcIjt2YXIgdDt3aGlsZSh0cnVlKXtzd2l0Y2goZSl7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuXCJ1dGY4XCI7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuXCJ1dGYxNmxlXCI7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuXCJsYXRpbjFcIjtjYXNlXCJiYXNlNjRcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImhleFwiOnJldHVybiBlO2RlZmF1bHQ6aWYodClyZXR1cm47ZT0oXCJcIitlKS50b0xvd2VyQ2FzZSgpO3Q9dHJ1ZX19fWZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGUpe3ZhciB0PV9ub3JtYWxpemVFbmNvZGluZyhlKTtpZih0eXBlb2YgdCE9PVwic3RyaW5nXCImJihuLmlzRW5jb2Rpbmc9PT1pfHwhaShlKSkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7cmV0dXJuIHR8fGV9dC5zPVN0cmluZ0RlY29kZXI7ZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlKXt0aGlzLmVuY29kaW5nPW5vcm1hbGl6ZUVuY29kaW5nKGUpO3ZhciB0O3N3aXRjaCh0aGlzLmVuY29kaW5nKXtjYXNlXCJ1dGYxNmxlXCI6dGhpcy50ZXh0PXV0ZjE2VGV4dDt0aGlzLmVuZD11dGYxNkVuZDt0PTQ7YnJlYWs7Y2FzZVwidXRmOFwiOnRoaXMuZmlsbExhc3Q9dXRmOEZpbGxMYXN0O3Q9NDticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnRleHQ9YmFzZTY0VGV4dDt0aGlzLmVuZD1iYXNlNjRFbmQ7dD0zO2JyZWFrO2RlZmF1bHQ6dGhpcy53cml0ZT1zaW1wbGVXcml0ZTt0aGlzLmVuZD1zaW1wbGVFbmQ7cmV0dXJufXRoaXMubGFzdE5lZWQ9MDt0aGlzLmxhc3RUb3RhbD0wO3RoaXMubGFzdENoYXI9bi5hbGxvY1Vuc2FmZSh0KX1TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlKXtpZihlLmxlbmd0aD09PTApcmV0dXJuXCJcIjt2YXIgdDt2YXIgcjtpZih0aGlzLmxhc3ROZWVkKXt0PXRoaXMuZmlsbExhc3QoZSk7aWYodD09PXVuZGVmaW5lZClyZXR1cm5cIlwiO3I9dGhpcy5sYXN0TmVlZDt0aGlzLmxhc3ROZWVkPTB9ZWxzZXtyPTB9aWYocjxlLmxlbmd0aClyZXR1cm4gdD90K3RoaXMudGV4dChlLHIpOnRoaXMudGV4dChlLHIpO3JldHVybiB0fHxcIlwifTtTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQ9dXRmOEVuZDtTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0PXV0ZjhUZXh0O1N0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKGUpe2lmKHRoaXMubGFzdE5lZWQ8PWUubGVuZ3RoKXtlLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKX1lLmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsZS5sZW5ndGgpO3RoaXMubGFzdE5lZWQtPWUubGVuZ3RofTtmdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGUpe2lmKGU8PTEyNylyZXR1cm4gMDtlbHNlIGlmKGU+PjU9PT02KXJldHVybiAyO2Vsc2UgaWYoZT4+ND09PTE0KXJldHVybiAzO2Vsc2UgaWYoZT4+Mz09PTMwKXJldHVybiA0O3JldHVybiBlPj42PT09Mj8tMTotMn1mdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKGUsdCxyKXt2YXIgbj10Lmxlbmd0aC0xO2lmKG48cilyZXR1cm4gMDt2YXIgaT11dGY4Q2hlY2tCeXRlKHRbbl0pO2lmKGk+PTApe2lmKGk+MCllLmxhc3ROZWVkPWktMTtyZXR1cm4gaX1pZigtLW48cnx8aT09PS0yKXJldHVybiAwO2k9dXRmOENoZWNrQnl0ZSh0W25dKTtpZihpPj0wKXtpZihpPjApZS5sYXN0TmVlZD1pLTI7cmV0dXJuIGl9aWYoLS1uPHJ8fGk9PT0tMilyZXR1cm4gMDtpPXV0ZjhDaGVja0J5dGUodFtuXSk7aWYoaT49MCl7aWYoaT4wKXtpZihpPT09MilpPTA7ZWxzZSBlLmxhc3ROZWVkPWktM31yZXR1cm4gaX1yZXR1cm4gMH1mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKGUsdCxyKXtpZigodFswXSYxOTIpIT09MTI4KXtlLmxhc3ROZWVkPTA7cmV0dXJuXCLvv71cIn1pZihlLmxhc3ROZWVkPjEmJnQubGVuZ3RoPjEpe2lmKCh0WzFdJjE5MikhPT0xMjgpe2UubGFzdE5lZWQ9MTtyZXR1cm5cIu+/vVwifWlmKGUubGFzdE5lZWQ+MiYmdC5sZW5ndGg+Mil7aWYoKHRbMl0mMTkyKSE9PTEyOCl7ZS5sYXN0TmVlZD0yO3JldHVyblwi77+9XCJ9fX19ZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGUpe3ZhciB0PXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7dmFyIHI9dXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLGUsdCk7aWYociE9PXVuZGVmaW5lZClyZXR1cm4gcjtpZih0aGlzLmxhc3ROZWVkPD1lLmxlbmd0aCl7ZS5jb3B5KHRoaXMubGFzdENoYXIsdCwwLHRoaXMubGFzdE5lZWQpO3JldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCl9ZS5jb3B5KHRoaXMubGFzdENoYXIsdCwwLGUubGVuZ3RoKTt0aGlzLmxhc3ROZWVkLT1lLmxlbmd0aH1mdW5jdGlvbiB1dGY4VGV4dChlLHQpe3ZhciByPXV0ZjhDaGVja0luY29tcGxldGUodGhpcyxlLHQpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiBlLnRvU3RyaW5nKFwidXRmOFwiLHQpO3RoaXMubGFzdFRvdGFsPXI7dmFyIG49ZS5sZW5ndGgtKHItdGhpcy5sYXN0TmVlZCk7ZS5jb3B5KHRoaXMubGFzdENoYXIsMCxuKTtyZXR1cm4gZS50b1N0cmluZyhcInV0ZjhcIix0LG4pfWZ1bmN0aW9uIHV0ZjhFbmQoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpcmV0dXJuIHQrXCLvv71cIjtyZXR1cm4gdH1mdW5jdGlvbiB1dGYxNlRleHQoZSx0KXtpZigoZS5sZW5ndGgtdCklMj09PTApe3ZhciByPWUudG9TdHJpbmcoXCJ1dGYxNmxlXCIsdCk7aWYocil7dmFyIG49ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpO2lmKG4+PTU1Mjk2JiZuPD01NjMxOSl7dGhpcy5sYXN0TmVlZD0yO3RoaXMubGFzdFRvdGFsPTQ7dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTJdO3RoaXMubGFzdENoYXJbMV09ZVtlLmxlbmd0aC0xXTtyZXR1cm4gci5zbGljZSgwLC0xKX19cmV0dXJuIHJ9dGhpcy5sYXN0TmVlZD0xO3RoaXMubGFzdFRvdGFsPTI7dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTFdO3JldHVybiBlLnRvU3RyaW5nKFwidXRmMTZsZVwiLHQsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gdXRmMTZFbmQoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciByPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIHQrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcInV0ZjE2bGVcIiwwLHIpfXJldHVybiB0fWZ1bmN0aW9uIGJhc2U2NFRleHQoZSx0KXt2YXIgcj0oZS5sZW5ndGgtdCklMztpZihyPT09MClyZXR1cm4gZS50b1N0cmluZyhcImJhc2U2NFwiLHQpO3RoaXMubGFzdE5lZWQ9My1yO3RoaXMubGFzdFRvdGFsPTM7aWYocj09PTEpe3RoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0xXX1lbHNle3RoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0yXTt0aGlzLmxhc3RDaGFyWzFdPWVbZS5sZW5ndGgtMV19cmV0dXJuIGUudG9TdHJpbmcoXCJiYXNlNjRcIix0LGUubGVuZ3RoLXIpfWZ1bmN0aW9uIGJhc2U2NEVuZChlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOlwiXCI7aWYodGhpcy5sYXN0TmVlZClyZXR1cm4gdCt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwiYmFzZTY0XCIsMCwzLXRoaXMubGFzdE5lZWQpO3JldHVybiB0fWZ1bmN0aW9uIHNpbXBsZVdyaXRlKGUpe3JldHVybiBlLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpfWZ1bmN0aW9uIHNpbXBsZUVuZChlKXtyZXR1cm4gZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKTpcIlwifX0sNzY5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1kZXByZWNhdGU7ZnVuY3Rpb24gZGVwcmVjYXRlKGUsdCl7aWYoY29uZmlnKFwibm9EZXByZWNhdGlvblwiKSl7cmV0dXJuIGV9dmFyIHI9ZmFsc2U7ZnVuY3Rpb24gZGVwcmVjYXRlZCgpe2lmKCFyKXtpZihjb25maWcoXCJ0aHJvd0RlcHJlY2F0aW9uXCIpKXt0aHJvdyBuZXcgRXJyb3IodCl9ZWxzZSBpZihjb25maWcoXCJ0cmFjZURlcHJlY2F0aW9uXCIpKXtjb25zb2xlLnRyYWNlKHQpfWVsc2V7Y29uc29sZS53YXJuKHQpfXI9dHJ1ZX1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGRlcHJlY2F0ZWR9ZnVuY3Rpb24gY29uZmlnKGUpe3RyeXtpZighZ2xvYmFsLmxvY2FsU3RvcmFnZSlyZXR1cm4gZmFsc2V9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlfXZhciB0PWdsb2JhbC5sb2NhbFN0b3JhZ2VbZV07aWYobnVsbD09dClyZXR1cm4gZmFsc2U7cmV0dXJuIFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpPT09XCJ0cnVlXCJ9fSwzMDA6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPXJlcXVpcmUoXCJidWZmZXJcIil9LDM2MTpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9cmVxdWlyZShcImV2ZW50c1wiKX0sNzgxOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwiZXZlbnRzXCIpLkV2ZW50RW1pdHRlcn0sODM3OmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1yZXF1aXJlKFwidXRpbFwiKX19O3ZhciB0PXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIG49dFtyXTtpZihuIT09dW5kZWZpbmVkKXtyZXR1cm4gbi5leHBvcnRzfXZhciBpPXRbcl09e2V4cG9ydHM6e319O3ZhciBhPXRydWU7dHJ5e2Vbcl0oaSxpLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7YT1mYWxzZX1maW5hbGx5e2lmKGEpZGVsZXRlIHRbcl19cmV0dXJuIGkuZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHI9X19uY2N3cGNrX3JlcXVpcmVfXygxNzMpO21vZHVsZS5leHBvcnRzPXJ9KSgpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/stream-browserify/index.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/string_decoder/string_decoder.js":
/*!**************************************************************************!*\
!*** ./node_modules/next/dist/compiled/string_decoder/string_decoder.js ***!
\**************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var t={55:function(t,e,r){var n=r(300);var i=n.Buffer;function copyProps(t,e){for(var r in t){e[r]=t[r]}}if(i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow){t.exports=n}else{copyProps(n,e);e.Buffer=SafeBuffer}function SafeBuffer(t,e,r){return i(t,e,r)}SafeBuffer.prototype=Object.create(i.prototype);copyProps(i,SafeBuffer);SafeBuffer.from=function(t,e,r){if(typeof t===\"number\"){throw new TypeError(\"Argument must not be a number\")}return i(t,e,r)};SafeBuffer.alloc=function(t,e,r){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}var n=i(t);if(e!==undefined){if(typeof r===\"string\"){n.fill(e,r)}else{n.fill(e)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(t){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}return i(t)};SafeBuffer.allocUnsafeSlow=function(t){if(typeof t!==\"number\"){throw new TypeError(\"Argument must be a number\")}return n.SlowBuffer(t)}},300:function(t){\"use strict\";t.exports=__webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")}};var e={};function __nccwpck_require__(r){var n=e[r];if(n!==undefined){return n.exports}var i=e[r]={exports:{}};var s=true;try{t[r](i,i.exports,__nccwpck_require__);s=false}finally{if(s)delete e[r]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r={};!function(){\"use strict\";var t=r;var e=__nccwpck_require__(55).Buffer;var n=e.isEncoding||function(t){t=\"\"+t;switch(t&&t.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return true;default:return false}};function _normalizeEncoding(t){if(!t)return\"utf8\";var e;while(true){switch(t){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return t;default:if(e)return;t=(\"\"+t).toLowerCase();e=true}}}function normalizeEncoding(t){var r=_normalizeEncoding(t);if(typeof r!==\"string\"&&(e.isEncoding===n||!n(t)))throw new Error(\"Unknown encoding: \"+t);return r||t}t.StringDecoder=StringDecoder;function StringDecoder(t){this.encoding=normalizeEncoding(t);var r;switch(this.encoding){case\"utf16le\":this.text=utf16Text;this.end=utf16End;r=4;break;case\"utf8\":this.fillLast=utf8FillLast;r=4;break;case\"base64\":this.text=base64Text;this.end=base64End;r=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=e.allocUnsafe(r)}StringDecoder.prototype.write=function(t){if(t.length===0)return\"\";var e;var r;if(this.lastNeed){e=this.fillLast(t);if(e===undefined)return\"\";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r<t.length)return e?e+this.text(t,r):this.text(t,r);return e||\"\"};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(t){if(this.lastNeed<=t.length){t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length);this.lastNeed-=t.length};function utf8CheckByte(t){if(t<=127)return 0;else if(t>>5===6)return 2;else if(t>>4===14)return 3;else if(t>>3===30)return 4;return t>>6===2?-1:-2}function utf8CheckIncomplete(t,e,r){var n=e.length-1;if(n<r)return 0;var i=utf8CheckByte(e[n]);if(i>=0){if(i>0)t.lastNeed=i-1;return i}if(--n<r||i===-2)return 0;i=utf8CheckByte(e[n]);if(i>=0){if(i>0)t.lastNeed=i-2;return i}if(--n<r||i===-2)return 0;i=utf8CheckByte(e[n]);if(i>=0){if(i>0){if(i===2)i=0;else t.lastNeed=i-3}return i}return 0}function utf8CheckExtraBytes(t,e,r){if((e[0]&192)!==128){t.lastNeed=0;return\"<22>\"}if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128){t.lastNeed=1;return\"<22>\"}if(t.lastNeed>2&&e.length>2){if((e[2]&192)!==128){t.lastNeed=2;return\"<22>\"}}}}function utf8FillLast(t){var e=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,t,e);if(r!==undefined)return r;if(this.lastNeed<=t.length){t.copy(this.lastChar,e,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}t.copy(this.lastChar,e,0,t.length);this.lastNeed-=t.length}function utf8Text(t,e){var r=utf8CheckIncomplete(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);t.copy(this.lastChar,0,n);return t.toString(\"utf8\",e,n)}function utf8End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed)return e+\"<22>\";return e}function utf16Text(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=t[t.length-2];this.lastChar[1]=t[t.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=t[t.length-1];return t.toString(\"utf16le\",e,t.length-1)}function utf16End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString(\"utf16le\",0,r)}return e}function base64Text(t,e){var r=(t.length-e)%3;if(r===0)return t.toString(\"base64\",e);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=t[t.length-1]}else{this.lastChar[0]=t[t.length-2];this.lastChar[1]=t[t.length-1]}return t.toString(\"base64\",e,t.length-r)}function base64End(t){var e=t&&t.length?this.write(t):\"\";if(this.lastNeed)return e+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return e}function simpleWrite(t){return t.toString(this.encoding)}function simpleEnd(t){return t&&t.length?this.write(t):\"\"}}();module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZ19kZWNvZGVyL3N0cmluZ19kZWNvZGVyLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxZQUFZLE9BQU8sbUJBQW1CLGFBQWEsZUFBZSx3QkFBd0IsZ0JBQWdCLFdBQVcsc0RBQXNELFlBQVksS0FBSyxlQUFlLG9CQUFvQiwyQkFBMkIsZ0JBQWdCLGdEQUFnRCx3QkFBd0IsZ0NBQWdDLHdCQUF3QixxREFBcUQsaUJBQWlCLGlDQUFpQyx3QkFBd0IsaURBQWlELFdBQVcsa0JBQWtCLHdCQUF3QixZQUFZLEtBQUssV0FBVyxLQUFLLFVBQVUsVUFBVSxtQ0FBbUMsd0JBQXdCLGlEQUFpRCxhQUFhLHVDQUF1Qyx3QkFBd0IsaURBQWlELHdCQUF3QixpQkFBaUIsYUFBYSxVQUFVLG1CQUFPLENBQUMsaUVBQVEsSUFBSSxTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxzQ0FBc0MsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsbUVBQW1FLFNBQVMsS0FBSyxTQUFTLFlBQVksYUFBYSxRQUFRLHFDQUFxQyxnQ0FBZ0MsT0FBTywyQkFBMkIsaUpBQWlKLHVCQUF1QiwrQkFBK0IsbUJBQW1CLE1BQU0sWUFBWSxVQUFVLG9DQUFvQyxvRUFBb0UseUNBQXlDLDRDQUE0QyxvQkFBb0IsdUJBQXVCLFNBQVMsOEJBQThCLDRCQUE0QiwwRkFBMEYsWUFBWSw4QkFBOEIsMEJBQTBCLG1DQUFtQyxNQUFNLHNCQUFzQixrQ0FBa0Msa0JBQWtCLElBQUksTUFBTSxzQ0FBc0MsSUFBSSxNQUFNLGtDQUFrQyxtQkFBbUIsSUFBSSxNQUFNLCtCQUErQixtQkFBbUIsT0FBTyxnQkFBZ0IsaUJBQWlCLCtCQUErQiwwQ0FBMEMseUJBQXlCLE1BQU0sTUFBTSxrQkFBa0IsbUJBQW1CLDBCQUEwQixnQkFBZ0IsZ0JBQWdCLEtBQUssSUFBSSx1REFBdUQsY0FBYyxvQ0FBb0Msc0NBQXNDLDZDQUE2Qyw0QkFBNEIsbUVBQW1FLDhEQUE4RCw4REFBOEQseUJBQXlCLDBCQUEwQixtQkFBbUIsMEJBQTBCLDJCQUEyQiwyQkFBMkIsc0JBQXNCLG9DQUFvQyxpQkFBaUIsZ0JBQWdCLDBCQUEwQixTQUFTLHNCQUFzQixTQUFTLDBCQUEwQixzQkFBc0IsU0FBUyxzQkFBc0IsU0FBUywwQkFBMEIsc0JBQXNCLFNBQVMsUUFBUSxhQUFhLG9CQUFvQixTQUFTLFNBQVMsb0NBQW9DLHFCQUFxQixhQUFhLFVBQVUsNkJBQTZCLHFCQUFxQixhQUFhLFVBQVUsNkJBQTZCLHFCQUFxQixhQUFhLGFBQWEseUJBQXlCLG1DQUFtQyxvQ0FBb0MsMEJBQTBCLDRCQUE0Qix3Q0FBd0MsOERBQThELG1DQUFtQyx3QkFBd0IsdUJBQXVCLG9DQUFvQyw4Q0FBOEMsaUJBQWlCLGlDQUFpQywwQkFBMEIsOEJBQThCLG9CQUFvQixtQ0FBbUMsOEJBQThCLFNBQVMsd0JBQXdCLHVCQUF1Qiw4QkFBOEIsTUFBTSwrQkFBK0IsdUJBQXVCLGdCQUFnQixpQkFBaUIsK0JBQStCLCtCQUErQixzQkFBc0IsU0FBUyxnQkFBZ0IsaUJBQWlCLCtCQUErQiwwQ0FBMEMscUJBQXFCLG1DQUFtQyxrQkFBa0IsbUNBQW1DLCtDQUErQyxTQUFTLHlCQUF5QixxQkFBcUIsdUNBQXVDLGtCQUFrQixpQkFBaUIsVUFBVSwrQkFBK0IsS0FBSywrQkFBK0IsK0JBQStCLHlDQUF5QyxzQkFBc0IsbUNBQW1DLDZFQUE2RSxTQUFTLHdCQUF3QixpQ0FBaUMsc0JBQXNCLHFDQUFxQyxHQUFHLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmluZ19kZWNvZGVyL3N0cmluZ19kZWNvZGVyLmpzP2M2MDgiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIHQ9ezU1OmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDMwMCk7dmFyIGk9bi5CdWZmZXI7ZnVuY3Rpb24gY29weVByb3BzKHQsZSl7Zm9yKHZhciByIGluIHQpe2Vbcl09dFtyXX19aWYoaS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdyl7dC5leHBvcnRzPW59ZWxzZXtjb3B5UHJvcHMobixlKTtlLkJ1ZmZlcj1TYWZlQnVmZmVyfWZ1bmN0aW9uIFNhZmVCdWZmZXIodCxlLHIpe3JldHVybiBpKHQsZSxyKX1TYWZlQnVmZmVyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKTtjb3B5UHJvcHMoaSxTYWZlQnVmZmVyKTtTYWZlQnVmZmVyLmZyb209ZnVuY3Rpb24odCxlLHIpe2lmKHR5cGVvZiB0PT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyXCIpfXJldHVybiBpKHQsZSxyKX07U2FmZUJ1ZmZlci5hbGxvYz1mdW5jdGlvbih0LGUscil7aWYodHlwZW9mIHQhPT1cIm51bWJlclwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKX12YXIgbj1pKHQpO2lmKGUhPT11bmRlZmluZWQpe2lmKHR5cGVvZiByPT09XCJzdHJpbmdcIil7bi5maWxsKGUscil9ZWxzZXtuLmZpbGwoZSl9fWVsc2V7bi5maWxsKDApfXJldHVybiBufTtTYWZlQnVmZmVyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIGkodCl9O1NhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT09XCJudW1iZXJcIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIil9cmV0dXJuIG4uU2xvd0J1ZmZlcih0KX19LDMwMDpmdW5jdGlvbih0KXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9cmVxdWlyZShcImJ1ZmZlclwiKX19O3ZhciBlPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18ocil7dmFyIG49ZVtyXTtpZihuIT09dW5kZWZpbmVkKXtyZXR1cm4gbi5leHBvcnRzfXZhciBpPWVbcl09e2V4cG9ydHM6e319O3ZhciBzPXRydWU7dHJ5e3Rbcl0oaSxpLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7cz1mYWxzZX1maW5hbGx5e2lmKHMpZGVsZXRlIGVbcl19cmV0dXJuIGkuZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHI9e307IWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9cjt2YXIgZT1fX25jY3dwY2tfcmVxdWlyZV9fKDU1KS5CdWZmZXI7dmFyIG49ZS5pc0VuY29kaW5nfHxmdW5jdGlvbih0KXt0PVwiXCIrdDtzd2l0Y2godCYmdC50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOmNhc2VcInJhd1wiOnJldHVybiB0cnVlO2RlZmF1bHQ6cmV0dXJuIGZhbHNlfX07ZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKHQpe2lmKCF0KXJldHVyblwidXRmOFwiO3ZhciBlO3doaWxlKHRydWUpe3N3aXRjaCh0KXtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm5cInV0ZjhcIjtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm5cInV0ZjE2bGVcIjtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm5cImxhdGluMVwiO2Nhc2VcImJhc2U2NFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiaGV4XCI6cmV0dXJuIHQ7ZGVmYXVsdDppZihlKXJldHVybjt0PShcIlwiK3QpLnRvTG93ZXJDYXNlKCk7ZT10cnVlfX19ZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcodCl7dmFyIHI9X25vcm1hbGl6ZUVuY29kaW5nKHQpO2lmKHR5cGVvZiByIT09XCJzdHJpbmdcIiYmKGUuaXNFbmNvZGluZz09PW58fCFuKHQpKSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIit0KTtyZXR1cm4gcnx8dH10LlN0cmluZ0RlY29kZXI9U3RyaW5nRGVjb2RlcjtmdW5jdGlvbiBTdHJpbmdEZWNvZGVyKHQpe3RoaXMuZW5jb2Rpbmc9bm9ybWFsaXplRW5jb2RpbmcodCk7dmFyIHI7c3dpdGNoKHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9dXRmMTZUZXh0O3RoaXMuZW5kPXV0ZjE2RW5kO3I9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD11dGY4RmlsbExhc3Q7cj00O2JyZWFrO2Nhc2VcImJhc2U2NFwiOnRoaXMudGV4dD1iYXNlNjRUZXh0O3RoaXMuZW5kPWJhc2U2NEVuZDtyPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLndyaXRlPXNpbXBsZVdyaXRlO3RoaXMuZW5kPXNpbXBsZUVuZDtyZXR1cm59dGhpcy5sYXN0TmVlZD0wO3RoaXMubGFzdFRvdGFsPTA7dGhpcy5sYXN0Q2hhcj1lLmFsbG9jVW5zYWZlKHIpfVN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe2lmKHQubGVuZ3RoPT09MClyZXR1cm5cIlwiO3ZhciBlO3ZhciByO2lmKHRoaXMubGFzdE5lZWQpe2U9dGhpcy5maWxsTGFzdCh0KTtpZihlPT09dW5kZWZpbmVkKXJldHVyblwiXCI7cj10aGlzLmxhc3ROZWVkO3RoaXMubGFzdE5lZWQ9MH1lbHNle3I9MH1pZihyPHQubGVuZ3RoKXJldHVybiBlP2UrdGhpcy50ZXh0KHQscik6dGhpcy50ZXh0KHQscik7cmV0dXJuIGV8fFwiXCJ9O1N0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZD11dGY4RW5kO1N0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQ9dXRmOFRleHQ7U3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24odCl7aWYodGhpcy5sYXN0TmVlZDw9dC5sZW5ndGgpe3QuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKTtyZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpfXQuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0Lmxlbmd0aCk7dGhpcy5sYXN0TmVlZC09dC5sZW5ndGh9O2Z1bmN0aW9uIHV0ZjhDaGVja0J5dGUodCl7aWYodDw9MTI3KXJldHVybiAwO2Vsc2UgaWYodD4+NT09PTYpcmV0dXJuIDI7ZWxzZSBpZih0Pj40PT09MTQpcmV0dXJuIDM7ZWxzZSBpZih0Pj4zPT09MzApcmV0dXJuIDQ7cmV0dXJuIHQ+PjY9PT0yPy0xOi0yfWZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUodCxlLHIpe3ZhciBuPWUubGVuZ3RoLTE7aWYobjxyKXJldHVybiAwO3ZhciBpPXV0ZjhDaGVja0J5dGUoZVtuXSk7aWYoaT49MCl7aWYoaT4wKXQubGFzdE5lZWQ9aS0xO3JldHVybiBpfWlmKC0tbjxyfHxpPT09LTIpcmV0dXJuIDA7aT11dGY4Q2hlY2tCeXRlKGVbbl0pO2lmKGk+PTApe2lmKGk+MCl0Lmxhc3ROZWVkPWktMjtyZXR1cm4gaX1pZigtLW48cnx8aT09PS0yKXJldHVybiAwO2k9dXRmOENoZWNrQnl0ZShlW25dKTtpZihpPj0wKXtpZihpPjApe2lmKGk9PT0yKWk9MDtlbHNlIHQubGFzdE5lZWQ9aS0zfXJldHVybiBpfXJldHVybiAwfWZ1bmN0aW9uIHV0ZjhDaGVja0V4dHJhQnl0ZXModCxlLHIpe2lmKChlWzBdJjE5MikhPT0xMjgpe3QubGFzdE5lZWQ9MDtyZXR1cm5cIu+/vVwifWlmKHQubGFzdE5lZWQ+MSYmZS5sZW5ndGg+MSl7aWYoKGVbMV0mMTkyKSE9PTEyOCl7dC5sYXN0TmVlZD0xO3JldHVyblwi77+9XCJ9aWYodC5sYXN0TmVlZD4yJiZlLmxlbmd0aD4yKXtpZigoZVsyXSYxOTIpIT09MTI4KXt0Lmxhc3ROZWVkPTI7cmV0dXJuXCLvv71cIn19fX1mdW5jdGlvbiB1dGY4RmlsbExhc3QodCl7dmFyIGU9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDt2YXIgcj11dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsdCxlKTtpZihyIT09dW5kZWZpbmVkKXJldHVybiByO2lmKHRoaXMubGFzdE5lZWQ8PXQubGVuZ3RoKXt0LmNvcHkodGhpcy5sYXN0Q2hhcixlLDAsdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKX10LmNvcHkodGhpcy5sYXN0Q2hhcixlLDAsdC5sZW5ndGgpO3RoaXMubGFzdE5lZWQtPXQubGVuZ3RofWZ1bmN0aW9uIHV0ZjhUZXh0KHQsZSl7dmFyIHI9dXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLHQsZSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIHQudG9TdHJpbmcoXCJ1dGY4XCIsZSk7dGhpcy5sYXN0VG90YWw9cjt2YXIgbj10Lmxlbmd0aC0oci10aGlzLmxhc3ROZWVkKTt0LmNvcHkodGhpcy5sYXN0Q2hhciwwLG4pO3JldHVybiB0LnRvU3RyaW5nKFwidXRmOFwiLGUsbil9ZnVuY3Rpb24gdXRmOEVuZCh0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7aWYodGhpcy5sYXN0TmVlZClyZXR1cm4gZStcIu+/vVwiO3JldHVybiBlfWZ1bmN0aW9uIHV0ZjE2VGV4dCh0LGUpe2lmKCh0Lmxlbmd0aC1lKSUyPT09MCl7dmFyIHI9dC50b1N0cmluZyhcInV0ZjE2bGVcIixlKTtpZihyKXt2YXIgbj1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk7aWYobj49NTUyOTYmJm48PTU2MzE5KXt0aGlzLmxhc3ROZWVkPTI7dGhpcy5sYXN0VG90YWw9NDt0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMl07dGhpcy5sYXN0Q2hhclsxXT10W3QubGVuZ3RoLTFdO3JldHVybiByLnNsaWNlKDAsLTEpfX1yZXR1cm4gcn10aGlzLmxhc3ROZWVkPTE7dGhpcy5sYXN0VG90YWw9Mjt0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMV07cmV0dXJuIHQudG9TdHJpbmcoXCJ1dGYxNmxlXCIsZSx0Lmxlbmd0aC0xKX1mdW5jdGlvbiB1dGYxNkVuZCh0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIHI9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwidXRmMTZsZVwiLDAscil9cmV0dXJuIGV9ZnVuY3Rpb24gYmFzZTY0VGV4dCh0LGUpe3ZhciByPSh0Lmxlbmd0aC1lKSUzO2lmKHI9PT0wKXJldHVybiB0LnRvU3RyaW5nKFwiYmFzZTY0XCIsZSk7dGhpcy5sYXN0TmVlZD0zLXI7dGhpcy5sYXN0VG90YWw9MztpZihyPT09MSl7dGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTFdfWVsc2V7dGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdO3RoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0aC0xXX1yZXR1cm4gdC50b1N0cmluZyhcImJhc2U2NFwiLGUsdC5sZW5ndGgtcil9ZnVuY3Rpb24gYmFzZTY0RW5kKHQpe3ZhciBlPXQmJnQubGVuZ3RoP3RoaXMud3JpdGUodCk6XCJcIjtpZih0aGlzLmxhc3ROZWVkKXJldHVybiBlK3RoaXMubGFzdENoYXIudG9TdHJpbmcoXCJiYXNlNjRcIiwwLDMtdGhpcy5sYXN0TmVlZCk7cmV0dXJuIGV9ZnVuY3Rpb24gc2ltcGxlV3JpdGUodCl7cmV0dXJuIHQudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gc2ltcGxlRW5kKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCJ9fSgpO21vZHVsZS5leHBvcnRzPXJ9KSgpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/string_decoder/string_decoder.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/util/util.js":
/*!******************************************************!*\
!*** ./node_modules/next/dist/compiled/util/util.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n(function(){var r={992:function(r){r.exports=function(r,t,o){if(r.filter)return r.filter(t,o);if(void 0===r||null===r)throw new TypeError;if(\"function\"!=typeof t)throw new TypeError;var n=[];for(var i=0;i<r.length;i++){if(!e.call(r,i))continue;var a=r[i];if(t.call(o,a,i,r))n.push(a)}return n};var e=Object.prototype.hasOwnProperty},256:function(r,e,t){\"use strict\";var o=t(925);var n=t(139);var i=n(o(\"String.prototype.indexOf\"));r.exports=function callBoundIntrinsic(r,e){var t=o(r,!!e);if(typeof t===\"function\"&&i(r,\".prototype.\")>-1){return n(t)}return t}},139:function(r,e,t){\"use strict\";var o=t(174);var n=t(925);var i=n(\"%Function.prototype.apply%\");var a=n(\"%Function.prototype.call%\");var y=n(\"%Reflect.apply%\",true)||o.call(a,i);var f=n(\"%Object.getOwnPropertyDescriptor%\",true);var p=n(\"%Object.defineProperty%\",true);var u=n(\"%Math.max%\");if(p){try{p({},\"a\",{value:1})}catch(r){p=null}}r.exports=function callBind(r){var e=y(o,a,arguments);if(f&&p){var t=f(e,\"length\");if(t.configurable){p(e,\"length\",{value:1+u(0,r.length-(arguments.length-1))})}}return e};var s=function applyBind(){return y(o,i,arguments)};if(p){p(r.exports,\"apply\",{value:s})}else{r.exports.apply=s}},144:function(r){var e=Object.prototype.hasOwnProperty;var t=Object.prototype.toString;r.exports=function forEach(r,o,n){if(t.call(o)!==\"[object Function]\"){throw new TypeError(\"iterator must be a function\")}var i=r.length;if(i===+i){for(var a=0;a<i;a++){o.call(n,r[a],a,r)}}else{for(var y in r){if(e.call(r,y)){o.call(n,r[y],y,r)}}}}},426:function(r){\"use strict\";var e=\"Function.prototype.bind called on incompatible \";var t=Array.prototype.slice;var o=Object.prototype.toString;var n=\"[object Function]\";r.exports=function bind(r){var i=this;if(typeof i!==\"function\"||o.call(i)!==n){throw new TypeError(e+i)}var a=t.call(arguments,1);var y;var binder=function(){if(this instanceof y){var e=i.apply(this,a.concat(t.call(arguments)));if(Object(e)===e){return e}return this}else{return i.apply(r,a.concat(t.call(arguments)))}};var f=Math.max(0,i.length-a.length);var p=[];for(var u=0;u<f;u++){p.push(\"$\"+u)}y=Function(\"binder\",\"return function (\"+p.join(\",\")+\"){ return binder.apply(this,arguments); }\")(binder);if(i.prototype){var s=function Empty(){};s.prototype=i.prototype;y.prototype=new s;s.prototype=null}return y}},174:function(r,e,t){\"use strict\";var o=t(426);r.exports=Function.prototype.bind||o},500:function(r,e,t){\"use strict\";var o;var n=SyntaxError;var i=Function;var a=TypeError;var getEvalledConstructor=function(r){try{return i('\"use strict\"; return ('+r+\").constructor;\")()}catch(r){}};var y=Object.getOwnPropertyDescriptor;if(y){try{y({},\"\")}catch(r){y=null}}var throwTypeError=function(){throw new a};var f=y?function(){try{arguments.callee;return throwTypeError}catch(r){try{return y(arguments,\"callee\").get}catch(r){return throwTypeError}}}():throwTypeError;var p=t(115)();var u=Object.getPrototypeOf||function(r){return r.__proto__};var s={};var c=typeof Uint8Array===\"undefined\"?o:u(Uint8Array);var l={\"%AggregateError%\":typeof AggregateError===\"undefined\"?o:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":typeof ArrayBuffer===\"undefined\"?o:ArrayBuffer,\"%ArrayIteratorPrototype%\":p?u([][Symbol.iterator]()):o,\"%AsyncFromSyncIteratorPrototype%\":o,\"%AsyncFunction%\":s,\"%AsyncGenerator%\":s,\"%AsyncGeneratorFunction%\":s,\"%AsyncIteratorPrototype%\":s,\"%Atomics%\":typeof Atomics===\"undefined\"?o:Atomics,\"%BigInt%\":typeof BigInt===\"undefined\"?o:BigInt,\"%Boolean%\":Boolean,\"%DataView%\":typeof DataView===\"undefined\"?o:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%Float32Array%\":typeof Float32Array===\"undefined\"?o:Float32Array,\"%Float64Array%\":typeof Float64Array===\"undefined\"?o:Float64Array,\"%FinalizationRegistry%\":typeof FinalizationRegistry===\"undefined\"?o:FinalizationRegistry,\"%Function%\":i,\"%GeneratorFunction%\":s,\"%Int8Array%\":typeof Int8Array===\"undefined\"?o:Int8Array,\"%Int16Array%\":typeof Int16Array===\"undefined\"?o:Int16Array,\"%Int32Array%\":typeof Int32Array===\"undefined\"?o:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":p?u(u([][Symbol.iterator]())):o,\"%JSON%\":typeof JSON===\"object\"?JSON:o,\"%Map%\":typeof Map===\"undefined\"?o:Map,\"%MapIteratorPrototype%\":typeof Map===\"undefined\"||!p?o:u((new Map)[Symbol.iterator]()),\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":Object,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":typeof Promise===\"undefined\"?o:Promise,\"%Proxy%\":typeof Proxy===\"undefined\"?o:Proxy,\"%RangeError%\":RangeError,\"%ReferenceError%\":ReferenceError,\"%Reflect%\":typeof Reflect===\"undefined\"?o:Reflect,\"%RegExp%\":RegExp,\"%Set%\":typeof Set===\"undefined\"?o:Set,\"%SetIteratorPrototype%\":typeof Set===\"undefined\"||!p?o:u((new Set)[Symbol.iterator]()),\"%SharedArrayBuffer%\":typeof SharedArrayBuffer===\"undefined\"?o:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":p?u(\"\"[Symbol.iterator]()):o,\"%Symbol%\":p?Symbol:o,\"%SyntaxError%\":n,\"%ThrowTypeError%\":f,\"%TypedArray%\":c,\"%TypeError%\":a,\"%Uint8Array%\":typeof Uint8Array===\"undefined\"?o:Uint8Array,\"%Uint8ClampedArray%\":typeof Uint8ClampedArray===\"undefined\"?o:Uint8ClampedArray,\"%Uint16Array%\":typeof Uint16Array===\"undefined\"?o:Uint16Array,\"%Uint32Array%\":typeof Uint32Array===\"undefined\"?o:Uint32Array,\"%URIError%\":URIError,\"%WeakMap%\":typeof WeakMap===\"undefined\"?o:WeakMap,\"%WeakRef%\":typeof WeakRef===\"undefined\"?o:WeakRef,\"%WeakSet%\":typeof WeakSet===\"undefined\"?o:WeakSet};var d=function doEval(r){var e;if(r===\"%AsyncFunction%\"){e=getEvalledConstructor(\"async function () {}\")}else if(r===\"%GeneratorFunction%\"){e=getEvalledConstructor(\"function* () {}\")}else if(r===\"%AsyncGeneratorFunction%\"){e=getEvalledConstructor(\"async function* () {}\")}else if(r===\"%AsyncGenerator%\"){var t=doEval(\"%AsyncGeneratorFunction%\");if(t){e=t.prototype}}else if(r===\"%AsyncIteratorPrototype%\"){var o=doEval(\"%AsyncGenerator%\");if(o){e=u(o.prototype)}}l[r]=e;return e};var g={\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]};var v=t(174);var b=t(101);var A=v.call(Function.call,Array.prototype.concat);var m=v.call(Function.apply,Array.prototype.splice);var S=v.call(Function.call,String.prototype.replace);var h=v.call(Function.call,String.prototype.slice);var P=v.call(Function.call,RegExp.prototype.exec);var O=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;var w=/\\\\(\\\\)?/g;var j=function stringToPath(r){var e=h(r,0,1);var t=h(r,-1);if(e===\"%\"&&t!==\"%\"){throw new n(\"invalid intrinsic syntax, expected closing `%`\")}else if(t===\"%\"&&e!==\"%\"){throw new n(\"invalid intrinsic syntax, expected opening `%`\")}var o=[];S(r,O,(function(r,e,t,n){o[o.length]=t?S(n,w,\"$1\"):e||r}));return o};var E=function getBaseIntrinsic(r,e){var t=r;var o;if(b(g,t)){o=g[t];t=\"%\"+o[0]+\"%\"}if(b(l,t)){var i=l[t];if(i===s){i=d(t)}if(typeof i===\"undefined\"&&!e){throw new a(\"intrinsic \"+r+\" exists, but is not available. Please file an issue!\")}return{alias:o,name:t,value:i}}throw new n(\"intrinsic \"+r+\" does not exist!\")};r.exports=function GetIntrinsic(r,e){if(typeof r!==\"string\"||r.length===0){throw new a(\"intrinsic name must be a non-empty string\")}if(arguments.length>1&&typeof e!==\"boolean\"){throw new a('\"allowMissing\" argument must be a boolean')}if(P(/^%?[^%]*%?$/g,r)===null){throw new n(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\")}var t=j(r);var i=t.length>0?t[0]:\"\";var f=E(\"%\"+i+\"%\",e);var p=f.name;var u=f.value;var s=false;var c=f.alias;if(c){i=c[0];m(t,A([0,1],c))}for(var d=1,g=true;d<t.length;d+=1){var v=t[d];var S=h(v,0,1);var O=h(v,-1);if((S==='\"'||S===\"'\"||S===\"`\"||(O==='\"'||O===\"'\"||O===\"`\"))&&S!==O){throw new n(\"property names with quotes must have matching quotes\")}if(v===\"constructor\"||!g){s=true}i+=\".\"+v;p=\"%\"+i+\"%\";if(b(l,p)){u=l[p]}else if(u!=null){if(!(v in u)){if(!e){throw new a(\"base intrinsic for \"+r+\" exists, but the property is not available.\")}return void o}if(y&&d+1>=t.length){var w=y(u,v);g=!!w;if(g&&\"get\"in w&&!(\"originalValue\"in w.get)){u=w.get}else{u=u[v]}}else{g=b(u,v);u=u[v]}if(g&&!s){l[p]=u}}}return u}},925:function(r,e,t){\"use strict\";var o;var n=SyntaxError;var i=Function;var a=TypeError;var getEvalledConstructor=function(r){try{return i('\"use strict\"; return ('+r+\").constructor;\")()}catch(r){}};var y=Object.getOwnPropertyDescriptor;if(y){try{y({},\"\")}catch(r){y=null}}var throwTypeError=function(){throw new a};var f=y?function(){try{arguments.callee;return throwTypeError}catch(r){try{return y(arguments,\"callee\").get}catch(r){return throwTypeError}}}():throwTypeError;var p=t(115)();var u=t(504)();var s=Object.getPrototypeOf||(u?function(r){return r.__proto__}:null);var c={};var l=typeof Uint8Array===\"undefined\"||!s?o:s(Uint8Array);var d={\"%AggregateError%\":typeof AggregateError===\"undefined\"?o:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":typeof ArrayBuffer===\"undefined\"?o:ArrayBuffer,\"%ArrayIteratorPrototype%\":p&&s?s([][Symbol.iterator]()):o,\"%AsyncFromSyncIteratorPrototype%\":o,\"%AsyncFunction%\":c,\"%AsyncGenerator%\":c,\"%AsyncGeneratorFunction%\":c,\"%AsyncIteratorPrototype%\":c,\"%Atomics%\":typeof Atomics===\"undefined\"?o:Atomics,\"%BigInt%\":typeof BigInt===\"undefined\"?o:BigInt,\"%BigInt64Array%\":typeof BigInt64Array===\"undefined\"?o:BigInt64Array,\"%BigUint64Array%\":typeof BigUint64Array===\"undefined\"?o:BigUint64Array,\"%Boolean%\":Boolean,\"%DataView%\":typeof DataView===\"undefined\"?o:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":Error,\"%eval%\":eval,\"%EvalError%\":EvalError,\"%Float32Array%\":typeof Float32Array===\"undefined\"?o:Float32Array,\"%Float64Array%\":typeof Float64Array===\"undefined\"?o:Float64Array,\"%FinalizationRegistry%\":typeof FinalizationRegistry===\"undefined\"?o:FinalizationRegistry,\"%Function%\":i,\"%GeneratorFunction%\":c,\"%Int8Array%\":typeof Int8Array===\"undefined\"?o:Int8Array,\"%Int16Array%\":typeof Int16Array===\"undefined\"?o:Int16Array,\"%Int32Array%\":typeof Int32Array===\"undefined\"?o:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":p&&s?s(s([][Symbol.iterator]())):o,\"%JSON%\":typeof JSON===\"object\"?JSON:o,\"%Map%\":typeof Map===\"undefined\"?o:Map,\"%MapIteratorPrototype%\":typeof Map===\"undefined\"||!p||!s?o:s((new Map)[Symbol.iterator]()),\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":Object,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":typeof Promise===\"undefined\"?o:Promise,\"%Proxy%\":typeof Proxy===\"undefined\"?o:Proxy,\"%RangeError%\":RangeError,\"%ReferenceError%\":ReferenceError,\"%Reflect%\":typeof Reflect===\"undefined\"?o:Reflect,\"%RegExp%\":RegExp,\"%Set%\":typeof Set===\"undefined\"?o:Set,\"%SetIteratorPrototype%\":typeof Set===\"undefined\"||!p||!s?o:s((new Set)[Symbol.iterator]()),\"%SharedArrayBuffer%\":typeof SharedArrayBuffer===\"undefined\"?o:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":p&&s?s(\"\"[Symbol.iterator]()):o,\"%Symbol%\":p?Symbol:o,\"%SyntaxError%\":n,\"%ThrowTypeError%\":f,\"%TypedArray%\":l,\"%TypeError%\":a,\"%Uint8Array%\":typeof Uint8Array===\"undefined\"?o:Uint8Array,\"%Uint8ClampedArray%\":typeof Uint8ClampedArray===\"undefined\"?o:Uint8ClampedArray,\"%Uint16Array%\":typeof Uint16Array===\"undefined\"?o:Uint16Array,\"%Uint32Array%\":typeof Uint32Array===\"undefined\"?o:Uint32Array,\"%URIError%\":URIError,\"%WeakMap%\":typeof WeakMap===\"undefined\"?o:WeakMap,\"%WeakRef%\":typeof WeakRef===\"undefined\"?o:WeakRef,\"%WeakSet%\":typeof WeakSet===\"undefined\"?o:WeakSet};if(s){try{null.error}catch(r){var g=s(s(r));d[\"%Error.prototype%\"]=g}}var v=function doEval(r){var e;if(r===\"%AsyncFunction%\"){e=getEvalledConstructor(\"async function () {}\")}else if(r===\"%GeneratorFunction%\"){e=getEvalledConstructor(\"function* () {}\")}else if(r===\"%AsyncGeneratorFunction%\"){e=getEvalledConstructor(\"async function* () {}\")}else if(r===\"%AsyncGenerator%\"){var t=doEval(\"%AsyncGeneratorFunction%\");if(t){e=t.prototype}}else if(r===\"%AsyncIteratorPrototype%\"){var o=doEval(\"%AsyncGenerator%\");if(o&&s){e=s(o.prototype)}}d[r]=e;return e};var b={\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]};var A=t(174);var m=t(101);var S=A.call(Function.call,Array.prototype.concat);var h=A.call(Function.apply,Array.prototype.splice);var P=A.call(Function.call,String.prototype.replace);var O=A.call(Function.call,String.prototype.slice);var w=A.call(Function.call,RegExp.prototype.exec);var j=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;var E=/\\\\(\\\\)?/g;var I=function stringToPath(r){var e=O(r,0,1);var t=O(r,-1);if(e===\"%\"&&t!==\"%\"){throw new n(\"invalid intrinsic syntax, expected closing `%`\")}else if(t===\"%\"&&e!==\"%\"){throw new n(\"invalid intrinsic syntax, expected opening `%`\")}var o=[];P(r,j,(function(r,e,t,n){o[o.length]=t?P(n,E,\"$1\"):e||r}));return o};var B=function getBaseIntrinsic(r,e){var t=r;var o;if(m(b,t)){o=b[t];t=\"%\"+o[0]+\"%\"}if(m(d,t)){var i=d[t];if(i===c){i=v(t)}if(typeof i===\"undefined\"&&!e){throw new a(\"intrinsic \"+r+\" exists, but is not available. Please file an issue!\")}return{alias:o,name:t,value:i}}throw new n(\"intrinsic \"+r+\" does not exist!\")};r.exports=function GetIntrinsic(r,e){if(typeof r!==\"string\"||r.length===0){throw new a(\"intrinsic name must be a non-empty string\")}if(arguments.length>1&&typeof e!==\"boolean\"){throw new a('\"allowMissing\" argument must be a boolean')}if(w(/^%?[^%]*%?$/,r)===null){throw new n(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\")}var t=I(r);var i=t.length>0?t[0]:\"\";var f=B(\"%\"+i+\"%\",e);var p=f.name;var u=f.value;var s=false;var c=f.alias;if(c){i=c[0];h(t,S([0,1],c))}for(var l=1,g=true;l<t.length;l+=1){var v=t[l];var b=O(v,0,1);var A=O(v,-1);if((b==='\"'||b===\"'\"||b===\"`\"||(A==='\"'||A===\"'\"||A===\"`\"))&&b!==A){throw new n(\"property names with quotes must have matching quotes\")}if(v===\"constructor\"||!g){s=true}i+=\".\"+v;p=\"%\"+i+\"%\";if(m(d,p)){u=d[p]}else if(u!=null){if(!(v in u)){if(!e){throw new a(\"base intrinsic for \"+r+\" exists, but the property is not available.\")}return void o}if(y&&l+1>=t.length){var P=y(u,v);g=!!P;if(g&&\"get\"in P&&!(\"originalValue\"in P.get)){u=P.get}else{u=u[v]}}else{g=m(u,v);u=u[v]}if(g&&!s){d[p]=u}}}return u}},504:function(r){\"use strict\";var e={foo:{}};var t=Object;r.exports=function hasProto(){return{__proto__:e}.foo===e.foo&&!({__proto__:null}instanceof t)}},942:function(r,e,t){\"use strict\";var o=typeof Symbol!==\"undefined\"&&Symbol;var n=t(773);r.exports=function hasNativeSymbols(){if(typeof o!==\"function\"){return false}if(typeof Symbol!==\"function\"){return false}if(typeof o(\"foo\")!==\"symbol\"){return false}if(typeof Symbol(\"bar\")!==\"symbol\"){return false}return n()}},773:function(r){\"use strict\";r.exports=function hasSymbols(){if(typeof Symbol!==\"function\"||typeof Object.getOwnPropertySymbols!==\"function\"){return false}if(typeof Symbol.iterator===\"symbol\"){return true}var r={};var e=Symbol(\"test\");var t=Object(e);if(typeof e===\"string\"){return false}if(Object.prototype.toString.call(e)!==\"[object Symbol]\"){return false}if(Object.prototype.toString.call(t)!==\"[object Symbol]\"){return false}var o=42;r[e]=o;for(e in r){return false}if(typeof Object.keys===\"function\"&&Object.keys(r).length!==0){return false}if(typeof Object.getOwnPropertyNames===\"function\"&&Object.getOwnPropertyNames(r).length!==0){return false}var n=Object.getOwnPropertySymbols(r);if(n.length!==1||n[0]!==e){return false}if(!Object.prototype.propertyIsEnumerable.call(r,e)){return false}if(typeof Object.getOwnPropertyDescriptor===\"function\"){var i=Object.getOwnPropertyDescriptor(r,e);if(i.value!==o||i.enumerable!==true){return false}}return true}},115:function(r,e,t){\"use strict\";var o=typeof Symbol!==\"undefined\"&&Symbol;var n=t(832);r.exports=function hasNativeSymbols(){if(typeof o!==\"function\"){return false}if(typeof Symbol!==\"function\"){return false}if(typeof o(\"foo\")!==\"symbol\"){return false}if(typeof Symbol(\"bar\")!==\"symbol\"){return false}return n()}},832:function(r){\"use strict\";r.exports=function hasSymbols(){if(typeof Symbol!==\"function\"||typeof Object.getOwnPropertySymbols!==\"function\"){return false}if(typeof Symbol.iterator===\"symbol\"){return true}var r={};var e=Symbol(\"test\");var t=Object(e);if(typeof e===\"string\"){return false}if(Object.prototype.toString.call(e)!==\"[object Symbol]\"){return false}if(Object.prototype.toString.call(t)!==\"[object Symbol]\"){return false}var o=42;r[e]=o;for(e in r){return false}if(typeof Object.keys===\"function\"&&Object.keys(r).length!==0){return false}if(typeof Object.getOwnPropertyNames===\"function\"&&Object.getOwnPropertyNames(r).length!==0){return false}var n=Object.getOwnPropertySymbols(r);if(n.length!==1||n[0]!==e){return false}if(!Object.prototype.propertyIsEnumerable.call(r,e)){return false}if(typeof Object.getOwnPropertyDescriptor===\"function\"){var i=Object.getOwnPropertyDescriptor(r,e);if(i.value!==o||i.enumerable!==true){return false}}return true}},101:function(r,e,t){\"use strict\";var o=t(174);r.exports=o.call(Function.call,Object.prototype.hasOwnProperty)},782:function(r){if(typeof Object.create===\"function\"){r.exports=function inherits(r,e){if(e){r.super_=e;r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}})}}}else{r.exports=function inherits(r,e){if(e){r.super_=e;var TempCtor=function(){};TempCtor.prototype=e.prototype;r.prototype=new TempCtor;r.prototype.constructor=r}}}},157:function(r){\"use strict\";var e=typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\";var t=Object.prototype.toString;var o=function isArguments(r){if(e&&r&&typeof r===\"object\"&&Symbol.toStringTag in r){return false}return t.call(r)===\"[object Arguments]\"};var n=function isArguments(r){if(o(r)){return true}return r!==null&&typeof r===\"object\"&&typeof r.length===\"number\"&&r.length>=0&&t.call(r)!==\"[object Array]\"&&t.call(r.callee)===\"[object Function]\"};var i=function(){return o(arguments)}();o.isLegacyArguments=n;r.exports=i?o:n},391:function(r){\"use strict\";var e=Object.prototype.toString;var t=Function.prototype.toString;var o=/^\\s*(?:function)?\\*/;var n=typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\";var i=Object.getPrototypeOf;var getGeneratorFunc=function(){if(!n){return false}try{return Function(\"return function*() {}\")()}catch(r){}};var a=getGeneratorFunc();var y=a?i(a):{};r.exports=function isGeneratorFunction(r){if(typeof r!==\"function\"){return false}if(o.test(t.call(r))){return true}if(!n){var a=e.call(r);return a===\"[object GeneratorFunction]\"}return i(r)===y}},994:function(r,e,t){\"use strict\";var o=t(144);var n=t(349);var i=t(256);var a=i(\"Object.prototype.toString\");var y=t(942)();var f=y&&typeof Symbol.toStringTag===\"symbol\";var p=n();var u=i(\"Array.prototype.indexOf\",true)||function indexOf(r,e){for(var t=0;t<r.length;t+=1){if(r[t]===e){return t}}return-1};var s=i(\"String.prototype.slice\");var c={};var l=t(24);var d=Object.getPrototypeOf;if(f&&l&&d){o(p,(function(r){var e=new __webpack_require__.g[r];if(!(Symbol.toStringTag in e)){throw new EvalError(\"this engine has support for Symbol.toStringTag, but \"+r+\" does not have the property! Please report this.\")}var t=d(e);var o=l(t,Symbol.toStringTag);if(!o){var n=d(t);o=l(n,Symbol.toStringTag)}c[r]=o.get}))}var g=function tryAllTypedArrays(r){var e=false;o(c,(function(t,o){if(!e){try{e=t.call(r)===o}catch(r){}}}));return e};r.exports=function isTypedArray(r){if(!r||typeof r!==\"object\"){return false}if(!f){var e=s(a(r),8,-1);return u(p,e)>-1}if(!l){return false}return g(r)}},369:function(r){r.exports=function isBuffer(r){return r instanceof Buffer}},584:function(r,e,t){\"use strict\";var o=t(157);var n=t(391);var i=t(490);var a=t(994);function uncurryThis(r){return r.call.bind(r)}var y=typeof BigInt!==\"undefined\";var f=typeof Symbol!==\"undefined\";var p=uncurryThis(Object.prototype.toString);var u=uncurryThis(Number.prototype.valueOf);var s=uncurryThis(String.prototype.valueOf);var c=uncurryThis(Boolean.prototype.valueOf);if(y){var l=uncurryThis(BigInt.prototype.valueOf)}if(f){var d=uncurryThis(Symbol.prototype.valueOf)}function checkBoxedPrimitive(r,e){if(typeof r!==\"object\"){return false}try{e(r);return true}catch(r){return false}}e.isArgumentsObject=o;e.isGeneratorFunction=n;e.isTypedArray=a;function isPromise(r){return typeof Promise!==\"undefined\"&&r instanceof Promise||r!==null&&typeof r===\"object\"&&typeof r.then===\"function\"&&typeof r.catch===\"function\"}e.isPromise=isPromise;function isArrayBufferView(r){if(typeof ArrayBuffer!==\"undefined\"&&ArrayBuffer.isView){return ArrayBuffer.isView(r)}return a(r)||isDataView(r)}e.isArrayBufferView=isArrayBufferView;function isUint8Array(r){return i(r)===\"Uint8Array\"}e.isUint8Array=isUint8Array;function isUint8ClampedArray(r){return i(r)===\"Uint8ClampedArray\"}e.isUint8ClampedArray=isUint8ClampedArray;function isUint16Array(r){return i(r)===\"Uint16Array\"}e.isUint16Array=isUint16Array;function isUint32Array(r){return i(r)===\"Uint32Array\"}e.isUint32Array=isUint32Array;function isInt8Array(r){return i(r)===\"Int8Array\"}e.isInt8Array=isInt8Array;function isInt16Array(r){return i(r)===\"Int16Array\"}e.isInt16Array=isInt16Array;function isInt32Array(r){return i(r)===\"Int32Array\"}e.isInt32Array=isInt32Array;function isFloat32Array(r){return i(r)===\"Float32Array\"}e.isFloat32Array=isFloat32Array;function isFloat64Array(r){return i(r)===\"Float64Array\"}e.isFloat64Array=isFloat64Array;function isBigInt64Array(r){return i(r)===\"BigInt64Array\"}e.isBigInt64Array=isBigInt64Array;function isBigUint64Array(r){return i(r)===\"BigUint64Array\"}e.isBigUint64Array=isBigUint64Array;function isMapToString(r){return p(r)===\"[object Map]\"}isMapToString.working=typeof Map!==\"undefined\"&&isMapToString(new Map);function isMap(r){if(typeof Map===\"undefined\"){return false}return isMapToString.working?isMapToString(r):r instanceof Map}e.isMap=isMap;function isSetToString(r){return p(r)===\"[object Set]\"}isSetToString.working=typeof Set!==\"undefined\"&&isSetToString(new Set);function isSet(r){if(typeof Set===\"undefined\"){return false}return isSetToString.working?isSetToString(r):r instanceof Set}e.isSet=isSet;function isWeakMapToString(r){return p(r)===\"[object WeakMap]\"}isWeakMapToString.working=typeof WeakMap!==\"undefined\"&&isWeakMapToString(new WeakMap);function isWeakMap(r){if(typeof WeakMap===\"undefined\"){return false}return isWeakMapToString.working?isWeakMapToString(r):r instanceof WeakMap}e.isWeakMap=isWeakMap;function isWeakSetToString(r){return p(r)===\"[object WeakSet]\"}isWeakSetToString.working=typeof WeakSet!==\"undefined\"&&isWeakSetToString(new WeakSet);function isWeakSet(r){return isWeakSetToString(r)}e.isWeakSet=isWeakSet;function isArrayBufferToString(r){return p(r)===\"[object ArrayBuffer]\"}isArrayBufferToString.working=typeof ArrayBuffer!==\"undefined\"&&isArrayBufferToString(new ArrayBuffer);function isArrayBuffer(r){if(typeof ArrayBuffer===\"undefined\"){return false}return isArrayBufferToString.working?isArrayBufferToString(r):r instanceof ArrayBuffer}e.isArrayBuffer=isArrayBuffer;function isDataViewToString(r){return p(r)===\"[object DataView]\"}isDataViewToString.working=typeof ArrayBuffer!==\"undefined\"&&typeof DataView!==\"undefined\"&&isDataViewToString(new DataView(new ArrayBuffer(1),0,1));function isDataView(r){if(typeof DataView===\"undefined\"){return false}return isDataViewToString.working?isDataViewToString(r):r instanceof DataView}e.isDataView=isDataView;var g=typeof SharedArrayBuffer!==\"undefined\"?SharedArrayBuffer:undefined;function isSharedArrayBufferToString(r){return p(r)===\"[object SharedArrayBuffer]\"}function isSharedArrayBuffer(r){if(typeof g===\"undefined\"){return false}if(typeof isSharedArrayBufferToString.working===\"undefined\"){isSharedArrayBufferToString.working=isSharedArrayBufferToString(new g)}return isSharedArrayBufferToString.working?isSharedArrayBufferToString(r):r instanceof g}e.isSharedArrayBuffer=isSharedArrayBuffer;function isAsyncFunction(r){return p(r)===\"[object AsyncFunction]\"}e.isAsyncFunction=isAsyncFunction;function isMapIterator(r){return p(r)===\"[object Map Iterator]\"}e.isMapIterator=isMapIterator;function isSetIterator(r){return p(r)===\"[object Set Iterator]\"}e.isSetIterator=isSetIterator;function isGeneratorObject(r){return p(r)===\"[object Generator]\"}e.isGeneratorObject=isGeneratorObject;function isWebAssemblyCompiledModule(r){return p(r)===\"[object WebAssembly.Module]\"}e.isWebAssemblyCompiledModule=isWebAssemblyCompiledModule;function isNumberObject(r){return checkBoxedPrimitive(r,u)}e.isNumberObject=isNumberObject;function isStringObject(r){return checkBoxedPrimitive(r,s)}e.isStringObject=isStringObject;function isBooleanObject(r){return checkBoxedPrimitive(r,c)}e.isBooleanObject=isBooleanObject;function isBigIntObject(r){return y&&checkBoxedPrimitive(r,l)}e.isBigIntObject=isBigIntObject;function isSymbolObject(r){return f&&checkBoxedPrimitive(r,d)}e.isSymbolObject=isSymbolObject;function isBoxedPrimitive(r){return isNumberObject(r)||isStringObject(r)||isBooleanObject(r)||isBigIntObject(r)||isSymbolObject(r)}e.isBoxedPrimitive=isBoxedPrimitive;function isAnyArrayBuffer(r){return typeof Uint8Array!==\"undefined\"&&(isArrayBuffer(r)||isSharedArrayBuffer(r))}e.isAnyArrayBuffer=isAnyArrayBuffer;[\"isProxy\",\"isExternal\",\"isModuleNamespaceObject\"].forEach((function(r){Object.defineProperty(e,r,{enumerable:false,value:function(){throw new Error(r+\" is not supported in userland\")}})}))},177:function(r,e,t){var o=Object.getOwnPropertyDescriptors||function getOwnPropertyDescriptors(r){var e=Object.keys(r);var t={};for(var o=0;o<e.length;o++){t[e[o]]=Object.getOwnPropertyDescriptor(r,e[o])}return t};var n=/%[sdj%]/g;e.format=function(r){if(!isString(r)){var e=[];for(var t=0;t<arguments.length;t++){e.push(inspect(arguments[t]))}return e.join(\" \")}var t=1;var o=arguments;var i=o.length;var a=String(r).replace(n,(function(r){if(r===\"%%\")return\"%\";if(t>=i)return r;switch(r){case\"%s\":return String(o[t++]);case\"%d\":return Number(o[t++]);case\"%j\":try{return JSON.stringify(o[t++])}catch(r){return\"[Circular]\"}default:return r}}));for(var y=o[t];t<i;y=o[++t]){if(isNull(y)||!isObject(y)){a+=\" \"+y}else{a+=\" \"+inspect(y)}}return a};e.deprecate=function(r,t){if(typeof process!==\"undefined\"&&process.noDeprecation===true){return r}if(typeof process===\"undefined\"){return function(){return e.deprecate(r,t).apply(this,arguments)}}var o=false;function deprecated(){if(!o){if(process.throwDeprecation){throw new Error(t)}else if(process.traceDeprecation){console.trace(t)}else{console.error(t)}o=true}return r.apply(this,arguments)}return deprecated};var i={};var a=/^$/;if(process.env.NODE_DEBUG){var y=process.env.NODE_DEBUG;y=y.replace(/[|\\\\{}()[\\]^$+?.]/g,\"\\\\$&\").replace(/\\*/g,\".*\").replace(/,/g,\"$|^\").toUpperCase();a=new RegExp(\"^\"+y+\"$\",\"i\")}e.debuglog=function(r){r=r.toUpperCase();if(!i[r]){if(a.test(r)){var t=process.pid;i[r]=function(){var o=e.format.apply(e,arguments);console.error(\"%s %d: %s\",r,t,o)}}else{i[r]=function(){}}}return i[r]};function inspect(r,t){var o={seen:[],stylize:stylizeNoColor};if(arguments.length>=3)o.depth=arguments[2];if(arguments.length>=4)o.colors=arguments[3];if(isBoolean(t)){o.showHidden=t}else if(t){e._extend(o,t)}if(isUndefined(o.showHidden))o.showHidden=false;if(isUndefined(o.depth))o.depth=2;if(isUndefined(o.colors))o.colors=false;if(isUndefined(o.customInspect))o.customInspect=true;if(o.colors)o.stylize=stylizeWithColor;return formatValue(o,r,o.depth)}e.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"};function stylizeWithColor(r,e){var t=inspect.styles[e];if(t){return\"\u001b[\"+inspect.colors[t][0]+\"m\"+r+\"\u001b[\"+inspect.colors[t][1]+\"m\"}else{return r}}function stylizeNoColor(r,e){return r}function arrayToHash(r){var e={};r.forEach((function(r,t){e[r]=true}));return e}function formatValue(r,t,o){if(r.customInspect&&t&&isFunction(t.inspect)&&t.inspect!==e.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(o,r);if(!isString(n)){n=formatValue(r,n,o)}return n}var i=formatPrimitive(r,t);if(i){return i}var a=Object.keys(t);var y=arrayToHash(a);if(r.showHidden){a=Object.getOwnPropertyNames(t)}if(isError(t)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0)){return formatError(t)}if(a.length===0){if(isFunction(t)){var f=t.name?\": \"+t.name:\"\";return r.stylize(\"[Function\"+f+\"]\",\"special\")}if(isRegExp(t)){return r.stylize(RegExp.prototype.toString.call(t),\"regexp\")}if(isDate(t)){return r.stylize(Date.prototype.toString.call(t),\"date\")}if(isError(t)){return formatError(t)}}var p=\"\",u=false,s=[\"{\",\"}\"];if(isArray(t)){u=true;s=[\"[\",\"]\"]}if(isFunction(t)){var c=t.name?\": \"+t.name:\"\";p=\" [Function\"+c+\"]\"}if(isRegExp(t)){p=\" \"+RegExp.prototype.toString.call(t)}if(isDate(t)){p=\" \"+Date.prototype.toUTCString.call(t)}if(isError(t)){p=\" \"+formatError(t)}if(a.length===0&&(!u||t.length==0)){return s[0]+p+s[1]}if(o<0){if(isRegExp(t)){return r.stylize(RegExp.prototype.toString.call(t),\"regexp\")}else{return r.stylize(\"[Object]\",\"special\")}}r.seen.push(t);var l;if(u){l=formatArray(r,t,o,y,a)}else{l=a.map((function(e){return formatProperty(r,t,o,y,e,u)}))}r.seen.pop();return reduceToSingleString(l,p,s)}function formatPrimitive(r,e){if(isUndefined(e))return r.stylize(\"undefined\",\"undefined\");if(isString(e)){var t=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return r.stylize(t,\"string\")}if(isNumber(e))return r.stylize(\"\"+e,\"number\");if(isBoolean(e))return r.stylize(\"\"+e,\"boolean\");if(isNull(e))return r.stylize(\"null\",\"null\")}function formatError(r){return\"[\"+Error.prototype.toString.call(r)+\"]\"}function formatArray(r,e,t,o,n){var i=[];for(var a=0,y=e.length;a<y;++a){if(hasOwnProperty(e,String(a))){i.push(formatProperty(r,e,t,o,String(a),true))}else{i.push(\"\")}}n.forEach((function(n){if(!n.match(/^\\d+$/)){i.push(formatProperty(r,e,t,o,n,true))}}));return i}function formatProperty(r,e,t,o,n,i){var a,y,f;f=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]};if(f.get){if(f.set){y=r.stylize(\"[Getter/Setter]\",\"special\")}else{y=r.stylize(\"[Getter]\",\"special\")}}else{if(f.set){y=r.stylize(\"[Setter]\",\"special\")}}if(!hasOwnProperty(o,n)){a=\"[\"+n+\"]\"}if(!y){if(r.seen.indexOf(f.value)<0){if(isNull(t)){y=formatValue(r,f.value,null)}else{y=formatValue(r,f.value,t-1)}if(y.indexOf(\"\\n\")>-1){if(i){y=y.split(\"\\n\").map((function(r){return\" \"+r})).join(\"\\n\").substr(2)}else{y=\"\\n\"+y.split(\"\\n\").map((function(r){return\" \"+r})).join(\"\\n\")}}}else{y=r.stylize(\"[Circular]\",\"special\")}}if(isUndefined(a)){if(i&&n.match(/^\\d+$/)){return y}a=JSON.stringify(\"\"+n);if(a.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){a=a.substr(1,a.length-2);a=r.stylize(a,\"name\")}else{a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\");a=r.stylize(a,\"string\")}}return a+\": \"+y}function reduceToSingleString(r,e,t){var o=0;var n=r.reduce((function(r,e){o++;if(e.indexOf(\"\\n\")>=0)o++;return r+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0);if(n>60){return t[0]+(e===\"\"?\"\":e+\"\\n \")+\" \"+r.join(\",\\n \")+\" \"+t[1]}return t[0]+e+\" \"+r.join(\", \")+\" \"+t[1]}e.types=t(584);function isArray(r){return Array.isArray(r)}e.isArray=isArray;function isBoolean(r){return typeof r===\"boolean\"}e.isBoolean=isBoolean;function isNull(r){return r===null}e.isNull=isNull;function isNullOrUndefined(r){return r==null}e.isNullOrUndefined=isNullOrUndefined;function isNumber(r){return typeof r===\"number\"}e.isNumber=isNumber;function isString(r){return typeof r===\"string\"}e.isString=isString;function isSymbol(r){return typeof r===\"symbol\"}e.isSymbol=isSymbol;function isUndefined(r){return r===void 0}e.isUndefined=isUndefined;function isRegExp(r){return isObject(r)&&objectToString(r)===\"[object RegExp]\"}e.isRegExp=isRegExp;e.types.isRegExp=isRegExp;function isObject(r){return typeof r===\"object\"&&r!==null}e.isObject=isObject;function isDate(r){return isObject(r)&&objectToString(r)===\"[object Date]\"}e.isDate=isDate;e.types.isDate=isDate;function isError(r){return isObject(r)&&(objectToString(r)===\"[object Error]\"||r instanceof Error)}e.isError=isError;e.types.isNativeError=isError;function isFunction(r){return typeof r===\"function\"}e.isFunction=isFunction;function isPrimitive(r){return r===null||typeof r===\"boolean\"||typeof r===\"number\"||typeof r===\"string\"||typeof r===\"symbol\"||typeof r===\"undefined\"}e.isPrimitive=isPrimitive;e.isBuffer=t(369);function objectToString(r){return Object.prototype.toString.call(r)}function pad(r){return r<10?\"0\"+r.toString(10):r.toString(10)}var f=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function timestamp(){var r=new Date;var e=[pad(r.getHours()),pad(r.getMinutes()),pad(r.getSeconds())].join(\":\");return[r.getDate(),f[r.getMonth()],e].join(\" \")}e.log=function(){console.log(\"%s - %s\",timestamp(),e.format.apply(e,arguments))};e.inherits=t(782);e._extend=function(r,e){if(!e||!isObject(e))return r;var t=Object.keys(e);var o=t.length;while(o--){r[t[o]]=e[t[o]]}return r};function hasOwnProperty(r,e){return Object.prototype.hasOwnProperty.call(r,e)}var p=typeof Symbol!==\"undefined\"?Symbol(\"util.promisify.custom\"):undefined;e.promisify=function promisify(r){if(typeof r!==\"function\")throw new TypeError('The \"original\" argument must be of type Function');if(p&&r[p]){var e=r[p];if(typeof e!==\"function\"){throw new TypeError('The \"util.promisify.custom\" argument must be of type Function')}Object.defineProperty(e,p,{value:e,enumerable:false,writable:false,configurable:true});return e}function e(){var e,t;var o=new Promise((function(r,o){e=r;t=o}));var n=[];for(var i=0;i<arguments.length;i++){n.push(arguments[i])}n.push((function(r,o){if(r){t(r)}else{e(o)}}));try{r.apply(this,n)}catch(r){t(r)}return o}Object.setPrototypeOf(e,Object.getPrototypeOf(r));if(p)Object.defineProperty(e,p,{value:e,enumerable:false,writable:false,configurable:true});return Object.defineProperties(e,o(r))};e.promisify.custom=p;function callbackifyOnRejected(r,e){if(!r){var t=new Error(\"Promise was rejected with a falsy value\");t.reason=r;r=t}return e(r)}function callbackify(r){if(typeof r!==\"function\"){throw new TypeError('The \"original\" argument must be of type Function')}function callbackified(){var e=[];for(var t=0;t<arguments.length;t++){e.push(arguments[t])}var o=e.pop();if(typeof o!==\"function\"){throw new TypeError(\"The last argument must be of type Function\")}var n=this;var cb=function(){return o.apply(n,arguments)};r.apply(this,e).then((function(r){process.nextTick(cb.bind(null,null,r))}),(function(r){process.nextTick(callbackifyOnRejected.bind(null,r,cb))}))}Object.setPrototypeOf(callbackified,Object.getPrototypeOf(r));Object.defineProperties(callbackified,o(r));return callbackified}e.callbackify=callbackify},490:function(r,e,t){\"use strict\";var o=t(144);var n=t(349);var i=t(256);var a=i(\"Object.prototype.toString\");var y=t(942)();var f=y&&typeof Symbol.toStringTag===\"symbol\";var p=n();var u=i(\"String.prototype.slice\");var s={};var c=t(24);var l=Object.getPrototypeOf;if(f&&c&&l){o(p,(function(r){if(typeof __webpack_require__.g[r]===\"function\"){var e=new __webpack_require__.g[r];if(!(Symbol.toStringTag in e)){throw new EvalError(\"this engine has support for Symbol.toStringTag, but \"+r+\" does not have the property! Please report this.\")}var t=l(e);var o=c(t,Symbol.toStringTag);if(!o){var n=l(t);o=c(n,Symbol.toStringTag)}s[r]=o.get}}))}var d=function tryAllTypedArrays(r){var e=false;o(s,(function(t,o){if(!e){try{var n=t.call(r);if(n===o){e=n}}catch(r){}}}));return e};var g=t(994);r.exports=function whichTypedArray(r){if(!g(r)){return false}if(!f){return u(a(r),8,-1)}return d(r)}},349:function(r,e,t){\"use strict\";var o=t(992);r.exports=function availableTypedArrays(){return o([\"BigInt64Array\",\"BigUint64Array\",\"Float32Array\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\"],(function(r){return typeof __webpack_require__.g[r]===\"function\"}))}},24:function(r,e,t){\"use strict\";var o=t(500);var n=o(\"%Object.getOwnPropertyDescriptor%\",true);if(n){try{n([],\"length\")}catch(r){n=null}}r.exports=n}};var e={};function __nccwpck_require__(t){var o=e[t];if(o!==undefined){return o.exports}var n=e[t]={exports:{}};var i=true;try{r[t](n,n.exports,__nccwpck_require__);i=false}finally{if(i)delete e[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(177);module.exports=t})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3V0aWwvdXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxZQUFZLE9BQU8sZ0JBQWdCLDBCQUEwQixpQ0FBaUMsNENBQTRDLDRDQUE0QyxTQUFTLFlBQVksV0FBVyxLQUFLLHlCQUF5QixXQUFXLDZCQUE2QixVQUFVLHNDQUFzQyxxQkFBcUIsYUFBYSxhQUFhLGFBQWEsdUNBQXVDLDJDQUEyQyxlQUFlLGlEQUFpRCxZQUFZLFVBQVUscUJBQXFCLGFBQWEsYUFBYSxhQUFhLHNDQUFzQyxxQ0FBcUMsNkNBQTZDLGtEQUFrRCx3Q0FBd0Msc0JBQXNCLE1BQU0sSUFBSSxJQUFJLE1BQU0sUUFBUSxFQUFFLFNBQVMsUUFBUSwrQkFBK0IsdUJBQXVCLFNBQVMsb0JBQW9CLG1CQUFtQixjQUFjLDJDQUEyQyxHQUFHLFVBQVUsMkJBQTJCLHlCQUF5QixNQUFNLHFCQUFxQixRQUFRLEVBQUUsS0FBSyxtQkFBbUIsaUJBQWlCLHNDQUFzQyxnQ0FBZ0Msa0NBQWtDLG9DQUFvQyxtREFBbUQsZUFBZSxXQUFXLFlBQVksSUFBSSxLQUFLLG9CQUFvQixLQUFLLGdCQUFnQixnQkFBZ0IsdUJBQXVCLGlCQUFpQixhQUFhLHdEQUF3RCw0QkFBNEIsZ0NBQWdDLDBCQUEwQiwyQkFBMkIsV0FBVyx5Q0FBeUMseUJBQXlCLDBCQUEwQixNQUFNLHNCQUFzQixzQkFBc0IsZ0RBQWdELGtCQUFrQixTQUFTLFlBQVksS0FBSyxnREFBZ0Qsb0NBQW9DLFNBQVMsWUFBWSxJQUFJLEtBQUssY0FBYyx3REFBd0Qsc0NBQXNDLFdBQVcsZ0JBQWdCLHlCQUF5Qix3QkFBd0Isa0JBQWtCLGlCQUFpQixVQUFVLHFCQUFxQixhQUFhLGFBQWEscUNBQXFDLHFCQUFxQixhQUFhLE1BQU0sa0JBQWtCLGVBQWUsZ0JBQWdCLHNDQUFzQyxJQUFJLHdCQUF3QiwyQkFBMkIsS0FBSyxZQUFZLHNDQUFzQyxNQUFNLElBQUksSUFBSSxLQUFLLFNBQVMsUUFB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eHQvZGlzdC9jb21waWxlZC91dGlsL3V0aWwuanM/YWMxNCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXt2YXIgcj17OTkyOmZ1bmN0aW9uKHIpe3IuZXhwb3J0cz1mdW5jdGlvbihyLHQsbyl7aWYoci5maWx0ZXIpcmV0dXJuIHIuZmlsdGVyKHQsbyk7aWYodm9pZCAwPT09cnx8bnVsbD09PXIpdGhyb3cgbmV3IFR5cGVFcnJvcjtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3I7dmFyIG49W107Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe2lmKCFlLmNhbGwocixpKSljb250aW51ZTt2YXIgYT1yW2ldO2lmKHQuY2FsbChvLGEsaSxyKSluLnB1c2goYSl9cmV0dXJuIG59O3ZhciBlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHl9LDI1NjpmdW5jdGlvbihyLGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG89dCg5MjUpO3ZhciBuPXQoMTM5KTt2YXIgaT1uKG8oXCJTdHJpbmcucHJvdG90eXBlLmluZGV4T2ZcIikpO3IuZXhwb3J0cz1mdW5jdGlvbiBjYWxsQm91bmRJbnRyaW5zaWMocixlKXt2YXIgdD1vKHIsISFlKTtpZih0eXBlb2YgdD09PVwiZnVuY3Rpb25cIiYmaShyLFwiLnByb3RvdHlwZS5cIik+LTEpe3JldHVybiBuKHQpfXJldHVybiB0fX0sMTM5OmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KDE3NCk7dmFyIG49dCg5MjUpO3ZhciBpPW4oXCIlRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JVwiKTt2YXIgYT1uKFwiJUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsJVwiKTt2YXIgeT1uKFwiJVJlZmxlY3QuYXBwbHklXCIsdHJ1ZSl8fG8uY2FsbChhLGkpO3ZhciBmPW4oXCIlT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciVcIix0cnVlKTt2YXIgcD1uKFwiJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSVcIix0cnVlKTt2YXIgdT1uKFwiJU1hdGgubWF4JVwiKTtpZihwKXt0cnl7cCh7fSxcImFcIix7dmFsdWU6MX0pfWNhdGNoKHIpe3A9bnVsbH19ci5leHBvcnRzPWZ1bmN0aW9uIGNhbGxCaW5kKHIpe3ZhciBlPXkobyxhLGFyZ3VtZW50cyk7aWYoZiYmcCl7dmFyIHQ9ZihlLFwibGVuZ3RoXCIpO2lmKHQuY29uZmlndXJhYmxlKXtwKGUsXCJsZW5ndGhcIix7dmFsdWU6MSt1KDAsci5sZW5ndGgtKGFyZ3VtZW50cy5sZW5ndGgtMSkpfSl9fXJldHVybiBlfTt2YXIgcz1mdW5jdGlvbiBhcHBseUJpbmQoKXtyZXR1cm4geShvLGksYXJndW1lbnRzKX07aWYocCl7cChyLmV4cG9ydHMsXCJhcHBseVwiLHt2YWx1ZTpzfSl9ZWxzZXtyLmV4cG9ydHMuYXBwbHk9c319LDE0NDpmdW5jdGlvbihyKXt2YXIgZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciB0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ci5leHBvcnRzPWZ1bmN0aW9uIGZvckVhY2gocixvLG4pe2lmKHQuY2FsbChvKSE9PVwiW29iamVjdCBGdW5jdGlvbl1cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvblwiKX12YXIgaT1yLmxlbmd0aDtpZihpPT09K2kpe2Zvcih2YXIgYT0wO2E8aTthKyspe28uY2FsbChuLHJbYV0sYSxyKX19ZWxzZXtmb3IodmFyIHkgaW4gcil7aWYoZS5jYWxsKHIseSkpe28uY2FsbChuLHJbeV0seSxyKX19fX19LDQyNjpmdW5jdGlvbihyKXtcInVzZSBzdHJpY3RcIjt2YXIgZT1cIkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgXCI7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO3ZhciBvPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIG49XCJbb2JqZWN0IEZ1bmN0aW9uXVwiO3IuZXhwb3J0cz1mdW5jdGlvbiBiaW5kKHIpe3ZhciBpPXRoaXM7aWYodHlwZW9mIGkhPT1cImZ1bmN0aW9uXCJ8fG8uY2FsbChpKSE9PW4pe3Rocm93IG5ldyBUeXBlRXJyb3IoZStpKX12YXIgYT10LmNhbGwoYXJndW1lbnRzLDEpO3ZhciB5O3ZhciBiaW5kZXI9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgeSl7dmFyIGU9aS5hcHBseSh0aGlzLGEuY29uY2F0KHQuY2FsbChhcmd1bWVudHMpKSk7aWYoT2JqZWN0KGUpPT09ZSl7cmV0dXJuIGV9cmV0dXJuIHRoaXN9ZWxzZXtyZXR1cm4gaS5hcHBseShyLGEuY29uY2F0KHQuY2FsbChhcmd1bWVudHMpKSl9fTt2YXIgZj1NYXRoLm1heCgwLGkubGVuZ3RoLWEubGVuZ3RoKTt2YXIgcD1bXTtmb3IodmFyIHU9MDt1PGY7dSsrKXtwLnB1c2goXCIkXCIrdSl9eT1GdW5jdGlvbihcImJpbmRlclwiLFwicmV0dXJuIGZ1bmN0aW9uIChcIitwLmpvaW4oXCIsXCIpK1wiKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH1cIikoYmluZGVyKTtpZihpLnByb3RvdHlwZSl7dmFyIHM9ZnVuY3Rpb24gRW1wdHkoKXt9O3MucHJvdG90eXBlPWkucHJvdG90eXBlO3kucHJvdG90eXBlPW5ldyBzO3MucHJvdG90eXBlPW51bGx9cmV0dXJuIHl9fSwxNzQ6ZnVuY3Rpb24ocixlLHQpe1widXNlIHN0cmljdFwiO3ZhciBvPXQoNDI2KTtyLmV4cG9ydHM9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmR8fG99LDUwMDpmdW5jdGlvbihyLGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG87dmFyIG49U3ludGF4RXJyb3I7dmFyIGk9RnVuY3Rpb247dmFyIGE9VHlwZUVycm9yO3ZhciBnZXRFdmFsbGVkQ29uc3RydWN0b3I9ZnVuY3Rpb24ocil7dHJ5e3JldHVybiBpKCdcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgnK3IrXCIpLmNvbnN0cnVjdG9yO1wiKSgpfWNhdGNoKHIpe319O3ZhciB5PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7aWYoeSl7dHJ5e3koe30sXCJcIil9Y2F0Y2gocil7eT1udWxsfX12YXIgdGhyb3dUeXBlRXJyb3I9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgYX07dmFyIGY9eT9mdW5jdGlvbigpe3RyeXthcmd1bWVudHMuY2FsbGVlO3JldHVybiB0aHJvd1R5cGVFcnJvcn1jYXRjaChyKXt0cnl7cmV0dXJuIHkoYXJndW1lbnRzLFwiY2FsbGVlXCIpLmdldH1jYXRjaChyKXtyZXR1cm4gdGhyb3dUeXBlRXJyb3J9fX0oKTp0aHJvd1R5cGVFcnJvcjt2YXIgcD10KDExNSkoKTt2YXIgdT1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHIpe3JldHVybiByLl9fcHJvdG9fX307dmFyIHM9e307dmFyIGM9dHlwZW9mIFVpbnQ4QXJyYXk9PT1cInVuZGVmaW5lZFwiP286dShVaW50OEFycmF5KTt2YXIgbD17XCIlQWdncmVnYXRlRXJyb3IlXCI6dHlwZW9mIEFnZ3JlZ2F0ZUVycm9yPT09XCJ1bmRlZmluZWRcIj9vOkFnZ3JlZ2F0ZUVycm9yLFwiJUFycmF5JVwiOkFycmF5LFwiJUFycmF5QnVmZmVyJVwiOnR5cGVvZiBBcnJheUJ1ZmZlcj09PVwidW5kZWZpbmVkXCI/bzpBcnJheUJ1ZmZlcixcIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJVwiOnA/dShbXVtTeW1ib2wuaXRlcmF0b3JdKCkpOm8sXCIlQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJVwiOm8sXCIlQXN5bmNGdW5jdGlvbiVcIjpzLFwiJUFzeW5jR2VuZXJhdG9yJVwiOnMsXCIlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiVcIjpzLFwiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlXCI6cyxcIiVBdG9taWNzJVwiOnR5cGVvZiBBdG9taWNzPT09XCJ1bmRlZmluZWRcIj9vOkF0b21pY3MsXCIlQmlnSW50JVwiOnR5cGVvZiBCaWdJbnQ9PT1cInVuZGVmaW5lZFwiP286QmlnSW50LFwiJUJvb2xlYW4lXCI6Qm9vbGVhbixcIiVEYXRhVmlldyVcIjp0eXBlb2YgRGF0YVZpZXc9PT1cInVuZGVmaW5lZFwiP286RGF0YVZpZXcsXCIlRGF0ZSVcIjpEYXRlLFwiJWRlY29kZVVSSSVcIjpkZWNvZGVVUkksXCIlZGVjb2RlVVJJQ29tcG9uZW50JVwiOmRlY29kZVVSSUNvbXBvbmVudCxcIiVlbmNvZGVVUkklXCI6ZW5jb2RlVVJJLFwiJWVuY29kZVVSSUNvbXBvbmVudCVcIjplbmNvZGVVUklDb21wb25lbnQsXCIlRXJyb3IlXCI6RXJyb3IsXCIlZXZhbCVcIjpldmFsLFwiJUV2YWxFcnJvciVcIjpFdmFsRXJyb3IsXCIlRmxvYXQzMkFycmF5JVwiOnR5cGVvZiBGbG9hdDMyQXJyYXk9PT1cInVuZGVmaW5lZFwiP286RmxvYXQzMkFycmF5LFwiJUZsb2F0NjRBcnJheSVcIjp0eXBlb2YgRmxvYXQ2NEFycmF5PT09XCJ1bmRlZmluZWRcIj9vOkZsb2F0NjRBcnJheSxcIiVGaW5hbGl6YXRpb25SZWdpc3RyeSVcIjp0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnk9PT1cInVuZGVmaW5lZFwiP286RmluYWxpemF0aW9uUmVnaXN0cnksXCIlRnVuY3Rpb24lXCI6aSxcIiVHZW5lcmF0b3JGdW5jdGlvbiVcIjpzLFwiJUludDhBcnJheSVcIjp0eXBlb2YgSW50OEFycmF5PT09XCJ1bmRlZmluZWRcIj9vOkludDhBcnJheSxcIiVJbnQxNkFycmF5JVwiOnR5cGVvZiBJbnQxNkFycmF5PT09XCJ1bmRlZmluZWRcIj9vOkludDE2QXJyYXksXCIlSW50MzJBcnJheSVcIjp0eXBlb2YgSW50MzJBcnJheT09PVwidW5kZWZpbmVkXCI/bzpJbnQzMkFycmF5LFwiJWlzRmluaXRlJVwiOmlzRmluaXRlLFwiJWlzTmFOJVwiOmlzTmFOLFwiJUl0ZXJhdG9yUHJvdG90eXBlJVwiOnA/dSh1KFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpOm8sXCIlSlNPTiVcIjp0eXBlb2YgSlNPTj09PVwib2JqZWN0XCI/SlNPTjpvLFwiJU1hcCVcIjp0eXBlb2YgTWFwPT09XCJ1bmRlZmluZWRcIj9vOk1hcCxcIiVNYXBJdGVyYXRvclByb3RvdHlwZSVcIjp0eXBlb2YgTWFwPT09XCJ1bmRlZmluZWRcInx8IXA/bzp1KChuZXcgTWFwKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFwiJU1hdGglXCI6TWF0aCxcIiVOdW1iZXIlXCI6TnVtYmVyLFwiJU9iamVjdCVcIjpPYmplY3QsXCIlcGFyc2VGbG9hdCVcIjpwYXJzZUZsb2F0LFwiJXBhcnNlSW50JVwiOnBhcnNlSW50LFwiJVByb21pc2UlXCI6dHlwZW9mIFByb21pc2U9PT1cInVuZGVmaW5lZFwiP286UHJvbWlzZSxcIiVQcm94eSVcIjp0eXBlb2YgUHJveHk9PT1cInVuZGVmaW5lZFwiP286UHJveHksXCIlUmFuZ2VFcnJvciVcIjpSYW5nZUVycm9yLFwiJVJlZmVyZW5jZUVycm9yJVwiOlJlZmVyZW5jZUVycm9yLFwiJVJlZmxlY3QlXCI6dHlwZW9mIFJlZmxlY3Q9PT1cInVuZGVmaW5lZFwiP286UmVmbGVjdCxcIiVSZWdFeHAlXCI6UmVnRXhwLFwiJVNldCVcIjp0eXBlb2YgU2V0PT09XCJ1bmRlZmluZWRcIj9vOlNldCxcIiVTZXRJdGVyYXRvclByb3RvdHlwZSVcIjp0eXBlb2YgU2V0PT09XCJ1bmRlZmluZWRcInx8IXA/bzp1KChuZXcgU2V0KVtTeW1ib2wuaXRlcmF0b3JdKCkpLFwiJVNoYXJlZEFycmF5QnVmZmVyJVwiOnR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlcj09PVwidW5kZWZpbmVkXCI/bzpTaGFyZWRBcnJheUJ1ZmZlcixcIiVTdHJpbmclXCI6U3RyaW5nLFwiJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJVwiOnA/dShcIlwiW1N5bWJvbC5pdGVyYXRvcl0oKSk6byxcIiVTeW1ib2wlXCI6cD9TeW1ib2w6byxcIiVTeW50YXhFcnJvciVcIjpuLFwiJVRocm93VHlwZUVycm9yJVwiOmYsXCIlVHlwZWRBcnJheSVcIjpjLFwiJVR5cGVFcnJvciVcIjphLFwiJVVpbnQ4QXJyYXklXCI6dHlwZW9mIFVpbnQ4QXJyYXk9PT1cInVuZGVmaW5lZFwiP286VWludDhBcnJheSxcIiVVaW50OENsYW1wZWRBcnJheSVcIjp0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk9PT1cInVuZGVmaW5lZFwiP286VWludDhDbGFtcGVkQXJyYXksXCIlVWludDE2QXJyYXklXCI6dHlwZW9mIFVpbnQxNkFycmF5PT09XCJ1bmRlZmluZWRcIj9vOlVpbnQxNkFycmF5LFwiJVVpbnQzMkFycmF5JVwiOnR5cGVvZiBVaW50MzJBcnJheT09PVwidW5kZWZpbmVkXCI/bzpVaW50MzJBcnJheSxcIiVVUklFcnJvciVcIjpVUklFcnJvcixcIiVXZWFrTWFwJVwiOnR5cGVvZiBXZWFrTWFwPT09XCJ1bmRlZmluZWRcIj9vOldlYWtNYXAsXCIlV2Vha1JlZiVcIjp0eXBlb2YgV2Vha1JlZj09PVwidW5kZWZpbmVkXCI/bzpXZWFrUmVmLFwiJVdlYWtTZXQlXCI6dHlwZW9mIFdlYWtTZXQ9PT1cInVuZGVmaW5lZFwiP286V2Vha1NldH07dmFyIGQ9ZnVuY3Rpb24gZG9FdmFsKHIpe3ZhciBlO2lmKHI9PT1cIiVBc3luY0Z1bmN0aW9uJVwiKXtlPWdldEV2YWxsZWRDb25zdHJ1Y3RvcihcImFzeW5jIGZ1bmN0aW9uICgpIHt9XCIpfWVsc2UgaWYocj09PVwiJUdlbmVyYXRvckZ1bmN0aW9uJVwiKXtlPWdldEV2YWxsZWRDb25zdHJ1Y3RvcihcImZ1bmN0aW9uKiAoKSB7fVwiKX1lbHNlIGlmKHI9PT1cIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJVwiKXtlPWdldEV2YWxsZWRDb25zdHJ1Y3RvcihcImFzeW5jIGZ1bmN0aW9uKiAoKSB7fVwiKX1lbHNlIGlmKHI9PT1cIiVBc3luY0dlbmVyYXRvciVcIil7dmFyIHQ9ZG9FdmFsKFwiJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lXCIpO2lmKHQpe2U9dC5wcm90b3R5cGV9fWVsc2UgaWYocj09PVwiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlXCIpe3ZhciBvPWRvRXZhbChcIiVBc3luY0dlbmVyYXRvciVcIik7aWYobyl7ZT11KG8ucHJvdG90eXBlKX19bFtyXT1lO3JldHVybiBlfTt2YXIgZz17XCIlQXJyYXlCdWZmZXJQcm90b3R5cGUlXCI6W1wiQXJyYXlCdWZmZXJcIixcInByb3RvdHlwZVwiXSxcIiVBcnJheVByb3RvdHlwZSVcIjpbXCJBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUFycmF5UHJvdG9fZW50cmllcyVcIjpbXCJBcnJheVwiLFwicHJvdG90eXBlXCIsXCJlbnRyaWVzXCJdLFwiJUFycmF5UHJvdG9fZm9yRWFjaCVcIjpbXCJBcnJheVwiLFwicHJvdG90eXBlXCIsXCJmb3JFYWNoXCJdLFwiJUFycmF5UHJvdG9fa2V5cyVcIjpbXCJBcnJheVwiLFwicHJvdG90eXBlXCIsXCJrZXlzXCJdLFwiJUFycmF5UHJvdG9fdmFsdWVzJVwiOltcIkFycmF5XCIsXCJwcm90b3R5cGVcIixcInZhbHVlc1wiXSxcIiVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJVwiOltcIkFzeW5jRnVuY3Rpb25cIixcInByb3RvdHlwZVwiXSxcIiVBc3luY0dlbmVyYXRvciVcIjpbXCJBc3luY0dlbmVyYXRvckZ1bmN0aW9uXCIsXCJwcm90b3R5cGVcIl0sXCIlQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUlXCI6W1wiQXN5bmNHZW5lcmF0b3JGdW5jdGlvblwiLFwicHJvdG90eXBlXCIsXCJwcm90b3R5cGVcIl0sXCIlQm9vbGVhblByb3RvdHlwZSVcIjpbXCJCb29sZWFuXCIsXCJwcm90b3R5cGVcIl0sXCIlRGF0YVZpZXdQcm90b3R5cGUlXCI6W1wiRGF0YVZpZXdcIixcInByb3RvdHlwZVwiXSxcIiVEYXRlUHJvdG90eXBlJVwiOltcIkRhdGVcIixcInByb3RvdHlwZVwiXSxcIiVFcnJvclByb3RvdHlwZSVcIjpbXCJFcnJvclwiLFwicHJvdG90eXBlXCJdLFwiJUV2YWxFcnJvclByb3RvdHlwZSVcIjpbXCJFdmFsRXJyb3JcIixcInByb3RvdHlwZVwiXSxcIiVGbG9hdDMyQXJyYXlQcm90b3R5cGUlXCI6W1wiRmxvYXQzMkFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlRmxvYXQ2NEFycmF5UHJvdG90eXBlJVwiOltcIkZsb2F0NjRBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUZ1bmN0aW9uUHJvdG90eXBlJVwiOltcIkZ1bmN0aW9uXCIsXCJwcm90b3R5cGVcIl0sXCIlR2VuZXJhdG9yJVwiOltcIkdlbmVyYXRvckZ1bmN0aW9uXCIsXCJwcm90b3R5cGVcIl0sXCIlR2VuZXJhdG9yUHJvdG90eXBlJVwiOltcIkdlbmVyYXRvckZ1bmN0aW9uXCIsXCJwcm90b3R5cGVcIixcInByb3RvdHlwZVwiXSxcIiVJbnQ4QXJyYXlQcm90b3R5cGUlXCI6W1wiSW50OEFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlSW50MTZBcnJheVByb3RvdHlwZSVcIjpbXCJJbnQxNkFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlSW50MzJBcnJheVByb3RvdHlwZSVcIjpbXCJJbnQzMkFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlSlNPTlBhcnNlJVwiOltcIkpTT05cIixcInBhcnNlXCJdLFwiJUpTT05TdHJpbmdpZnklXCI6W1wiSlNPTlwiLFwic3RyaW5naWZ5XCJdLFwiJU1hcFByb3RvdHlwZSVcIjpbXCJNYXBcIixcInByb3RvdHlwZVwiXSxcIiVOdW1iZXJQcm90b3R5cGUlXCI6W1wiTnVtYmVyXCIsXCJwcm90b3R5cGVcIl0sXCIlT2JqZWN0UHJvdG90eXBlJVwiOltcIk9iamVjdFwiLFwicHJvdG90eXBlXCJdLFwiJU9ialByb3RvX3RvU3RyaW5nJVwiOltcIk9iamVjdFwiLFwicHJvdG90eXBlXCIsXCJ0b1N0cmluZ1wiXSxcIiVPYmpQcm90b192YWx1ZU9mJVwiOltcIk9iamVjdFwiLFwicHJvdG90eXBlXCIsXCJ2YWx1ZU9mXCJdLFwiJVByb21pc2VQcm90b3R5cGUlXCI6W1wiUHJvbWlzZVwiLFwicHJvdG90eXBlXCJdLFwiJVByb21pc2VQcm90b190aGVuJVwiOltcIlByb21pc2VcIixcInByb3RvdHlwZVwiLFwidGhlblwiXSxcIiVQcm9taXNlX2FsbCVcIjpbXCJQcm9taXNlXCIsXCJhbGxcIl0sXCIlUHJvbWlzZV9yZWplY3QlXCI6W1wiUHJvbWlzZVwiLFwicmVqZWN0XCJdLFwiJVByb21pc2VfcmVzb2x2ZSVcIjpbXCJQcm9taXNlXCIsXCJyZXNvbHZlXCJdLFwiJVJhbmdlRXJyb3JQcm90b3R5cGUlXCI6W1wiUmFuZ2VFcnJvclwiLFwicHJvdG90eXBlXCJdLFwiJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJVwiOltcIlJlZmVyZW5jZUVycm9yXCIsXCJwcm90b3R5cGVcIl0sXCIlUmVnRXhwUHJvdG90eXBlJVwiOltcIlJlZ0V4cFwiLFwicHJvdG90eXBlXCJdLFwiJVNldFByb3RvdHlwZSVcIjpbXCJTZXRcIixcInByb3RvdHlwZVwiXSxcIiVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSVcIjpbXCJTaGFyZWRBcnJheUJ1ZmZlclwiLFwicHJvdG90eXBlXCJdLFwiJVN0cmluZ1Byb3RvdHlwZSVcIjpbXCJTdHJpbmdcIixcInByb3RvdHlwZVwiXSxcIiVTeW1ib2xQcm90b3R5cGUlXCI6W1wiU3ltYm9sXCIsXCJwcm90b3R5cGVcIl0sXCIlU3ludGF4RXJyb3JQcm90b3R5cGUlXCI6W1wiU3ludGF4RXJyb3JcIixcInByb3RvdHlwZVwiXSxcIiVUeXBlZEFycmF5UHJvdG90eXBlJVwiOltcIlR5cGVkQXJyYXlcIixcInByb3RvdHlwZVwiXSxcIiVUeXBlRXJyb3JQcm90b3R5cGUlXCI6W1wiVHlwZUVycm9yXCIsXCJwcm90b3R5cGVcIl0sXCIlVWludDhBcnJheVByb3RvdHlwZSVcIjpbXCJVaW50OEFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlXCI6W1wiVWludDhDbGFtcGVkQXJyYXlcIixcInByb3RvdHlwZVwiXSxcIiVVaW50MTZBcnJheVByb3RvdHlwZSVcIjpbXCJVaW50MTZBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJVVpbnQzMkFycmF5UHJvdG90eXBlJVwiOltcIlVpbnQzMkFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlVVJJRXJyb3JQcm90b3R5cGUlXCI6W1wiVVJJRXJyb3JcIixcInByb3RvdHlwZVwiXSxcIiVXZWFrTWFwUHJvdG90eXBlJVwiOltcIldlYWtNYXBcIixcInByb3RvdHlwZVwiXSxcIiVXZWFrU2V0UHJvdG90eXBlJVwiOltcIldlYWtTZXRcIixcInByb3RvdHlwZVwiXX07dmFyIHY9dCgxNzQpO3ZhciBiPXQoMTAxKTt2YXIgQT12LmNhbGwoRnVuY3Rpb24uY2FsbCxBcnJheS5wcm90b3R5cGUuY29uY2F0KTt2YXIgbT12LmNhbGwoRnVuY3Rpb24uYXBwbHksQXJyYXkucHJvdG90eXBlLnNwbGljZSk7dmFyIFM9di5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKTt2YXIgaD12LmNhbGwoRnVuY3Rpb24uY2FsbCxTdHJpbmcucHJvdG90eXBlLnNsaWNlKTt2YXIgUD12LmNhbGwoRnVuY3Rpb24uY2FsbCxSZWdFeHAucHJvdG90eXBlLmV4ZWMpO3ZhciBPPS9bXiUuW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JSQpKS9nO3ZhciB3PS9cXFxcKFxcXFwpPy9nO3ZhciBqPWZ1bmN0aW9uIHN0cmluZ1RvUGF0aChyKXt2YXIgZT1oKHIsMCwxKTt2YXIgdD1oKHIsLTEpO2lmKGU9PT1cIiVcIiYmdCE9PVwiJVwiKXt0aHJvdyBuZXcgbihcImludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWBcIil9ZWxzZSBpZih0PT09XCIlXCImJmUhPT1cIiVcIil7dGhyb3cgbmV3IG4oXCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIG9wZW5pbmcgYCVgXCIpfXZhciBvPVtdO1MocixPLChmdW5jdGlvbihyLGUsdCxuKXtvW28ubGVuZ3RoXT10P1Mobix3LFwiJDFcIik6ZXx8cn0pKTtyZXR1cm4gb307dmFyIEU9ZnVuY3Rpb24gZ2V0QmFzZUludHJpbnNpYyhyLGUpe3ZhciB0PXI7dmFyIG87aWYoYihnLHQpKXtvPWdbdF07dD1cIiVcIitvWzBdK1wiJVwifWlmKGIobCx0KSl7dmFyIGk9bFt0XTtpZihpPT09cyl7aT1kKHQpfWlmKHR5cGVvZiBpPT09XCJ1bmRlZmluZWRcIiYmIWUpe3Rocm93IG5ldyBhKFwiaW50cmluc2ljIFwiK3IrXCIgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhXCIpfXJldHVybnthbGlhczpvLG5hbWU6dCx2YWx1ZTppfX10aHJvdyBuZXcgbihcImludHJpbnNpYyBcIityK1wiIGRvZXMgbm90IGV4aXN0IVwiKX07ci5leHBvcnRzPWZ1bmN0aW9uIEdldEludHJpbnNpYyhyLGUpe2lmKHR5cGVvZiByIT09XCJzdHJpbmdcInx8ci5sZW5ndGg9PT0wKXt0aHJvdyBuZXcgYShcImludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpfWlmKGFyZ3VtZW50cy5sZW5ndGg+MSYmdHlwZW9mIGUhPT1cImJvb2xlYW5cIil7dGhyb3cgbmV3IGEoJ1wiYWxsb3dNaXNzaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKX1pZihQKC9eJT9bXiVdKiU/JC9nLHIpPT09bnVsbCl7dGhyb3cgbmV3IG4oXCJgJWAgbWF5IG5vdCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lXCIpfXZhciB0PWoocik7dmFyIGk9dC5sZW5ndGg+MD90WzBdOlwiXCI7dmFyIGY9RShcIiVcIitpK1wiJVwiLGUpO3ZhciBwPWYubmFtZTt2YXIgdT1mLnZhbHVlO3ZhciBzPWZhbHNlO3ZhciBjPWYuYWxpYXM7aWYoYyl7aT1jWzBdO20odCxBKFswLDFdLGMpKX1mb3IodmFyIGQ9MSxnPXRydWU7ZDx0Lmxlbmd0aDtkKz0xKXt2YXIgdj10W2RdO3ZhciBTPWgodiwwLDEpO3ZhciBPPWgodiwtMSk7aWYoKFM9PT0nXCInfHxTPT09XCInXCJ8fFM9PT1cImBcInx8KE89PT0nXCInfHxPPT09XCInXCJ8fE89PT1cImBcIikpJiZTIT09Tyl7dGhyb3cgbmV3IG4oXCJwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzXCIpfWlmKHY9PT1cImNvbnN0cnVjdG9yXCJ8fCFnKXtzPXRydWV9aSs9XCIuXCIrdjtwPVwiJVwiK2krXCIlXCI7aWYoYihsLHApKXt1PWxbcF19ZWxzZSBpZih1IT1udWxsKXtpZighKHYgaW4gdSkpe2lmKCFlKXt0aHJvdyBuZXcgYShcImJhc2UgaW50cmluc2ljIGZvciBcIityK1wiIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLlwiKX1yZXR1cm4gdm9pZCBvfWlmKHkmJmQrMT49dC5sZW5ndGgpe3ZhciB3PXkodSx2KTtnPSEhdztpZihnJiZcImdldFwiaW4gdyYmIShcIm9yaWdpbmFsVmFsdWVcImluIHcuZ2V0KSl7dT13LmdldH1lbHNle3U9dVt2XX19ZWxzZXtnPWIodSx2KTt1PXVbdl19aWYoZyYmIXMpe2xbcF09dX19fXJldHVybiB1fX0sOTI1OmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbzt2YXIgbj1TeW50YXhFcnJvcjt2YXIgaT1GdW5jdGlvbjt2YXIgYT1UeXBlRXJyb3I7dmFyIGdldEV2YWxsZWRDb25zdHJ1Y3Rvcj1mdW5jdGlvbihyKXt0cnl7cmV0dXJuIGkoJ1widXNlIHN0cmljdFwiOyByZXR1cm4gKCcrcitcIikuY29uc3RydWN0b3I7XCIpKCl9Y2F0Y2gocil7fX07dmFyIHk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtpZih5KXt0cnl7eSh7fSxcIlwiKX1jYXRjaChyKXt5PW51bGx9fXZhciB0aHJvd1R5cGVFcnJvcj1mdW5jdGlvbigpe3Rocm93IG5ldyBhfTt2YXIgZj15P2Z1bmN0aW9uKCl7dHJ5e2FyZ3VtZW50cy5jYWxsZWU7cmV0dXJuIHRocm93VHlwZUVycm9yfWNhdGNoKHIpe3RyeXtyZXR1cm4geShhcmd1bWVudHMsXCJjYWxsZWVcIikuZ2V0fWNhdGNoKHIpe3JldHVybiB0aHJvd1R5cGVFcnJvcn19fSgpOnRocm93VHlwZUVycm9yO3ZhciBwPXQoMTE1KSgpO3ZhciB1PXQoNTA0KSgpO3ZhciBzPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8KHU/ZnVuY3Rpb24ocil7cmV0dXJuIHIuX19wcm90b19ffTpudWxsKTt2YXIgYz17fTt2YXIgbD10eXBlb2YgVWludDhBcnJheT09PVwidW5kZWZpbmVkXCJ8fCFzP286cyhVaW50OEFycmF5KTt2YXIgZD17XCIlQWdncmVnYXRlRXJyb3IlXCI6dHlwZW9mIEFnZ3JlZ2F0ZUVycm9yPT09XCJ1bmRlZmluZWRcIj9vOkFnZ3JlZ2F0ZUVycm9yLFwiJUFycmF5JVwiOkFycmF5LFwiJUFycmF5QnVmZmVyJVwiOnR5cGVvZiBBcnJheUJ1ZmZlcj09PVwidW5kZWZpbmVkXCI/bzpBcnJheUJ1ZmZlcixcIiVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJVwiOnAmJnM/cyhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpOm8sXCIlQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlJVwiOm8sXCIlQXN5bmNGdW5jdGlvbiVcIjpjLFwiJUFzeW5jR2VuZXJhdG9yJVwiOmMsXCIlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiVcIjpjLFwiJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlXCI6YyxcIiVBdG9taWNzJVwiOnR5cGVvZiBBdG9taWNzPT09XCJ1bmRlZmluZWRcIj9vOkF0b21pY3MsXCIlQmlnSW50JVwiOnR5cGVvZiBCaWdJbnQ9PT1cInVuZGVmaW5lZFwiP286QmlnSW50LFwiJUJpZ0ludDY0QXJyYXklXCI6dHlwZW9mIEJpZ0ludDY0QXJyYXk9PT1cInVuZGVmaW5lZFwiP286QmlnSW50NjRBcnJheSxcIiVCaWdVaW50NjRBcnJheSVcIjp0eXBlb2YgQmlnVWludDY0QXJyYXk9PT1cInVuZGVmaW5lZFwiP286QmlnVWludDY0QXJyYXksXCIlQm9vbGVhbiVcIjpCb29sZWFuLFwiJURhdGFWaWV3JVwiOnR5cGVvZiBEYXRhVmlldz09PVwidW5kZWZpbmVkXCI/bzpEYXRhVmlldyxcIiVEYXRlJVwiOkRhdGUsXCIlZGVjb2RlVVJJJVwiOmRlY29kZVVSSSxcIiVkZWNvZGVVUklDb21wb25lbnQlXCI6ZGVjb2RlVVJJQ29tcG9uZW50LFwiJWVuY29kZVVSSSVcIjplbmNvZGVVUkksXCIlZW5jb2RlVVJJQ29tcG9uZW50JVwiOmVuY29kZVVSSUNvbXBvbmVudCxcIiVFcnJvciVcIjpFcnJvcixcIiVldmFsJVwiOmV2YWwsXCIlRXZhbEVycm9yJVwiOkV2YWxFcnJvcixcIiVGbG9hdDMyQXJyYXklXCI6dHlwZW9mIEZsb2F0MzJBcnJheT09PVwidW5kZWZpbmVkXCI/bzpGbG9hdDMyQXJyYXksXCIlRmxvYXQ2NEFycmF5JVwiOnR5cGVvZiBGbG9hdDY0QXJyYXk9PT1cInVuZGVmaW5lZFwiP286RmxvYXQ2NEFycmF5LFwiJUZpbmFsaXphdGlvblJlZ2lzdHJ5JVwiOnR5cGVvZiBGaW5hbGl6YXRpb25SZWdpc3RyeT09PVwidW5kZWZpbmVkXCI/bzpGaW5hbGl6YXRpb25SZWdpc3RyeSxcIiVGdW5jdGlvbiVcIjppLFwiJUdlbmVyYXRvckZ1bmN0aW9uJVwiOmMsXCIlSW50OEFycmF5JVwiOnR5cGVvZiBJbnQ4QXJyYXk9PT1cInVuZGVmaW5lZFwiP286SW50OEFycmF5LFwiJUludDE2QXJyYXklXCI6dHlwZW9mIEludDE2QXJyYXk9PT1cInVuZGVmaW5lZFwiP286SW50MTZBcnJheSxcIiVJbnQzMkFycmF5JVwiOnR5cGVvZiBJbnQzMkFycmF5PT09XCJ1bmRlZmluZWRcIj9vOkludDMyQXJyYXksXCIlaXNGaW5pdGUlXCI6aXNGaW5pdGUsXCIlaXNOYU4lXCI6aXNOYU4sXCIlSXRlcmF0b3JQcm90b3R5cGUlXCI6cCYmcz9zKHMoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSk6byxcIiVKU09OJVwiOnR5cGVvZiBKU09OPT09XCJvYmplY3RcIj9KU09OOm8sXCIlTWFwJVwiOnR5cGVvZiBNYXA9PT1cInVuZGVmaW5lZFwiP286TWFwLFwiJU1hcEl0ZXJhdG9yUHJvdG90eXBlJVwiOnR5cGVvZiBNYXA9PT1cInVuZGVmaW5lZFwifHwhcHx8IXM/bzpzKChuZXcgTWFwKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFwiJU1hdGglXCI6TWF0aCxcIiVOdW1iZXIlXCI6TnVtYmVyLFwiJU9iamVjdCVcIjpPYmplY3QsXCIlcGFyc2VGbG9hdCVcIjpwYXJzZUZsb2F0LFwiJXBhcnNlSW50JVwiOnBhcnNlSW50LFwiJVByb21pc2UlXCI6dHlwZW9mIFByb21pc2U9PT1cInVuZGVmaW5lZFwiP286UHJvbWlzZSxcIiVQcm94eSVcIjp0eXBlb2YgUHJveHk9PT1cInVuZGVmaW5lZFwiP286UHJveHksXCIlUmFuZ2VFcnJvciVcIjpSYW5nZUVycm9yLFwiJVJlZmVyZW5jZUVycm9yJVwiOlJlZmVyZW5jZUVycm9yLFwiJVJlZmxlY3QlXCI6dHlwZW9mIFJlZmxlY3Q9PT1cInVuZGVmaW5lZFwiP286UmVmbGVjdCxcIiVSZWdFeHAlXCI6UmVnRXhwLFwiJVNldCVcIjp0eXBlb2YgU2V0PT09XCJ1bmRlZmluZWRcIj9vOlNldCxcIiVTZXRJdGVyYXRvclByb3RvdHlwZSVcIjp0eXBlb2YgU2V0PT09XCJ1bmRlZmluZWRcInx8IXB8fCFzP286cygobmV3IFNldClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcIiVTaGFyZWRBcnJheUJ1ZmZlciVcIjp0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI9PT1cInVuZGVmaW5lZFwiP286U2hhcmVkQXJyYXlCdWZmZXIsXCIlU3RyaW5nJVwiOlN0cmluZyxcIiVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSVcIjpwJiZzP3MoXCJcIltTeW1ib2wuaXRlcmF0b3JdKCkpOm8sXCIlU3ltYm9sJVwiOnA/U3ltYm9sOm8sXCIlU3ludGF4RXJyb3IlXCI6bixcIiVUaHJvd1R5cGVFcnJvciVcIjpmLFwiJVR5cGVkQXJyYXklXCI6bCxcIiVUeXBlRXJyb3IlXCI6YSxcIiVVaW50OEFycmF5JVwiOnR5cGVvZiBVaW50OEFycmF5PT09XCJ1bmRlZmluZWRcIj9vOlVpbnQ4QXJyYXksXCIlVWludDhDbGFtcGVkQXJyYXklXCI6dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5PT09XCJ1bmRlZmluZWRcIj9vOlVpbnQ4Q2xhbXBlZEFycmF5LFwiJVVpbnQxNkFycmF5JVwiOnR5cGVvZiBVaW50MTZBcnJheT09PVwidW5kZWZpbmVkXCI/bzpVaW50MTZBcnJheSxcIiVVaW50MzJBcnJheSVcIjp0eXBlb2YgVWludDMyQXJyYXk9PT1cInVuZGVmaW5lZFwiP286VWludDMyQXJyYXksXCIlVVJJRXJyb3IlXCI6VVJJRXJyb3IsXCIlV2Vha01hcCVcIjp0eXBlb2YgV2Vha01hcD09PVwidW5kZWZpbmVkXCI/bzpXZWFrTWFwLFwiJVdlYWtSZWYlXCI6dHlwZW9mIFdlYWtSZWY9PT1cInVuZGVmaW5lZFwiP286V2Vha1JlZixcIiVXZWFrU2V0JVwiOnR5cGVvZiBXZWFrU2V0PT09XCJ1bmRlZmluZWRcIj9vOldlYWtTZXR9O2lmKHMpe3RyeXtudWxsLmVycm9yfWNhdGNoKHIpe3ZhciBnPXMocyhyKSk7ZFtcIiVFcnJvci5wcm90b3R5cGUlXCJdPWd9fXZhciB2PWZ1bmN0aW9uIGRvRXZhbChyKXt2YXIgZTtpZihyPT09XCIlQXN5bmNGdW5jdGlvbiVcIil7ZT1nZXRFdmFsbGVkQ29uc3RydWN0b3IoXCJhc3luYyBmdW5jdGlvbiAoKSB7fVwiKX1lbHNlIGlmKHI9PT1cIiVHZW5lcmF0b3JGdW5jdGlvbiVcIil7ZT1nZXRFdmFsbGVkQ29uc3RydWN0b3IoXCJmdW5jdGlvbiogKCkge31cIil9ZWxzZSBpZihyPT09XCIlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiVcIil7ZT1nZXRFdmFsbGVkQ29uc3RydWN0b3IoXCJhc3luYyBmdW5jdGlvbiogKCkge31cIil9ZWxzZSBpZihyPT09XCIlQXN5bmNHZW5lcmF0b3IlXCIpe3ZhciB0PWRvRXZhbChcIiVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJVwiKTtpZih0KXtlPXQucHJvdG90eXBlfX1lbHNlIGlmKHI9PT1cIiVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJVwiKXt2YXIgbz1kb0V2YWwoXCIlQXN5bmNHZW5lcmF0b3IlXCIpO2lmKG8mJnMpe2U9cyhvLnByb3RvdHlwZSl9fWRbcl09ZTtyZXR1cm4gZX07dmFyIGI9e1wiJUFycmF5QnVmZmVyUHJvdG90eXBlJVwiOltcIkFycmF5QnVmZmVyXCIsXCJwcm90b3R5cGVcIl0sXCIlQXJyYXlQcm90b3R5cGUlXCI6W1wiQXJyYXlcIixcInByb3RvdHlwZVwiXSxcIiVBcnJheVByb3RvX2VudHJpZXMlXCI6W1wiQXJyYXlcIixcInByb3RvdHlwZVwiLFwiZW50cmllc1wiXSxcIiVBcnJheVByb3RvX2ZvckVhY2glXCI6W1wiQXJyYXlcIixcInByb3RvdHlwZVwiLFwiZm9yRWFjaFwiXSxcIiVBcnJheVByb3RvX2tleXMlXCI6W1wiQXJyYXlcIixcInByb3RvdHlwZVwiLFwia2V5c1wiXSxcIiVBcnJheVByb3RvX3ZhbHVlcyVcIjpbXCJBcnJheVwiLFwicHJvdG90eXBlXCIsXCJ2YWx1ZXNcIl0sXCIlQXN5bmNGdW5jdGlvblByb3RvdHlwZSVcIjpbXCJBc3luY0Z1bmN0aW9uXCIsXCJwcm90b3R5cGVcIl0sXCIlQXN5bmNHZW5lcmF0b3IlXCI6W1wiQXN5bmNHZW5lcmF0b3JGdW5jdGlvblwiLFwicHJvdG90eXBlXCJdLFwiJUFzeW5jR2VuZXJhdG9yUHJvdG90eXBlJVwiOltcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIixcInByb3RvdHlwZVwiLFwicHJvdG90eXBlXCJdLFwiJUJvb2xlYW5Qcm90b3R5cGUlXCI6W1wiQm9vbGVhblwiLFwicHJvdG90eXBlXCJdLFwiJURhdGFWaWV3UHJvdG90eXBlJVwiOltcIkRhdGFWaWV3XCIsXCJwcm90b3R5cGVcIl0sXCIlRGF0ZVByb3RvdHlwZSVcIjpbXCJEYXRlXCIsXCJwcm90b3R5cGVcIl0sXCIlRXJyb3JQcm90b3R5cGUlXCI6W1wiRXJyb3JcIixcInByb3RvdHlwZVwiXSxcIiVFdmFsRXJyb3JQcm90b3R5cGUlXCI6W1wiRXZhbEVycm9yXCIsXCJwcm90b3R5cGVcIl0sXCIlRmxvYXQzMkFycmF5UHJvdG90eXBlJVwiOltcIkZsb2F0MzJBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUZsb2F0NjRBcnJheVByb3RvdHlwZSVcIjpbXCJGbG9hdDY0QXJyYXlcIixcInByb3RvdHlwZVwiXSxcIiVGdW5jdGlvblByb3RvdHlwZSVcIjpbXCJGdW5jdGlvblwiLFwicHJvdG90eXBlXCJdLFwiJUdlbmVyYXRvciVcIjpbXCJHZW5lcmF0b3JGdW5jdGlvblwiLFwicHJvdG90eXBlXCJdLFwiJUdlbmVyYXRvclByb3RvdHlwZSVcIjpbXCJHZW5lcmF0b3JGdW5jdGlvblwiLFwicHJvdG90eXBlXCIsXCJwcm90b3R5cGVcIl0sXCIlSW50OEFycmF5UHJvdG90eXBlJVwiOltcIkludDhBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUludDE2QXJyYXlQcm90b3R5cGUlXCI6W1wiSW50MTZBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUludDMyQXJyYXlQcm90b3R5cGUlXCI6W1wiSW50MzJBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJUpTT05QYXJzZSVcIjpbXCJKU09OXCIsXCJwYXJzZVwiXSxcIiVKU09OU3RyaW5naWZ5JVwiOltcIkpTT05cIixcInN0cmluZ2lmeVwiXSxcIiVNYXBQcm90b3R5cGUlXCI6W1wiTWFwXCIsXCJwcm90b3R5cGVcIl0sXCIlTnVtYmVyUHJvdG90eXBlJVwiOltcIk51bWJlclwiLFwicHJvdG90eXBlXCJdLFwiJU9iamVjdFByb3RvdHlwZSVcIjpbXCJPYmplY3RcIixcInByb3RvdHlwZVwiXSxcIiVPYmpQcm90b190b1N0cmluZyVcIjpbXCJPYmplY3RcIixcInByb3RvdHlwZVwiLFwidG9TdHJpbmdcIl0sXCIlT2JqUHJvdG9fdmFsdWVPZiVcIjpbXCJPYmplY3RcIixcInByb3RvdHlwZVwiLFwidmFsdWVPZlwiXSxcIiVQcm9taXNlUHJvdG90eXBlJVwiOltcIlByb21pc2VcIixcInByb3RvdHlwZVwiXSxcIiVQcm9taXNlUHJvdG9fdGhlbiVcIjpbXCJQcm9taXNlXCIsXCJwcm90b3R5cGVcIixcInRoZW5cIl0sXCIlUHJvbWlzZV9hbGwlXCI6W1wiUHJvbWlzZVwiLFwiYWxsXCJdLFwiJVByb21pc2VfcmVqZWN0JVwiOltcIlByb21pc2VcIixcInJlamVjdFwiXSxcIiVQcm9taXNlX3Jlc29sdmUlXCI6W1wiUHJvbWlzZVwiLFwicmVzb2x2ZVwiXSxcIiVSYW5nZUVycm9yUHJvdG90eXBlJVwiOltcIlJhbmdlRXJyb3JcIixcInByb3RvdHlwZVwiXSxcIiVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSVcIjpbXCJSZWZlcmVuY2VFcnJvclwiLFwicHJvdG90eXBlXCJdLFwiJVJlZ0V4cFByb3RvdHlwZSVcIjpbXCJSZWdFeHBcIixcInByb3RvdHlwZVwiXSxcIiVTZXRQcm90b3R5cGUlXCI6W1wiU2V0XCIsXCJwcm90b3R5cGVcIl0sXCIlU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlXCI6W1wiU2hhcmVkQXJyYXlCdWZmZXJcIixcInByb3RvdHlwZVwiXSxcIiVTdHJpbmdQcm90b3R5cGUlXCI6W1wiU3RyaW5nXCIsXCJwcm90b3R5cGVcIl0sXCIlU3ltYm9sUHJvdG90eXBlJVwiOltcIlN5bWJvbFwiLFwicHJvdG90eXBlXCJdLFwiJVN5bnRheEVycm9yUHJvdG90eXBlJVwiOltcIlN5bnRheEVycm9yXCIsXCJwcm90b3R5cGVcIl0sXCIlVHlwZWRBcnJheVByb3RvdHlwZSVcIjpbXCJUeXBlZEFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlVHlwZUVycm9yUHJvdG90eXBlJVwiOltcIlR5cGVFcnJvclwiLFwicHJvdG90eXBlXCJdLFwiJVVpbnQ4QXJyYXlQcm90b3R5cGUlXCI6W1wiVWludDhBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJVwiOltcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXCJwcm90b3R5cGVcIl0sXCIlVWludDE2QXJyYXlQcm90b3R5cGUlXCI6W1wiVWludDE2QXJyYXlcIixcInByb3RvdHlwZVwiXSxcIiVVaW50MzJBcnJheVByb3RvdHlwZSVcIjpbXCJVaW50MzJBcnJheVwiLFwicHJvdG90eXBlXCJdLFwiJVVSSUVycm9yUHJvdG90eXBlJVwiOltcIlVSSUVycm9yXCIsXCJwcm90b3R5cGVcIl0sXCIlV2Vha01hcFByb3RvdHlwZSVcIjpbXCJXZWFrTWFwXCIsXCJwcm90b3R5cGVcIl0sXCIlV2Vha1NldFByb3RvdHlwZSVcIjpbXCJXZWFrU2V0XCIsXCJwcm90b3R5cGVcIl19O3ZhciBBPXQoMTc0KTt2YXIgbT10KDEwMSk7dmFyIFM9QS5jYWxsKEZ1bmN0aW9uLmNhbGwsQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7dmFyIGg9QS5jYWxsKEZ1bmN0aW9uLmFwcGx5LEFycmF5LnByb3RvdHlwZS5zcGxpY2UpO3ZhciBQPUEuY2FsbChGdW5jdGlvbi5jYWxsLFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7dmFyIE89QS5jYWxsKEZ1bmN0aW9uLmNhbGwsU3RyaW5nLnByb3RvdHlwZS5zbGljZSk7dmFyIHc9QS5jYWxsKEZ1bmN0aW9uLmNhbGwsUmVnRXhwLnByb3RvdHlwZS5leGVjKTt2YXIgaj0vW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZzt2YXIgRT0vXFxcXChcXFxcKT8vZzt2YXIgST1mdW5jdGlvbiBzdHJpbmdUb1BhdGgocil7dmFyIGU9TyhyLDAsMSk7dmFyIHQ9TyhyLC0xKTtpZihlPT09XCIlXCImJnQhPT1cIiVcIil7dGhyb3cgbmV3IG4oXCJpbnZhbGlkIGludHJpbnNpYyBzeW50YXgsIGV4cGVjdGVkIGNsb3NpbmcgYCVgXCIpfWVsc2UgaWYodD09PVwiJVwiJiZlIT09XCIlXCIpe3Rocm93IG5ldyBuKFwiaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBvcGVuaW5nIGAlYFwiKX12YXIgbz1bXTtQKHIsaiwoZnVuY3Rpb24ocixlLHQsbil7b1tvLmxlbmd0aF09dD9QKG4sRSxcIiQxXCIpOmV8fHJ9KSk7cmV0dXJuIG99O3ZhciBCPWZ1bmN0aW9uIGdldEJhc2VJbnRyaW5zaWMocixlKXt2YXIgdD1yO3ZhciBvO2lmKG0oYix0KSl7bz1iW3RdO3Q9XCIlXCIrb1swXStcIiVcIn1pZihtKGQsdCkpe3ZhciBpPWRbdF07aWYoaT09PWMpe2k9dih0KX1pZih0eXBlb2YgaT09PVwidW5kZWZpbmVkXCImJiFlKXt0aHJvdyBuZXcgYShcImludHJpbnNpYyBcIityK1wiIGV4aXN0cywgYnV0IGlzIG5vdCBhdmFpbGFibGUuIFBsZWFzZSBmaWxlIGFuIGlzc3VlIVwiKX1yZXR1cm57YWxpYXM6byxuYW1lOnQsdmFsdWU6aX19dGhyb3cgbmV3IG4oXCJpbnRyaW5zaWMgXCIrcitcIiBkb2VzIG5vdCBleGlzdCFcIil9O3IuZXhwb3J0cz1mdW5jdGlvbiBHZXRJbnRyaW5zaWMocixlKXtpZih0eXBlb2YgciE9PVwic3RyaW5nXCJ8fHIubGVuZ3RoPT09MCl7dGhyb3cgbmV3IGEoXCJpbnRyaW5zaWMgbmFtZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ1wiKX1pZihhcmd1bWVudHMubGVuZ3RoPjEmJnR5cGVvZiBlIT09XCJib29sZWFuXCIpe3Rocm93IG5ldyBhKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyl9aWYodygvXiU/W14lXSolPyQvLHIpPT09bnVsbCl7dGhyb3cgbmV3IG4oXCJgJWAgbWF5IG5vdCBiZSBwcmVzZW50IGFueXdoZXJlIGJ1dCBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIGludHJpbnNpYyBuYW1lXCIpfXZhciB0PUkocik7dmFyIGk9dC5sZW5ndGg+MD90WzBdOlwiXCI7dmFyIGY9QihcIiVcIitpK1wiJVwiLGUpO3ZhciBwPWYubmFtZTt2YXIgdT1mLnZhbHVlO3ZhciBzPWZhbHNlO3ZhciBjPWYuYWxpYXM7aWYoYyl7aT1jWzBdO2godCxTKFswLDFdLGMpKX1mb3IodmFyIGw9MSxnPXRydWU7bDx0Lmxlbmd0aDtsKz0xKXt2YXIgdj10W2xdO3ZhciBiPU8odiwwLDEpO3ZhciBBPU8odiwtMSk7aWYoKGI9PT0nXCInfHxiPT09XCInXCJ8fGI9PT1cImBcInx8KEE9PT0nXCInfHxBPT09XCInXCJ8fEE9PT1cImBcIikpJiZiIT09QSl7dGhyb3cgbmV3IG4oXCJwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzXCIpfWlmKHY9PT1cImNvbnN0cnVjdG9yXCJ8fCFnKXtzPXRydWV9aSs9XCIuXCIrdjtwPVwiJVwiK2krXCIlXCI7aWYobShkLHApKXt1PWRbcF19ZWxzZSBpZih1IT1udWxsKXtpZighKHYgaW4gdSkpe2lmKCFlKXt0aHJvdyBuZXcgYShcImJhc2UgaW50cmluc2ljIGZvciBcIityK1wiIGV4aXN0cywgYnV0IHRoZSBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlLlwiKX1yZXR1cm4gdm9pZCBvfWlmKHkmJmwrMT49dC5sZW5ndGgpe3ZhciBQPXkodSx2KTtnPSEhUDtpZihnJiZcImdldFwiaW4gUCYmIShcIm9yaWdpbmFsVmFsdWVcImluIFAuZ2V0KSl7dT1QLmdldH1lbHNle3U9dVt2XX19ZWxzZXtnPW0odSx2KTt1PXVbdl19aWYoZyYmIXMpe2RbcF09dX19fXJldHVybiB1fX0sNTA0OmZ1bmN0aW9uKHIpe1widXNlIHN0cmljdFwiO3ZhciBlPXtmb286e319O3ZhciB0PU9iamVjdDtyLmV4cG9ydHM9ZnVuY3Rpb24gaGFzUHJvdG8oKXtyZXR1cm57X19wcm90b19fOmV9LmZvbz09PWUuZm9vJiYhKHtfX3Byb3RvX186bnVsbH1pbnN0YW5jZW9mIHQpfX0sOTQyOmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10eXBlb2YgU3ltYm9sIT09XCJ1bmRlZmluZWRcIiYmU3ltYm9sO3ZhciBuPXQoNzczKTtyLmV4cG9ydHM9ZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpe2lmKHR5cGVvZiBvIT09XCJmdW5jdGlvblwiKXtyZXR1cm4gZmFsc2V9aWYodHlwZW9mIFN5bWJvbCE9PVwiZnVuY3Rpb25cIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBvKFwiZm9vXCIpIT09XCJzeW1ib2xcIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBTeW1ib2woXCJiYXJcIikhPT1cInN5bWJvbFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIG4oKX19LDc3MzpmdW5jdGlvbihyKXtcInVzZSBzdHJpY3RcIjtyLmV4cG9ydHM9ZnVuY3Rpb24gaGFzU3ltYm9scygpe2lmKHR5cGVvZiBTeW1ib2whPT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIT09XCJmdW5jdGlvblwiKXtyZXR1cm4gZmFsc2V9aWYodHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09PVwic3ltYm9sXCIpe3JldHVybiB0cnVlfXZhciByPXt9O3ZhciBlPVN5bWJvbChcInRlc3RcIik7dmFyIHQ9T2JqZWN0KGUpO2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7cmV0dXJuIGZhbHNlfWlmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSE9PVwiW29iamVjdCBTeW1ib2xdXCIpe3JldHVybiBmYWxzZX1pZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkhPT1cIltvYmplY3QgU3ltYm9sXVwiKXtyZXR1cm4gZmFsc2V9dmFyIG89NDI7cltlXT1vO2ZvcihlIGluIHIpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmtleXM9PT1cImZ1bmN0aW9uXCImJk9iamVjdC5rZXlzKHIpLmxlbmd0aCE9PTApe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM9PT1cImZ1bmN0aW9uXCImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpLmxlbmd0aCE9PTApe3JldHVybiBmYWxzZX12YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpO2lmKG4ubGVuZ3RoIT09MXx8blswXSE9PWUpe3JldHVybiBmYWxzZX1pZighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHIsZSkpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj09PVwiZnVuY3Rpb25cIil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpO2lmKGkudmFsdWUhPT1vfHxpLmVudW1lcmFibGUhPT10cnVlKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfX0sMTE1OmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10eXBlb2YgU3ltYm9sIT09XCJ1bmRlZmluZWRcIiYmU3ltYm9sO3ZhciBuPXQoODMyKTtyLmV4cG9ydHM9ZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpe2lmKHR5cGVvZiBvIT09XCJmdW5jdGlvblwiKXtyZXR1cm4gZmFsc2V9aWYodHlwZW9mIFN5bWJvbCE9PVwiZnVuY3Rpb25cIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBvKFwiZm9vXCIpIT09XCJzeW1ib2xcIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBTeW1ib2woXCJiYXJcIikhPT1cInN5bWJvbFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIG4oKX19LDgzMjpmdW5jdGlvbihyKXtcInVzZSBzdHJpY3RcIjtyLmV4cG9ydHM9ZnVuY3Rpb24gaGFzU3ltYm9scygpe2lmKHR5cGVvZiBTeW1ib2whPT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIT09XCJmdW5jdGlvblwiKXtyZXR1cm4gZmFsc2V9aWYodHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09PVwic3ltYm9sXCIpe3JldHVybiB0cnVlfXZhciByPXt9O3ZhciBlPVN5bWJvbChcInRlc3RcIik7dmFyIHQ9T2JqZWN0KGUpO2lmKHR5cGVvZiBlPT09XCJzdHJpbmdcIil7cmV0dXJuIGZhbHNlfWlmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSE9PVwiW29iamVjdCBTeW1ib2xdXCIpe3JldHVybiBmYWxzZX1pZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkhPT1cIltvYmplY3QgU3ltYm9sXVwiKXtyZXR1cm4gZmFsc2V9dmFyIG89NDI7cltlXT1vO2ZvcihlIGluIHIpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmtleXM9PT1cImZ1bmN0aW9uXCImJk9iamVjdC5rZXlzKHIpLmxlbmd0aCE9PTApe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM9PT1cImZ1bmN0aW9uXCImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpLmxlbmd0aCE9PTApe3JldHVybiBmYWxzZX12YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHIpO2lmKG4ubGVuZ3RoIT09MXx8blswXSE9PWUpe3JldHVybiBmYWxzZX1pZighT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHIsZSkpe3JldHVybiBmYWxzZX1pZih0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj09PVwiZnVuY3Rpb25cIil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpO2lmKGkudmFsdWUhPT1vfHxpLmVudW1lcmFibGUhPT10cnVlKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfX0sMTAxOmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KDE3NCk7ci5leHBvcnRzPW8uY2FsbChGdW5jdGlvbi5jYWxsLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpfSw3ODI6ZnVuY3Rpb24ocil7aWYodHlwZW9mIE9iamVjdC5jcmVhdGU9PT1cImZ1bmN0aW9uXCIpe3IuZXhwb3J0cz1mdW5jdGlvbiBpbmhlcml0cyhyLGUpe2lmKGUpe3Iuc3VwZXJfPWU7ci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnIsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pfX19ZWxzZXtyLmV4cG9ydHM9ZnVuY3Rpb24gaW5oZXJpdHMocixlKXtpZihlKXtyLnN1cGVyXz1lO3ZhciBUZW1wQ3Rvcj1mdW5jdGlvbigpe307VGVtcEN0b3IucHJvdG90eXBlPWUucHJvdG90eXBlO3IucHJvdG90eXBlPW5ldyBUZW1wQ3RvcjtyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yfX19fSwxNTc6ZnVuY3Rpb24ocil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9dHlwZW9mIFN5bWJvbD09PVwiZnVuY3Rpb25cIiYmdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZz09PVwic3ltYm9sXCI7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgbz1mdW5jdGlvbiBpc0FyZ3VtZW50cyhyKXtpZihlJiZyJiZ0eXBlb2Ygcj09PVwib2JqZWN0XCImJlN5bWJvbC50b1N0cmluZ1RhZyBpbiByKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHQuY2FsbChyKT09PVwiW29iamVjdCBBcmd1bWVudHNdXCJ9O3ZhciBuPWZ1bmN0aW9uIGlzQXJndW1lbnRzKHIpe2lmKG8ocikpe3JldHVybiB0cnVlfXJldHVybiByIT09bnVsbCYmdHlwZW9mIHI9PT1cIm9iamVjdFwiJiZ0eXBlb2Ygci5sZW5ndGg9PT1cIm51bWJlclwiJiZyLmxlbmd0aD49MCYmdC5jYWxsKHIpIT09XCJbb2JqZWN0IEFycmF5XVwiJiZ0LmNhbGwoci5jYWxsZWUpPT09XCJbb2JqZWN0IEZ1bmN0aW9uXVwifTt2YXIgaT1mdW5jdGlvbigpe3JldHVybiBvKGFyZ3VtZW50cyl9KCk7by5pc0xlZ2FjeUFyZ3VtZW50cz1uO3IuZXhwb3J0cz1pP286bn0sMzkxOmZ1bmN0aW9uKHIpe1widXNlIHN0cmljdFwiO3ZhciBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHQ9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO3ZhciBvPS9eXFxzKig/OmZ1bmN0aW9uKT9cXCovO3ZhciBuPXR5cGVvZiBTeW1ib2w9PT1cImZ1bmN0aW9uXCImJnR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWc9PT1cInN5bWJvbFwiO3ZhciBpPU9iamVjdC5nZXRQcm90b3R5cGVPZjt2YXIgZ2V0R2VuZXJhdG9yRnVuYz1mdW5jdGlvbigpe2lmKCFuKXtyZXR1cm4gZmFsc2V9dHJ5e3JldHVybiBGdW5jdGlvbihcInJldHVybiBmdW5jdGlvbiooKSB7fVwiKSgpfWNhdGNoKHIpe319O3ZhciBhPWdldEdlbmVyYXRvckZ1bmMoKTt2YXIgeT1hP2koYSk6e307ci5leHBvcnRzPWZ1bmN0aW9uIGlzR2VuZXJhdG9yRnVuY3Rpb24ocil7aWYodHlwZW9mIHIhPT1cImZ1bmN0aW9uXCIpe3JldHVybiBmYWxzZX1pZihvLnRlc3QodC5jYWxsKHIpKSl7cmV0dXJuIHRydWV9aWYoIW4pe3ZhciBhPWUuY2FsbChyKTtyZXR1cm4gYT09PVwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIn1yZXR1cm4gaShyKT09PXl9fSw5OTQ6ZnVuY3Rpb24ocixlLHQpe1widXNlIHN0cmljdFwiO3ZhciBvPXQoMTQ0KTt2YXIgbj10KDM0OSk7dmFyIGk9dCgyNTYpO3ZhciBhPWkoXCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXCIpO3ZhciB5PXQoOTQyKSgpO3ZhciBmPXkmJnR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWc9PT1cInN5bWJvbFwiO3ZhciBwPW4oKTt2YXIgdT1pKFwiQXJyYXkucHJvdG90eXBlLmluZGV4T2ZcIix0cnVlKXx8ZnVuY3Rpb24gaW5kZXhPZihyLGUpe2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCs9MSl7aWYoclt0XT09PWUpe3JldHVybiB0fX1yZXR1cm4tMX07dmFyIHM9aShcIlN0cmluZy5wcm90b3R5cGUuc2xpY2VcIik7dmFyIGM9e307dmFyIGw9dCgyNCk7dmFyIGQ9T2JqZWN0LmdldFByb3RvdHlwZU9mO2lmKGYmJmwmJmQpe28ocCwoZnVuY3Rpb24ocil7dmFyIGU9bmV3IGdsb2JhbFtyXTtpZighKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBlKSl7dGhyb3cgbmV3IEV2YWxFcnJvcihcInRoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCBcIityK1wiIGRvZXMgbm90IGhhdmUgdGhlIHByb3BlcnR5ISBQbGVhc2UgcmVwb3J0IHRoaXMuXCIpfXZhciB0PWQoZSk7dmFyIG89bCh0LFN5bWJvbC50b1N0cmluZ1RhZyk7aWYoIW8pe3ZhciBuPWQodCk7bz1sKG4sU3ltYm9sLnRvU3RyaW5nVGFnKX1jW3JdPW8uZ2V0fSkpfXZhciBnPWZ1bmN0aW9uIHRyeUFsbFR5cGVkQXJyYXlzKHIpe3ZhciBlPWZhbHNlO28oYywoZnVuY3Rpb24odCxvKXtpZighZSl7dHJ5e2U9dC5jYWxsKHIpPT09b31jYXRjaChyKXt9fX0pKTtyZXR1cm4gZX07ci5leHBvcnRzPWZ1bmN0aW9uIGlzVHlwZWRBcnJheShyKXtpZighcnx8dHlwZW9mIHIhPT1cIm9iamVjdFwiKXtyZXR1cm4gZmFsc2V9aWYoIWYpe3ZhciBlPXMoYShyKSw4LC0xKTtyZXR1cm4gdShwLGUpPi0xfWlmKCFsKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGcocil9fSwzNjk6ZnVuY3Rpb24ocil7ci5leHBvcnRzPWZ1bmN0aW9uIGlzQnVmZmVyKHIpe3JldHVybiByIGluc3RhbmNlb2YgQnVmZmVyfX0sNTg0OmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KDE1Nyk7dmFyIG49dCgzOTEpO3ZhciBpPXQoNDkwKTt2YXIgYT10KDk5NCk7ZnVuY3Rpb24gdW5jdXJyeVRoaXMocil7cmV0dXJuIHIuY2FsbC5iaW5kKHIpfXZhciB5PXR5cGVvZiBCaWdJbnQhPT1cInVuZGVmaW5lZFwiO3ZhciBmPXR5cGVvZiBTeW1ib2whPT1cInVuZGVmaW5lZFwiO3ZhciBwPXVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO3ZhciB1PXVuY3VycnlUaGlzKE51bWJlci5wcm90b3R5cGUudmFsdWVPZik7dmFyIHM9dW5jdXJyeVRoaXMoU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mKTt2YXIgYz11bmN1cnJ5VGhpcyhCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mKTtpZih5KXt2YXIgbD11bmN1cnJ5VGhpcyhCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YpfWlmKGYpe3ZhciBkPXVuY3VycnlUaGlzKFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZil9ZnVuY3Rpb24gY2hlY2tCb3hlZFByaW1pdGl2ZShyLGUpe2lmKHR5cGVvZiByIT09XCJvYmplY3RcIil7cmV0dXJuIGZhbHNlfXRyeXtlKHIpO3JldHVybiB0cnVlfWNhdGNoKHIpe3JldHVybiBmYWxzZX19ZS5pc0FyZ3VtZW50c09iamVjdD1vO2UuaXNHZW5lcmF0b3JGdW5jdGlvbj1uO2UuaXNUeXBlZEFycmF5PWE7ZnVuY3Rpb24gaXNQcm9taXNlKHIpe3JldHVybiB0eXBlb2YgUHJvbWlzZSE9PVwidW5kZWZpbmVkXCImJnIgaW5zdGFuY2VvZiBQcm9taXNlfHxyIT09bnVsbCYmdHlwZW9mIHI9PT1cIm9iamVjdFwiJiZ0eXBlb2Ygci50aGVuPT09XCJmdW5jdGlvblwiJiZ0eXBlb2Ygci5jYXRjaD09PVwiZnVuY3Rpb25cIn1lLmlzUHJvbWlzZT1pc1Byb21pc2U7ZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcocil7aWYodHlwZW9mIEFycmF5QnVmZmVyIT09XCJ1bmRlZmluZWRcIiYmQXJyYXlCdWZmZXIuaXNWaWV3KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHIpfXJldHVybiBhKHIpfHxpc0RhdGFWaWV3KHIpfWUuaXNBcnJheUJ1ZmZlclZpZXc9aXNBcnJheUJ1ZmZlclZpZXc7ZnVuY3Rpb24gaXNVaW50OEFycmF5KHIpe3JldHVybiBpKHIpPT09XCJVaW50OEFycmF5XCJ9ZS5pc1VpbnQ4QXJyYXk9aXNVaW50OEFycmF5O2Z1bmN0aW9uIGlzVWludDhDbGFtcGVkQXJyYXkocil7cmV0dXJuIGkocik9PT1cIlVpbnQ4Q2xhbXBlZEFycmF5XCJ9ZS5pc1VpbnQ4Q2xhbXBlZEFycmF5PWlzVWludDhDbGFtcGVkQXJyYXk7ZnVuY3Rpb24gaXNVaW50MTZBcnJheShyKXtyZXR1cm4gaShyKT09PVwiVWludDE2QXJyYXlcIn1lLmlzVWludDE2QXJyYXk9aXNVaW50MTZBcnJheTtmdW5jdGlvbiBpc1VpbnQzMkFycmF5KHIpe3JldHVybiBpKHIpPT09XCJVaW50MzJBcnJheVwifWUuaXNVaW50MzJBcnJheT1pc1VpbnQzMkFycmF5O2Z1bmN0aW9uIGlzSW50OEFycmF5KHIpe3JldHVybiBpKHIpPT09XCJJbnQ4QXJyYXlcIn1lLmlzSW50OEFycmF5PWlzSW50OEFycmF5O2Z1bmN0aW9uIGlzSW50MTZBcnJheShyKXtyZXR1cm4gaShyKT09PVwiSW50MTZBcnJheVwifWUuaXNJbnQxNkFycmF5PWlzSW50MTZBcnJheTtmdW5jdGlvbiBpc0ludDMyQXJyYXkocil7cmV0dXJuIGkocik9PT1cIkludDMyQXJyYXlcIn1lLmlzSW50MzJBcnJheT1pc0ludDMyQXJyYXk7ZnVuY3Rpb24gaXNGbG9hdDMyQXJyYXkocil7cmV0dXJuIGkocik9PT1cIkZsb2F0MzJBcnJheVwifWUuaXNGbG9hdDMyQXJyYXk9aXNGbG9hdDMyQXJyYXk7ZnVuY3Rpb24gaXNGbG9hdDY0QXJyYXkocil7cmV0dXJuIGkocik9PT1cIkZsb2F0NjRBcnJheVwifWUuaXNGbG9hdDY0QXJyYXk9aXNGbG9hdDY0QXJyYXk7ZnVuY3Rpb24gaXNCaWdJbnQ2NEFycmF5KHIpe3JldHVybiBpKHIpPT09XCJCaWdJbnQ2NEFycmF5XCJ9ZS5pc0JpZ0ludDY0QXJyYXk9aXNCaWdJbnQ2NEFycmF5O2Z1bmN0aW9uIGlzQmlnVWludDY0QXJyYXkocil7cmV0dXJuIGkocik9PT1cIkJpZ1VpbnQ2NEFycmF5XCJ9ZS5pc0JpZ1VpbnQ2NEFycmF5PWlzQmlnVWludDY0QXJyYXk7ZnVuY3Rpb24gaXNNYXBUb1N0cmluZyhyKXtyZXR1cm4gcChyKT09PVwiW29iamVjdCBNYXBdXCJ9aXNNYXBUb1N0cmluZy53b3JraW5nPXR5cGVvZiBNYXAhPT1cInVuZGVmaW5lZFwiJiZpc01hcFRvU3RyaW5nKG5ldyBNYXApO2Z1bmN0aW9uIGlzTWFwKHIpe2lmKHR5cGVvZiBNYXA9PT1cInVuZGVmaW5lZFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGlzTWFwVG9TdHJpbmcud29ya2luZz9pc01hcFRvU3RyaW5nKHIpOnIgaW5zdGFuY2VvZiBNYXB9ZS5pc01hcD1pc01hcDtmdW5jdGlvbiBpc1NldFRvU3RyaW5nKHIpe3JldHVybiBwKHIpPT09XCJbb2JqZWN0IFNldF1cIn1pc1NldFRvU3RyaW5nLndvcmtpbmc9dHlwZW9mIFNldCE9PVwidW5kZWZpbmVkXCImJmlzU2V0VG9TdHJpbmcobmV3IFNldCk7ZnVuY3Rpb24gaXNTZXQocil7aWYodHlwZW9mIFNldD09PVwidW5kZWZpbmVkXCIpe3JldHVybiBmYWxzZX1yZXR1cm4gaXNTZXRUb1N0cmluZy53b3JraW5nP2lzU2V0VG9TdHJpbmcocik6ciBpbnN0YW5jZW9mIFNldH1lLmlzU2V0PWlzU2V0O2Z1bmN0aW9uIGlzV2Vha01hcFRvU3RyaW5nKHIpe3JldHVybiBwKHIpPT09XCJbb2JqZWN0IFdlYWtNYXBdXCJ9aXNXZWFrTWFwVG9TdHJpbmcud29ya2luZz10eXBlb2YgV2Vha01hcCE9PVwidW5kZWZpbmVkXCImJmlzV2Vha01hcFRvU3RyaW5nKG5ldyBXZWFrTWFwKTtmdW5jdGlvbiBpc1dlYWtNYXAocil7aWYodHlwZW9mIFdlYWtNYXA9PT1cInVuZGVmaW5lZFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGlzV2Vha01hcFRvU3RyaW5nLndvcmtpbmc/aXNXZWFrTWFwVG9TdHJpbmcocik6ciBpbnN0YW5jZW9mIFdlYWtNYXB9ZS5pc1dlYWtNYXA9aXNXZWFrTWFwO2Z1bmN0aW9uIGlzV2Vha1NldFRvU3RyaW5nKHIpe3JldHVybiBwKHIpPT09XCJbb2JqZWN0IFdlYWtTZXRdXCJ9aXNXZWFrU2V0VG9TdHJpbmcud29ya2luZz10eXBlb2YgV2Vha1NldCE9PVwidW5kZWZpbmVkXCImJmlzV2Vha1NldFRvU3RyaW5nKG5ldyBXZWFrU2V0KTtmdW5jdGlvbiBpc1dlYWtTZXQocil7cmV0dXJuIGlzV2Vha1NldFRvU3RyaW5nKHIpfWUuaXNXZWFrU2V0PWlzV2Vha1NldDtmdW5jdGlvbiBpc0FycmF5QnVmZmVyVG9TdHJpbmcocil7cmV0dXJuIHAocik9PT1cIltvYmplY3QgQXJyYXlCdWZmZXJdXCJ9aXNBcnJheUJ1ZmZlclRvU3RyaW5nLndvcmtpbmc9dHlwZW9mIEFycmF5QnVmZmVyIT09XCJ1bmRlZmluZWRcIiYmaXNBcnJheUJ1ZmZlclRvU3RyaW5nKG5ldyBBcnJheUJ1ZmZlcik7ZnVuY3Rpb24gaXNBcnJheUJ1ZmZlcihyKXtpZih0eXBlb2YgQXJyYXlCdWZmZXI9PT1cInVuZGVmaW5lZFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIGlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nP2lzQXJyYXlCdWZmZXJUb1N0cmluZyhyKTpyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZS5pc0FycmF5QnVmZmVyPWlzQXJyYXlCdWZmZXI7ZnVuY3Rpb24gaXNEYXRhVmlld1RvU3RyaW5nKHIpe3JldHVybiBwKHIpPT09XCJbb2JqZWN0IERhdGFWaWV3XVwifWlzRGF0YVZpZXdUb1N0cmluZy53b3JraW5nPXR5cGVvZiBBcnJheUJ1ZmZlciE9PVwidW5kZWZpbmVkXCImJnR5cGVvZiBEYXRhVmlldyE9PVwidW5kZWZpbmVkXCImJmlzRGF0YVZpZXdUb1N0cmluZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLDAsMSkpO2Z1bmN0aW9uIGlzRGF0YVZpZXcocil7aWYodHlwZW9mIERhdGFWaWV3PT09XCJ1bmRlZmluZWRcIil7cmV0dXJuIGZhbHNlfXJldHVybiBpc0RhdGFWaWV3VG9TdHJpbmcud29ya2luZz9pc0RhdGFWaWV3VG9TdHJpbmcocik6ciBpbnN0YW5jZW9mIERhdGFWaWV3fWUuaXNEYXRhVmlldz1pc0RhdGFWaWV3O3ZhciBnPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciE9PVwidW5kZWZpbmVkXCI/U2hhcmVkQXJyYXlCdWZmZXI6dW5kZWZpbmVkO2Z1bmN0aW9uIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyhyKXtyZXR1cm4gcChyKT09PVwiW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl1cIn1mdW5jdGlvbiBpc1NoYXJlZEFycmF5QnVmZmVyKHIpe2lmKHR5cGVvZiBnPT09XCJ1bmRlZmluZWRcIil7cmV0dXJuIGZhbHNlfWlmKHR5cGVvZiBpc1NoYXJlZEFycmF5QnVmZmVyVG9TdHJpbmcud29ya2luZz09PVwidW5kZWZpbmVkXCIpe2lzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nPWlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyhuZXcgZyl9cmV0dXJuIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nP2lzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyhyKTpyIGluc3RhbmNlb2YgZ31lLmlzU2hhcmVkQXJyYXlCdWZmZXI9aXNTaGFyZWRBcnJheUJ1ZmZlcjtmdW5jdGlvbiBpc0FzeW5jRnVuY3Rpb24ocil7cmV0dXJuIHAocik9PT1cIltvYmplY3QgQXN5bmNGdW5jdGlvbl1cIn1lLmlzQXN5bmNGdW5jdGlvbj1pc0FzeW5jRnVuY3Rpb247ZnVuY3Rpb24gaXNNYXBJdGVyYXRvcihyKXtyZXR1cm4gcChyKT09PVwiW29iamVjdCBNYXAgSXRlcmF0b3JdXCJ9ZS5pc01hcEl0ZXJhdG9yPWlzTWFwSXRlcmF0b3I7ZnVuY3Rpb24gaXNTZXRJdGVyYXRvcihyKXtyZXR1cm4gcChyKT09PVwiW29iamVjdCBTZXQgSXRlcmF0b3JdXCJ9ZS5pc1NldEl0ZXJhdG9yPWlzU2V0SXRlcmF0b3I7ZnVuY3Rpb24gaXNHZW5lcmF0b3JPYmplY3Qocil7cmV0dXJuIHAocik9PT1cIltvYmplY3QgR2VuZXJhdG9yXVwifWUuaXNHZW5lcmF0b3JPYmplY3Q9aXNHZW5lcmF0b3JPYmplY3Q7ZnVuY3Rpb24gaXNXZWJBc3NlbWJseUNvbXBpbGVkTW9kdWxlKHIpe3JldHVybiBwKHIpPT09XCJbb2JqZWN0IFdlYkFzc2VtYmx5Lk1vZHVsZV1cIn1lLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZT1pc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGU7ZnVuY3Rpb24gaXNOdW1iZXJPYmplY3Qocil7cmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUocix1KX1lLmlzTnVtYmVyT2JqZWN0PWlzTnVtYmVyT2JqZWN0O2Z1bmN0aW9uIGlzU3RyaW5nT2JqZWN0KHIpe3JldHVybiBjaGVja0JveGVkUHJpbWl0aXZlKHIscyl9ZS5pc1N0cmluZ09iamVjdD1pc1N0cmluZ09iamVjdDtmdW5jdGlvbiBpc0Jvb2xlYW5PYmplY3Qocil7cmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUocixjKX1lLmlzQm9vbGVhbk9iamVjdD1pc0Jvb2xlYW5PYmplY3Q7ZnVuY3Rpb24gaXNCaWdJbnRPYmplY3Qocil7cmV0dXJuIHkmJmNoZWNrQm94ZWRQcmltaXRpdmUocixsKX1lLmlzQmlnSW50T2JqZWN0PWlzQmlnSW50T2JqZWN0O2Z1bmN0aW9uIGlzU3ltYm9sT2JqZWN0KHIpe3JldHVybiBmJiZjaGVja0JveGVkUHJpbWl0aXZlKHIsZCl9ZS5pc1N5bWJvbE9iamVjdD1pc1N5bWJvbE9iamVjdDtmdW5jdGlvbiBpc0JveGVkUHJpbWl0aXZlKHIpe3JldHVybiBpc051bWJlck9iamVjdChyKXx8aXNTdHJpbmdPYmplY3Qocil8fGlzQm9vbGVhbk9iamVjdChyKXx8aXNCaWdJbnRPYmplY3Qocil8fGlzU3ltYm9sT2JqZWN0KHIpfWUuaXNCb3hlZFByaW1pdGl2ZT1pc0JveGVkUHJpbWl0aXZlO2Z1bmN0aW9uIGlzQW55QXJyYXlCdWZmZXIocil7cmV0dXJuIHR5cGVvZiBVaW50OEFycmF5IT09XCJ1bmRlZmluZWRcIiYmKGlzQXJyYXlCdWZmZXIocil8fGlzU2hhcmVkQXJyYXlCdWZmZXIocikpfWUuaXNBbnlBcnJheUJ1ZmZlcj1pc0FueUFycmF5QnVmZmVyO1tcImlzUHJveHlcIixcImlzRXh0ZXJuYWxcIixcImlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0XCJdLmZvckVhY2goKGZ1bmN0aW9uKHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ZmFsc2UsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IocitcIiBpcyBub3Qgc3VwcG9ydGVkIGluIHVzZXJsYW5kXCIpfX0pfSkpfSwxNzc6ZnVuY3Rpb24ocixlLHQpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzfHxmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpe3ZhciBlPU9iamVjdC5rZXlzKHIpO3ZhciB0PXt9O2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt0W2Vbb11dPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlW29dKX1yZXR1cm4gdH07dmFyIG49LyVbc2RqJV0vZztlLmZvcm1hdD1mdW5jdGlvbihyKXtpZighaXNTdHJpbmcocikpe3ZhciBlPVtdO2Zvcih2YXIgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe2UucHVzaChpbnNwZWN0KGFyZ3VtZW50c1t0XSkpfXJldHVybiBlLmpvaW4oXCIgXCIpfXZhciB0PTE7dmFyIG89YXJndW1lbnRzO3ZhciBpPW8ubGVuZ3RoO3ZhciBhPVN0cmluZyhyKS5yZXBsYWNlKG4sKGZ1bmN0aW9uKHIpe2lmKHI9PT1cIiUlXCIpcmV0dXJuXCIlXCI7aWYodD49aSlyZXR1cm4gcjtzd2l0Y2gocil7Y2FzZVwiJXNcIjpyZXR1cm4gU3RyaW5nKG9bdCsrXSk7Y2FzZVwiJWRcIjpyZXR1cm4gTnVtYmVyKG9bdCsrXSk7Y2FzZVwiJWpcIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG9bdCsrXSl9Y2F0Y2gocil7cmV0dXJuXCJbQ2lyY3VsYXJdXCJ9ZGVmYXVsdDpyZXR1cm4gcn19KSk7Zm9yKHZhciB5PW9bdF07dDxpO3k9b1srK3RdKXtpZihpc051bGwoeSl8fCFpc09iamVjdCh5KSl7YSs9XCIgXCIreX1lbHNle2ErPVwiIFwiK2luc3BlY3QoeSl9fXJldHVybiBhfTtlLmRlcHJlY2F0ZT1mdW5jdGlvbihyLHQpe2lmKHR5cGVvZiBwcm9jZXNzIT09XCJ1bmRlZmluZWRcIiYmcHJvY2Vzcy5ub0RlcHJlY2F0aW9uPT09dHJ1ZSl7cmV0dXJuIHJ9aWYodHlwZW9mIHByb2Nlc3M9PT1cInVuZGVmaW5lZFwiKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5kZXByZWNhdGUocix0KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXZhciBvPWZhbHNlO2Z1bmN0aW9uIGRlcHJlY2F0ZWQoKXtpZighbyl7aWYocHJvY2Vzcy50aHJvd0RlcHJlY2F0aW9uKXt0aHJvdyBuZXcgRXJyb3IodCl9ZWxzZSBpZihwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pe2NvbnNvbGUudHJhY2UodCl9ZWxzZXtjb25zb2xlLmVycm9yKHQpfW89dHJ1ZX1yZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGRlcHJlY2F0ZWR9O3ZhciBpPXt9O3ZhciBhPS9eJC87aWYocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyl7dmFyIHk9cHJvY2Vzcy5lbnYuTk9ERV9ERUJVRzt5PXkucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCs/Ll0vZyxcIlxcXFwkJlwiKS5yZXBsYWNlKC9cXCovZyxcIi4qXCIpLnJlcGxhY2UoLywvZyxcIiR8XlwiKS50b1VwcGVyQ2FzZSgpO2E9bmV3IFJlZ0V4cChcIl5cIit5K1wiJFwiLFwiaVwiKX1lLmRlYnVnbG9nPWZ1bmN0aW9uKHIpe3I9ci50b1VwcGVyQ2FzZSgpO2lmKCFpW3JdKXtpZihhLnRlc3Qocikpe3ZhciB0PXByb2Nlc3MucGlkO2lbcl09ZnVuY3Rpb24oKXt2YXIgbz1lLmZvcm1hdC5hcHBseShlLGFyZ3VtZW50cyk7Y29uc29sZS5lcnJvcihcIiVzICVkOiAlc1wiLHIsdCxvKX19ZWxzZXtpW3JdPWZ1bmN0aW9uKCl7fX19cmV0dXJuIGlbcl19O2Z1bmN0aW9uIGluc3BlY3Qocix0KXt2YXIgbz17c2VlbjpbXSxzdHlsaXplOnN0eWxpemVOb0NvbG9yfTtpZihhcmd1bWVudHMubGVuZ3RoPj0zKW8uZGVwdGg9YXJndW1lbnRzWzJdO2lmKGFyZ3VtZW50cy5sZW5ndGg+PTQpby5jb2xvcnM9YXJndW1lbnRzWzNdO2lmKGlzQm9vbGVhbih0KSl7by5zaG93SGlkZGVuPXR9ZWxzZSBpZih0KXtlLl9leHRlbmQobyx0KX1pZihpc1VuZGVmaW5lZChvLnNob3dIaWRkZW4pKW8uc2hvd0hpZGRlbj1mYWxzZTtpZihpc1VuZGVmaW5lZChvLmRlcHRoKSlvLmRlcHRoPTI7aWYoaXNVbmRlZmluZWQoby5jb2xvcnMpKW8uY29sb3JzPWZhbHNlO2lmKGlzVW5kZWZpbmVkKG8uY3VzdG9tSW5zcGVjdCkpby5jdXN0b21JbnNwZWN0PXRydWU7aWYoby5jb2xvcnMpby5zdHlsaXplPXN0eWxpemVXaXRoQ29sb3I7cmV0dXJuIGZvcm1hdFZhbHVlKG8scixvLmRlcHRoKX1lLmluc3BlY3Q9aW5zcGVjdDtpbnNwZWN0LmNvbG9ycz17Ym9sZDpbMSwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGludmVyc2U6WzcsMjddLHdoaXRlOlszNywzOV0sZ3JleTpbOTAsMzldLGJsYWNrOlszMCwzOV0sYmx1ZTpbMzQsMzldLGN5YW46WzM2LDM5XSxncmVlbjpbMzIsMzldLG1hZ2VudGE6WzM1LDM5XSxyZWQ6WzMxLDM5XSx5ZWxsb3c6WzMzLDM5XX07aW5zcGVjdC5zdHlsZXM9e3NwZWNpYWw6XCJjeWFuXCIsbnVtYmVyOlwieWVsbG93XCIsYm9vbGVhbjpcInllbGxvd1wiLHVuZGVmaW5lZDpcImdyZXlcIixudWxsOlwiYm9sZFwiLHN0cmluZzpcImdyZWVuXCIsZGF0ZTpcIm1hZ2VudGFcIixyZWdleHA6XCJyZWRcIn07ZnVuY3Rpb24gc3R5bGl6ZVdpdGhDb2xvcihyLGUpe3ZhciB0PWluc3BlY3Quc3R5bGVzW2VdO2lmKHQpe3JldHVyblwiXHUwMDFiW1wiK2luc3BlY3QuY29sb3JzW3RdWzBdK1wibVwiK3IrXCJcdTAwMWJbXCIraW5zcGVjdC5jb2xvcnNbdF1bMV0rXCJtXCJ9ZWxzZXtyZXR1cm4gcn19ZnVuY3Rpb24gc3R5bGl6ZU5vQ29sb3IocixlKXtyZXR1cm4gcn1mdW5jdGlvbiBhcnJheVRvSGFzaChyKXt2YXIgZT17fTtyLmZvckVhY2goKGZ1bmN0aW9uKHIsdCl7ZVtyXT10cnVlfSkpO3JldHVybiBlfWZ1bmN0aW9uIGZvcm1hdFZhbHVlKHIsdCxvKXtpZihyLmN1c3RvbUluc3BlY3QmJnQmJmlzRnVuY3Rpb24odC5pbnNwZWN0KSYmdC5pbnNwZWN0IT09ZS5pbnNwZWN0JiYhKHQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IucHJvdG90eXBlPT09dCkpe3ZhciBuPXQuaW5zcGVjdChvLHIpO2lmKCFpc1N0cmluZyhuKSl7bj1mb3JtYXRWYWx1ZShyLG4sbyl9cmV0dXJuIG59dmFyIGk9Zm9ybWF0UHJpbWl0aXZlKHIsdCk7aWYoaSl7cmV0dXJuIGl9dmFyIGE9T2JqZWN0LmtleXModCk7dmFyIHk9YXJyYXlUb0hhc2goYSk7aWYoci5zaG93SGlkZGVuKXthPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpfWlmKGlzRXJyb3IodCkmJihhLmluZGV4T2YoXCJtZXNzYWdlXCIpPj0wfHxhLmluZGV4T2YoXCJkZXNjcmlwdGlvblwiKT49MCkpe3JldHVybiBmb3JtYXRFcnJvcih0KX1pZihhLmxlbmd0aD09PTApe2lmKGlzRnVuY3Rpb24odCkpe3ZhciBmPXQubmFtZT9cIjogXCIrdC5uYW1lOlwiXCI7cmV0dXJuIHIuc3R5bGl6ZShcIltGdW5jdGlvblwiK2YrXCJdXCIsXCJzcGVjaWFsXCIpfWlmKGlzUmVnRXhwKHQpKXtyZXR1cm4gci5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxcInJlZ2V4cFwiKX1pZihpc0RhdGUodCkpe3JldHVybiByLnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxcImRhdGVcIil9aWYoaXNFcnJvcih0KSl7cmV0dXJuIGZvcm1hdEVycm9yKHQpfX12YXIgcD1cIlwiLHU9ZmFsc2Uscz1bXCJ7XCIsXCJ9XCJdO2lmKGlzQXJyYXkodCkpe3U9dHJ1ZTtzPVtcIltcIixcIl1cIl19aWYoaXNGdW5jdGlvbih0KSl7dmFyIGM9dC5uYW1lP1wiOiBcIit0Lm5hbWU6XCJcIjtwPVwiIFtGdW5jdGlvblwiK2MrXCJdXCJ9aWYoaXNSZWdFeHAodCkpe3A9XCIgXCIrUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWlmKGlzRGF0ZSh0KSl7cD1cIiBcIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHQpfWlmKGlzRXJyb3IodCkpe3A9XCIgXCIrZm9ybWF0RXJyb3IodCl9aWYoYS5sZW5ndGg9PT0wJiYoIXV8fHQubGVuZ3RoPT0wKSl7cmV0dXJuIHNbMF0rcCtzWzFdfWlmKG88MCl7aWYoaXNSZWdFeHAodCkpe3JldHVybiByLnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLFwicmVnZXhwXCIpfWVsc2V7cmV0dXJuIHIuc3R5bGl6ZShcIltPYmplY3RdXCIsXCJzcGVjaWFsXCIpfX1yLnNlZW4ucHVzaCh0KTt2YXIgbDtpZih1KXtsPWZvcm1hdEFycmF5KHIsdCxvLHksYSl9ZWxzZXtsPWEubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZm9ybWF0UHJvcGVydHkocix0LG8seSxlLHUpfSkpfXIuc2Vlbi5wb3AoKTtyZXR1cm4gcmVkdWNlVG9TaW5nbGVTdHJpbmcobCxwLHMpfWZ1bmN0aW9uIGZvcm1hdFByaW1pdGl2ZShyLGUpe2lmKGlzVW5kZWZpbmVkKGUpKXJldHVybiByLnN0eWxpemUoXCJ1bmRlZmluZWRcIixcInVuZGVmaW5lZFwiKTtpZihpc1N0cmluZyhlKSl7dmFyIHQ9XCInXCIrSlNPTi5zdHJpbmdpZnkoZSkucmVwbGFjZSgvXlwifFwiJC9nLFwiXCIpLnJlcGxhY2UoLycvZyxcIlxcXFwnXCIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpK1wiJ1wiO3JldHVybiByLnN0eWxpemUodCxcInN0cmluZ1wiKX1pZihpc051bWJlcihlKSlyZXR1cm4gci5zdHlsaXplKFwiXCIrZSxcIm51bWJlclwiKTtpZihpc0Jvb2xlYW4oZSkpcmV0dXJuIHIuc3R5bGl6ZShcIlwiK2UsXCJib29sZWFuXCIpO2lmKGlzTnVsbChlKSlyZXR1cm4gci5zdHlsaXplKFwibnVsbFwiLFwibnVsbFwiKX1mdW5jdGlvbiBmb3JtYXRFcnJvcihyKXtyZXR1cm5cIltcIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKStcIl1cIn1mdW5jdGlvbiBmb3JtYXRBcnJheShyLGUsdCxvLG4pe3ZhciBpPVtdO2Zvcih2YXIgYT0wLHk9ZS5sZW5ndGg7YTx5OysrYSl7aWYoaGFzT3duUHJvcGVydHkoZSxTdHJpbmcoYSkpKXtpLnB1c2goZm9ybWF0UHJvcGVydHkocixlLHQsbyxTdHJpbmcoYSksdHJ1ZSkpfWVsc2V7aS5wdXNoKFwiXCIpfX1uLmZvckVhY2goKGZ1bmN0aW9uKG4pe2lmKCFuLm1hdGNoKC9eXFxkKyQvKSl7aS5wdXNoKGZvcm1hdFByb3BlcnR5KHIsZSx0LG8sbix0cnVlKSl9fSkpO3JldHVybiBpfWZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KHIsZSx0LG8sbixpKXt2YXIgYSx5LGY7Zj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbil8fHt2YWx1ZTplW25dfTtpZihmLmdldCl7aWYoZi5zZXQpe3k9ci5zdHlsaXplKFwiW0dldHRlci9TZXR0ZXJdXCIsXCJzcGVjaWFsXCIpfWVsc2V7eT1yLnN0eWxpemUoXCJbR2V0dGVyXVwiLFwic3BlY2lhbFwiKX19ZWxzZXtpZihmLnNldCl7eT1yLnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKX19aWYoIWhhc093blByb3BlcnR5KG8sbikpe2E9XCJbXCIrbitcIl1cIn1pZigheSl7aWYoci5zZWVuLmluZGV4T2YoZi52YWx1ZSk8MCl7aWYoaXNOdWxsKHQpKXt5PWZvcm1hdFZhbHVlKHIsZi52YWx1ZSxudWxsKX1lbHNle3k9Zm9ybWF0VmFsdWUocixmLnZhbHVlLHQtMSl9aWYoeS5pbmRleE9mKFwiXFxuXCIpPi0xKXtpZihpKXt5PXkuc3BsaXQoXCJcXG5cIikubWFwKChmdW5jdGlvbihyKXtyZXR1cm5cIiAgXCIrcn0pKS5qb2luKFwiXFxuXCIpLnN1YnN0cigyKX1lbHNle3k9XCJcXG5cIit5LnNwbGl0KFwiXFxuXCIpLm1hcCgoZnVuY3Rpb24ocil7cmV0dXJuXCIgICBcIityfSkpLmpvaW4oXCJcXG5cIil9fX1lbHNle3k9ci5zdHlsaXplKFwiW0NpcmN1bGFyXVwiLFwic3BlY2lhbFwiKX19aWYoaXNVbmRlZmluZWQoYSkpe2lmKGkmJm4ubWF0Y2goL15cXGQrJC8pKXtyZXR1cm4geX1hPUpTT04uc3RyaW5naWZ5KFwiXCIrbik7aWYoYS5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLykpe2E9YS5zdWJzdHIoMSxhLmxlbmd0aC0yKTthPXIuc3R5bGl6ZShhLFwibmFtZVwiKX1lbHNle2E9YS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKS5yZXBsYWNlKC8oXlwifFwiJCkvZyxcIidcIik7YT1yLnN0eWxpemUoYSxcInN0cmluZ1wiKX19cmV0dXJuIGErXCI6IFwiK3l9ZnVuY3Rpb24gcmVkdWNlVG9TaW5nbGVTdHJpbmcocixlLHQpe3ZhciBvPTA7dmFyIG49ci5yZWR1Y2UoKGZ1bmN0aW9uKHIsZSl7bysrO2lmKGUuaW5kZXhPZihcIlxcblwiKT49MClvKys7cmV0dXJuIHIrZS5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZyxcIlwiKS5sZW5ndGgrMX0pLDApO2lmKG4+NjApe3JldHVybiB0WzBdKyhlPT09XCJcIj9cIlwiOmUrXCJcXG4gXCIpK1wiIFwiK3Iuam9pbihcIixcXG4gIFwiKStcIiBcIit0WzFdfXJldHVybiB0WzBdK2UrXCIgXCIrci5qb2luKFwiLCBcIikrXCIgXCIrdFsxXX1lLnR5cGVzPXQoNTg0KTtmdW5jdGlvbiBpc0FycmF5KHIpe3JldHVybiBBcnJheS5pc0FycmF5KHIpfWUuaXNBcnJheT1pc0FycmF5O2Z1bmN0aW9uIGlzQm9vbGVhbihyKXtyZXR1cm4gdHlwZW9mIHI9PT1cImJvb2xlYW5cIn1lLmlzQm9vbGVhbj1pc0Jvb2xlYW47ZnVuY3Rpb24gaXNOdWxsKHIpe3JldHVybiByPT09bnVsbH1lLmlzTnVsbD1pc051bGw7ZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQocil7cmV0dXJuIHI9PW51bGx9ZS5pc051bGxPclVuZGVmaW5lZD1pc051bGxPclVuZGVmaW5lZDtmdW5jdGlvbiBpc051bWJlcihyKXtyZXR1cm4gdHlwZW9mIHI9PT1cIm51bWJlclwifWUuaXNOdW1iZXI9aXNOdW1iZXI7ZnVuY3Rpb24gaXNTdHJpbmcocil7cmV0dXJuIHR5cGVvZiByPT09XCJzdHJpbmdcIn1lLmlzU3RyaW5nPWlzU3RyaW5nO2Z1bmN0aW9uIGlzU3ltYm9sKHIpe3JldHVybiB0eXBlb2Ygcj09PVwic3ltYm9sXCJ9ZS5pc1N5bWJvbD1pc1N5bWJvbDtmdW5jdGlvbiBpc1VuZGVmaW5lZChyKXtyZXR1cm4gcj09PXZvaWQgMH1lLmlzVW5kZWZpbmVkPWlzVW5kZWZpbmVkO2Z1bmN0aW9uIGlzUmVnRXhwKHIpe3JldHVybiBpc09iamVjdChyKSYmb2JqZWN0VG9TdHJpbmcocik9PT1cIltvYmplY3QgUmVnRXhwXVwifWUuaXNSZWdFeHA9aXNSZWdFeHA7ZS50eXBlcy5pc1JlZ0V4cD1pc1JlZ0V4cDtmdW5jdGlvbiBpc09iamVjdChyKXtyZXR1cm4gdHlwZW9mIHI9PT1cIm9iamVjdFwiJiZyIT09bnVsbH1lLmlzT2JqZWN0PWlzT2JqZWN0O2Z1bmN0aW9uIGlzRGF0ZShyKXtyZXR1cm4gaXNPYmplY3QocikmJm9iamVjdFRvU3RyaW5nKHIpPT09XCJbb2JqZWN0IERhdGVdXCJ9ZS5pc0RhdGU9aXNEYXRlO2UudHlwZXMuaXNEYXRlPWlzRGF0ZTtmdW5jdGlvbiBpc0Vycm9yKHIpe3JldHVybiBpc09iamVjdChyKSYmKG9iamVjdFRvU3RyaW5nKHIpPT09XCJbb2JqZWN0IEVycm9yXVwifHxyIGluc3RhbmNlb2YgRXJyb3IpfWUuaXNFcnJvcj1pc0Vycm9yO2UudHlwZXMuaXNOYXRpdmVFcnJvcj1pc0Vycm9yO2Z1bmN0aW9uIGlzRnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByPT09XCJmdW5jdGlvblwifWUuaXNGdW5jdGlvbj1pc0Z1bmN0aW9uO2Z1bmN0aW9uIGlzUHJpbWl0aXZlKHIpe3JldHVybiByPT09bnVsbHx8dHlwZW9mIHI9PT1cImJvb2xlYW5cInx8dHlwZW9mIHI9PT1cIm51bWJlclwifHx0eXBlb2Ygcj09PVwic3RyaW5nXCJ8fHR5cGVvZiByPT09XCJzeW1ib2xcInx8dHlwZW9mIHI9PT1cInVuZGVmaW5lZFwifWUuaXNQcmltaXRpdmU9aXNQcmltaXRpdmU7ZS5pc0J1ZmZlcj10KDM2OSk7ZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcocil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKX1mdW5jdGlvbiBwYWQocil7cmV0dXJuIHI8MTA/XCIwXCIrci50b1N0cmluZygxMCk6ci50b1N0cmluZygxMCl9dmFyIGY9W1wiSmFuXCIsXCJGZWJcIixcIk1hclwiLFwiQXByXCIsXCJNYXlcIixcIkp1blwiLFwiSnVsXCIsXCJBdWdcIixcIlNlcFwiLFwiT2N0XCIsXCJOb3ZcIixcIkRlY1wiXTtmdW5jdGlvbiB0aW1lc3RhbXAoKXt2YXIgcj1uZXcgRGF0ZTt2YXIgZT1bcGFkKHIuZ2V0SG91cnMoKSkscGFkKHIuZ2V0TWludXRlcygpKSxwYWQoci5nZXRTZWNvbmRzKCkpXS5qb2luKFwiOlwiKTtyZXR1cm5bci5nZXREYXRlKCksZltyLmdldE1vbnRoKCldLGVdLmpvaW4oXCIgXCIpfWUubG9nPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coXCIlcyAtICVzXCIsdGltZXN0YW1wKCksZS5mb3JtYXQuYXBwbHkoZSxhcmd1bWVudHMpKX07ZS5pbmhlcml0cz10KDc4Mik7ZS5fZXh0ZW5kPWZ1bmN0aW9uKHIsZSl7aWYoIWV8fCFpc09iamVjdChlKSlyZXR1cm4gcjt2YXIgdD1PYmplY3Qua2V5cyhlKTt2YXIgbz10Lmxlbmd0aDt3aGlsZShvLS0pe3JbdFtvXV09ZVt0W29dXX1yZXR1cm4gcn07ZnVuY3Rpb24gaGFzT3duUHJvcGVydHkocixlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsZSl9dmFyIHA9dHlwZW9mIFN5bWJvbCE9PVwidW5kZWZpbmVkXCI/U3ltYm9sKFwidXRpbC5wcm9taXNpZnkuY3VzdG9tXCIpOnVuZGVmaW5lZDtlLnByb21pc2lmeT1mdW5jdGlvbiBwcm9taXNpZnkocil7aWYodHlwZW9mIHIhPT1cImZ1bmN0aW9uXCIpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtpZihwJiZyW3BdKXt2YXIgZT1yW3BdO2lmKHR5cGVvZiBlIT09XCJmdW5jdGlvblwiKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxwLHt2YWx1ZTplLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtyZXR1cm4gZX1mdW5jdGlvbiBlKCl7dmFyIGUsdDt2YXIgbz1uZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXtlPXI7dD1vfSkpO3ZhciBuPVtdO2Zvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe24ucHVzaChhcmd1bWVudHNbaV0pfW4ucHVzaCgoZnVuY3Rpb24ocixvKXtpZihyKXt0KHIpfWVsc2V7ZShvKX19KSk7dHJ5e3IuYXBwbHkodGhpcyxuKX1jYXRjaChyKXt0KHIpfXJldHVybiBvfU9iamVjdC5zZXRQcm90b3R5cGVPZihlLE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSk7aWYocClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxwLHt2YWx1ZTplLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWV9KTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxvKHIpKX07ZS5wcm9taXNpZnkuY3VzdG9tPXA7ZnVuY3Rpb24gY2FsbGJhY2tpZnlPblJlamVjdGVkKHIsZSl7aWYoIXIpe3ZhciB0PW5ldyBFcnJvcihcIlByb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZVwiKTt0LnJlYXNvbj1yO3I9dH1yZXR1cm4gZShyKX1mdW5jdGlvbiBjYWxsYmFja2lmeShyKXtpZih0eXBlb2YgciE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKX1mdW5jdGlvbiBjYWxsYmFja2lmaWVkKCl7dmFyIGU9W107Zm9yKHZhciB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7ZS5wdXNoKGFyZ3VtZW50c1t0XSl9dmFyIG89ZS5wb3AoKTtpZih0eXBlb2YgbyE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlRoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvblwiKX12YXIgbj10aGlzO3ZhciBjYj1mdW5jdGlvbigpe3JldHVybiBvLmFwcGx5KG4sYXJndW1lbnRzKX07ci5hcHBseSh0aGlzLGUpLnRoZW4oKGZ1bmN0aW9uKHIpe3Byb2Nlc3MubmV4dFRpY2soY2IuYmluZChudWxsLG51bGwscikpfSksKGZ1bmN0aW9uKHIpe3Byb2Nlc3MubmV4dFRpY2soY2FsbGJhY2tpZnlPblJlamVjdGVkLmJpbmQobnVsbCxyLGNiKSl9KSl9T2JqZWN0LnNldFByb3RvdHlwZU9mKGNhbGxiYWNraWZpZWQsT2JqZWN0LmdldFByb3RvdHlwZU9mKHIpKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjYWxsYmFja2lmaWVkLG8ocikpO3JldHVybiBjYWxsYmFja2lmaWVkfWUuY2FsbGJhY2tpZnk9Y2FsbGJhY2tpZnl9LDQ5MDpmdW5jdGlvbihyLGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG89dCgxNDQpO3ZhciBuPXQoMzQ5KTt2YXIgaT10KDI1Nik7dmFyIGE9aShcIk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcIik7dmFyIHk9dCg5NDIpKCk7dmFyIGY9eSYmdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZz09PVwic3ltYm9sXCI7dmFyIHA9bigpO3ZhciB1PWkoXCJTdHJpbmcucHJvdG90eXBlLnNsaWNlXCIpO3ZhciBzPXt9O3ZhciBjPXQoMjQpO3ZhciBsPU9iamVjdC5nZXRQcm90b3R5cGVPZjtpZihmJiZjJiZsKXtvKHAsKGZ1bmN0aW9uKHIpe2lmKHR5cGVvZiBnbG9iYWxbcl09PT1cImZ1bmN0aW9uXCIpe3ZhciBlPW5ldyBnbG9iYWxbcl07aWYoIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gZSkpe3Rocm93IG5ldyBFdmFsRXJyb3IoXCJ0aGlzIGVuZ2luZSBoYXMgc3VwcG9ydCBmb3IgU3ltYm9sLnRvU3RyaW5nVGFnLCBidXQgXCIrcitcIiBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSEgUGxlYXNlIHJlcG9ydCB0aGlzLlwiKX12YXIgdD1sKGUpO3ZhciBvPWModCxTeW1ib2wudG9TdHJpbmdUYWcpO2lmKCFvKXt2YXIgbj1sKHQpO289YyhuLFN5bWJvbC50b1N0cmluZ1RhZyl9c1tyXT1vLmdldH19KSl9dmFyIGQ9ZnVuY3Rpb24gdHJ5QWxsVHlwZWRBcnJheXMocil7dmFyIGU9ZmFsc2U7byhzLChmdW5jdGlvbih0LG8pe2lmKCFlKXt0cnl7dmFyIG49dC5jYWxsKHIpO2lmKG49PT1vKXtlPW59fWNhdGNoKHIpe319fSkpO3JldHVybiBlfTt2YXIgZz10KDk5NCk7ci5leHBvcnRzPWZ1bmN0aW9uIHdoaWNoVHlwZWRBcnJheShyKXtpZighZyhyKSl7cmV0dXJuIGZhbHNlfWlmKCFmKXtyZXR1cm4gdShhKHIpLDgsLTEpfXJldHVybiBkKHIpfX0sMzQ5OmZ1bmN0aW9uKHIsZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KDk5Mik7ci5leHBvcnRzPWZ1bmN0aW9uIGF2YWlsYWJsZVR5cGVkQXJyYXlzKCl7cmV0dXJuIG8oW1wiQmlnSW50NjRBcnJheVwiLFwiQmlnVWludDY0QXJyYXlcIixcIkZsb2F0MzJBcnJheVwiLFwiRmxvYXQ2NEFycmF5XCIsXCJJbnQxNkFycmF5XCIsXCJJbnQzMkFycmF5XCIsXCJJbnQ4QXJyYXlcIixcIlVpbnQxNkFycmF5XCIsXCJVaW50MzJBcnJheVwiLFwiVWludDhBcnJheVwiLFwiVWludDhDbGFtcGVkQXJyYXlcIl0sKGZ1bmN0aW9uKHIpe3JldHVybiB0eXBlb2YgZ2xvYmFsW3JdPT09XCJmdW5jdGlvblwifSkpfX0sMjQ6ZnVuY3Rpb24ocixlLHQpe1widXNlIHN0cmljdFwiO3ZhciBvPXQoNTAwKTt2YXIgbj1vKFwiJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlXCIsdHJ1ZSk7aWYobil7dHJ5e24oW10sXCJsZW5ndGhcIil9Y2F0Y2gocil7bj1udWxsfX1yLmV4cG9ydHM9bn19O3ZhciBlPXt9O2Z1bmN0aW9uIF9fbmNjd3Bja19yZXF1aXJlX18odCl7dmFyIG89ZVt0XTtpZihvIT09dW5kZWZpbmVkKXtyZXR1cm4gby5leHBvcnRzfXZhciBuPWVbdF09e2V4cG9ydHM6e319O3ZhciBpPXRydWU7dHJ5e3JbdF0obixuLmV4cG9ydHMsX19uY2N3cGNrX3JlcXVpcmVfXyk7aT1mYWxzZX1maW5hbGx5e2lmKGkpZGVsZXRlIGVbdF19cmV0dXJuIG4uZXhwb3J0c31pZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIHQ9X19uY2N3cGNrX3JlcXVpcmVfXygxNzcpO21vZHVsZS5leHBvcnRzPXR9KSgpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/util/util.js\n"));
/***/ }),
/***/ "./node_modules/next/dist/compiled/vm-browserify/index.js":
/*!****************************************************************!*\
!*** ./node_modules/next/dist/compiled/vm-browserify/index.js ***!
\****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var __webpack_modules__={950:function(__unused_webpack_module,exports){var indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);else for(var r=0;r<e.length;r++){if(e[r]===t)return r}return-1};var Object_keys=function(e){if(Object.keys)return Object.keys(e);else{var t=[];for(var r in e)t.push(r);return t}};var forEach=function(e,t){if(e.forEach)return e.forEach(t);else for(var r=0;r<e.length;r++){t(e[r],r,e)}};var defineProp=function(){try{Object.defineProperty({},\"_\",{});return function(e,t,r){Object.defineProperty(e,t,{writable:true,enumerable:false,configurable:true,value:r})}}catch(e){return function(e,t,r){e[t]=r}}}();var globals=[\"Array\",\"Boolean\",\"Date\",\"Error\",\"EvalError\",\"Function\",\"Infinity\",\"JSON\",\"Math\",\"NaN\",\"Number\",\"Object\",\"RangeError\",\"ReferenceError\",\"RegExp\",\"String\",\"SyntaxError\",\"TypeError\",\"URIError\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"undefined\",\"unescape\"];function Context(){}Context.prototype={};var Script=exports.Script=function NodeScript(e){if(!(this instanceof Script))return new Script(e);this.code=e};Script.prototype.runInContext=function(e){if(!(e instanceof Context)){throw new TypeError(\"needs a 'context' argument.\")}var t=document.createElement(\"iframe\");if(!t.style)t.style={};t.style.display=\"none\";document.body.appendChild(t);var r=t.contentWindow;var n=r.eval,o=r.execScript;if(!n&&o){o.call(r,\"null\");n=r.eval}forEach(Object_keys(e),(function(t){r[t]=e[t]}));forEach(globals,(function(t){if(e[t]){r[t]=e[t]}}));var c=Object_keys(r);var i=n.call(r,this.code);forEach(Object_keys(r),(function(t){if(t in e||indexOf(c,t)===-1){e[t]=r[t]}}));forEach(globals,(function(t){if(!(t in e)){defineProp(e,t,r[t])}}));document.body.removeChild(t);return i};Script.prototype.runInThisContext=function(){return eval(this.code)};Script.prototype.runInNewContext=function(e){var t=Script.createContext(e);var r=this.runInContext(t);if(e){forEach(Object_keys(t),(function(r){e[r]=t[r]}))}return r};forEach(Object_keys(Script.prototype),(function(e){exports[e]=Script[e]=function(t){var r=Script(t);return r[e].apply(r,[].slice.call(arguments,1))}}));exports.isContext=function(e){return e instanceof Context};exports.createScript=function(e){return exports.Script(e)};exports.createContext=Script.createContext=function(e){var t=new Context;if(typeof e===\"object\"){forEach(Object_keys(e),(function(r){t[r]=e[r]}))}return t}}};if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var __nested_webpack_exports__={};__webpack_modules__[950](0,__nested_webpack_exports__);module.exports=__nested_webpack_exports__})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3ZtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVkseUJBQXlCLDhDQUE4QywwQkFBMEIsaUNBQWlDLGlCQUFpQixXQUFXLEtBQUsscUJBQXFCLFVBQVUsNEJBQTRCLHFDQUFxQyxLQUFLLFNBQVMseUJBQXlCLFdBQVcsMEJBQTBCLGlDQUFpQyxpQkFBaUIsV0FBVyxLQUFLLGNBQWMsMEJBQTBCLElBQUksd0JBQXdCLE9BQU8sRUFBRSx1QkFBdUIsMkJBQTJCLHlEQUF5RCxHQUFHLFNBQVMsdUJBQXVCLFNBQVMsR0FBRyxnV0FBZ1csb0JBQW9CLHFCQUFxQixpREFBaUQsa0RBQWtELGFBQWEsMENBQTBDLDRCQUE0QixtREFBbUQsdUNBQXVDLHVCQUF1Qix1QkFBdUIsNkJBQTZCLHNCQUFzQiw0QkFBNEIsVUFBVSxpQkFBaUIsU0FBUyxvQ0FBb0MsVUFBVSxHQUFHLDZCQUE2QixTQUFTLFdBQVcsR0FBRyxxQkFBcUIsMEJBQTBCLG9DQUFvQyw4QkFBOEIsV0FBVyxHQUFHLDZCQUE2QixjQUFjLHNCQUFzQixHQUFHLDZCQUE2QixVQUFVLDZDQUE2Qyx3QkFBd0IsNkNBQTZDLDhCQUE4QiwyQkFBMkIsTUFBTSxvQ0FBb0MsVUFBVSxHQUFHLFVBQVUsbURBQW1ELGlDQUFpQyxnQkFBZ0IsaURBQWlELEdBQUcsOEJBQThCLDZCQUE2QixpQ0FBaUMsMEJBQTBCLHVEQUF1RCxrQkFBa0Isd0JBQXdCLG9DQUFvQyxVQUFVLEdBQUcsWUFBWSxtRUFBbUUsU0FBUyxLQUFLLElBQUksMEJBQW1CLElBQUksMkJBQTJCLDBCQUFtQixFQUFFLGVBQWUsMEJBQW1CLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC92bS1icm93c2VyaWZ5L2luZGV4LmpzPzUwMWYiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7dmFyIF9fd2VicGFja19tb2R1bGVzX189ezk1MDpmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxleHBvcnRzKXt2YXIgaW5kZXhPZj1mdW5jdGlvbihlLHQpe2lmKGUuaW5kZXhPZilyZXR1cm4gZS5pbmRleE9mKHQpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe2lmKGVbcl09PT10KXJldHVybiByfXJldHVybi0xfTt2YXIgT2JqZWN0X2tleXM9ZnVuY3Rpb24oZSl7aWYoT2JqZWN0LmtleXMpcmV0dXJuIE9iamVjdC5rZXlzKGUpO2Vsc2V7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKHIpO3JldHVybiB0fX07dmFyIGZvckVhY2g9ZnVuY3Rpb24oZSx0KXtpZihlLmZvckVhY2gpcmV0dXJuIGUuZm9yRWFjaCh0KTtlbHNlIGZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt0KGVbcl0scixlKX19O3ZhciBkZWZpbmVQcm9wPWZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcIl9cIix7fSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt3cml0YWJsZTp0cnVlLGVudW1lcmFibGU6ZmFsc2UsY29uZmlndXJhYmxlOnRydWUsdmFsdWU6cn0pfX1jYXRjaChlKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe2VbdF09cn19fSgpO3ZhciBnbG9iYWxzPVtcIkFycmF5XCIsXCJCb29sZWFuXCIsXCJEYXRlXCIsXCJFcnJvclwiLFwiRXZhbEVycm9yXCIsXCJGdW5jdGlvblwiLFwiSW5maW5pdHlcIixcIkpTT05cIixcIk1hdGhcIixcIk5hTlwiLFwiTnVtYmVyXCIsXCJPYmplY3RcIixcIlJhbmdlRXJyb3JcIixcIlJlZmVyZW5jZUVycm9yXCIsXCJSZWdFeHBcIixcIlN0cmluZ1wiLFwiU3ludGF4RXJyb3JcIixcIlR5cGVFcnJvclwiLFwiVVJJRXJyb3JcIixcImRlY29kZVVSSVwiLFwiZGVjb2RlVVJJQ29tcG9uZW50XCIsXCJlbmNvZGVVUklcIixcImVuY29kZVVSSUNvbXBvbmVudFwiLFwiZXNjYXBlXCIsXCJldmFsXCIsXCJpc0Zpbml0ZVwiLFwiaXNOYU5cIixcInBhcnNlRmxvYXRcIixcInBhcnNlSW50XCIsXCJ1bmRlZmluZWRcIixcInVuZXNjYXBlXCJdO2Z1bmN0aW9uIENvbnRleHQoKXt9Q29udGV4dC5wcm90b3R5cGU9e307dmFyIFNjcmlwdD1leHBvcnRzLlNjcmlwdD1mdW5jdGlvbiBOb2RlU2NyaXB0KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpcmV0dXJuIG5ldyBTY3JpcHQoZSk7dGhpcy5jb2RlPWV9O1NjcmlwdC5wcm90b3R5cGUucnVuSW5Db250ZXh0PWZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIENvbnRleHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwibmVlZHMgYSAnY29udGV4dCcgYXJndW1lbnQuXCIpfXZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7aWYoIXQuc3R5bGUpdC5zdHlsZT17fTt0LnN0eWxlLmRpc3BsYXk9XCJub25lXCI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTt2YXIgcj10LmNvbnRlbnRXaW5kb3c7dmFyIG49ci5ldmFsLG89ci5leGVjU2NyaXB0O2lmKCFuJiZvKXtvLmNhbGwocixcIm51bGxcIik7bj1yLmV2YWx9Zm9yRWFjaChPYmplY3Rfa2V5cyhlKSwoZnVuY3Rpb24odCl7clt0XT1lW3RdfSkpO2ZvckVhY2goZ2xvYmFscywoZnVuY3Rpb24odCl7aWYoZVt0XSl7clt0XT1lW3RdfX0pKTt2YXIgYz1PYmplY3Rfa2V5cyhyKTt2YXIgaT1uLmNhbGwocix0aGlzLmNvZGUpO2ZvckVhY2goT2JqZWN0X2tleXMociksKGZ1bmN0aW9uKHQpe2lmKHQgaW4gZXx8aW5kZXhPZihjLHQpPT09LTEpe2VbdF09clt0XX19KSk7Zm9yRWFjaChnbG9iYWxzLChmdW5jdGlvbih0KXtpZighKHQgaW4gZSkpe2RlZmluZVByb3AoZSx0LHJbdF0pfX0pKTtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpO3JldHVybiBpfTtTY3JpcHQucHJvdG90eXBlLnJ1bkluVGhpc0NvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZXZhbCh0aGlzLmNvZGUpfTtTY3JpcHQucHJvdG90eXBlLnJ1bkluTmV3Q29udGV4dD1mdW5jdGlvbihlKXt2YXIgdD1TY3JpcHQuY3JlYXRlQ29udGV4dChlKTt2YXIgcj10aGlzLnJ1bkluQ29udGV4dCh0KTtpZihlKXtmb3JFYWNoKE9iamVjdF9rZXlzKHQpLChmdW5jdGlvbihyKXtlW3JdPXRbcl19KSl9cmV0dXJuIHJ9O2ZvckVhY2goT2JqZWN0X2tleXMoU2NyaXB0LnByb3RvdHlwZSksKGZ1bmN0aW9uKGUpe2V4cG9ydHNbZV09U2NyaXB0W2VdPWZ1bmN0aW9uKHQpe3ZhciByPVNjcmlwdCh0KTtyZXR1cm4gcltlXS5hcHBseShyLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX19KSk7ZXhwb3J0cy5pc0NvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDb250ZXh0fTtleHBvcnRzLmNyZWF0ZVNjcmlwdD1mdW5jdGlvbihlKXtyZXR1cm4gZXhwb3J0cy5TY3JpcHQoZSl9O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1TY3JpcHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQ29udGV4dDtpZih0eXBlb2YgZT09PVwib2JqZWN0XCIpe2ZvckVhY2goT2JqZWN0X2tleXMoZSksKGZ1bmN0aW9uKHIpe3Rbcl09ZVtyXX0pKX1yZXR1cm4gdH19fTtpZih0eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyE9PVwidW5kZWZpbmVkXCIpX19uY2N3cGNrX3JlcXVpcmVfXy5hYj1fX2Rpcm5hbWUrXCIvXCI7dmFyIF9fd2VicGFja19leHBvcnRzX189e307X193ZWJwYWNrX21vZHVsZXNfX1s5NTBdKDAsX193ZWJwYWNrX2V4cG9ydHNfXyk7bW9kdWxlLmV4cG9ydHM9X193ZWJwYWNrX2V4cG9ydHNfX30pKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/vm-browserify/index.js\n"));
/***/ }),
/***/ "./node_modules/next/head.js":
/*!***********************************!*\
!*** ./node_modules/next/head.js ***!
\***********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./dist/shared/lib/head */ \"./node_modules/next/dist/shared/lib/head.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9oZWFkLmpzIiwibWFwcGluZ3MiOiJBQUFBLGlIQUFrRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9oZWFkLmpzPzg4NDkiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3Qvc2hhcmVkL2xpYi9oZWFkJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/head.js\n"));
/***/ }),
/***/ "./node_modules/next/router.js":
/*!*************************************!*\
!*** ./node_modules/next/router.js ***!
\*************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("module.exports = __webpack_require__(/*! ./dist/client/router */ \"./node_modules/next/dist/client/router.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsNkdBQWdEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L3JvdXRlci5qcz8xYmI2Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L2NsaWVudC9yb3V0ZXInKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/router.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
!*** ./node_modules/prop-types/checkPropTypes.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n var loggedTypeFailures = {};\n var has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7O0FBRUEsSUFBSSxJQUFxQztBQUN6Qyw2QkFBNkIsbUJBQU8sQ0FBQyx5RkFBNEI7QUFDakU7QUFDQSxZQUFZLG1CQUFPLENBQUMsdURBQVc7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxZQUFZO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZHQUE2RztBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFxQztBQUMzQztBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanM/MjYyNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG4gIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgdmFyIGhhcyA9IHJlcXVpcmUoJy4vbGliL2hhcycpO1xuXG4gIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgdGV4dDtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7IC8qKi8gfVxuICB9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcbiAgICAgICAgICAgICAgKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICtcbiAgICAgICAgICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJyArXG4gICAgICAgICAgICAgICdUaGlzIG9mdGVuIGhhcHBlbnMgYmVjYXVzZSBvZiB0eXBvcyBzdWNoIGFzIGBQcm9wVHlwZXMuZnVuY3Rpb25gIGluc3RlYWQgb2YgYFByb3BUeXBlcy5mdW5jYC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgJiYgIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICcgK1xuICAgICAgICAgICAgbG9jYXRpb24gKyAnIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICtcbiAgICAgICAgICAgICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAnICsgdHlwZW9mIGVycm9yICsgJy4gJyArXG4gICAgICAgICAgICAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICtcbiAgICAgICAgICAgICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgICB2YXIgc3RhY2sgPSBnZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcblxuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdGYWlsZWQgJyArIGxvY2F0aW9uICsgJyB0eXBlOiAnICsgZXJyb3IubWVzc2FnZSArIChzdGFjayAhPSBudWxsID8gc3RhY2sgOiAnJylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVzZXRzIHdhcm5pbmcgY2FjaGUgd2hlbiB0ZXN0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlID0gZnVuY3Rpb24oKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjaGVja1Byb3BUeXBlcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/checkPropTypes.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
/*!************************************************************!*\
!*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
\************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/prop-types/node_modules/react-is/index.js\");\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/next/dist/build/polyfills/object-assign.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nvar printWarning = function() {};\n\nif (true) {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if ( true && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsY0FBYyxtQkFBTyxDQUFDLDBFQUFVO0FBQ2hDLGFBQWEsbUJBQU8sQ0FBQyxnRkFBZTs7QUFFcEMsMkJBQTJCLG1CQUFPLENBQUMseUZBQTRCO0FBQy9ELFVBQVUsbUJBQU8sQ0FBQyx1REFBVztBQUM3QixxQkFBcUIsbUJBQU8sQ0FBQyxxRUFBa0I7O0FBRS9DOztBQUVBLElBQUksSUFBcUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsOEJBQThCO0FBQzlCLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixLQUFLO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsNEJBQTRCO0FBQzVCLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsU0FBUyxLQUFxQztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNCQUFzQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsSUFBcUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsMkJBQTJCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxLQUFxQyw0RkFBNEYsQ0FBTTtBQUM3STtBQUNBOztBQUVBLG9CQUFvQixnQ0FBZ0M7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsZ0NBQWdDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpSEFBaUg7QUFDakg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzP2I3NmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9saWIvaGFzJyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBiaWdpbnQ6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdiaWdpbnQnKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBlbGVtZW50VHlwZTogY3JlYXRlRWxlbWVudFR5cGVUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcbiAgICBleGFjdDogY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcixcbiAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSwgZGF0YSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5kYXRhID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyBkYXRhOiB7fTtcbiAgICB0aGlzLnN0YWNrID0gJyc7XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtcblxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAgICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBwcm9wIG9uIGAnICsgY29tcG9uZW50TmFtZSArICdgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSxcbiAgICAgICAgICB7ZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGV9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQgdHlwZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLiAnICtcbiAgICAgICAgICAgICdBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHdyaXRlIG9uZU9mKHgsIHksIHopIGluc3RlYWQgb2Ygb25lT2YoW3gsIHksIHpdKS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGFycmF5LicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgU3RyaW5nKHByb3BWYWx1ZSkgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGhhcyhwcm9wVmFsdWUsIGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICcgKyBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlcikgKyAnIGF0IGluZGV4ICcgKyBpICsgJy4nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICAgIHZhciBjaGVja2VyUmVzdWx0ID0gY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGNoZWNrZXJSZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja2VyUmVzdWx0LmRhdGEgJiYgaGFzKGNoZWNrZXJSZXN1bHQuZGF0YSwgJ2V4cGVjdGVkVHlwZScpKSB7XG4gICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGNoZWNrZXJSZXN1bHQuZGF0YS5leHBlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgPSAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPiAwKSA/ICcsIGV4cGVjdGVkIG9uZSBvZiB0eXBlIFsnICsgZXhwZWN0ZWRUeXBlcy5qb2luKCcsICcpICsgJ10nOiAnJztcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AnICsgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmFsaWRWYWxpZGF0b3JFcnJvcihjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBrZXksIHR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHByb3BGdWxsTmFtZSArICcuJyArIGtleSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZSArICdgLidcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBpbnZhbGlkVmFsaWRhdG9yRXJyb3IoY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwga2V5LCBnZXRQcmVjaXNlVHlwZShjaGVja2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb20gcHJvcHMuXG4gICAgICB2YXIgYWxsS2V5cyA9IGFzc2lnbih7fSwgcHJvcHNbcHJvcE5hbWVdLCBzaGFwZVR5cGVzKTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBhbGxLZXlzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgICBpZiAoaGFzKHNoYXBlVHlwZXMsIGtleSkgJiYgdHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbGlkYXRvckVycm9yKGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIGtleSwgZ2V0UHJlY2lzZVR5cGUoY2hlY2tlcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcbiAgICAgICAgICAgICdcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXG4gICAgICAgICAgICAnXFxuVmFsaWQga2V5czogJyArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZhbHN5IHZhbHVlIGNhbid0IGJlIGEgU3ltYm9sXG4gICAgaWYgKCFwcm9wVmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/factoryWithTypeCheckers.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/index.js":
/*!******************************************!*\
!*** ./node_modules/prop-types/index.js ***!
\******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n var ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/prop-types/node_modules/react-is/index.js\");\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(ReactIs.isElement, throwOnDirectAccess);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxJQUFxQztBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQywwRUFBVTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsdUZBQTJCO0FBQ3RELEVBQUUsS0FBSyxFQUlOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzP2JkZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/index.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
!*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
\*************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcz9lMDk4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/lib/ReactPropTypesSecret.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/lib/has.js":
/*!********************************************!*\
!*** ./node_modules/prop-types/lib/has.js ***!
\********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvaGFzLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9oYXMuanM/ZTQ3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/lib/has.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************************************!*\
!*** ./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***!
\***********************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7Ozs7QUFJYixJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFO0FBQzNFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsc0JBQXNCO0FBQ3RCLHVCQUF1QjtBQUN2Qix1QkFBdUI7QUFDdkIsZUFBZTtBQUNmLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsWUFBWTtBQUNaLFlBQVk7QUFDWixjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLGlCQUFpQjtBQUNqQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGNBQWM7QUFDZCxjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLDBCQUEwQjtBQUMxQixjQUFjO0FBQ2QsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanM/Yzk1NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgaGFzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpIDogMHhlYWNhO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpIDogMHhlYWNiO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpIDogMHhlYWNjO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpIDogMHhlYWQyO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpIDogMHhlYWNkO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKSA6IDB4ZWFjZTsgLy8gVE9ETzogV2UgZG9uJ3QgdXNlIEFzeW5jTW9kZSBvciBDb25jdXJyZW50TW9kZSBhbnltb3JlLiBUaGV5IHdlcmUgdGVtcG9yYXJ5XG4vLyAodW5zdGFibGUpIEFQSXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4gQ2FuIHdlIHJlbW92ZSB0aGUgc3ltYm9scz9cblxudmFyIFJFQUNUX0FTWU5DX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmFzeW5jX21vZGUnKSA6IDB4ZWFjZjtcbnZhciBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbmN1cnJlbnRfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpIDogMHhlYWQwO1xudmFyIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZScpIDogMHhlYWQxO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKSA6IDB4ZWFkODtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJykgOiAweGVhZDM7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QubGF6eScpIDogMHhlYWQ0O1xudmFyIFJFQUNUX0JMT0NLX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5ibG9jaycpIDogMHhlYWQ5O1xudmFyIFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mdW5kYW1lbnRhbCcpIDogMHhlYWQ1O1xudmFyIFJFQUNUX1JFU1BPTkRFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucmVzcG9uZGVyJykgOiAweGVhZDY7XG52YXIgUkVBQ1RfU0NPUEVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnNjb3BlJykgOiAweGVhZDc7XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgLy8gTm90ZTogaXRzIHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIGlmIGl0J3MgYSBwb2x5ZmlsbC5cbiAgdHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1JFU1BPTkRFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1NDT1BFX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQkxPQ0tfVFlQRSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZihvYmplY3QpIHtcbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkge1xuICAgIHZhciAkJHR5cGVvZiA9IG9iamVjdC4kJHR5cGVvZjtcblxuICAgIHN3aXRjaCAoJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICB2YXIgdHlwZSA9IG9iamVjdC50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFyICQkdHlwZW9mVHlwZSA9IHR5cGUgJiYgdHlwZS4kJHR5cGVvZjtcblxuICAgICAgICAgICAgc3dpdGNoICgkJHR5cGVvZlR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mVHlwZTtcblxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufSAvLyBBc3luY01vZGUgaXMgZGVwcmVjYXRlZCBhbG9uZyB3aXRoIGlzQXN5bmNNb2RlXG5cbnZhciBBc3luY01vZGUgPSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG52YXIgQ29uY3VycmVudE1vZGUgPSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbnZhciBDb250ZXh0Q29uc3VtZXIgPSBSRUFDVF9DT05URVhUX1RZUEU7XG52YXIgQ29udGV4dFByb3ZpZGVyID0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbnZhciBFbGVtZW50ID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xudmFyIEZvcndhcmRSZWYgPSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xudmFyIEZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbnZhciBMYXp5ID0gUkVBQ1RfTEFaWV9UWVBFO1xudmFyIE1lbW8gPSBSRUFDVF9NRU1PX1RZUEU7XG52YXIgUG9ydGFsID0gUkVBQ1RfUE9SVEFMX1RZUEU7XG52YXIgUHJvZmlsZXIgPSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xudmFyIFN0cmljdE1vZGUgPSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xudmFyIFN1c3BlbnNlID0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbnZhciBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IGZhbHNlOyAvLyBBc3luY01vZGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWRcblxuZnVuY3Rpb24gaXNBc3luY01vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlKSB7XG4gICAgICBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IHRydWU7IC8vIFVzaW5nIGNvbnNvbGVbJ3dhcm4nXSB0byBldmFkZSBCYWJlbCBhbmQgRVNMaW50XG5cbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnVGhlIFJlYWN0SXMuaXNBc3luY01vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTcrLiBVcGRhdGUgeW91ciBjb2RlIHRvIHVzZSAnICsgJ1JlYWN0SXMuaXNDb25jdXJyZW50TW9kZSgpIGluc3RlYWQuIEl0IGhhcyB0aGUgZXhhY3Qgc2FtZSBBUEkuJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB8fCB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQVNZTkNfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dENvbnN1bWVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTlRFWFRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dFByb3ZpZGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST1ZJREVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWYob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRnJhZ21lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTGF6eShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9MQVpZX1RZUEU7XG59XG5mdW5jdGlvbiBpc01lbW8ob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTUVNT19UWVBFO1xufVxuZnVuY3Rpb24gaXNQb3J0YWwob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUE9SVEFMX1RZUEU7XG59XG5mdW5jdGlvbiBpc1Byb2ZpbGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N0cmljdE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2Uob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbn1cblxuZXhwb3J0cy5Bc3luY01vZGUgPSBBc3luY01vZGU7XG5leHBvcnRzLkNvbmN1cnJlbnRNb2RlID0gQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLkNvbnRleHRDb25zdW1lciA9IENvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuQ29udGV4dFByb3ZpZGVyID0gQ29udGV4dFByb3ZpZGVyO1xuZXhwb3J0cy5FbGVtZW50ID0gRWxlbWVudDtcbmV4cG9ydHMuRm9yd2FyZFJlZiA9IEZvcndhcmRSZWY7XG5leHBvcnRzLkZyYWdtZW50ID0gRnJhZ21lbnQ7XG5leHBvcnRzLkxhenkgPSBMYXp5O1xuZXhwb3J0cy5NZW1vID0gTWVtbztcbmV4cG9ydHMuUG9ydGFsID0gUG9ydGFsO1xuZXhwb3J0cy5Qcm9maWxlciA9IFByb2ZpbGVyO1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gU3RyaWN0TW9kZTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBTdXNwZW5zZTtcbmV4cG9ydHMuaXNBc3luY01vZGUgPSBpc0FzeW5jTW9kZTtcbmV4cG9ydHMuaXNDb25jdXJyZW50TW9kZSA9IGlzQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLmlzQ29udGV4dENvbnN1bWVyID0gaXNDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyID0gaXNDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLmlzRWxlbWVudCA9IGlzRWxlbWVudDtcbmV4cG9ydHMuaXNGb3J3YXJkUmVmID0gaXNGb3J3YXJkUmVmO1xuZXhwb3J0cy5pc0ZyYWdtZW50ID0gaXNGcmFnbWVudDtcbmV4cG9ydHMuaXNMYXp5ID0gaXNMYXp5O1xuZXhwb3J0cy5pc01lbW8gPSBpc01lbW87XG5leHBvcnRzLmlzUG9ydGFsID0gaXNQb3J0YWw7XG5leHBvcnRzLmlzUHJvZmlsZXIgPSBpc1Byb2ZpbGVyO1xuZXhwb3J0cy5pc1N0cmljdE1vZGUgPSBpc1N0cmljdE1vZGU7XG5leHBvcnRzLmlzU3VzcGVuc2UgPSBpc1N1c3BlbnNlO1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGU7XG5leHBvcnRzLnR5cGVPZiA9IHR5cGVPZjtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js\n"));
/***/ }),
/***/ "./node_modules/prop-types/node_modules/react-is/index.js":
/*!****************************************************************!*\
!*** ./node_modules/prop-types/node_modules/react-is/index.js ***!
\****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsSUFBSSxLQUFxQyxFQUFFLEVBRTFDLENBQUM7QUFDRixFQUFFLHdKQUF5RDtBQUMzRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanM/NWQ1MCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/node_modules/react-is/index.js\n"));
/***/ }),
/***/ "./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js":
/*!***********************************************************************************!*\
!*** ./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js ***!
\***********************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-dom-server-legacy.browser.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n\n\n JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n\n Copyright (c) 2011 Gary Court\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n true &&\n (function () {\n function styleReplacer(match, prefix, s, suffix) {\n return \"\" + prefix + (\"s\" === s ? \"\\\\73 \" : \"\\\\53 \") + suffix;\n }\n function scriptReplacer(match, prefix, s, suffix) {\n return \"\" + prefix + (\"s\" === s ? \"\\\\u0073\" : \"\\\\u0053\") + suffix;\n }\n function objectName(object) {\n return Object.prototype.toString\n .call(object)\n .replace(/^\\[object (.*)\\]$/, function (m, p0) {\n return p0;\n });\n }\n function describeKeyForErrorMessage(key) {\n var encodedKey = JSON.stringify(key);\n return '\"' + key + '\"' === encodedKey ? key : encodedKey;\n }\n function describeValueForErrorMessage(value) {\n switch (typeof value) {\n case \"string\":\n return JSON.stringify(\n 10 >= value.length ? value : value.slice(0, 10) + \"...\"\n );\n case \"object\":\n if (isArrayImpl(value)) return \"[...]\";\n if (null !== value && value.$$typeof === CLIENT_REFERENCE_TAG)\n return \"client\";\n value = objectName(value);\n return \"Object\" === value ? \"{...}\" : value;\n case \"function\":\n return value.$$typeof === CLIENT_REFERENCE_TAG\n ? \"client\"\n : (value = value.displayName || value.name)\n ? \"function \" + value\n : \"function\";\n default:\n return String(value);\n }\n }\n function describeElementType(type) {\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeElementType(type.render);\n case REACT_MEMO_TYPE:\n return describeElementType(type.type);\n case REACT_LAZY_TYPE:\n var payload = type._payload;\n type = type._init;\n try {\n return describeElementType(type(payload));\n } catch (x) {}\n }\n return \"\";\n }\n function describeObjectForErrorMessage(objectOrArray, expandedName) {\n var objKind = objectName(objectOrArray);\n if (\"Object\" !== objKind && \"Array\" !== objKind) return objKind;\n var start = -1,\n length = 0;\n if (isArrayImpl(objectOrArray))\n if (jsxChildrenParents.has(objectOrArray)) {\n var type = jsxChildrenParents.get(objectOrArray);\n objKind = \"<\" + describeElementType(type) + \">\";\n for (var i = 0; i < objectOrArray.length; i++) {\n var value = objectOrArray[i];\n value =\n \"string\" === typeof value\n ? value\n : \"object\" === typeof value && null !== value\n ? \"{\" + describeObjectForErrorMessage(value) + \"}\"\n : \"{\" + describeValueForErrorMessage(value) + \"}\";\n \"\" + i === expandedName\n ? ((start = objKind.length),\n (length = value.length),\n (objKind += value))\n : (objKind =\n 15 > value.length && 40 > objKind.length + value.length\n ? objKind + value\n : objKind + \"{...}\");\n }\n objKind += \"</\" + describeElementType(type) + \">\";\n } else {\n objKind = \"[\";\n for (type = 0; type < objectOrArray.length; type++)\n 0 < type && (objKind += \", \"),\n (i = objectOrArray[type]),\n (i =\n \"object\" === typeof i && null !== i\n ? describeObjectForErrorMessage(i)\n : describeValueForErrorMessage(i)),\n \"\" + type === expandedName\n ? ((start = objKind.length),\n (length = i.length),\n (objKind += i))\n : (objKind =\n 10 > i.length && 40 > objKind.length + i.length\n ? objKind + i\n : objKind + \"...\");\n objKind += \"]\";\n }\n else if (objectOrArray.$$typeof === REACT_ELEMENT_TYPE)\n objKind = \"<\" + describeElementType(objectOrArray.type) + \"/>\";\n else {\n if (objectOrArray.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n if (jsxPropsParents.has(objectOrArray)) {\n objKind = jsxPropsParents.get(objectOrArray);\n objKind = \"<\" + (describeElementType(objKind) || \"...\");\n type = Object.keys(objectOrArray);\n for (i = 0; i < type.length; i++) {\n objKind += \" \";\n value = type[i];\n objKind += describeKeyForErrorMessage(value) + \"=\";\n var _value2 = objectOrArray[value];\n var _substr2 =\n value === expandedName &&\n \"object\" === typeof _value2 &&\n null !== _value2\n ? describeObjectForErrorMessage(_value2)\n : describeValueForErrorMessage(_value2);\n \"string\" !== typeof _value2 && (_substr2 = \"{\" + _substr2 + \"}\");\n value === expandedName\n ? ((start = objKind.length),\n (length = _substr2.length),\n (objKind += _substr2))\n : (objKind =\n 10 > _substr2.length && 40 > objKind.length + _substr2.length\n ? objKind + _substr2\n : objKind + \"...\");\n }\n objKind += \">\";\n } else {\n objKind = \"{\";\n type = Object.keys(objectOrArray);\n for (i = 0; i < type.length; i++)\n 0 < i && (objKind += \", \"),\n (value = type[i]),\n (objKind += describeKeyForErrorMessage(value) + \": \"),\n (_value2 = objectOrArray[value]),\n (_value2 =\n \"object\" === typeof _value2 && null !== _value2\n ? describeObjectForErrorMessage(_value2)\n : describeValueForErrorMessage(_value2)),\n value === expandedName\n ? ((start = objKind.length),\n (length = _value2.length),\n (objKind += _value2))\n : (objKind =\n 10 > _value2.length && 40 > objKind.length + _value2.length\n ? objKind + _value2\n : objKind + \"...\");\n objKind += \"}\";\n }\n }\n return void 0 === expandedName\n ? objKind\n : -1 < start && 0 < length\n ? ((objectOrArray = \" \".repeat(start) + \"^\".repeat(length)),\n \"\\n \" + objKind + \"\\n \" + objectOrArray)\n : \"\\n \" + objKind;\n }\n function murmurhash3_32_gc(key, seed) {\n var remainder = key.length & 3;\n var bytes = key.length - remainder;\n var h1 = seed;\n for (seed = 0; seed < bytes; ) {\n var k1 =\n (key.charCodeAt(seed) & 255) |\n ((key.charCodeAt(++seed) & 255) << 8) |\n ((key.charCodeAt(++seed) & 255) << 16) |\n ((key.charCodeAt(++seed) & 255) << 24);\n ++seed;\n k1 =\n (3432918353 * (k1 & 65535) +\n (((3432918353 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 =\n (461845907 * (k1 & 65535) +\n (((461845907 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 =\n (5 * (h1 & 65535) + (((5 * (h1 >>> 16)) & 65535) << 16)) & 4294967295;\n h1 = (h1 & 65535) + 27492 + ((((h1 >>> 16) + 58964) & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(seed + 2) & 255) << 16;\n case 2:\n k1 ^= (key.charCodeAt(seed + 1) & 255) << 8;\n case 1:\n (k1 ^= key.charCodeAt(seed) & 255),\n (k1 =\n (3432918353 * (k1 & 65535) +\n (((3432918353 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295),\n (k1 = (k1 << 15) | (k1 >>> 17)),\n (h1 ^=\n (461845907 * (k1 & 65535) +\n (((461845907 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295);\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 =\n (2246822507 * (h1 & 65535) +\n (((2246822507 * (h1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n h1 ^= h1 >>> 13;\n h1 =\n (3266489909 * (h1 & 65535) +\n (((3266489909 * (h1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n return (h1 ^ (h1 >>> 16)) >>> 0;\n }\n function typeName(value) {\n return (\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\"\n );\n }\n function willCoercionThrow(value) {\n try {\n return testStringCoercion(value), !1;\n } catch (e) {\n return !0;\n }\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkAttributeStringCoercion(value, attributeName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.\",\n attributeName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkCSSPropertyStringCoercion(value, propName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.\",\n propName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkHtmlStringCoercion(value) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before using it here.\",\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName))\n return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n console.error(\"Invalid attribute name: `%s`\", attributeName);\n return !1;\n }\n function checkControlledValueProps(tagName, props) {\n hasReadOnlyValue[props.type] ||\n props.onChange ||\n props.onInput ||\n props.readOnly ||\n props.disabled ||\n null == props.value ||\n (\"select\" === tagName\n ? console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.\"\n )\n : console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.\"\n ));\n props.onChange ||\n props.readOnly ||\n props.disabled ||\n null == props.checked ||\n console.error(\n \"You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.\"\n );\n }\n function validateProperty$1(tagName, name) {\n if (\n hasOwnProperty.call(warnedProperties$1, name) &&\n warnedProperties$1[name]\n )\n return !0;\n if (rARIACamel$1.test(name)) {\n tagName = \"aria-\" + name.slice(4).toLowerCase();\n tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;\n if (null == tagName)\n return (\n console.error(\n \"Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.\",\n name\n ),\n (warnedProperties$1[name] = !0)\n );\n if (name !== tagName)\n return (\n console.error(\n \"Invalid ARIA attribute `%s`. Did you mean `%s`?\",\n name,\n tagName\n ),\n (warnedProperties$1[name] = !0)\n );\n }\n if (rARIA$1.test(name)) {\n tagName = name.toLowerCase();\n tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;\n if (null == tagName) return (warnedProperties$1[name] = !0), !1;\n name !== tagName &&\n (console.error(\n \"Unknown ARIA attribute `%s`. Did you mean `%s`?\",\n name,\n tagName\n ),\n (warnedProperties$1[name] = !0));\n }\n return !0;\n }\n function validateProperties$2(type, props) {\n var invalidProps = [],\n key;\n for (key in props)\n validateProperty$1(type, key) || invalidProps.push(key);\n props = invalidProps\n .map(function (prop) {\n return \"`\" + prop + \"`\";\n })\n .join(\", \");\n 1 === invalidProps.length\n ? console.error(\n \"Invalid aria prop %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props\",\n props,\n type\n )\n : 1 < invalidProps.length &&\n console.error(\n \"Invalid aria props %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props\",\n props,\n type\n );\n }\n function validateProperty(tagName, name, value, eventRegistry) {\n if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name])\n return !0;\n var lowerCasedName = name.toLowerCase();\n if (\"onfocusin\" === lowerCasedName || \"onfocusout\" === lowerCasedName)\n return (\n console.error(\n \"React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\n \"function\" === typeof value &&\n ((\"form\" === tagName && \"action\" === name) ||\n (\"input\" === tagName && \"formAction\" === name) ||\n (\"button\" === tagName && \"formAction\" === name))\n )\n return !0;\n if (null != eventRegistry) {\n tagName = eventRegistry.possibleRegistrationNames;\n if (eventRegistry.registrationNameDependencies.hasOwnProperty(name))\n return !0;\n eventRegistry = tagName.hasOwnProperty(lowerCasedName)\n ? tagName[lowerCasedName]\n : null;\n if (null != eventRegistry)\n return (\n console.error(\n \"Invalid event handler property `%s`. Did you mean `%s`?\",\n name,\n eventRegistry\n ),\n (warnedProperties[name] = !0)\n );\n if (EVENT_NAME_REGEX.test(name))\n return (\n console.error(\n \"Unknown event handler property `%s`. It will be ignored.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n } else if (EVENT_NAME_REGEX.test(name))\n return (\n INVALID_EVENT_NAME_REGEX.test(name) &&\n console.error(\n \"Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n if (rARIA.test(name) || rARIACamel.test(name)) return !0;\n if (\"innerhtml\" === lowerCasedName)\n return (\n console.error(\n \"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\"aria\" === lowerCasedName)\n return (\n console.error(\n \"The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\n \"is\" === lowerCasedName &&\n null !== value &&\n void 0 !== value &&\n \"string\" !== typeof value\n )\n return (\n console.error(\n \"Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.\",\n typeof value\n ),\n (warnedProperties[name] = !0)\n );\n if (\"number\" === typeof value && isNaN(value))\n return (\n console.error(\n \"Received NaN for the `%s` attribute. If this is expected, cast the value to a string.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n if (\n ((lowerCasedName = possibleStandardNames[lowerCasedName]),\n lowerCasedName !== name)\n )\n return (\n console.error(\n \"Invalid DOM property `%s`. Did you mean `%s`?\",\n name,\n lowerCasedName\n ),\n (warnedProperties[name] = !0)\n );\n } else if (name !== lowerCasedName)\n return (\n console.error(\n \"React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\",\n name,\n lowerCasedName\n ),\n (warnedProperties[name] = !0)\n );\n switch (name) {\n case \"dangerouslySetInnerHTML\":\n case \"children\":\n case \"style\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n return !0;\n case \"innerText\":\n case \"textContent\":\n return !0;\n }\n switch (typeof value) {\n case \"boolean\":\n switch (name) {\n case \"autoFocus\":\n case \"checked\":\n case \"multiple\":\n case \"muted\":\n case \"selected\":\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n case \"capture\":\n case \"download\":\n case \"inert\":\n return !0;\n default:\n lowerCasedName = name.toLowerCase().slice(0, 5);\n if (\"data-\" === lowerCasedName || \"aria-\" === lowerCasedName)\n return !0;\n value\n ? console.error(\n 'Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.',\n value,\n name,\n name,\n value,\n name\n )\n : console.error(\n 'Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.\\n\\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.',\n value,\n name,\n name,\n value,\n name,\n name,\n name\n );\n return (warnedProperties[name] = !0);\n }\n case \"function\":\n case \"symbol\":\n return (warnedProperties[name] = !0), !1;\n case \"string\":\n if (\"false\" === value || \"true\" === value) {\n switch (name) {\n case \"checked\":\n case \"selected\":\n case \"multiple\":\n case \"muted\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n case \"inert\":\n break;\n default:\n return !0;\n }\n console.error(\n \"Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?\",\n value,\n name,\n \"false\" === value\n ? \"The browser will interpret it as a truthy value.\"\n : 'Although this works, it will not work as expected if you pass the string \"false\".',\n name,\n value\n );\n warnedProperties[name] = !0;\n }\n }\n return !0;\n }\n function warnUnknownProperties(type, props, eventRegistry) {\n var unknownProps = [],\n key;\n for (key in props)\n validateProperty(type, key, props[key], eventRegistry) ||\n unknownProps.push(key);\n props = unknownProps\n .map(function (prop) {\n return \"`\" + prop + \"`\";\n })\n .join(\", \");\n 1 === unknownProps.length\n ? console.error(\n \"Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://react.dev/link/attribute-behavior \",\n props,\n type\n )\n : 1 < unknownProps.length &&\n console.error(\n \"Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://react.dev/link/attribute-behavior \",\n props,\n type\n );\n }\n function camelize(string) {\n return string.replace(hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n }\n function escapeTextForBrowser(text) {\n if (\n \"boolean\" === typeof text ||\n \"number\" === typeof text ||\n \"bigint\" === typeof text\n )\n return \"\" + text;\n checkHtmlStringCoercion(text);\n text = \"\" + text;\n var match = matchHtmlRegExp.exec(text);\n if (match) {\n var html = \"\",\n index,\n lastIndex = 0;\n for (index = match.index; index < text.length; index++) {\n switch (text.charCodeAt(index)) {\n case 34:\n match = \"&quot;\";\n break;\n case 38:\n match = \"&amp;\";\n break;\n case 39:\n match = \"&#x27;\";\n break;\n case 60:\n match = \"&lt;\";\n break;\n case 62:\n match = \"&gt;\";\n break;\n default:\n continue;\n }\n lastIndex !== index && (html += text.slice(lastIndex, index));\n lastIndex = index + 1;\n html += match;\n }\n text = lastIndex !== index ? html + text.slice(lastIndex, index) : html;\n }\n return text;\n }\n function sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n }\n function escapeEntireInlineScriptContent(scriptText) {\n checkHtmlStringCoercion(scriptText);\n return (\"\" + scriptText).replace(scriptRegex, scriptReplacer);\n }\n function createResumableState(\n identifierPrefix,\n externalRuntimeConfig,\n bootstrapScriptContent,\n bootstrapScripts,\n bootstrapModules\n ) {\n return {\n idPrefix: void 0 === identifierPrefix ? \"\" : identifierPrefix,\n nextFormID: 0,\n streamingFormat: 0,\n bootstrapScriptContent: bootstrapScriptContent,\n bootstrapScripts: bootstrapScripts,\n bootstrapModules: bootstrapModules,\n instructions: NothingSent,\n hasBody: !1,\n hasHtml: !1,\n unknownResources: {},\n dnsResources: {},\n connectResources: { default: {}, anonymous: {}, credentials: {} },\n imageResources: {},\n styleResources: {},\n scriptResources: {},\n moduleUnknownResources: {},\n moduleScriptResources: {}\n };\n }\n function createFormatContext(insertionMode, selectedValue, tagScope) {\n return {\n insertionMode: insertionMode,\n selectedValue: selectedValue,\n tagScope: tagScope\n };\n }\n function getChildFormatContext(parentContext, type, props) {\n switch (type) {\n case \"noscript\":\n return createFormatContext(\n HTML_MODE,\n null,\n parentContext.tagScope | 1\n );\n case \"select\":\n return createFormatContext(\n HTML_MODE,\n null != props.value ? props.value : props.defaultValue,\n parentContext.tagScope\n );\n case \"svg\":\n return createFormatContext(SVG_MODE, null, parentContext.tagScope);\n case \"picture\":\n return createFormatContext(\n HTML_MODE,\n null,\n parentContext.tagScope | 2\n );\n case \"math\":\n return createFormatContext(MATHML_MODE, null, parentContext.tagScope);\n case \"foreignObject\":\n return createFormatContext(HTML_MODE, null, parentContext.tagScope);\n case \"table\":\n return createFormatContext(\n HTML_TABLE_MODE,\n null,\n parentContext.tagScope\n );\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n return createFormatContext(\n HTML_TABLE_BODY_MODE,\n null,\n parentContext.tagScope\n );\n case \"colgroup\":\n return createFormatContext(\n HTML_COLGROUP_MODE,\n null,\n parentContext.tagScope\n );\n case \"tr\":\n return createFormatContext(\n HTML_TABLE_ROW_MODE,\n null,\n parentContext.tagScope\n );\n }\n return parentContext.insertionMode >= HTML_TABLE_MODE\n ? createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext.insertionMode === ROOT_HTML_MODE\n ? \"html\" === type\n ? createFormatContext(HTML_HTML_MODE, null, parentContext.tagScope)\n : createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext.insertionMode === HTML_HTML_MODE\n ? createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext;\n }\n function pushStyleAttribute(target, style) {\n if (\"object\" !== typeof style)\n throw Error(\n \"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.\"\n );\n var isFirst = !0,\n styleName;\n for (styleName in style)\n if (hasOwnProperty.call(style, styleName)) {\n var styleValue = style[styleName];\n if (\n null != styleValue &&\n \"boolean\" !== typeof styleValue &&\n \"\" !== styleValue\n ) {\n if (0 === styleName.indexOf(\"--\")) {\n var nameChunk = escapeTextForBrowser(styleName);\n checkCSSPropertyStringCoercion(styleValue, styleName);\n styleValue = escapeTextForBrowser((\"\" + styleValue).trim());\n } else {\n nameChunk = styleName;\n var value = styleValue;\n if (-1 < nameChunk.indexOf(\"-\")) {\n var name = nameChunk;\n (warnedStyleNames.hasOwnProperty(name) &&\n warnedStyleNames[name]) ||\n ((warnedStyleNames[name] = !0),\n console.error(\n \"Unsupported style property %s. Did you mean %s?\",\n name,\n camelize(name.replace(msPattern$1, \"ms-\"))\n ));\n } else if (badVendoredStyleNamePattern.test(nameChunk))\n (name = nameChunk),\n (warnedStyleNames.hasOwnProperty(name) &&\n warnedStyleNames[name]) ||\n ((warnedStyleNames[name] = !0),\n console.error(\n \"Unsupported vendor-prefixed style property %s. Did you mean %s?\",\n name,\n name.charAt(0).toUpperCase() + name.slice(1)\n ));\n else if (badStyleValueWithSemicolonPattern.test(value)) {\n name = nameChunk;\n var value$jscomp$0 = value;\n (warnedStyleValues.hasOwnProperty(value$jscomp$0) &&\n warnedStyleValues[value$jscomp$0]) ||\n ((warnedStyleValues[value$jscomp$0] = !0),\n console.error(\n 'Style property values shouldn\\'t contain a semicolon. Try \"%s: %s\" instead.',\n name,\n value$jscomp$0.replace(\n badStyleValueWithSemicolonPattern,\n \"\"\n )\n ));\n }\n \"number\" === typeof value &&\n (isNaN(value)\n ? warnedForNaNValue ||\n ((warnedForNaNValue = !0),\n console.error(\n \"`NaN` is an invalid value for the `%s` css style property.\",\n nameChunk\n ))\n : isFinite(value) ||\n warnedForInfinityValue ||\n ((warnedForInfinityValue = !0),\n console.error(\n \"`Infinity` is an invalid value for the `%s` css style property.\",\n nameChunk\n )));\n nameChunk = styleName;\n value = styleNameCache.get(nameChunk);\n void 0 !== value\n ? (nameChunk = value)\n : ((value = escapeTextForBrowser(\n nameChunk\n .replace(uppercasePattern, \"-$1\")\n .toLowerCase()\n .replace(msPattern, \"-ms-\")\n )),\n styleNameCache.set(nameChunk, value),\n (nameChunk = value));\n \"number\" === typeof styleValue\n ? (styleValue =\n 0 === styleValue || unitlessNumbers.has(styleName)\n ? \"\" + styleValue\n : styleValue + \"px\")\n : (checkCSSPropertyStringCoercion(styleValue, styleName),\n (styleValue = escapeTextForBrowser(\n (\"\" + styleValue).trim()\n )));\n }\n isFirst\n ? ((isFirst = !1),\n target.push(\n styleAttributeStart,\n nameChunk,\n styleAssign,\n styleValue\n ))\n : target.push(styleSeparator, nameChunk, styleAssign, styleValue);\n }\n }\n isFirst || target.push(attributeEnd);\n }\n function pushBooleanAttribute(target, name, value) {\n value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(attributeSeparator, name, attributeEmptyString);\n }\n function pushStringAttribute(target, name, value) {\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n \"boolean\" !== typeof value &&\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n }\n function pushAdditionalFormField(value, key) {\n this.push('<input type=\"hidden\"');\n validateAdditionalFormField(value);\n pushStringAttribute(this, \"name\", key);\n pushStringAttribute(this, \"value\", value);\n this.push(endOfStartTagSelfClosing);\n }\n function validateAdditionalFormField(value) {\n if (\"string\" !== typeof value)\n throw Error(\n \"File/Blob fields are not yet supported in progressive forms. Will fallback to client hydration.\"\n );\n }\n function getCustomFormFields(resumableState, formAction) {\n if (\"function\" === typeof formAction.$$FORM_ACTION) {\n var id = resumableState.nextFormID++;\n resumableState = resumableState.idPrefix + id;\n try {\n var customFields = formAction.$$FORM_ACTION(resumableState);\n if (customFields) {\n var formData = customFields.data;\n null != formData && formData.forEach(validateAdditionalFormField);\n }\n return customFields;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n \"function\" === typeof x.then\n )\n throw x;\n console.error(\n \"Failed to serialize an action for progressive enhancement:\\n%s\",\n x\n );\n }\n }\n return null;\n }\n function pushFormActionAttribute(\n target,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n ) {\n var formData = null;\n if (\"function\" === typeof formAction) {\n null === name ||\n didWarnFormActionName ||\n ((didWarnFormActionName = !0),\n console.error(\n 'Cannot specify a \"name\" prop for a button that specifies a function as a formAction. React needs it to encode which action should be invoked. It will get overridden.'\n ));\n (null === formEncType && null === formMethod) ||\n didWarnFormActionMethod ||\n ((didWarnFormActionMethod = !0),\n console.error(\n \"Cannot specify a formEncType or formMethod for a button that specifies a function as a formAction. React provides those automatically. They will get overridden.\"\n ));\n null === formTarget ||\n didWarnFormActionTarget ||\n ((didWarnFormActionTarget = !0),\n console.error(\n \"Cannot specify a formTarget for a button that specifies a function as a formAction. The function will always be executed in the same window.\"\n ));\n var customFields = getCustomFormFields(resumableState, formAction);\n null !== customFields\n ? ((name = customFields.name),\n (formAction = customFields.action || \"\"),\n (formEncType = customFields.encType),\n (formMethod = customFields.method),\n (formTarget = customFields.target),\n (formData = customFields.data))\n : (target.push(\n attributeSeparator,\n \"formAction\",\n attributeAssign,\n actionJavaScriptURL,\n attributeEnd\n ),\n (formTarget = formMethod = formEncType = formAction = name = null),\n injectFormReplayingRuntime(resumableState, renderState));\n }\n null != name && pushAttribute(target, \"name\", name);\n null != formAction && pushAttribute(target, \"formAction\", formAction);\n null != formEncType && pushAttribute(target, \"formEncType\", formEncType);\n null != formMethod && pushAttribute(target, \"formMethod\", formMethod);\n null != formTarget && pushAttribute(target, \"formTarget\", formTarget);\n return formData;\n }\n function pushAttribute(target, name, value) {\n switch (name) {\n case \"className\":\n pushStringAttribute(target, \"class\", value);\n break;\n case \"tabIndex\":\n pushStringAttribute(target, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n pushStringAttribute(target, name, value);\n break;\n case \"style\":\n pushStyleAttribute(target, value);\n break;\n case \"src\":\n case \"href\":\n if (\"\" === value) {\n \"src\" === name\n ? console.error(\n 'An empty string (\"\") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n name,\n name\n )\n : console.error(\n 'An empty string (\"\") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n name,\n name\n );\n break;\n }\n case \"action\":\n case \"formAction\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n )\n break;\n checkAttributeStringCoercion(value, name);\n value = sanitizeURL(\"\" + value);\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"autoFocus\":\n case \"multiple\":\n case \"muted\":\n pushBooleanAttribute(target, name.toLowerCase(), value);\n break;\n case \"xlinkHref\":\n if (\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n )\n break;\n checkAttributeStringCoercion(value, name);\n value = sanitizeURL(\"\" + value);\n target.push(\n attributeSeparator,\n \"xlink:href\",\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"inert\":\n \"\" !== value ||\n didWarnForNewBooleanPropsWithEmptyValue[name] ||\n ((didWarnForNewBooleanPropsWithEmptyValue[name] = !0),\n console.error(\n \"Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.\",\n name\n ));\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(attributeSeparator, name, attributeEmptyString);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? target.push(attributeSeparator, name, attributeEmptyString)\n : !1 !== value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value &&\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"rowSpan\":\n case \"start\":\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value) ||\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n break;\n case \"xlinkActuate\":\n pushStringAttribute(target, \"xlink:actuate\", value);\n break;\n case \"xlinkArcrole\":\n pushStringAttribute(target, \"xlink:arcrole\", value);\n break;\n case \"xlinkRole\":\n pushStringAttribute(target, \"xlink:role\", value);\n break;\n case \"xlinkShow\":\n pushStringAttribute(target, \"xlink:show\", value);\n break;\n case \"xlinkTitle\":\n pushStringAttribute(target, \"xlink:title\", value);\n break;\n case \"xlinkType\":\n pushStringAttribute(target, \"xlink:type\", value);\n break;\n case \"xmlBase\":\n pushStringAttribute(target, \"xml:base\", value);\n break;\n case \"xmlLang\":\n pushStringAttribute(target, \"xml:lang\", value);\n break;\n case \"xmlSpace\":\n pushStringAttribute(target, \"xml:space\", value);\n break;\n default:\n if (\n !(2 < name.length) ||\n (\"o\" !== name[0] && \"O\" !== name[0]) ||\n (\"n\" !== name[1] && \"N\" !== name[1])\n )\n if (\n ((name = aliases.get(name) || name), isAttributeNameSafe(name))\n ) {\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n case \"boolean\":\n var prefix = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix && \"aria-\" !== prefix) return;\n }\n target.push(\n attributeSeparator,\n name,\n attributeAssign,\n escapeTextForBrowser(value),\n attributeEnd\n );\n }\n }\n }\n function pushInnerHTML(target, innerHTML, children) {\n if (null != innerHTML) {\n if (null != children)\n throw Error(\n \"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\"\n );\n if (\"object\" !== typeof innerHTML || !(\"__html\" in innerHTML))\n throw Error(\n \"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.\"\n );\n innerHTML = innerHTML.__html;\n null !== innerHTML &&\n void 0 !== innerHTML &&\n (checkHtmlStringCoercion(innerHTML), target.push(\"\" + innerHTML));\n }\n }\n function checkSelectProp(props, propName) {\n var value = props[propName];\n null != value &&\n ((value = isArrayImpl(value)),\n props.multiple && !value\n ? console.error(\n \"The `%s` prop supplied to <select> must be an array if `multiple` is true.\",\n propName\n )\n : !props.multiple &&\n value &&\n console.error(\n \"The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.\",\n propName\n ));\n }\n function flattenOptionChildren(children) {\n var content = \"\";\n React.Children.forEach(children, function (child) {\n null != child &&\n ((content += child),\n didWarnInvalidOptionChildren ||\n \"string\" === typeof child ||\n \"number\" === typeof child ||\n \"bigint\" === typeof child ||\n ((didWarnInvalidOptionChildren = !0),\n console.error(\n \"Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>.\"\n )));\n });\n return content;\n }\n function injectFormReplayingRuntime(resumableState, renderState) {\n (resumableState.instructions & 16) === NothingSent &&\n ((resumableState.instructions |= 16),\n renderState.bootstrapChunks.unshift(\n renderState.startInlineScript,\n formReplayingRuntimeScript,\n \"\\x3c/script>\"\n ));\n }\n function pushLinkImpl(target, props) {\n target.push(startChunkForTag(\"link\"));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"link is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTagSelfClosing);\n return null;\n }\n function escapeStyleTextContent(styleText) {\n checkHtmlStringCoercion(styleText);\n return (\"\" + styleText).replace(styleRegex, styleReplacer);\n }\n function pushSelfClosing(target, props, tag) {\n target.push(startChunkForTag(tag));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n tag +\n \" is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTagSelfClosing);\n return null;\n }\n function pushTitleImpl(target, props) {\n target.push(startChunkForTag(\"title\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n props = Array.isArray(children)\n ? 2 > children.length\n ? children[0]\n : null\n : children;\n \"function\" !== typeof props &&\n \"symbol\" !== typeof props &&\n null !== props &&\n void 0 !== props &&\n target.push(escapeTextForBrowser(\"\" + props));\n pushInnerHTML(target, innerHTML, children);\n target.push(endChunkForTag(\"title\"));\n return null;\n }\n function pushScriptImpl(target, props) {\n target.push(startChunkForTag(\"script\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n null != children &&\n \"string\" !== typeof children &&\n ((props =\n \"number\" === typeof children\n ? \"a number for children\"\n : Array.isArray(children)\n ? \"an array for children\"\n : \"something unexpected for children\"),\n console.error(\n \"A script element was rendered with %s. If script element has children it must be a single string. Consider using dangerouslySetInnerHTML or passing a plain string as children.\",\n props\n ));\n pushInnerHTML(target, innerHTML, children);\n \"string\" === typeof children &&\n target.push(escapeEntireInlineScriptContent(children));\n target.push(endChunkForTag(\"script\"));\n return null;\n }\n function pushStartGenericElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = (tag = null),\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n pushInnerHTML(target, innerHTML, tag);\n return \"string\" === typeof tag\n ? (target.push(escapeTextForBrowser(tag)), null)\n : tag;\n }\n function startChunkForTag(tag) {\n var tagStartChunk = validatedTagCache.get(tag);\n if (void 0 === tagStartChunk) {\n if (!VALID_TAG_REGEX.test(tag)) throw Error(\"Invalid tag: \" + tag);\n tagStartChunk = \"<\" + tag;\n validatedTagCache.set(tag, tagStartChunk);\n }\n return tagStartChunk;\n }\n function pushStartInstance(\n target$jscomp$0,\n type,\n props,\n resumableState,\n renderState,\n hoistableState,\n formatContext,\n textEmbedded,\n isFallback\n ) {\n validateProperties$2(type, props);\n (\"input\" !== type && \"textarea\" !== type && \"select\" !== type) ||\n null == props ||\n null !== props.value ||\n didWarnValueNull ||\n ((didWarnValueNull = !0),\n \"select\" === type && props.multiple\n ? console.error(\n \"`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.\",\n type\n )\n : console.error(\n \"`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.\",\n type\n ));\n b: if (-1 === type.indexOf(\"-\")) var JSCompiler_inline_result = !1;\n else\n switch (type) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n JSCompiler_inline_result = !1;\n break b;\n default:\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result ||\n \"string\" === typeof props.is ||\n warnUnknownProperties(type, props, null);\n !props.suppressContentEditableWarning &&\n props.contentEditable &&\n null != props.children &&\n console.error(\n \"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional.\"\n );\n formatContext.insertionMode !== SVG_MODE &&\n formatContext.insertionMode !== MATHML_MODE &&\n -1 === type.indexOf(\"-\") &&\n type.toLowerCase() !== type &&\n console.error(\n \"<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.\",\n type\n );\n switch (type) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n break;\n case \"a\":\n target$jscomp$0.push(startChunkForTag(\"a\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n case \"href\":\n \"\" === propValue\n ? pushStringAttribute(target$jscomp$0, \"href\", \"\")\n : pushAttribute(target$jscomp$0, propKey, propValue);\n break;\n default:\n pushAttribute(target$jscomp$0, propKey, propValue);\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML, children);\n if (\"string\" === typeof children) {\n target$jscomp$0.push(escapeTextForBrowser(children));\n var JSCompiler_inline_result$jscomp$0 = null;\n } else JSCompiler_inline_result$jscomp$0 = children;\n return JSCompiler_inline_result$jscomp$0;\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"select\":\n checkControlledValueProps(\"select\", props);\n checkSelectProp(props, \"value\");\n checkSelectProp(props, \"defaultValue\");\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnDefaultSelectValue ||\n (console.error(\n \"Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://react.dev/link/controlled-components\"\n ),\n (didWarnDefaultSelectValue = !0));\n target$jscomp$0.push(startChunkForTag(\"select\"));\n var children$jscomp$0 = null,\n innerHTML$jscomp$0 = null,\n propKey$jscomp$0;\n for (propKey$jscomp$0 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$0)) {\n var propValue$jscomp$0 = props[propKey$jscomp$0];\n if (null != propValue$jscomp$0)\n switch (propKey$jscomp$0) {\n case \"children\":\n children$jscomp$0 = propValue$jscomp$0;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$0 = propValue$jscomp$0;\n break;\n case \"defaultValue\":\n case \"value\":\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$0,\n propValue$jscomp$0\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$0, children$jscomp$0);\n return children$jscomp$0;\n case \"option\":\n var selectedValue = formatContext.selectedValue;\n target$jscomp$0.push(startChunkForTag(\"option\"));\n var children$jscomp$1 = null,\n value = null,\n selected = null,\n innerHTML$jscomp$1 = null,\n propKey$jscomp$1;\n for (propKey$jscomp$1 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$1)) {\n var propValue$jscomp$1 = props[propKey$jscomp$1];\n if (null != propValue$jscomp$1)\n switch (propKey$jscomp$1) {\n case \"children\":\n children$jscomp$1 = propValue$jscomp$1;\n break;\n case \"selected\":\n selected = propValue$jscomp$1;\n didWarnSelectedSetOnOption ||\n (console.error(\n \"Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.\"\n ),\n (didWarnSelectedSetOnOption = !0));\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$1 = propValue$jscomp$1;\n break;\n case \"value\":\n value = propValue$jscomp$1;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$1,\n propValue$jscomp$1\n );\n }\n }\n if (null != selectedValue) {\n if (null !== value) {\n checkAttributeStringCoercion(value, \"value\");\n var stringValue = \"\" + value;\n } else\n null === innerHTML$jscomp$1 ||\n didWarnInvalidOptionInnerHTML ||\n ((didWarnInvalidOptionInnerHTML = !0),\n console.error(\n \"Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.\"\n )),\n (stringValue = flattenOptionChildren(children$jscomp$1));\n if (isArrayImpl(selectedValue))\n for (var i = 0; i < selectedValue.length; i++) {\n if (\n (checkAttributeStringCoercion(selectedValue[i], \"value\"),\n \"\" + selectedValue[i] === stringValue)\n ) {\n target$jscomp$0.push(' selected=\"\"');\n break;\n }\n }\n else\n checkAttributeStringCoercion(selectedValue, \"select.value\"),\n \"\" + selectedValue === stringValue &&\n target$jscomp$0.push(' selected=\"\"');\n } else selected && target$jscomp$0.push(' selected=\"\"');\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$1, children$jscomp$1);\n return children$jscomp$1;\n case \"textarea\":\n checkControlledValueProps(\"textarea\", props);\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnDefaultTextareaValue ||\n (console.error(\n \"Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://react.dev/link/controlled-components\"\n ),\n (didWarnDefaultTextareaValue = !0));\n target$jscomp$0.push(startChunkForTag(\"textarea\"));\n var value$jscomp$0 = null,\n defaultValue = null,\n children$jscomp$2 = null,\n propKey$jscomp$2;\n for (propKey$jscomp$2 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$2)) {\n var propValue$jscomp$2 = props[propKey$jscomp$2];\n if (null != propValue$jscomp$2)\n switch (propKey$jscomp$2) {\n case \"children\":\n children$jscomp$2 = propValue$jscomp$2;\n break;\n case \"value\":\n value$jscomp$0 = propValue$jscomp$2;\n break;\n case \"defaultValue\":\n defaultValue = propValue$jscomp$2;\n break;\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"`dangerouslySetInnerHTML` does not make sense on <textarea>.\"\n );\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$2,\n propValue$jscomp$2\n );\n }\n }\n null === value$jscomp$0 &&\n null !== defaultValue &&\n (value$jscomp$0 = defaultValue);\n target$jscomp$0.push(endOfStartTag);\n if (null != children$jscomp$2) {\n console.error(\n \"Use the `defaultValue` or `value` props instead of setting children on <textarea>.\"\n );\n if (null != value$jscomp$0)\n throw Error(\n \"If you supply `defaultValue` on a <textarea>, do not pass children.\"\n );\n if (isArrayImpl(children$jscomp$2)) {\n if (1 < children$jscomp$2.length)\n throw Error(\"<textarea> can only have at most one child.\");\n checkHtmlStringCoercion(children$jscomp$2[0]);\n value$jscomp$0 = \"\" + children$jscomp$2[0];\n }\n checkHtmlStringCoercion(children$jscomp$2);\n value$jscomp$0 = \"\" + children$jscomp$2;\n }\n \"string\" === typeof value$jscomp$0 &&\n \"\\n\" === value$jscomp$0[0] &&\n target$jscomp$0.push(leadingNewline);\n null !== value$jscomp$0 &&\n (checkAttributeStringCoercion(value$jscomp$0, \"value\"),\n target$jscomp$0.push(escapeTextForBrowser(\"\" + value$jscomp$0)));\n return null;\n case \"input\":\n checkControlledValueProps(\"input\", props);\n target$jscomp$0.push(startChunkForTag(\"input\"));\n var name = null,\n formAction = null,\n formEncType = null,\n formMethod = null,\n formTarget = null,\n value$jscomp$1 = null,\n defaultValue$jscomp$0 = null,\n checked = null,\n defaultChecked = null,\n propKey$jscomp$3;\n for (propKey$jscomp$3 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$3)) {\n var propValue$jscomp$3 = props[propKey$jscomp$3];\n if (null != propValue$jscomp$3)\n switch (propKey$jscomp$3) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"input is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n case \"name\":\n name = propValue$jscomp$3;\n break;\n case \"formAction\":\n formAction = propValue$jscomp$3;\n break;\n case \"formEncType\":\n formEncType = propValue$jscomp$3;\n break;\n case \"formMethod\":\n formMethod = propValue$jscomp$3;\n break;\n case \"formTarget\":\n formTarget = propValue$jscomp$3;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$jscomp$3;\n break;\n case \"defaultValue\":\n defaultValue$jscomp$0 = propValue$jscomp$3;\n break;\n case \"checked\":\n checked = propValue$jscomp$3;\n break;\n case \"value\":\n value$jscomp$1 = propValue$jscomp$3;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$3,\n propValue$jscomp$3\n );\n }\n }\n null === formAction ||\n \"image\" === props.type ||\n \"submit\" === props.type ||\n didWarnFormActionType ||\n ((didWarnFormActionType = !0),\n console.error(\n 'An input can only specify a formAction along with type=\"submit\" or type=\"image\".'\n ));\n var formData = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n );\n null === checked ||\n null === defaultChecked ||\n didWarnDefaultChecked ||\n (console.error(\n \"%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n \"A component\",\n props.type\n ),\n (didWarnDefaultChecked = !0));\n null === value$jscomp$1 ||\n null === defaultValue$jscomp$0 ||\n didWarnDefaultInputValue ||\n (console.error(\n \"%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n \"A component\",\n props.type\n ),\n (didWarnDefaultInputValue = !0));\n null !== checked\n ? pushBooleanAttribute(target$jscomp$0, \"checked\", checked)\n : null !== defaultChecked &&\n pushBooleanAttribute(target$jscomp$0, \"checked\", defaultChecked);\n null !== value$jscomp$1\n ? pushAttribute(target$jscomp$0, \"value\", value$jscomp$1)\n : null !== defaultValue$jscomp$0 &&\n pushAttribute(target$jscomp$0, \"value\", defaultValue$jscomp$0);\n target$jscomp$0.push(endOfStartTagSelfClosing);\n null != formData &&\n formData.forEach(pushAdditionalFormField, target$jscomp$0);\n return null;\n case \"button\":\n target$jscomp$0.push(startChunkForTag(\"button\"));\n var children$jscomp$3 = null,\n innerHTML$jscomp$2 = null,\n name$jscomp$0 = null,\n formAction$jscomp$0 = null,\n formEncType$jscomp$0 = null,\n formMethod$jscomp$0 = null,\n formTarget$jscomp$0 = null,\n propKey$jscomp$4;\n for (propKey$jscomp$4 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$4)) {\n var propValue$jscomp$4 = props[propKey$jscomp$4];\n if (null != propValue$jscomp$4)\n switch (propKey$jscomp$4) {\n case \"children\":\n children$jscomp$3 = propValue$jscomp$4;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$2 = propValue$jscomp$4;\n break;\n case \"name\":\n name$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formAction\":\n formAction$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formEncType\":\n formEncType$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formMethod\":\n formMethod$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formTarget\":\n formTarget$jscomp$0 = propValue$jscomp$4;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$4,\n propValue$jscomp$4\n );\n }\n }\n null === formAction$jscomp$0 ||\n null == props.type ||\n \"submit\" === props.type ||\n didWarnFormActionType ||\n ((didWarnFormActionType = !0),\n console.error(\n 'A button can only specify a formAction along with type=\"submit\" or no type.'\n ));\n var formData$jscomp$0 = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction$jscomp$0,\n formEncType$jscomp$0,\n formMethod$jscomp$0,\n formTarget$jscomp$0,\n name$jscomp$0\n );\n target$jscomp$0.push(endOfStartTag);\n null != formData$jscomp$0 &&\n formData$jscomp$0.forEach(pushAdditionalFormField, target$jscomp$0);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$2, children$jscomp$3);\n if (\"string\" === typeof children$jscomp$3) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$3));\n var JSCompiler_inline_result$jscomp$1 = null;\n } else JSCompiler_inline_result$jscomp$1 = children$jscomp$3;\n return JSCompiler_inline_result$jscomp$1;\n case \"form\":\n target$jscomp$0.push(startChunkForTag(\"form\"));\n var children$jscomp$4 = null,\n innerHTML$jscomp$3 = null,\n formAction$jscomp$1 = null,\n formEncType$jscomp$1 = null,\n formMethod$jscomp$1 = null,\n formTarget$jscomp$1 = null,\n propKey$jscomp$5;\n for (propKey$jscomp$5 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$5)) {\n var propValue$jscomp$5 = props[propKey$jscomp$5];\n if (null != propValue$jscomp$5)\n switch (propKey$jscomp$5) {\n case \"children\":\n children$jscomp$4 = propValue$jscomp$5;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$3 = propValue$jscomp$5;\n break;\n case \"action\":\n formAction$jscomp$1 = propValue$jscomp$5;\n break;\n case \"encType\":\n formEncType$jscomp$1 = propValue$jscomp$5;\n break;\n case \"method\":\n formMethod$jscomp$1 = propValue$jscomp$5;\n break;\n case \"target\":\n formTarget$jscomp$1 = propValue$jscomp$5;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$5,\n propValue$jscomp$5\n );\n }\n }\n var formData$jscomp$1 = null,\n formActionName = null;\n if (\"function\" === typeof formAction$jscomp$1) {\n (null === formEncType$jscomp$1 && null === formMethod$jscomp$1) ||\n didWarnFormActionMethod ||\n ((didWarnFormActionMethod = !0),\n console.error(\n \"Cannot specify a encType or method for a form that specifies a function as the action. React provides those automatically. They will get overridden.\"\n ));\n null === formTarget$jscomp$1 ||\n didWarnFormActionTarget ||\n ((didWarnFormActionTarget = !0),\n console.error(\n \"Cannot specify a target for a form that specifies a function as the action. The function will always be executed in the same window.\"\n ));\n var customFields = getCustomFormFields(\n resumableState,\n formAction$jscomp$1\n );\n null !== customFields\n ? ((formAction$jscomp$1 = customFields.action || \"\"),\n (formEncType$jscomp$1 = customFields.encType),\n (formMethod$jscomp$1 = customFields.method),\n (formTarget$jscomp$1 = customFields.target),\n (formData$jscomp$1 = customFields.data),\n (formActionName = customFields.name))\n : (target$jscomp$0.push(\n attributeSeparator,\n \"action\",\n attributeAssign,\n actionJavaScriptURL,\n attributeEnd\n ),\n (formTarget$jscomp$1 =\n formMethod$jscomp$1 =\n formEncType$jscomp$1 =\n formAction$jscomp$1 =\n null),\n injectFormReplayingRuntime(resumableState, renderState));\n }\n null != formAction$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"action\", formAction$jscomp$1);\n null != formEncType$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"encType\", formEncType$jscomp$1);\n null != formMethod$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"method\", formMethod$jscomp$1);\n null != formTarget$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"target\", formTarget$jscomp$1);\n target$jscomp$0.push(endOfStartTag);\n null !== formActionName &&\n (target$jscomp$0.push('<input type=\"hidden\"'),\n pushStringAttribute(target$jscomp$0, \"name\", formActionName),\n target$jscomp$0.push(endOfStartTagSelfClosing),\n null != formData$jscomp$1 &&\n formData$jscomp$1.forEach(\n pushAdditionalFormField,\n target$jscomp$0\n ));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$3, children$jscomp$4);\n if (\"string\" === typeof children$jscomp$4) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$4));\n var JSCompiler_inline_result$jscomp$2 = null;\n } else JSCompiler_inline_result$jscomp$2 = children$jscomp$4;\n return JSCompiler_inline_result$jscomp$2;\n case \"menuitem\":\n target$jscomp$0.push(startChunkForTag(\"menuitem\"));\n for (var propKey$jscomp$6 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$6)) {\n var propValue$jscomp$6 = props[propKey$jscomp$6];\n if (null != propValue$jscomp$6)\n switch (propKey$jscomp$6) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"menuitems cannot have `children` nor `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$6,\n propValue$jscomp$6\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n return null;\n case \"object\":\n target$jscomp$0.push(startChunkForTag(\"object\"));\n var children$jscomp$5 = null,\n innerHTML$jscomp$4 = null,\n propKey$jscomp$7;\n for (propKey$jscomp$7 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$7)) {\n var propValue$jscomp$7 = props[propKey$jscomp$7];\n if (null != propValue$jscomp$7)\n switch (propKey$jscomp$7) {\n case \"children\":\n children$jscomp$5 = propValue$jscomp$7;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$4 = propValue$jscomp$7;\n break;\n case \"data\":\n checkAttributeStringCoercion(propValue$jscomp$7, \"data\");\n var sanitizedValue = sanitizeURL(\"\" + propValue$jscomp$7);\n if (\"\" === sanitizedValue) {\n console.error(\n 'An empty string (\"\") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n propKey$jscomp$7,\n propKey$jscomp$7\n );\n break;\n }\n target$jscomp$0.push(\n attributeSeparator,\n \"data\",\n attributeAssign,\n escapeTextForBrowser(sanitizedValue),\n attributeEnd\n );\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$7,\n propValue$jscomp$7\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$4, children$jscomp$5);\n if (\"string\" === typeof children$jscomp$5) {\n target$jscomp$0.push(escapeTextForBrowser(children$jscomp$5));\n var JSCompiler_inline_result$jscomp$3 = null;\n } else JSCompiler_inline_result$jscomp$3 = children$jscomp$5;\n return JSCompiler_inline_result$jscomp$3;\n case \"title\":\n var insertionMode = formatContext.insertionMode,\n noscriptTagInScope = !!(formatContext.tagScope & 1);\n if (hasOwnProperty.call(props, \"children\")) {\n var children$jscomp$6 = props.children,\n child = Array.isArray(children$jscomp$6)\n ? 2 > children$jscomp$6.length\n ? children$jscomp$6[0]\n : null\n : children$jscomp$6;\n Array.isArray(children$jscomp$6) && 1 < children$jscomp$6.length\n ? console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an Array with length %s instead. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert `children` of <title> tags to a single string value which is why Arrays of length greater than 1 are not supported. When using JSX it can be commong to combine text nodes and value nodes. For example: <title>hello {nameOfUser}</title>. While not immediately apparent, `children` in this case is an Array with length 2. If your `children` prop is using this form try rewriting it using a template string: <title>{`hello ${nameOfUser}`}</title>.\",\n children$jscomp$6.length\n )\n : \"function\" === typeof child || \"symbol\" === typeof child\n ? console.error(\n \"React expect children of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found %s instead. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value.\",\n \"function\" === typeof child ? \"a Function\" : \"a Sybmol\"\n )\n : child &&\n child.toString === {}.toString &&\n (null != child.$$typeof\n ? console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an object that appears to be a React element which never implements a suitable `toString` method. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value which is why rendering React elements is not supported. If the `children` of <title> is a React Component try moving the <title> tag into that component. If the `children` of <title> is some HTML markup change it to be Text only to be valid HTML.\"\n )\n : console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an object that does not implement a suitable `toString` method. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value. Using the default `toString` method available on every object is almost certainly an error. Consider whether the `children` of this <title> is an object in error and change it to a string or number value if so. Otherwise implement a `toString` method that React can use to produce a valid <title>.\"\n ));\n }\n if (\n insertionMode === SVG_MODE ||\n noscriptTagInScope ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$4 = pushTitleImpl(\n target$jscomp$0,\n props\n );\n else\n isFallback\n ? (JSCompiler_inline_result$jscomp$4 = null)\n : (pushTitleImpl(renderState.hoistableChunks, props),\n (JSCompiler_inline_result$jscomp$4 = void 0));\n return JSCompiler_inline_result$jscomp$4;\n case \"link\":\n var rel = props.rel,\n href = props.href,\n precedence = props.precedence;\n if (\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp ||\n \"string\" !== typeof rel ||\n \"string\" !== typeof href ||\n \"\" === href\n ) {\n \"stylesheet\" === rel &&\n \"string\" === typeof props.precedence &&\n ((\"string\" === typeof href && href) ||\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and expected the `href` prop to be a non-empty string but ecountered %s instead. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop ensure there is a non-empty string `href` prop as well, otherwise remove the `precedence` prop.',\n null === href\n ? \"`null`\"\n : void 0 === href\n ? \"`undefined`\"\n : \"\" === href\n ? \"an empty string\"\n : 'something with type \"' + typeof href + '\"'\n ));\n pushLinkImpl(target$jscomp$0, props);\n var JSCompiler_inline_result$jscomp$5 = null;\n } else if (\"stylesheet\" === props.rel)\n if (\n \"string\" !== typeof precedence ||\n null != props.disabled ||\n props.onLoad ||\n props.onError\n ) {\n if (\"string\" === typeof precedence)\n if (null != props.disabled)\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and a `disabled` prop. The presence of the `disabled` prop indicates an intent to manage the stylesheet active state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the `disabled` prop, otherwise remove the `precedence` prop.'\n );\n else if (props.onLoad || props.onError) {\n var propDescription =\n props.onLoad && props.onError\n ? \"`onLoad` and `onError` props\"\n : props.onLoad\n ? \"`onLoad` prop\"\n : \"`onError` prop\";\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and %s. The presence of loading and error handlers indicates an intent to manage the stylesheet loading state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the %s, otherwise remove the `precedence` prop.',\n propDescription,\n propDescription\n );\n }\n JSCompiler_inline_result$jscomp$5 = pushLinkImpl(\n target$jscomp$0,\n props\n );\n } else {\n var styleQueue = renderState.styles.get(precedence),\n resourceState = resumableState.styleResources.hasOwnProperty(\n href\n )\n ? resumableState.styleResources[href]\n : void 0;\n if (resourceState !== EXISTS) {\n resumableState.styleResources[href] = EXISTS;\n styleQueue ||\n ((styleQueue = {\n precedence: escapeTextForBrowser(precedence),\n rules: [],\n hrefs: [],\n sheets: new Map()\n }),\n renderState.styles.set(precedence, styleQueue));\n var resource = {\n state: PENDING$1,\n props: assign({}, props, {\n \"data-precedence\": props.precedence,\n precedence: null\n })\n };\n if (resourceState) {\n 2 === resourceState.length &&\n adoptPreloadCredentials(resource.props, resourceState);\n var preloadResource =\n renderState.preloads.stylesheets.get(href);\n preloadResource && 0 < preloadResource.length\n ? (preloadResource.length = 0)\n : (resource.state = PRELOADED);\n }\n styleQueue.sheets.set(href, resource);\n hoistableState && hoistableState.stylesheets.add(resource);\n } else if (styleQueue) {\n var _resource = styleQueue.sheets.get(href);\n _resource &&\n hoistableState &&\n hoistableState.stylesheets.add(_resource);\n }\n textEmbedded && target$jscomp$0.push(\"\\x3c!-- --\\x3e\");\n JSCompiler_inline_result$jscomp$5 = null;\n }\n else\n props.onLoad || props.onError\n ? (JSCompiler_inline_result$jscomp$5 = pushLinkImpl(\n target$jscomp$0,\n props\n ))\n : (textEmbedded && target$jscomp$0.push(\"\\x3c!-- --\\x3e\"),\n (JSCompiler_inline_result$jscomp$5 = isFallback\n ? null\n : pushLinkImpl(renderState.hoistableChunks, props)));\n return JSCompiler_inline_result$jscomp$5;\n case \"script\":\n var asyncProp = props.async;\n if (\n \"string\" !== typeof props.src ||\n !props.src ||\n !asyncProp ||\n \"function\" === typeof asyncProp ||\n \"symbol\" === typeof asyncProp ||\n props.onLoad ||\n props.onError ||\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$6 = pushScriptImpl(\n target$jscomp$0,\n props\n );\n else {\n var key = props.src;\n if (\"module\" === props.type) {\n var resources = resumableState.moduleScriptResources;\n var preloads = renderState.preloads.moduleScripts;\n } else\n (resources = resumableState.scriptResources),\n (preloads = renderState.preloads.scripts);\n var resourceState$jscomp$0 = resources.hasOwnProperty(key)\n ? resources[key]\n : void 0;\n if (resourceState$jscomp$0 !== EXISTS) {\n resources[key] = EXISTS;\n var scriptProps = props;\n if (resourceState$jscomp$0) {\n 2 === resourceState$jscomp$0.length &&\n ((scriptProps = assign({}, props)),\n adoptPreloadCredentials(scriptProps, resourceState$jscomp$0));\n var preloadResource$jscomp$0 = preloads.get(key);\n preloadResource$jscomp$0 &&\n (preloadResource$jscomp$0.length = 0);\n }\n var resource$jscomp$0 = [];\n renderState.scripts.add(resource$jscomp$0);\n pushScriptImpl(resource$jscomp$0, scriptProps);\n }\n textEmbedded && target$jscomp$0.push(\"\\x3c!-- --\\x3e\");\n JSCompiler_inline_result$jscomp$6 = null;\n }\n return JSCompiler_inline_result$jscomp$6;\n case \"style\":\n var insertionMode$jscomp$0 = formatContext.insertionMode,\n noscriptTagInScope$jscomp$0 = !!(formatContext.tagScope & 1);\n if (hasOwnProperty.call(props, \"children\")) {\n var children$jscomp$7 = props.children,\n child$jscomp$0 = Array.isArray(children$jscomp$7)\n ? 2 > children$jscomp$7.length\n ? children$jscomp$7[0]\n : null\n : children$jscomp$7;\n (\"function\" === typeof child$jscomp$0 ||\n \"symbol\" === typeof child$jscomp$0 ||\n Array.isArray(child$jscomp$0)) &&\n console.error(\n \"React expect children of <style> tags to be a string, number, or object with a `toString` method but found %s instead. In browsers style Elements can only have `Text` Nodes as children.\",\n \"function\" === typeof child$jscomp$0\n ? \"a Function\"\n : \"symbol\" === typeof child$jscomp$0\n ? \"a Sybmol\"\n : \"an Array\"\n );\n }\n var precedence$jscomp$0 = props.precedence,\n href$jscomp$0 = props.href;\n if (\n insertionMode$jscomp$0 === SVG_MODE ||\n noscriptTagInScope$jscomp$0 ||\n null != props.itemProp ||\n \"string\" !== typeof precedence$jscomp$0 ||\n \"string\" !== typeof href$jscomp$0 ||\n \"\" === href$jscomp$0\n ) {\n target$jscomp$0.push(startChunkForTag(\"style\"));\n var children$jscomp$8 = null,\n innerHTML$jscomp$5 = null,\n propKey$jscomp$8;\n for (propKey$jscomp$8 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$8)) {\n var propValue$jscomp$8 = props[propKey$jscomp$8];\n if (null != propValue$jscomp$8)\n switch (propKey$jscomp$8) {\n case \"children\":\n children$jscomp$8 = propValue$jscomp$8;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$5 = propValue$jscomp$8;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$8,\n propValue$jscomp$8\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n var child$jscomp$1 = Array.isArray(children$jscomp$8)\n ? 2 > children$jscomp$8.length\n ? children$jscomp$8[0]\n : null\n : children$jscomp$8;\n \"function\" !== typeof child$jscomp$1 &&\n \"symbol\" !== typeof child$jscomp$1 &&\n null !== child$jscomp$1 &&\n void 0 !== child$jscomp$1 &&\n target$jscomp$0.push(escapeStyleTextContent(child$jscomp$1));\n pushInnerHTML(\n target$jscomp$0,\n innerHTML$jscomp$5,\n children$jscomp$8\n );\n target$jscomp$0.push(endChunkForTag(\"style\"));\n var JSCompiler_inline_result$jscomp$7 = null;\n } else {\n href$jscomp$0.includes(\" \") &&\n console.error(\n 'React expected the `href` prop for a <style> tag opting into hoisting semantics using the `precedence` prop to not have any spaces but ecountered spaces instead. using spaces in this prop will cause hydration of this style to fail on the client. The href for the <style> where this ocurred is \"%s\".',\n href$jscomp$0\n );\n var styleQueue$jscomp$0 =\n renderState.styles.get(precedence$jscomp$0),\n resourceState$jscomp$1 =\n resumableState.styleResources.hasOwnProperty(href$jscomp$0)\n ? resumableState.styleResources[href$jscomp$0]\n : void 0;\n if (resourceState$jscomp$1 !== EXISTS) {\n resumableState.styleResources[href$jscomp$0] = EXISTS;\n resourceState$jscomp$1 &&\n console.error(\n 'React encountered a hoistable style tag for the same href as a preload: \"%s\". When using a style tag to inline styles you should not also preload it as a stylsheet.',\n href$jscomp$0\n );\n styleQueue$jscomp$0\n ? styleQueue$jscomp$0.hrefs.push(\n escapeTextForBrowser(href$jscomp$0)\n )\n : ((styleQueue$jscomp$0 = {\n precedence: escapeTextForBrowser(precedence$jscomp$0),\n rules: [],\n hrefs: [escapeTextForBrowser(href$jscomp$0)],\n sheets: new Map()\n }),\n renderState.styles.set(\n precedence$jscomp$0,\n styleQueue$jscomp$0\n ));\n var target = styleQueue$jscomp$0.rules,\n children$jscomp$9 = null,\n innerHTML$jscomp$6 = null,\n propKey$jscomp$9;\n for (propKey$jscomp$9 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$9)) {\n var propValue$jscomp$9 = props[propKey$jscomp$9];\n if (null != propValue$jscomp$9)\n switch (propKey$jscomp$9) {\n case \"children\":\n children$jscomp$9 = propValue$jscomp$9;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$6 = propValue$jscomp$9;\n }\n }\n var child$jscomp$2 = Array.isArray(children$jscomp$9)\n ? 2 > children$jscomp$9.length\n ? children$jscomp$9[0]\n : null\n : children$jscomp$9;\n \"function\" !== typeof child$jscomp$2 &&\n \"symbol\" !== typeof child$jscomp$2 &&\n null !== child$jscomp$2 &&\n void 0 !== child$jscomp$2 &&\n target.push(escapeStyleTextContent(child$jscomp$2));\n pushInnerHTML(target, innerHTML$jscomp$6, children$jscomp$9);\n }\n styleQueue$jscomp$0 &&\n hoistableState &&\n hoistableState.styles.add(styleQueue$jscomp$0);\n textEmbedded && target$jscomp$0.push(\"\\x3c!-- --\\x3e\");\n JSCompiler_inline_result$jscomp$7 = void 0;\n }\n return JSCompiler_inline_result$jscomp$7;\n case \"meta\":\n if (\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$8 = pushSelfClosing(\n target$jscomp$0,\n props,\n \"meta\"\n );\n else\n textEmbedded && target$jscomp$0.push(\"\\x3c!-- --\\x3e\"),\n (JSCompiler_inline_result$jscomp$8 = isFallback\n ? null\n : \"string\" === typeof props.charSet\n ? pushSelfClosing(renderState.charsetChunks, props, \"meta\")\n : \"viewport\" === props.name\n ? pushSelfClosing(renderState.viewportChunks, props, \"meta\")\n : pushSelfClosing(\n renderState.hoistableChunks,\n props,\n \"meta\"\n ));\n return JSCompiler_inline_result$jscomp$8;\n case \"listing\":\n case \"pre\":\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$10 = null,\n innerHTML$jscomp$7 = null,\n propKey$jscomp$10;\n for (propKey$jscomp$10 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$10)) {\n var propValue$jscomp$10 = props[propKey$jscomp$10];\n if (null != propValue$jscomp$10)\n switch (propKey$jscomp$10) {\n case \"children\":\n children$jscomp$10 = propValue$jscomp$10;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$7 = propValue$jscomp$10;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$10,\n propValue$jscomp$10\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n if (null != innerHTML$jscomp$7) {\n if (null != children$jscomp$10)\n throw Error(\n \"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\"\n );\n if (\n \"object\" !== typeof innerHTML$jscomp$7 ||\n !(\"__html\" in innerHTML$jscomp$7)\n )\n throw Error(\n \"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.\"\n );\n var html = innerHTML$jscomp$7.__html;\n null !== html &&\n void 0 !== html &&\n (\"string\" === typeof html && 0 < html.length && \"\\n\" === html[0]\n ? target$jscomp$0.push(leadingNewline, html)\n : (checkHtmlStringCoercion(html),\n target$jscomp$0.push(\"\" + html)));\n }\n \"string\" === typeof children$jscomp$10 &&\n \"\\n\" === children$jscomp$10[0] &&\n target$jscomp$0.push(leadingNewline);\n return children$jscomp$10;\n case \"img\":\n var src = props.src,\n srcSet = props.srcSet;\n if (\n !(\n \"lazy\" === props.loading ||\n (!src && !srcSet) ||\n (\"string\" !== typeof src && null != src) ||\n (\"string\" !== typeof srcSet && null != srcSet)\n ) &&\n \"low\" !== props.fetchPriority &&\n !1 === !!(formatContext.tagScope & 3) &&\n (\"string\" !== typeof src ||\n \":\" !== src[4] ||\n (\"d\" !== src[0] && \"D\" !== src[0]) ||\n (\"a\" !== src[1] && \"A\" !== src[1]) ||\n (\"t\" !== src[2] && \"T\" !== src[2]) ||\n (\"a\" !== src[3] && \"A\" !== src[3])) &&\n (\"string\" !== typeof srcSet ||\n \":\" !== srcSet[4] ||\n (\"d\" !== srcSet[0] && \"D\" !== srcSet[0]) ||\n (\"a\" !== srcSet[1] && \"A\" !== srcSet[1]) ||\n (\"t\" !== srcSet[2] && \"T\" !== srcSet[2]) ||\n (\"a\" !== srcSet[3] && \"A\" !== srcSet[3]))\n ) {\n var sizes = \"string\" === typeof props.sizes ? props.sizes : void 0,\n key$jscomp$0 = srcSet ? srcSet + \"\\n\" + (sizes || \"\") : src,\n promotablePreloads = renderState.preloads.images,\n resource$jscomp$1 = promotablePreloads.get(key$jscomp$0);\n if (resource$jscomp$1) {\n if (\n \"high\" === props.fetchPriority ||\n 10 > renderState.highImagePreloads.size\n )\n promotablePreloads.delete(key$jscomp$0),\n renderState.highImagePreloads.add(resource$jscomp$1);\n } else if (\n !resumableState.imageResources.hasOwnProperty(key$jscomp$0)\n ) {\n resumableState.imageResources[key$jscomp$0] = PRELOAD_NO_CREDS;\n var input = props.crossOrigin;\n var crossOrigin =\n \"string\" === typeof input\n ? \"use-credentials\" === input\n ? input\n : \"\"\n : void 0;\n var headers = renderState.headers,\n header;\n headers &&\n 0 < headers.remainingCapacity &&\n (\"high\" === props.fetchPriority ||\n 500 > headers.highImagePreloads.length) &&\n ((header = getPreloadAsHeader(src, \"image\", {\n imageSrcSet: props.srcSet,\n imageSizes: props.sizes,\n crossOrigin: crossOrigin,\n integrity: props.integrity,\n nonce: props.nonce,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.refererPolicy\n })),\n 0 <= (headers.remainingCapacity -= header.length + 2))\n ? ((renderState.resets.image[key$jscomp$0] = PRELOAD_NO_CREDS),\n headers.highImagePreloads &&\n (headers.highImagePreloads += \", \"),\n (headers.highImagePreloads += header))\n : ((resource$jscomp$1 = []),\n pushLinkImpl(resource$jscomp$1, {\n rel: \"preload\",\n as: \"image\",\n href: srcSet ? void 0 : src,\n imageSrcSet: srcSet,\n imageSizes: sizes,\n crossOrigin: crossOrigin,\n integrity: props.integrity,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.referrerPolicy\n }),\n \"high\" === props.fetchPriority ||\n 10 > renderState.highImagePreloads.size\n ? renderState.highImagePreloads.add(resource$jscomp$1)\n : (renderState.bulkPreloads.add(resource$jscomp$1),\n promotablePreloads.set(key$jscomp$0, resource$jscomp$1)));\n }\n }\n return pushSelfClosing(target$jscomp$0, props, \"img\");\n case \"base\":\n case \"area\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n return pushSelfClosing(target$jscomp$0, props, type);\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n break;\n case \"head\":\n if (\n formatContext.insertionMode < HTML_MODE &&\n null === renderState.headChunks\n ) {\n renderState.headChunks = [];\n var JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n renderState.headChunks,\n props,\n \"head\"\n );\n } else\n JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"head\"\n );\n return JSCompiler_inline_result$jscomp$9;\n case \"html\":\n if (\n formatContext.insertionMode === ROOT_HTML_MODE &&\n null === renderState.htmlChunks\n ) {\n renderState.htmlChunks = [doctypeChunk];\n var JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n renderState.htmlChunks,\n props,\n \"html\"\n );\n } else\n JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"html\"\n );\n return JSCompiler_inline_result$jscomp$10;\n default:\n if (-1 !== type.indexOf(\"-\")) {\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$11 = null,\n innerHTML$jscomp$8 = null,\n propKey$jscomp$11;\n for (propKey$jscomp$11 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$11)) {\n var propValue$jscomp$11 = props[propKey$jscomp$11];\n if (null != propValue$jscomp$11) {\n var attributeName = propKey$jscomp$11;\n switch (propKey$jscomp$11) {\n case \"children\":\n children$jscomp$11 = propValue$jscomp$11;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$8 = propValue$jscomp$11;\n break;\n case \"style\":\n pushStyleAttribute(target$jscomp$0, propValue$jscomp$11);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"className\":\n attributeName = \"class\";\n default:\n if (\n isAttributeNameSafe(propKey$jscomp$11) &&\n \"function\" !== typeof propValue$jscomp$11 &&\n \"symbol\" !== typeof propValue$jscomp$11 &&\n !1 !== propValue$jscomp$11\n ) {\n if (!0 === propValue$jscomp$11)\n propValue$jscomp$11 = \"\";\n else if (\"object\" === typeof propValue$jscomp$11)\n continue;\n target$jscomp$0.push(\n attributeSeparator,\n attributeName,\n attributeAssign,\n escapeTextForBrowser(propValue$jscomp$11),\n attributeEnd\n );\n }\n }\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(\n target$jscomp$0,\n innerHTML$jscomp$8,\n children$jscomp$11\n );\n return children$jscomp$11;\n }\n }\n return pushStartGenericElement(target$jscomp$0, props, type);\n }\n function endChunkForTag(tag) {\n var chunk = endTagCache.get(tag);\n void 0 === chunk &&\n ((chunk = \"</\" + tag + \">\"), endTagCache.set(tag, chunk));\n return chunk;\n }\n function writeBootstrap(destination, renderState) {\n renderState = renderState.bootstrapChunks;\n for (var i = 0; i < renderState.length - 1; i++)\n destination.push(renderState[i]);\n return i < renderState.length\n ? ((i = renderState[i]), (renderState.length = 0), destination.push(i))\n : !0;\n }\n function writeStartPendingSuspenseBoundary(destination, renderState, id) {\n destination.push(startPendingSuspenseBoundary1);\n if (null === id)\n throw Error(\n \"An ID must have been assigned before we can complete the boundary.\"\n );\n destination.push(renderState.boundaryPrefix);\n renderState = id.toString(16);\n destination.push(renderState);\n return destination.push(startPendingSuspenseBoundary2);\n }\n function writeStartSegment(destination, renderState, formatContext, id) {\n switch (formatContext.insertionMode) {\n case ROOT_HTML_MODE:\n case HTML_HTML_MODE:\n case HTML_MODE:\n return (\n destination.push(startSegmentHTML),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentHTML2)\n );\n case SVG_MODE:\n return (\n destination.push(startSegmentSVG),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentSVG2)\n );\n case MATHML_MODE:\n return (\n destination.push(startSegmentMathML),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentMathML2)\n );\n case HTML_TABLE_MODE:\n return (\n destination.push(startSegmentTable),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentTable2)\n );\n case HTML_TABLE_BODY_MODE:\n return (\n destination.push(startSegmentTableBody),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentTableBody2)\n );\n case HTML_TABLE_ROW_MODE:\n return (\n destination.push(startSegmentTableRow),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentTableRow2)\n );\n case HTML_COLGROUP_MODE:\n return (\n destination.push(startSegmentColGroup),\n destination.push(renderState.segmentPrefix),\n (renderState = id.toString(16)),\n destination.push(renderState),\n destination.push(startSegmentColGroup2)\n );\n default:\n throw Error(\"Unknown insertion mode. This is a bug in React.\");\n }\n }\n function writeEndSegment(destination, formatContext) {\n switch (formatContext.insertionMode) {\n case ROOT_HTML_MODE:\n case HTML_HTML_MODE:\n case HTML_MODE:\n return destination.push(endSegmentHTML);\n case SVG_MODE:\n return destination.push(endSegmentSVG);\n case MATHML_MODE:\n return destination.push(endSegmentMathML);\n case HTML_TABLE_MODE:\n return destination.push(endSegmentTable);\n case HTML_TABLE_BODY_MODE:\n return destination.push(endSegmentTableBody);\n case HTML_TABLE_ROW_MODE:\n return destination.push(endSegmentTableRow);\n case HTML_COLGROUP_MODE:\n return destination.push(endSegmentColGroup);\n default:\n throw Error(\"Unknown insertion mode. This is a bug in React.\");\n }\n }\n function escapeJSStringsForInstructionScripts(input) {\n return JSON.stringify(input).replace(\n regexForJSStringsInInstructionScripts,\n function (match) {\n switch (match) {\n case \"<\":\n return \"\\\\u003c\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n throw Error(\n \"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n );\n }\n function escapeJSObjectForInstructionScripts(input) {\n return JSON.stringify(input).replace(\n regexForJSStringsInScripts,\n function (match) {\n switch (match) {\n case \"&\":\n return \"\\\\u0026\";\n case \">\":\n return \"\\\\u003e\";\n case \"<\":\n return \"\\\\u003c\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n throw Error(\n \"escapeJSObjectForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n );\n }\n function flushStyleTagsLateForBoundary(styleQueue) {\n var rules = styleQueue.rules,\n hrefs = styleQueue.hrefs;\n 0 < rules.length &&\n 0 === hrefs.length &&\n console.error(\n \"React expected to have at least one href for an a hoistable style but found none. This is a bug in React.\"\n );\n var i = 0;\n if (hrefs.length) {\n this.push(lateStyleTagResourceOpen1);\n this.push(styleQueue.precedence);\n for (this.push(lateStyleTagResourceOpen2); i < hrefs.length - 1; i++)\n this.push(hrefs[i]), this.push(spaceSeparator);\n this.push(hrefs[i]);\n this.push(lateStyleTagResourceOpen3);\n for (i = 0; i < rules.length; i++) this.push(rules[i]);\n destinationHasCapacity = this.push(lateStyleTagTemplateClose);\n currentlyRenderingBoundaryHasStylesToHoist = !0;\n rules.length = 0;\n hrefs.length = 0;\n }\n }\n function hasStylesToHoist(stylesheet) {\n return stylesheet.state !== PREAMBLE\n ? (currentlyRenderingBoundaryHasStylesToHoist = !0)\n : !1;\n }\n function writeHoistablesForBoundary(\n destination,\n hoistableState,\n renderState\n ) {\n currentlyRenderingBoundaryHasStylesToHoist = !1;\n destinationHasCapacity = !0;\n hoistableState.styles.forEach(flushStyleTagsLateForBoundary, destination);\n hoistableState.stylesheets.forEach(hasStylesToHoist);\n currentlyRenderingBoundaryHasStylesToHoist &&\n (renderState.stylesToHoist = !0);\n return destinationHasCapacity;\n }\n function flushResource(resource) {\n for (var i = 0; i < resource.length; i++) this.push(resource[i]);\n resource.length = 0;\n }\n function flushStyleInPreamble(stylesheet) {\n pushLinkImpl(stylesheetFlushingQueue, stylesheet.props);\n for (var i = 0; i < stylesheetFlushingQueue.length; i++)\n this.push(stylesheetFlushingQueue[i]);\n stylesheetFlushingQueue.length = 0;\n stylesheet.state = PREAMBLE;\n }\n function flushStylesInPreamble(styleQueue) {\n var hasStylesheets = 0 < styleQueue.sheets.size;\n styleQueue.sheets.forEach(flushStyleInPreamble, this);\n styleQueue.sheets.clear();\n var rules = styleQueue.rules,\n hrefs = styleQueue.hrefs;\n if (!hasStylesheets || hrefs.length) {\n this.push(styleTagResourceOpen1);\n this.push(styleQueue.precedence);\n styleQueue = 0;\n if (hrefs.length) {\n for (\n this.push(styleTagResourceOpen2);\n styleQueue < hrefs.length - 1;\n styleQueue++\n )\n this.push(hrefs[styleQueue]), this.push(spaceSeparator);\n this.push(hrefs[styleQueue]);\n }\n this.push(styleTagResourceOpen3);\n for (styleQueue = 0; styleQueue < rules.length; styleQueue++)\n this.push(rules[styleQueue]);\n this.push(styleTagResourceClose);\n rules.length = 0;\n hrefs.length = 0;\n }\n }\n function preloadLateStyle(stylesheet) {\n if (stylesheet.state === PENDING$1) {\n stylesheet.state = PRELOADED;\n var props = stylesheet.props;\n pushLinkImpl(stylesheetFlushingQueue, {\n rel: \"preload\",\n as: \"style\",\n href: stylesheet.props.href,\n crossOrigin: props.crossOrigin,\n fetchPriority: props.fetchPriority,\n integrity: props.integrity,\n media: props.media,\n hrefLang: props.hrefLang,\n referrerPolicy: props.referrerPolicy\n });\n for (\n stylesheet = 0;\n stylesheet < stylesheetFlushingQueue.length;\n stylesheet++\n )\n this.push(stylesheetFlushingQueue[stylesheet]);\n stylesheetFlushingQueue.length = 0;\n }\n }\n function preloadLateStyles(styleQueue) {\n styleQueue.sheets.forEach(preloadLateStyle, this);\n styleQueue.sheets.clear();\n }\n function writeStyleResourceDependenciesInJS(destination, hoistableState) {\n destination.push(arrayFirstOpenBracket);\n var nextArrayOpenBrackChunk = arrayFirstOpenBracket;\n hoistableState.stylesheets.forEach(function (resource) {\n if (resource.state !== PREAMBLE)\n if (resource.state === LATE)\n destination.push(nextArrayOpenBrackChunk),\n (resource = resource.props.href),\n checkAttributeStringCoercion(resource, \"href\"),\n (resource = escapeJSObjectForInstructionScripts(\"\" + resource)),\n destination.push(resource),\n destination.push(arrayCloseBracket),\n (nextArrayOpenBrackChunk = arraySubsequentOpenBracket);\n else {\n destination.push(nextArrayOpenBrackChunk);\n var precedence = resource.props[\"data-precedence\"],\n props = resource.props,\n coercedHref = sanitizeURL(\"\" + resource.props.href);\n coercedHref = escapeJSObjectForInstructionScripts(coercedHref);\n destination.push(coercedHref);\n checkAttributeStringCoercion(precedence, \"precedence\");\n precedence = \"\" + precedence;\n destination.push(arrayInterstitial);\n precedence = escapeJSObjectForInstructionScripts(precedence);\n destination.push(precedence);\n for (var propKey in props)\n if (\n hasOwnProperty.call(props, propKey) &&\n ((precedence = props[propKey]), null != precedence)\n )\n switch (propKey) {\n case \"href\":\n case \"rel\":\n case \"precedence\":\n case \"data-precedence\":\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"link is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n writeStyleResourceAttributeInJS(\n destination,\n propKey,\n precedence\n );\n }\n destination.push(arrayCloseBracket);\n nextArrayOpenBrackChunk = arraySubsequentOpenBracket;\n resource.state = LATE;\n }\n });\n destination.push(arrayCloseBracket);\n }\n function writeStyleResourceAttributeInJS(destination, name, value) {\n var attributeName = name.toLowerCase();\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n }\n switch (name) {\n case \"innerHTML\":\n case \"dangerouslySetInnerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"style\":\n case \"ref\":\n return;\n case \"className\":\n attributeName = \"class\";\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n break;\n case \"hidden\":\n if (!1 === value) return;\n name = \"\";\n break;\n case \"src\":\n case \"href\":\n value = sanitizeURL(value);\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n break;\n default:\n if (\n (2 < name.length &&\n (\"o\" === name[0] || \"O\" === name[0]) &&\n (\"n\" === name[1] || \"N\" === name[1])) ||\n !isAttributeNameSafe(name)\n )\n return;\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n }\n destination.push(arrayInterstitial);\n attributeName = escapeJSObjectForInstructionScripts(attributeName);\n destination.push(attributeName);\n destination.push(arrayInterstitial);\n attributeName = escapeJSObjectForInstructionScripts(name);\n destination.push(attributeName);\n }\n function createHoistableState() {\n return { styles: new Set(), stylesheets: new Set() };\n }\n function preloadBootstrapScriptOrModule(\n resumableState,\n renderState,\n href,\n props\n ) {\n (resumableState.scriptResources.hasOwnProperty(href) ||\n resumableState.moduleScriptResources.hasOwnProperty(href)) &&\n console.error(\n 'Internal React Error: React expected bootstrap script or module with src \"%s\" to not have been preloaded already. please file an issue',\n href\n );\n resumableState.scriptResources[href] = EXISTS;\n resumableState.moduleScriptResources[href] = EXISTS;\n resumableState = [];\n pushLinkImpl(resumableState, props);\n renderState.bootstrapScripts.add(resumableState);\n }\n function adoptPreloadCredentials(target, preloadState) {\n null == target.crossOrigin && (target.crossOrigin = preloadState[0]);\n null == target.integrity && (target.integrity = preloadState[1]);\n }\n function getPreloadAsHeader(href, as, params) {\n href = escapeHrefForLinkHeaderURLContext(href);\n as = escapeStringForLinkHeaderQuotedParamValueContext(as, \"as\");\n as = \"<\" + href + '>; rel=preload; as=\"' + as + '\"';\n for (var paramName in params)\n hasOwnProperty.call(params, paramName) &&\n ((href = params[paramName]),\n \"string\" === typeof href &&\n (as +=\n \"; \" +\n paramName.toLowerCase() +\n '=\"' +\n escapeStringForLinkHeaderQuotedParamValueContext(\n href,\n paramName\n ) +\n '\"'));\n return as;\n }\n function escapeHrefForLinkHeaderURLContext(hrefInput) {\n checkAttributeStringCoercion(hrefInput, \"href\");\n return (\"\" + hrefInput).replace(\n regexForHrefInLinkHeaderURLContext,\n escapeHrefForLinkHeaderURLContextReplacer\n );\n }\n function escapeHrefForLinkHeaderURLContextReplacer(match) {\n switch (match) {\n case \"<\":\n return \"%3C\";\n case \">\":\n return \"%3E\";\n case \"\\n\":\n return \"%0A\";\n case \"\\r\":\n return \"%0D\";\n default:\n throw Error(\n \"escapeLinkHrefForHeaderContextReplacer encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n function escapeStringForLinkHeaderQuotedParamValueContext(value, name) {\n willCoercionThrow(value) &&\n (console.error(\n \"The provided `%s` option is an unsupported type %s. This value must be coerced to a string before using it here.\",\n name,\n typeName(value)\n ),\n testStringCoercion(value));\n return (\"\" + value).replace(\n regexForLinkHeaderQuotedParamValueContext,\n escapeStringForLinkHeaderQuotedParamValueContextReplacer\n );\n }\n function escapeStringForLinkHeaderQuotedParamValueContextReplacer(match) {\n switch (match) {\n case '\"':\n return \"%22\";\n case \"'\":\n return \"%27\";\n case \";\":\n return \"%3B\";\n case \",\":\n return \"%2C\";\n case \"\\n\":\n return \"%0A\";\n case \"\\r\":\n return \"%0D\";\n default:\n throw Error(\n \"escapeStringForLinkHeaderQuotedParamValueContextReplacer encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n function hoistStyleQueueDependency(styleQueue) {\n this.styles.add(styleQueue);\n }\n function hoistStylesheetDependency(stylesheet) {\n this.stylesheets.add(stylesheet);\n }\n function createRenderState(resumableState, generateStaticMarkup) {\n var idPrefix = resumableState.idPrefix,\n bootstrapChunks = [],\n bootstrapScriptContent = resumableState.bootstrapScriptContent,\n bootstrapScripts = resumableState.bootstrapScripts,\n bootstrapModules = resumableState.bootstrapModules;\n void 0 !== bootstrapScriptContent &&\n bootstrapChunks.push(\n \"<script>\",\n escapeEntireInlineScriptContent(bootstrapScriptContent),\n \"\\x3c/script>\"\n );\n idPrefix = {\n placeholderPrefix: idPrefix + \"P:\",\n segmentPrefix: idPrefix + \"S:\",\n boundaryPrefix: idPrefix + \"B:\",\n startInlineScript: \"<script>\",\n htmlChunks: null,\n headChunks: null,\n externalRuntimeScript: null,\n bootstrapChunks: bootstrapChunks,\n importMapChunks: [],\n onHeaders: void 0,\n headers: null,\n resets: {\n font: {},\n dns: {},\n connect: { default: {}, anonymous: {}, credentials: {} },\n image: {},\n style: {}\n },\n charsetChunks: [],\n viewportChunks: [],\n hoistableChunks: [],\n preconnects: new Set(),\n fontPreloads: new Set(),\n highImagePreloads: new Set(),\n styles: new Map(),\n bootstrapScripts: new Set(),\n scripts: new Set(),\n bulkPreloads: new Set(),\n preloads: {\n images: new Map(),\n stylesheets: new Map(),\n scripts: new Map(),\n moduleScripts: new Map()\n },\n nonce: void 0,\n hoistableState: null,\n stylesToHoist: !1\n };\n if (void 0 !== bootstrapScripts)\n for (\n bootstrapScriptContent = 0;\n bootstrapScriptContent < bootstrapScripts.length;\n bootstrapScriptContent++\n ) {\n var scriptConfig = bootstrapScripts[bootstrapScriptContent],\n src,\n crossOrigin = void 0,\n integrity = void 0,\n props = {\n rel: \"preload\",\n as: \"script\",\n fetchPriority: \"low\",\n nonce: void 0\n };\n \"string\" === typeof scriptConfig\n ? (props.href = src = scriptConfig)\n : ((props.href = src = scriptConfig.src),\n (props.integrity = integrity =\n \"string\" === typeof scriptConfig.integrity\n ? scriptConfig.integrity\n : void 0),\n (props.crossOrigin = crossOrigin =\n \"string\" === typeof scriptConfig ||\n null == scriptConfig.crossOrigin\n ? void 0\n : \"use-credentials\" === scriptConfig.crossOrigin\n ? \"use-credentials\"\n : \"\"));\n preloadBootstrapScriptOrModule(resumableState, idPrefix, src, props);\n bootstrapChunks.push('<script src=\"', escapeTextForBrowser(src));\n \"string\" === typeof integrity &&\n bootstrapChunks.push(\n '\" integrity=\"',\n escapeTextForBrowser(integrity)\n );\n \"string\" === typeof crossOrigin &&\n bootstrapChunks.push(\n '\" crossorigin=\"',\n escapeTextForBrowser(crossOrigin)\n );\n bootstrapChunks.push('\" async=\"\">\\x3c/script>');\n }\n if (void 0 !== bootstrapModules)\n for (\n bootstrapScripts = 0;\n bootstrapScripts < bootstrapModules.length;\n bootstrapScripts++\n )\n (bootstrapScriptContent = bootstrapModules[bootstrapScripts]),\n (crossOrigin = src = void 0),\n (integrity = {\n rel: \"modulepreload\",\n fetchPriority: \"low\",\n nonce: void 0\n }),\n \"string\" === typeof bootstrapScriptContent\n ? (integrity.href = scriptConfig = bootstrapScriptContent)\n : ((integrity.href = scriptConfig = bootstrapScriptContent.src),\n (integrity.integrity = crossOrigin =\n \"string\" === typeof bootstrapScriptContent.integrity\n ? bootstrapScriptContent.integrity\n : void 0),\n (integrity.crossOrigin = src =\n \"string\" === typeof bootstrapScriptContent ||\n null == bootstrapScriptContent.crossOrigin\n ? void 0\n : \"use-credentials\" === bootstrapScriptContent.crossOrigin\n ? \"use-credentials\"\n : \"\")),\n preloadBootstrapScriptOrModule(\n resumableState,\n idPrefix,\n scriptConfig,\n integrity\n ),\n bootstrapChunks.push(\n '<script type=\"module\" src=\"',\n escapeTextForBrowser(scriptConfig)\n ),\n \"string\" === typeof crossOrigin &&\n bootstrapChunks.push(\n '\" integrity=\"',\n escapeTextForBrowser(crossOrigin)\n ),\n \"string\" === typeof src &&\n bootstrapChunks.push(\n '\" crossorigin=\"',\n escapeTextForBrowser(src)\n ),\n bootstrapChunks.push('\" async=\"\">\\x3c/script>');\n return {\n placeholderPrefix: idPrefix.placeholderPrefix,\n segmentPrefix: idPrefix.segmentPrefix,\n boundaryPrefix: idPrefix.boundaryPrefix,\n startInlineScript: idPrefix.startInlineScript,\n htmlChunks: idPrefix.htmlChunks,\n headChunks: idPrefix.headChunks,\n externalRuntimeScript: idPrefix.externalRuntimeScript,\n bootstrapChunks: idPrefix.bootstrapChunks,\n importMapChunks: idPrefix.importMapChunks,\n onHeaders: idPrefix.onHeaders,\n headers: idPrefix.headers,\n resets: idPrefix.resets,\n charsetChunks: idPrefix.charsetChunks,\n viewportChunks: idPrefix.viewportChunks,\n hoistableChunks: idPrefix.hoistableChunks,\n preconnects: idPrefix.preconnects,\n fontPreloads: idPrefix.fontPreloads,\n highImagePreloads: idPrefix.highImagePreloads,\n styles: idPrefix.styles,\n bootstrapScripts: idPrefix.bootstrapScripts,\n scripts: idPrefix.scripts,\n bulkPreloads: idPrefix.bulkPreloads,\n preloads: idPrefix.preloads,\n stylesToHoist: idPrefix.stylesToHoist,\n generateStaticMarkup: generateStaticMarkup\n };\n }\n function pushTextInstance(target, text, renderState, textEmbedded) {\n if (renderState.generateStaticMarkup)\n return target.push(escapeTextForBrowser(text)), !1;\n \"\" === text\n ? (target = textEmbedded)\n : (textEmbedded && target.push(\"\\x3c!-- --\\x3e\"),\n target.push(escapeTextForBrowser(text)),\n (target = !0));\n return target;\n }\n function pushSegmentFinale(\n target,\n renderState,\n lastPushedText,\n textEmbedded\n ) {\n renderState.generateStaticMarkup ||\n (lastPushedText && textEmbedded && target.push(\"\\x3c!-- --\\x3e\"));\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function popToNearestCommonAncestor(prev, next) {\n if (prev !== next) {\n prev.context._currentValue2 = prev.parentValue;\n prev = prev.parent;\n var parentNext = next.parent;\n if (null === prev) {\n if (null !== parentNext)\n throw Error(\n \"The stacks must reach the root at the same time. This is a bug in React.\"\n );\n } else {\n if (null === parentNext)\n throw Error(\n \"The stacks must reach the root at the same time. This is a bug in React.\"\n );\n popToNearestCommonAncestor(prev, parentNext);\n }\n next.context._currentValue2 = next.value;\n }\n }\n function popAllPrevious(prev) {\n prev.context._currentValue2 = prev.parentValue;\n prev = prev.parent;\n null !== prev && popAllPrevious(prev);\n }\n function pushAllNext(next) {\n var parentNext = next.parent;\n null !== parentNext && pushAllNext(parentNext);\n next.context._currentValue2 = next.value;\n }\n function popPreviousToCommonLevel(prev, next) {\n prev.context._currentValue2 = prev.parentValue;\n prev = prev.parent;\n if (null === prev)\n throw Error(\n \"The depth must equal at least at zero before reaching the root. This is a bug in React.\"\n );\n prev.depth === next.depth\n ? popToNearestCommonAncestor(prev, next)\n : popPreviousToCommonLevel(prev, next);\n }\n function popNextToCommonLevel(prev, next) {\n var parentNext = next.parent;\n if (null === parentNext)\n throw Error(\n \"The depth must equal at least at zero before reaching the root. This is a bug in React.\"\n );\n prev.depth === parentNext.depth\n ? popToNearestCommonAncestor(prev, parentNext)\n : popNextToCommonLevel(prev, parentNext);\n next.context._currentValue2 = next.value;\n }\n function switchContext(newSnapshot) {\n var prev = currentActiveSnapshot;\n prev !== newSnapshot &&\n (null === prev\n ? pushAllNext(newSnapshot)\n : null === newSnapshot\n ? popAllPrevious(prev)\n : prev.depth === newSnapshot.depth\n ? popToNearestCommonAncestor(prev, newSnapshot)\n : prev.depth > newSnapshot.depth\n ? popPreviousToCommonLevel(prev, newSnapshot)\n : popNextToCommonLevel(prev, newSnapshot),\n (currentActiveSnapshot = newSnapshot));\n }\n function warnOnInvalidCallback(callback) {\n if (null !== callback && \"function\" !== typeof callback) {\n var key = String(callback);\n didWarnOnInvalidCallback.has(key) ||\n (didWarnOnInvalidCallback.add(key),\n console.error(\n \"Expected the last optional `callback` argument to be a function. Instead received: %s.\",\n callback\n ));\n }\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n getComponentNameFromType(publicInstance)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnAboutNoopUpdateForComponent[warningKey] ||\n (console.error(\n \"Can only update a mounting component. This usually means you called %s() outside componentWillMount() on the server. This is a no-op.\\n\\nPlease check the code for the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnAboutNoopUpdateForComponent[warningKey] = !0));\n }\n function pushTreeContext(baseContext, totalChildren, index) {\n var baseIdWithLeadingBit = baseContext.id;\n baseContext = baseContext.overflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n return {\n id:\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit,\n overflow: length + baseContext\n };\n }\n return {\n id: (1 << length) | (index << baseLength) | baseIdWithLeadingBit,\n overflow: baseContext\n };\n }\n function clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n }\n function noop$2() {}\n function trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable &&\n (thenable.then(noop$2, noop$2), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n \"string\" === typeof thenable.status\n ? thenable.then(noop$2, noop$2)\n : ((thenableState = thenable),\n (thenableState.status = \"pending\"),\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n ));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n }\n function getSuspendedThenable() {\n if (null === suspendedThenable)\n throw Error(\n \"Expected a suspended thenable. This is a bug in React. Please file an issue.\"\n );\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n }\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function resolveCurrentlyRenderingComponent() {\n if (null === currentlyRenderingComponent)\n throw Error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n isInHookUserCodeInDev &&\n console.error(\n \"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks\"\n );\n return currentlyRenderingComponent;\n }\n function createHook() {\n if (0 < numberOfReRenders)\n throw Error(\"Rendered more hooks than during the previous render\");\n return { memoizedState: null, queue: null, next: null };\n }\n function createWorkInProgressHook() {\n null === workInProgressHook\n ? null === firstWorkInProgressHook\n ? ((isReRender = !1),\n (firstWorkInProgressHook = workInProgressHook = createHook()))\n : ((isReRender = !0), (workInProgressHook = firstWorkInProgressHook))\n : null === workInProgressHook.next\n ? ((isReRender = !1),\n (workInProgressHook = workInProgressHook.next = createHook()))\n : ((isReRender = !0), (workInProgressHook = workInProgressHook.next));\n return workInProgressHook;\n }\n function getThenableStateAfterSuspending() {\n var state = thenableState;\n thenableState = null;\n return state;\n }\n function resetHooksState() {\n isInHookUserCodeInDev = !1;\n currentlyRenderingKeyPath =\n currentlyRenderingRequest =\n currentlyRenderingTask =\n currentlyRenderingComponent =\n null;\n didScheduleRenderPhaseUpdate = !1;\n firstWorkInProgressHook = null;\n numberOfReRenders = 0;\n workInProgressHook = renderPhaseUpdates = null;\n }\n function readContext(context) {\n isInHookUserCodeInDev &&\n console.error(\n \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n );\n return context._currentValue2;\n }\n function basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n }\n function useReducer(reducer, initialArg, init) {\n reducer !== basicStateReducer && (currentHookNameInDev = \"useReducer\");\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n if (isReRender) {\n init = workInProgressHook.queue;\n initialArg = init.dispatch;\n if (null !== renderPhaseUpdates) {\n var firstRenderPhaseUpdate = renderPhaseUpdates.get(init);\n if (void 0 !== firstRenderPhaseUpdate) {\n renderPhaseUpdates.delete(init);\n init = workInProgressHook.memoizedState;\n do {\n var action = firstRenderPhaseUpdate.action;\n isInHookUserCodeInDev = !0;\n init = reducer(init, action);\n isInHookUserCodeInDev = !1;\n firstRenderPhaseUpdate = firstRenderPhaseUpdate.next;\n } while (null !== firstRenderPhaseUpdate);\n workInProgressHook.memoizedState = init;\n return [init, initialArg];\n }\n }\n return [workInProgressHook.memoizedState, initialArg];\n }\n isInHookUserCodeInDev = !0;\n reducer =\n reducer === basicStateReducer\n ? \"function\" === typeof initialArg\n ? initialArg()\n : initialArg\n : void 0 !== init\n ? init(initialArg)\n : initialArg;\n isInHookUserCodeInDev = !1;\n workInProgressHook.memoizedState = reducer;\n reducer = workInProgressHook.queue = { last: null, dispatch: null };\n reducer = reducer.dispatch = dispatchAction.bind(\n null,\n currentlyRenderingComponent,\n reducer\n );\n return [workInProgressHook.memoizedState, reducer];\n }\n function useMemo(nextCreate, deps) {\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n if (null !== workInProgressHook) {\n var prevState = workInProgressHook.memoizedState;\n if (null !== prevState && null !== deps) {\n a: {\n var JSCompiler_inline_result = prevState[1];\n if (null === JSCompiler_inline_result)\n console.error(\n \"%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.\",\n currentHookNameInDev\n ),\n (JSCompiler_inline_result = !1);\n else {\n deps.length !== JSCompiler_inline_result.length &&\n console.error(\n \"The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\\n\\nPrevious: %s\\nIncoming: %s\",\n currentHookNameInDev,\n \"[\" + deps.join(\", \") + \"]\",\n \"[\" + JSCompiler_inline_result.join(\", \") + \"]\"\n );\n for (\n var i = 0;\n i < JSCompiler_inline_result.length && i < deps.length;\n i++\n )\n if (!objectIs(deps[i], JSCompiler_inline_result[i])) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = !0;\n }\n }\n if (JSCompiler_inline_result) return prevState[0];\n }\n }\n isInHookUserCodeInDev = !0;\n nextCreate = nextCreate();\n isInHookUserCodeInDev = !1;\n workInProgressHook.memoizedState = [nextCreate, deps];\n return nextCreate;\n }\n function dispatchAction(componentIdentity, queue, action) {\n if (25 <= numberOfReRenders)\n throw Error(\n \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n );\n if (componentIdentity === currentlyRenderingComponent)\n if (\n ((didScheduleRenderPhaseUpdate = !0),\n (componentIdentity = { action: action, next: null }),\n null === renderPhaseUpdates && (renderPhaseUpdates = new Map()),\n (action = renderPhaseUpdates.get(queue)),\n void 0 === action)\n )\n renderPhaseUpdates.set(queue, componentIdentity);\n else {\n for (queue = action; null !== queue.next; ) queue = queue.next;\n queue.next = componentIdentity;\n }\n }\n function unsupportedStartTransition() {\n throw Error(\"startTransition cannot be called during server rendering.\");\n }\n function unsupportedSetOptimisticState() {\n throw Error(\"Cannot update optimistic state while rendering.\");\n }\n function useActionState(action, initialState, permalink) {\n resolveCurrentlyRenderingComponent();\n var actionStateHookIndex = actionStateCounter++,\n request = currentlyRenderingRequest;\n if (\"function\" === typeof action.$$FORM_ACTION) {\n var nextPostbackStateKey = null,\n componentKeyPath = currentlyRenderingKeyPath;\n request = request.formState;\n var isSignatureEqual = action.$$IS_SIGNATURE_EQUAL;\n if (null !== request && \"function\" === typeof isSignatureEqual) {\n var postbackKey = request[1];\n isSignatureEqual.call(action, request[2], request[3]) &&\n ((nextPostbackStateKey =\n void 0 !== permalink\n ? \"p\" + permalink\n : \"k\" +\n murmurhash3_32_gc(\n JSON.stringify([\n componentKeyPath,\n null,\n actionStateHookIndex\n ]),\n 0\n )),\n postbackKey === nextPostbackStateKey &&\n ((actionStateMatchingIndex = actionStateHookIndex),\n (initialState = request[0])));\n }\n var boundAction = action.bind(null, initialState);\n action = function (payload) {\n boundAction(payload);\n };\n \"function\" === typeof boundAction.$$FORM_ACTION &&\n (action.$$FORM_ACTION = function (prefix) {\n prefix = boundAction.$$FORM_ACTION(prefix);\n void 0 !== permalink &&\n (checkAttributeStringCoercion(permalink, \"target\"),\n (permalink += \"\"),\n (prefix.action = permalink));\n var formData = prefix.data;\n formData &&\n (null === nextPostbackStateKey &&\n (nextPostbackStateKey =\n void 0 !== permalink\n ? \"p\" + permalink\n : \"k\" +\n murmurhash3_32_gc(\n JSON.stringify([\n componentKeyPath,\n null,\n actionStateHookIndex\n ]),\n 0\n )),\n formData.append(\"$ACTION_KEY\", nextPostbackStateKey));\n return prefix;\n });\n return [initialState, action, !1];\n }\n var _boundAction = action.bind(null, initialState);\n return [\n initialState,\n function (payload) {\n _boundAction(payload);\n },\n !1\n ];\n }\n function unwrapThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n return trackUsedThenable(thenableState, thenable, index);\n }\n function unsupportedRefresh() {\n throw Error(\"Cache cannot be refreshed during server rendering.\");\n }\n function noop$1() {}\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"<anonymous>\") &&\n (_frame = _frame.replace(\"<anonymous>\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeComponentStackByType(type) {\n if (\"string\" === typeof type) return describeBuiltInComponentFrame(type);\n if (\"function\" === typeof type)\n return type.prototype && type.prototype.isReactComponent\n ? ((type = describeNativeComponentFrame(type, !0)), type)\n : describeNativeComponentFrame(type, !1);\n if (\"object\" === typeof type && null !== type) {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeNativeComponentFrame(type.render, !1);\n case REACT_MEMO_TYPE:\n return describeNativeComponentFrame(type.type, !1);\n case REACT_LAZY_TYPE:\n var lazyComponent = type,\n payload = lazyComponent._payload;\n lazyComponent = lazyComponent._init;\n try {\n type = lazyComponent(payload);\n } catch (x) {\n return describeBuiltInComponentFrame(\"Lazy\");\n }\n return describeComponentStackByType(type);\n }\n if (\"string\" === typeof type.name)\n return (\n (payload = type.env),\n describeBuiltInComponentFrame(\n type.name + (payload ? \" [\" + payload + \"]\" : \"\")\n )\n );\n }\n switch (type) {\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n }\n return \"\";\n }\n function getStackByComponentStackNode(componentStack) {\n try {\n var info = \"\";\n do\n (info += describeComponentStackByType(componentStack.type)),\n (componentStack = componentStack.parent);\n while (componentStack);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n }\n function defaultErrorHandler(error) {\n if (\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.environmentName\n ) {\n var JSCompiler_inline_result = error.environmentName;\n error = [error].slice(0);\n \"string\" === typeof error[0]\n ? error.splice(\n 0,\n 1,\n \"[%s] \" + error[0],\n \" \" + JSCompiler_inline_result + \" \"\n )\n : error.splice(0, 0, \"[%s] \", \" \" + JSCompiler_inline_result + \" \");\n error.unshift(console);\n JSCompiler_inline_result = bind.apply(console.error, error);\n JSCompiler_inline_result();\n } else console.error(error);\n return null;\n }\n function noop() {}\n function RequestInstance(\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n ) {\n var abortSet = new Set();\n this.destination = null;\n this.flushScheduled = !1;\n this.resumableState = resumableState;\n this.renderState = renderState;\n this.rootFormatContext = rootFormatContext;\n this.progressiveChunkSize =\n void 0 === progressiveChunkSize ? 12800 : progressiveChunkSize;\n this.status = 10;\n this.fatalError = null;\n this.pendingRootTasks = this.allPendingTasks = this.nextSegmentId = 0;\n this.completedRootSegment = null;\n this.abortableTasks = abortSet;\n this.pingedTasks = [];\n this.clientRenderedBoundaries = [];\n this.completedBoundaries = [];\n this.partialBoundaries = [];\n this.trackedPostpones = null;\n this.onError = void 0 === onError ? defaultErrorHandler : onError;\n this.onPostpone = void 0 === onPostpone ? noop : onPostpone;\n this.onAllReady = void 0 === onAllReady ? noop : onAllReady;\n this.onShellReady = void 0 === onShellReady ? noop : onShellReady;\n this.onShellError = void 0 === onShellError ? noop : onShellError;\n this.onFatalError = void 0 === onFatalError ? noop : onFatalError;\n this.formState = void 0 === formState ? null : formState;\n this.didWarnForKey = null;\n }\n function createRequest(\n children,\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n ) {\n resumableState = new RequestInstance(\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n );\n renderState = createPendingSegment(\n resumableState,\n 0,\n null,\n rootFormatContext,\n !1,\n !1\n );\n renderState.parentFlushed = !0;\n children = createRenderTask(\n resumableState,\n null,\n children,\n -1,\n null,\n renderState,\n null,\n resumableState.abortableTasks,\n null,\n rootFormatContext,\n null,\n emptyTreeContext,\n null,\n !1\n );\n pushComponentStack(children);\n resumableState.pingedTasks.push(children);\n return resumableState;\n }\n function pingTask(request, task) {\n request.pingedTasks.push(task);\n 1 === request.pingedTasks.length &&\n ((request.flushScheduled = null !== request.destination),\n performWork(request));\n }\n function createSuspenseBoundary(request, fallbackAbortableTasks) {\n return {\n status: PENDING,\n rootSegmentID: -1,\n parentFlushed: !1,\n pendingTasks: 0,\n completedSegments: [],\n byteSize: 0,\n fallbackAbortableTasks: fallbackAbortableTasks,\n errorDigest: null,\n contentState: createHoistableState(),\n fallbackState: createHoistableState(),\n trackedContentKeyPath: null,\n trackedFallbackNode: null,\n errorMessage: null,\n errorStack: null,\n errorComponentStack: null\n };\n }\n function createRenderTask(\n request,\n thenableState,\n node,\n childIndex,\n blockedBoundary,\n blockedSegment,\n hoistableState,\n abortSet,\n keyPath,\n formatContext,\n context,\n treeContext,\n componentStack,\n isFallback\n ) {\n request.allPendingTasks++;\n null === blockedBoundary\n ? request.pendingRootTasks++\n : blockedBoundary.pendingTasks++;\n var task = {\n replay: null,\n node: node,\n childIndex: childIndex,\n ping: function () {\n return pingTask(request, task);\n },\n blockedBoundary: blockedBoundary,\n blockedSegment: blockedSegment,\n hoistableState: hoistableState,\n abortSet: abortSet,\n keyPath: keyPath,\n formatContext: formatContext,\n context: context,\n treeContext: treeContext,\n componentStack: componentStack,\n thenableState: thenableState,\n isFallback: isFallback\n };\n abortSet.add(task);\n return task;\n }\n function createReplayTask(\n request,\n thenableState,\n replay,\n node,\n childIndex,\n blockedBoundary,\n hoistableState,\n abortSet,\n keyPath,\n formatContext,\n context,\n treeContext,\n componentStack,\n isFallback\n ) {\n request.allPendingTasks++;\n null === blockedBoundary\n ? request.pendingRootTasks++\n : blockedBoundary.pendingTasks++;\n replay.pendingTasks++;\n var task = {\n replay: replay,\n node: node,\n childIndex: childIndex,\n ping: function () {\n return pingTask(request, task);\n },\n blockedBoundary: blockedBoundary,\n blockedSegment: null,\n hoistableState: hoistableState,\n abortSet: abortSet,\n keyPath: keyPath,\n formatContext: formatContext,\n context: context,\n treeContext: treeContext,\n componentStack: componentStack,\n thenableState: thenableState,\n isFallback: isFallback\n };\n abortSet.add(task);\n return task;\n }\n function createPendingSegment(\n request,\n index,\n boundary,\n parentFormatContext,\n lastPushedText,\n textEmbedded\n ) {\n return {\n status: PENDING,\n id: -1,\n index: index,\n parentFlushed: !1,\n chunks: [],\n children: [],\n parentFormatContext: parentFormatContext,\n boundary: boundary,\n lastPushedText: lastPushedText,\n textEmbedded: textEmbedded\n };\n }\n function getCurrentStackInDEV() {\n return null === currentTaskInDEV ||\n null === currentTaskInDEV.componentStack\n ? \"\"\n : getStackByComponentStackNode(currentTaskInDEV.componentStack);\n }\n function pushServerComponentStack(task, debugInfo) {\n if (null != debugInfo)\n for (var i = 0; i < debugInfo.length; i++) {\n var componentInfo = debugInfo[i];\n \"string\" === typeof componentInfo.name &&\n (task.componentStack = {\n parent: task.componentStack,\n type: componentInfo,\n owner: componentInfo.owner,\n stack: null\n });\n }\n }\n function pushComponentStack(task) {\n var node = task.node;\n if (\"object\" === typeof node && null !== node)\n switch (node.$$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = node.type,\n owner = node._owner;\n pushServerComponentStack(task, node._debugInfo);\n task.componentStack = {\n parent: task.componentStack,\n type: type,\n owner: owner,\n stack: null\n };\n break;\n case REACT_LAZY_TYPE:\n pushServerComponentStack(task, node._debugInfo);\n break;\n default:\n \"function\" === typeof node.then &&\n pushServerComponentStack(task, node._debugInfo);\n }\n }\n function getThrownInfo(node) {\n var errorInfo = {};\n node &&\n Object.defineProperty(errorInfo, \"componentStack\", {\n configurable: !0,\n enumerable: !0,\n get: function () {\n var stack = getStackByComponentStackNode(node);\n Object.defineProperty(errorInfo, \"componentStack\", {\n value: stack\n });\n return stack;\n }\n });\n return errorInfo;\n }\n function encodeErrorForBoundary(\n boundary,\n digest,\n error,\n thrownInfo,\n wasAborted\n ) {\n boundary.errorDigest = digest;\n error instanceof Error\n ? ((digest = String(error.message)), (error = String(error.stack)))\n : ((digest =\n \"object\" === typeof error && null !== error\n ? describeObjectForErrorMessage(error)\n : String(error)),\n (error = null));\n wasAborted = wasAborted\n ? \"Switched to client rendering because the server rendering aborted due to:\\n\\n\"\n : \"Switched to client rendering because the server rendering errored:\\n\\n\";\n boundary.errorMessage = wasAborted + digest;\n boundary.errorStack = null !== error ? wasAborted + error : null;\n boundary.errorComponentStack = thrownInfo.componentStack;\n }\n function logRecoverableError(request, error, errorInfo) {\n request = request.onError;\n error = request(error, errorInfo);\n if (null != error && \"string\" !== typeof error)\n console.error(\n 'onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"%s\" instead',\n typeof error\n );\n else return error;\n }\n function fatalError(request, error) {\n var onShellError = request.onShellError,\n onFatalError = request.onFatalError;\n onShellError(error);\n onFatalError(error);\n null !== request.destination\n ? ((request.status = CLOSED), request.destination.destroy(error))\n : ((request.status = 13), (request.fatalError = error));\n }\n function renderWithHooks(\n request,\n task,\n keyPath,\n Component,\n props,\n secondArg\n ) {\n var prevThenableState = task.thenableState;\n task.thenableState = null;\n currentlyRenderingComponent = {};\n currentlyRenderingTask = task;\n currentlyRenderingRequest = request;\n currentlyRenderingKeyPath = keyPath;\n isInHookUserCodeInDev = !1;\n actionStateCounter = localIdCounter = 0;\n actionStateMatchingIndex = -1;\n thenableIndexCounter = 0;\n thenableState = prevThenableState;\n for (\n request = callComponentInDEV(Component, props, secondArg);\n didScheduleRenderPhaseUpdate;\n\n )\n (didScheduleRenderPhaseUpdate = !1),\n (actionStateCounter = localIdCounter = 0),\n (actionStateMatchingIndex = -1),\n (thenableIndexCounter = 0),\n (numberOfReRenders += 1),\n (workInProgressHook = null),\n (request = Component(props, secondArg));\n resetHooksState();\n return request;\n }\n function finishFunctionComponent(\n request,\n task,\n keyPath,\n children,\n hasId,\n actionStateCount,\n actionStateMatchingIndex\n ) {\n var didEmitActionStateMarkers = !1;\n if (0 !== actionStateCount && null !== request.formState) {\n var segment = task.blockedSegment;\n if (null !== segment) {\n didEmitActionStateMarkers = !0;\n segment = segment.chunks;\n for (var i = 0; i < actionStateCount; i++)\n i === actionStateMatchingIndex\n ? segment.push(\"\\x3c!--F!--\\x3e\")\n : segment.push(\"\\x3c!--F--\\x3e\");\n }\n }\n actionStateCount = task.keyPath;\n task.keyPath = keyPath;\n hasId\n ? ((keyPath = task.treeContext),\n (task.treeContext = pushTreeContext(keyPath, 1, 0)),\n renderNode(request, task, children, -1),\n (task.treeContext = keyPath))\n : didEmitActionStateMarkers\n ? renderNode(request, task, children, -1)\n : renderNodeDestructive(request, task, children, -1);\n task.keyPath = actionStateCount;\n }\n function renderElement(request, task, keyPath, type, props, ref) {\n if (\"function\" === typeof type)\n if (type.prototype && type.prototype.isReactComponent) {\n var newProps = props;\n if (\"ref\" in props) {\n newProps = {};\n for (var propName in props)\n \"ref\" !== propName && (newProps[propName] = props[propName]);\n }\n var defaultProps = type.defaultProps;\n if (defaultProps) {\n newProps === props && (newProps = assign({}, newProps, props));\n for (var _propName in defaultProps)\n void 0 === newProps[_propName] &&\n (newProps[_propName] = defaultProps[_propName]);\n }\n var resolvedProps = newProps;\n var context = emptyContextObject,\n contextType = type.contextType;\n if (\n \"contextType\" in type &&\n null !== contextType &&\n (void 0 === contextType ||\n contextType.$$typeof !== REACT_CONTEXT_TYPE) &&\n !didWarnAboutInvalidateContextType.has(type)\n ) {\n didWarnAboutInvalidateContextType.add(type);\n var addendum =\n void 0 === contextType\n ? \" However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.\"\n : \"object\" !== typeof contextType\n ? \" However, it is set to a \" + typeof contextType + \".\"\n : contextType.$$typeof === REACT_CONSUMER_TYPE\n ? \" Did you accidentally pass the Context.Consumer instead?\"\n : \" However, it is set to an object with keys {\" +\n Object.keys(contextType).join(\", \") +\n \"}.\";\n console.error(\n \"%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s\",\n getComponentNameFromType(type) || \"Component\",\n addendum\n );\n }\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = contextType._currentValue2);\n var instance = new type(resolvedProps, context);\n if (\n \"function\" === typeof type.getDerivedStateFromProps &&\n (null === instance.state || void 0 === instance.state)\n ) {\n var componentName = getComponentNameFromType(type) || \"Component\";\n didWarnAboutUninitializedState.has(componentName) ||\n (didWarnAboutUninitializedState.add(componentName),\n console.error(\n \"`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.\",\n componentName,\n null === instance.state ? \"null\" : \"undefined\",\n componentName\n ));\n }\n if (\n \"function\" === typeof type.getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate\n ) {\n var foundWillMountName = null,\n foundWillReceivePropsName = null,\n foundWillUpdateName = null;\n \"function\" === typeof instance.componentWillMount &&\n !0 !== instance.componentWillMount.__suppressDeprecationWarning\n ? (foundWillMountName = \"componentWillMount\")\n : \"function\" === typeof instance.UNSAFE_componentWillMount &&\n (foundWillMountName = \"UNSAFE_componentWillMount\");\n \"function\" === typeof instance.componentWillReceiveProps &&\n !0 !==\n instance.componentWillReceiveProps.__suppressDeprecationWarning\n ? (foundWillReceivePropsName = \"componentWillReceiveProps\")\n : \"function\" ===\n typeof instance.UNSAFE_componentWillReceiveProps &&\n (foundWillReceivePropsName =\n \"UNSAFE_componentWillReceiveProps\");\n \"function\" === typeof instance.componentWillUpdate &&\n !0 !== instance.componentWillUpdate.__suppressDeprecationWarning\n ? (foundWillUpdateName = \"componentWillUpdate\")\n : \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n (foundWillUpdateName = \"UNSAFE_componentWillUpdate\");\n if (\n null !== foundWillMountName ||\n null !== foundWillReceivePropsName ||\n null !== foundWillUpdateName\n ) {\n var _componentName =\n getComponentNameFromType(type) || \"Component\",\n newApiName =\n \"function\" === typeof type.getDerivedStateFromProps\n ? \"getDerivedStateFromProps()\"\n : \"getSnapshotBeforeUpdate()\";\n didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName) ||\n (didWarnAboutLegacyLifecyclesAndDerivedState.add(\n _componentName\n ),\n console.error(\n \"Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\nhttps://react.dev/link/unsafe-component-lifecycles\",\n _componentName,\n newApiName,\n null !== foundWillMountName\n ? \"\\n \" + foundWillMountName\n : \"\",\n null !== foundWillReceivePropsName\n ? \"\\n \" + foundWillReceivePropsName\n : \"\",\n null !== foundWillUpdateName\n ? \"\\n \" + foundWillUpdateName\n : \"\"\n ));\n }\n }\n var name = getComponentNameFromType(type) || \"Component\";\n instance.render ||\n (type.prototype && \"function\" === typeof type.prototype.render\n ? console.error(\n \"No `render` method found on the %s instance: did you accidentally return an object from the constructor?\",\n name\n )\n : console.error(\n \"No `render` method found on the %s instance: you may have forgotten to define `render`.\",\n name\n ));\n !instance.getInitialState ||\n instance.getInitialState.isReactClassApproved ||\n instance.state ||\n console.error(\n \"getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?\",\n name\n );\n instance.getDefaultProps &&\n !instance.getDefaultProps.isReactClassApproved &&\n console.error(\n \"getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.\",\n name\n );\n instance.contextType &&\n console.error(\n \"contextType was defined as an instance property on %s. Use a static property to define contextType instead.\",\n name\n );\n type.childContextTypes &&\n !didWarnAboutChildContextTypes.has(type) &&\n (didWarnAboutChildContextTypes.add(type),\n console.error(\n \"%s uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead. (https://react.dev/link/legacy-context)\",\n name\n ));\n type.contextTypes &&\n !didWarnAboutContextTypes$1.has(type) &&\n (didWarnAboutContextTypes$1.add(type),\n console.error(\n \"%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with static contextType instead. (https://react.dev/link/legacy-context)\",\n name\n ));\n \"function\" === typeof instance.componentShouldUpdate &&\n console.error(\n \"%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.\",\n name\n );\n type.prototype &&\n type.prototype.isPureReactComponent &&\n \"undefined\" !== typeof instance.shouldComponentUpdate &&\n console.error(\n \"%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.\",\n getComponentNameFromType(type) || \"A pure component\"\n );\n \"function\" === typeof instance.componentDidUnmount &&\n console.error(\n \"%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?\",\n name\n );\n \"function\" === typeof instance.componentDidReceiveProps &&\n console.error(\n \"%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().\",\n name\n );\n \"function\" === typeof instance.componentWillRecieveProps &&\n console.error(\n \"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?\",\n name\n );\n \"function\" === typeof instance.UNSAFE_componentWillRecieveProps &&\n console.error(\n \"%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?\",\n name\n );\n var hasMutatedProps = instance.props !== resolvedProps;\n void 0 !== instance.props &&\n hasMutatedProps &&\n console.error(\n \"When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.\",\n name\n );\n instance.defaultProps &&\n console.error(\n \"Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.\",\n name,\n name\n );\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n \"function\" === typeof instance.componentDidUpdate ||\n didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(type) ||\n (didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(type),\n console.error(\n \"%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.\",\n getComponentNameFromType(type)\n ));\n \"function\" === typeof instance.getDerivedStateFromProps &&\n console.error(\n \"%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.\",\n name\n );\n \"function\" === typeof instance.getDerivedStateFromError &&\n console.error(\n \"%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.\",\n name\n );\n \"function\" === typeof type.getSnapshotBeforeUpdate &&\n console.error(\n \"%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.\",\n name\n );\n var state = instance.state;\n state &&\n (\"object\" !== typeof state || isArrayImpl(state)) &&\n console.error(\"%s.state: must be set to an object or null\", name);\n \"function\" === typeof instance.getChildContext &&\n \"object\" !== typeof type.childContextTypes &&\n console.error(\n \"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().\",\n name\n );\n var initialState = void 0 !== instance.state ? instance.state : null;\n instance.updater = classComponentUpdater;\n instance.props = resolvedProps;\n instance.state = initialState;\n var internalInstance = { queue: [], replace: !1 };\n instance._reactInternals = internalInstance;\n var contextType$jscomp$0 = type.contextType;\n instance.context =\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0\n ? contextType$jscomp$0._currentValue2\n : emptyContextObject;\n if (instance.state === resolvedProps) {\n var componentName$jscomp$0 =\n getComponentNameFromType(type) || \"Component\";\n didWarnAboutDirectlyAssigningPropsToState.has(\n componentName$jscomp$0\n ) ||\n (didWarnAboutDirectlyAssigningPropsToState.add(\n componentName$jscomp$0\n ),\n console.error(\n \"%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.\",\n componentName$jscomp$0\n ));\n }\n var getDerivedStateFromProps = type.getDerivedStateFromProps;\n if (\"function\" === typeof getDerivedStateFromProps) {\n var partialState = getDerivedStateFromProps(\n resolvedProps,\n initialState\n );\n if (void 0 === partialState) {\n var componentName$jscomp$1 =\n getComponentNameFromType(type) || \"Component\";\n didWarnAboutUndefinedDerivedState.has(componentName$jscomp$1) ||\n (didWarnAboutUndefinedDerivedState.add(componentName$jscomp$1),\n console.error(\n \"%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.\",\n componentName$jscomp$1\n ));\n }\n var JSCompiler_inline_result =\n null === partialState || void 0 === partialState\n ? initialState\n : assign({}, initialState, partialState);\n instance.state = JSCompiler_inline_result;\n }\n if (\n \"function\" !== typeof type.getDerivedStateFromProps &&\n \"function\" !== typeof instance.getSnapshotBeforeUpdate &&\n (\"function\" === typeof instance.UNSAFE_componentWillMount ||\n \"function\" === typeof instance.componentWillMount)\n ) {\n var oldState = instance.state;\n if (\"function\" === typeof instance.componentWillMount) {\n if (\n !0 !== instance.componentWillMount.__suppressDeprecationWarning\n ) {\n var componentName$jscomp$2 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutDeprecatedWillMount[componentName$jscomp$2] ||\n (console.warn(\n \"componentWillMount has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.\\n\\n* Move code from componentWillMount to componentDidMount (preferred in most cases) or the constructor.\\n\\nPlease update the following components: %s\",\n componentName$jscomp$2\n ),\n (didWarnAboutDeprecatedWillMount[componentName$jscomp$2] =\n !0));\n }\n instance.componentWillMount();\n }\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount();\n oldState !== instance.state &&\n (console.error(\n \"%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\",\n getComponentNameFromType(type) || \"Component\"\n ),\n classComponentUpdater.enqueueReplaceState(\n instance,\n instance.state,\n null\n ));\n if (\n null !== internalInstance.queue &&\n 0 < internalInstance.queue.length\n ) {\n var oldQueue = internalInstance.queue,\n oldReplace = internalInstance.replace;\n internalInstance.queue = null;\n internalInstance.replace = !1;\n if (oldReplace && 1 === oldQueue.length)\n instance.state = oldQueue[0];\n else {\n for (\n var nextState = oldReplace ? oldQueue[0] : instance.state,\n dontMutate = !0,\n i = oldReplace ? 1 : 0;\n i < oldQueue.length;\n i++\n ) {\n var partial = oldQueue[i],\n partialState$jscomp$0 =\n \"function\" === typeof partial\n ? partial.call(\n instance,\n nextState,\n resolvedProps,\n void 0\n )\n : partial;\n null != partialState$jscomp$0 &&\n (dontMutate\n ? ((dontMutate = !1),\n (nextState = assign(\n {},\n nextState,\n partialState$jscomp$0\n )))\n : assign(nextState, partialState$jscomp$0));\n }\n instance.state = nextState;\n }\n } else internalInstance.queue = null;\n }\n var nextChildren = callRenderInDEV(instance);\n if (12 === request.status) throw null;\n instance.props !== resolvedProps &&\n (didWarnAboutReassigningProps ||\n console.error(\n \"It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.\",\n getComponentNameFromType(type) || \"a component\"\n ),\n (didWarnAboutReassigningProps = !0));\n var prevKeyPath = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, nextChildren, -1);\n task.keyPath = prevKeyPath;\n } else {\n if (type.prototype && \"function\" === typeof type.prototype.render) {\n var componentName$jscomp$3 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutBadClass[componentName$jscomp$3] ||\n (console.error(\n \"The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.\",\n componentName$jscomp$3,\n componentName$jscomp$3\n ),\n (didWarnAboutBadClass[componentName$jscomp$3] = !0));\n }\n var value = renderWithHooks(\n request,\n task,\n keyPath,\n type,\n props,\n void 0\n );\n if (12 === request.status) throw null;\n var hasId = 0 !== localIdCounter,\n actionStateCount = actionStateCounter,\n actionStateMatchingIndex$jscomp$0 = actionStateMatchingIndex;\n if (type.contextTypes) {\n var _componentName$jscomp$0 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutContextTypes[_componentName$jscomp$0] ||\n ((didWarnAboutContextTypes[_componentName$jscomp$0] = !0),\n console.error(\n \"%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with React.useContext() instead. (https://react.dev/link/legacy-context)\",\n _componentName$jscomp$0\n ));\n }\n type &&\n type.childContextTypes &&\n console.error(\n \"childContextTypes cannot be defined on a function component.\\n %s.childContextTypes = ...\",\n type.displayName || type.name || \"Component\"\n );\n if (\"function\" === typeof type.getDerivedStateFromProps) {\n var _componentName2 = getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] ||\n (console.error(\n \"%s: Function components do not support getDerivedStateFromProps.\",\n _componentName2\n ),\n (didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] =\n !0));\n }\n if (\n \"object\" === typeof type.contextType &&\n null !== type.contextType\n ) {\n var _componentName3 = getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutContextTypeOnFunctionComponent[_componentName3] ||\n (console.error(\n \"%s: Function components do not support contextType.\",\n _componentName3\n ),\n (didWarnAboutContextTypeOnFunctionComponent[_componentName3] =\n !0));\n }\n finishFunctionComponent(\n request,\n task,\n keyPath,\n value,\n hasId,\n actionStateCount,\n actionStateMatchingIndex$jscomp$0\n );\n }\n else if (\"string\" === typeof type) {\n var segment = task.blockedSegment;\n if (null === segment) {\n var children = props.children,\n prevContext = task.formatContext,\n prevKeyPath$jscomp$0 = task.keyPath;\n task.formatContext = getChildFormatContext(prevContext, type, props);\n task.keyPath = keyPath;\n renderNode(request, task, children, -1);\n task.formatContext = prevContext;\n task.keyPath = prevKeyPath$jscomp$0;\n } else {\n var _children = pushStartInstance(\n segment.chunks,\n type,\n props,\n request.resumableState,\n request.renderState,\n task.hoistableState,\n task.formatContext,\n segment.lastPushedText,\n task.isFallback\n );\n segment.lastPushedText = !1;\n var _prevContext = task.formatContext,\n _prevKeyPath2 = task.keyPath;\n task.formatContext = getChildFormatContext(_prevContext, type, props);\n task.keyPath = keyPath;\n renderNode(request, task, _children, -1);\n task.formatContext = _prevContext;\n task.keyPath = _prevKeyPath2;\n a: {\n var target = segment.chunks,\n resumableState = request.resumableState;\n switch (type) {\n case \"title\":\n case \"style\":\n case \"script\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"img\":\n case \"input\":\n case \"keygen\":\n case \"link\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n break a;\n case \"body\":\n if (_prevContext.insertionMode <= HTML_HTML_MODE) {\n resumableState.hasBody = !0;\n break a;\n }\n break;\n case \"html\":\n if (_prevContext.insertionMode === ROOT_HTML_MODE) {\n resumableState.hasHtml = !0;\n break a;\n }\n }\n target.push(endChunkForTag(type));\n }\n segment.lastPushedText = !1;\n }\n } else {\n switch (type) {\n case REACT_LEGACY_HIDDEN_TYPE:\n case REACT_DEBUG_TRACING_MODE_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_FRAGMENT_TYPE:\n var prevKeyPath$jscomp$1 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = prevKeyPath$jscomp$1;\n return;\n case REACT_OFFSCREEN_TYPE:\n if (\"hidden\" !== props.mode) {\n var prevKeyPath$jscomp$2 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = prevKeyPath$jscomp$2;\n }\n return;\n case REACT_SUSPENSE_LIST_TYPE:\n var _prevKeyPath3 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = _prevKeyPath3;\n return;\n case REACT_SCOPE_TYPE:\n throw Error(\n \"ReactDOMServer does not yet support scope components.\"\n );\n case REACT_SUSPENSE_TYPE:\n a: if (null !== task.replay) {\n var _prevKeyPath = task.keyPath;\n task.keyPath = keyPath;\n var _content = props.children;\n try {\n renderNode(request, task, _content, -1);\n } finally {\n task.keyPath = _prevKeyPath;\n }\n } else {\n var prevKeyPath$jscomp$3 = task.keyPath,\n parentBoundary = task.blockedBoundary,\n parentHoistableState = task.hoistableState,\n parentSegment = task.blockedSegment,\n fallback = props.fallback,\n content = props.children,\n fallbackAbortSet = new Set(),\n newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n null !== request.trackedPostpones &&\n (newBoundary.trackedContentKeyPath = keyPath);\n var boundarySegment = createPendingSegment(\n request,\n parentSegment.chunks.length,\n newBoundary,\n task.formatContext,\n !1,\n !1\n );\n parentSegment.children.push(boundarySegment);\n parentSegment.lastPushedText = !1;\n var contentRootSegment = createPendingSegment(\n request,\n 0,\n null,\n task.formatContext,\n !1,\n !1\n );\n contentRootSegment.parentFlushed = !0;\n if (null !== request.trackedPostpones) {\n var fallbackKeyPath = [\n keyPath[0],\n \"Suspense Fallback\",\n keyPath[2]\n ],\n fallbackReplayNode = [\n fallbackKeyPath[1],\n fallbackKeyPath[2],\n [],\n null\n ];\n request.trackedPostpones.workingMap.set(\n fallbackKeyPath,\n fallbackReplayNode\n );\n newBoundary.trackedFallbackNode = fallbackReplayNode;\n task.blockedSegment = boundarySegment;\n task.keyPath = fallbackKeyPath;\n boundarySegment.status = 6;\n try {\n renderNode(request, task, fallback, -1),\n pushSegmentFinale(\n boundarySegment.chunks,\n request.renderState,\n boundarySegment.lastPushedText,\n boundarySegment.textEmbedded\n ),\n (boundarySegment.status = COMPLETED);\n } catch (thrownValue) {\n throw (\n ((boundarySegment.status = 12 === request.status ? 3 : 4),\n thrownValue)\n );\n } finally {\n (task.blockedSegment = parentSegment),\n (task.keyPath = prevKeyPath$jscomp$3);\n }\n var suspendedPrimaryTask = createRenderTask(\n request,\n null,\n content,\n -1,\n newBoundary,\n contentRootSegment,\n newBoundary.contentState,\n task.abortSet,\n keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n pushComponentStack(suspendedPrimaryTask);\n request.pingedTasks.push(suspendedPrimaryTask);\n } else {\n task.blockedBoundary = newBoundary;\n task.hoistableState = newBoundary.contentState;\n task.blockedSegment = contentRootSegment;\n task.keyPath = keyPath;\n contentRootSegment.status = 6;\n try {\n if (\n (renderNode(request, task, content, -1),\n pushSegmentFinale(\n contentRootSegment.chunks,\n request.renderState,\n contentRootSegment.lastPushedText,\n contentRootSegment.textEmbedded\n ),\n (contentRootSegment.status = COMPLETED),\n queueCompletedSegment(newBoundary, contentRootSegment),\n 0 === newBoundary.pendingTasks &&\n newBoundary.status === PENDING)\n ) {\n newBoundary.status = COMPLETED;\n break a;\n }\n } catch (thrownValue$2) {\n newBoundary.status = CLIENT_RENDERED;\n if (12 === request.status) {\n contentRootSegment.status = 3;\n var error = request.fatalError;\n } else\n (contentRootSegment.status = 4), (error = thrownValue$2);\n var thrownInfo = getThrownInfo(task.componentStack);\n var errorDigest = logRecoverableError(\n request,\n error,\n thrownInfo\n );\n encodeErrorForBoundary(\n newBoundary,\n errorDigest,\n error,\n thrownInfo,\n !1\n );\n untrackBoundary(request, newBoundary);\n } finally {\n (task.blockedBoundary = parentBoundary),\n (task.hoistableState = parentHoistableState),\n (task.blockedSegment = parentSegment),\n (task.keyPath = prevKeyPath$jscomp$3);\n }\n var suspendedFallbackTask = createRenderTask(\n request,\n null,\n fallback,\n -1,\n parentBoundary,\n boundarySegment,\n newBoundary.fallbackState,\n fallbackAbortSet,\n [keyPath[0], \"Suspense Fallback\", keyPath[2]],\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n !0\n );\n pushComponentStack(suspendedFallbackTask);\n request.pingedTasks.push(suspendedFallbackTask);\n }\n }\n return;\n }\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n if (\"ref\" in props) {\n var propsWithoutRef = {};\n for (var key in props)\n \"ref\" !== key && (propsWithoutRef[key] = props[key]);\n } else propsWithoutRef = props;\n var children$jscomp$0 = renderWithHooks(\n request,\n task,\n keyPath,\n type.render,\n propsWithoutRef,\n ref\n );\n finishFunctionComponent(\n request,\n task,\n keyPath,\n children$jscomp$0,\n 0 !== localIdCounter,\n actionStateCounter,\n actionStateMatchingIndex\n );\n return;\n case REACT_MEMO_TYPE:\n renderElement(request, task, keyPath, type.type, props, ref);\n return;\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n var value$jscomp$0 = props.value,\n children$jscomp$1 = props.children;\n var prevSnapshot = task.context;\n var prevKeyPath$jscomp$4 = task.keyPath;\n var prevValue = type._currentValue2;\n type._currentValue2 = value$jscomp$0;\n void 0 !== type._currentRenderer2 &&\n null !== type._currentRenderer2 &&\n type._currentRenderer2 !== rendererSigil &&\n console.error(\n \"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\"\n );\n type._currentRenderer2 = rendererSigil;\n var prevNode = currentActiveSnapshot,\n newNode = {\n parent: prevNode,\n depth: null === prevNode ? 0 : prevNode.depth + 1,\n context: type,\n parentValue: prevValue,\n value: value$jscomp$0\n };\n currentActiveSnapshot = newNode;\n task.context = newNode;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, children$jscomp$1, -1);\n var prevSnapshot$jscomp$0 = currentActiveSnapshot;\n if (null === prevSnapshot$jscomp$0)\n throw Error(\n \"Tried to pop a Context at the root of the app. This is a bug in React.\"\n );\n prevSnapshot$jscomp$0.context !== type &&\n console.error(\n \"The parent context is not the expected context. This is probably a bug in React.\"\n );\n prevSnapshot$jscomp$0.context._currentValue2 =\n prevSnapshot$jscomp$0.parentValue;\n void 0 !== type._currentRenderer2 &&\n null !== type._currentRenderer2 &&\n type._currentRenderer2 !== rendererSigil &&\n console.error(\n \"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\"\n );\n type._currentRenderer2 = rendererSigil;\n var JSCompiler_inline_result$jscomp$0 = (currentActiveSnapshot =\n prevSnapshot$jscomp$0.parent);\n task.context = JSCompiler_inline_result$jscomp$0;\n task.keyPath = prevKeyPath$jscomp$4;\n prevSnapshot !== task.context &&\n console.error(\n \"Popping the context provider did not return back to the original snapshot. This is a bug in React.\"\n );\n return;\n case REACT_CONSUMER_TYPE:\n var context$jscomp$0 = type._context,\n render = props.children;\n \"function\" !== typeof render &&\n console.error(\n \"A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it.\"\n );\n var newChildren = render(context$jscomp$0._currentValue2),\n prevKeyPath$jscomp$5 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, newChildren, -1);\n task.keyPath = prevKeyPath$jscomp$5;\n return;\n case REACT_LAZY_TYPE:\n var Component = callLazyInitInDEV(type);\n if (12 === request.status) throw null;\n renderElement(request, task, keyPath, Component, props, ref);\n return;\n }\n var info = \"\";\n if (\n void 0 === type ||\n (\"object\" === typeof type &&\n null !== type &&\n 0 === Object.keys(type).length)\n )\n info +=\n \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n throw Error(\n \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n ((null == type ? type : typeof type) + \".\" + info)\n );\n }\n }\n function resumeNode(request, task, segmentId, node, childIndex) {\n var prevReplay = task.replay,\n blockedBoundary = task.blockedBoundary,\n resumedSegment = createPendingSegment(\n request,\n 0,\n null,\n task.formatContext,\n !1,\n !1\n );\n resumedSegment.id = segmentId;\n resumedSegment.parentFlushed = !0;\n try {\n (task.replay = null),\n (task.blockedSegment = resumedSegment),\n renderNode(request, task, node, childIndex),\n (resumedSegment.status = COMPLETED),\n null === blockedBoundary\n ? (request.completedRootSegment = resumedSegment)\n : (queueCompletedSegment(blockedBoundary, resumedSegment),\n blockedBoundary.parentFlushed &&\n request.partialBoundaries.push(blockedBoundary));\n } finally {\n (task.replay = prevReplay), (task.blockedSegment = null);\n }\n }\n function renderNodeDestructive(request, task, node, childIndex) {\n null !== task.replay && \"number\" === typeof task.replay.slots\n ? resumeNode(request, task, task.replay.slots, node, childIndex)\n : ((task.node = node),\n (task.childIndex = childIndex),\n (node = task.componentStack),\n pushComponentStack(task),\n retryNode(request, task),\n (task.componentStack = node));\n }\n function retryNode(request, task) {\n var node = task.node,\n childIndex = task.childIndex;\n if (null !== node) {\n if (\"object\" === typeof node) {\n switch (node.$$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = node.type,\n key = node.key,\n props = node.props;\n node = props.ref;\n var ref = void 0 !== node ? node : null,\n name = getComponentNameFromType(type),\n keyOrIndex =\n null == key ? (-1 === childIndex ? 0 : childIndex) : key,\n keyPath = [task.keyPath, name, keyOrIndex];\n if (null !== task.replay) {\n var replay = task.replay;\n childIndex = replay.nodes;\n for (node = 0; node < childIndex.length; node++)\n if (((key = childIndex[node]), keyOrIndex === key[1])) {\n if (4 === key.length) {\n if (null !== name && name !== key[0])\n throw Error(\n \"Expected the resume to render <\" +\n key[0] +\n \"> in this slot but instead it rendered <\" +\n name +\n \">. The tree doesn't match so React will fallback to client rendering.\"\n );\n var childNodes = key[2];\n key = key[3];\n name = task.node;\n task.replay = {\n nodes: childNodes,\n slots: key,\n pendingTasks: 1\n };\n try {\n renderElement(request, task, keyPath, type, props, ref);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n (x === SuspenseException ||\n \"function\" === typeof x.then)\n )\n throw (\n (task.node === name && (task.replay = replay), x)\n );\n task.replay.pendingTasks--;\n props = getThrownInfo(task.componentStack);\n erroredReplay(\n request,\n task.blockedBoundary,\n x,\n props,\n childNodes,\n key\n );\n }\n task.replay = replay;\n } else {\n if (type !== REACT_SUSPENSE_TYPE)\n throw Error(\n \"Expected the resume to render <Suspense> in this slot but instead it rendered <\" +\n (getComponentNameFromType(type) || \"Unknown\") +\n \">. The tree doesn't match so React will fallback to client rendering.\"\n );\n a: {\n type = void 0;\n ref = key[5];\n replay = key[2];\n name = key[3];\n keyOrIndex = null === key[4] ? [] : key[4][2];\n key = null === key[4] ? null : key[4][3];\n var prevKeyPath = task.keyPath,\n previousReplaySet = task.replay,\n parentBoundary = task.blockedBoundary,\n parentHoistableState = task.hoistableState,\n content = props.children;\n props = props.fallback;\n var fallbackAbortSet = new Set(),\n resumedBoundary = createSuspenseBoundary(\n request,\n fallbackAbortSet\n );\n resumedBoundary.parentFlushed = !0;\n resumedBoundary.rootSegmentID = ref;\n task.blockedBoundary = resumedBoundary;\n task.hoistableState = resumedBoundary.contentState;\n task.keyPath = keyPath;\n task.replay = {\n nodes: replay,\n slots: name,\n pendingTasks: 1\n };\n try {\n renderNode(request, task, content, -1);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n if (\n 0 === resumedBoundary.pendingTasks &&\n resumedBoundary.status === PENDING\n ) {\n resumedBoundary.status = COMPLETED;\n request.completedBoundaries.push(resumedBoundary);\n break a;\n }\n } catch (error) {\n (resumedBoundary.status = CLIENT_RENDERED),\n (childNodes = getThrownInfo(task.componentStack)),\n (type = logRecoverableError(\n request,\n error,\n childNodes\n )),\n encodeErrorForBoundary(\n resumedBoundary,\n type,\n error,\n childNodes,\n !1\n ),\n task.replay.pendingTasks--,\n request.clientRenderedBoundaries.push(\n resumedBoundary\n );\n } finally {\n (task.blockedBoundary = parentBoundary),\n (task.hoistableState = parentHoistableState),\n (task.replay = previousReplaySet),\n (task.keyPath = prevKeyPath);\n }\n childNodes = createReplayTask(\n request,\n null,\n { nodes: keyOrIndex, slots: key, pendingTasks: 0 },\n props,\n -1,\n parentBoundary,\n resumedBoundary.fallbackState,\n fallbackAbortSet,\n [keyPath[0], \"Suspense Fallback\", keyPath[2]],\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n !0\n );\n pushComponentStack(childNodes);\n request.pingedTasks.push(childNodes);\n }\n }\n childIndex.splice(node, 1);\n break;\n }\n } else renderElement(request, task, keyPath, type, props, ref);\n return;\n case REACT_PORTAL_TYPE:\n throw Error(\n \"Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render.\"\n );\n case REACT_LAZY_TYPE:\n node = callLazyInitInDEV(node);\n if (12 === request.status) throw null;\n renderNodeDestructive(request, task, node, childIndex);\n return;\n }\n if (isArrayImpl(node)) {\n renderChildrenArray(request, task, node, childIndex);\n return;\n }\n null === node || \"object\" !== typeof node\n ? (props = null)\n : ((childNodes =\n (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||\n node[\"@@iterator\"]),\n (props = \"function\" === typeof childNodes ? childNodes : null));\n if (props && (childNodes = props.call(node))) {\n if (childNodes === node) {\n if (\n -1 !== childIndex ||\n null === task.componentStack ||\n \"function\" !== typeof task.componentStack.type ||\n \"[object GeneratorFunction]\" !==\n Object.prototype.toString.call(task.componentStack.type) ||\n \"[object Generator]\" !==\n Object.prototype.toString.call(childNodes)\n )\n didWarnAboutGenerators ||\n console.error(\n \"Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items.\"\n ),\n (didWarnAboutGenerators = !0);\n } else\n node.entries !== props ||\n didWarnAboutMaps ||\n (console.error(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0));\n node = childNodes.next();\n if (!node.done) {\n props = [];\n do props.push(node.value), (node = childNodes.next());\n while (!node.done);\n renderChildrenArray(request, task, props, childIndex);\n }\n return;\n }\n if (\"function\" === typeof node.then)\n return (\n (task.thenableState = null),\n renderNodeDestructive(\n request,\n task,\n unwrapThenable(node),\n childIndex\n )\n );\n if (node.$$typeof === REACT_CONTEXT_TYPE)\n return renderNodeDestructive(\n request,\n task,\n node._currentValue2,\n childIndex\n );\n childIndex = Object.prototype.toString.call(node);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === childIndex\n ? \"object with keys {\" + Object.keys(node).join(\", \") + \"}\"\n : childIndex) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n \"string\" === typeof node\n ? ((childIndex = task.blockedSegment),\n null !== childIndex &&\n (childIndex.lastPushedText = pushTextInstance(\n childIndex.chunks,\n node,\n request.renderState,\n childIndex.lastPushedText\n )))\n : \"number\" === typeof node || \"bigint\" === typeof node\n ? ((childIndex = task.blockedSegment),\n null !== childIndex &&\n (childIndex.lastPushedText = pushTextInstance(\n childIndex.chunks,\n \"\" + node,\n request.renderState,\n childIndex.lastPushedText\n )))\n : (\"function\" === typeof node &&\n ((childIndex = node.displayName || node.name || \"Component\"),\n console.error(\n \"Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\",\n childIndex,\n childIndex\n )),\n \"symbol\" === typeof node &&\n console.error(\n \"Symbols are not valid as a React child.\\n %s\",\n String(node)\n ));\n }\n }\n function renderChildrenArray(request$jscomp$0, task, children, childIndex) {\n var prevKeyPath = task.keyPath,\n previousComponentStack = task.componentStack;\n pushServerComponentStack(task, task.node._debugInfo);\n if (\n -1 !== childIndex &&\n ((task.keyPath = [task.keyPath, \"Fragment\", childIndex]),\n null !== task.replay)\n ) {\n for (\n var replay = task.replay, replayNodes = replay.nodes, j = 0;\n j < replayNodes.length;\n j++\n ) {\n var node = replayNodes[j];\n if (node[1] === childIndex) {\n childIndex = node[2];\n node = node[3];\n task.replay = { nodes: childIndex, slots: node, pendingTasks: 1 };\n try {\n renderChildrenArray(request$jscomp$0, task, children, -1);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n (x === SuspenseException || \"function\" === typeof x.then)\n )\n throw x;\n task.replay.pendingTasks--;\n children = getThrownInfo(task.componentStack);\n erroredReplay(\n request$jscomp$0,\n task.blockedBoundary,\n x,\n children,\n childIndex,\n node\n );\n }\n task.replay = replay;\n replayNodes.splice(j, 1);\n break;\n }\n }\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n return;\n }\n replay = task.treeContext;\n replayNodes = children.length;\n if (\n null !== task.replay &&\n ((j = task.replay.slots), null !== j && \"object\" === typeof j)\n ) {\n for (childIndex = 0; childIndex < replayNodes; childIndex++) {\n node = children[childIndex];\n task.treeContext = pushTreeContext(replay, replayNodes, childIndex);\n var resumeSegmentID = j[childIndex];\n \"number\" === typeof resumeSegmentID\n ? (resumeNode(\n request$jscomp$0,\n task,\n resumeSegmentID,\n node,\n childIndex\n ),\n delete j[childIndex])\n : renderNode(request$jscomp$0, task, node, childIndex);\n }\n task.treeContext = replay;\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n return;\n }\n for (j = 0; j < replayNodes; j++) {\n childIndex = children[j];\n var request = request$jscomp$0;\n node = task;\n resumeSegmentID = childIndex;\n if (\n null !== resumeSegmentID &&\n \"object\" === typeof resumeSegmentID &&\n (resumeSegmentID.$$typeof === REACT_ELEMENT_TYPE ||\n resumeSegmentID.$$typeof === REACT_PORTAL_TYPE) &&\n resumeSegmentID._store &&\n ((!resumeSegmentID._store.validated && null == resumeSegmentID.key) ||\n 2 === resumeSegmentID._store.validated)\n ) {\n if (\"object\" !== typeof resumeSegmentID._store)\n throw Error(\n \"React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.\"\n );\n resumeSegmentID._store.validated = 1;\n var didWarnForKey = request.didWarnForKey;\n null == didWarnForKey &&\n (didWarnForKey = request.didWarnForKey = new WeakSet());\n request = node.componentStack;\n if (null !== request && !didWarnForKey.has(request)) {\n didWarnForKey.add(request);\n var componentName = getComponentNameFromType(resumeSegmentID.type);\n didWarnForKey = resumeSegmentID._owner;\n var parentOwner = request.owner;\n request = \"\";\n if (parentOwner && \"undefined\" !== typeof parentOwner.type) {\n var name = getComponentNameFromType(parentOwner.type);\n name &&\n (request = \"\\n\\nCheck the render method of `\" + name + \"`.\");\n }\n request ||\n (componentName &&\n (request =\n \"\\n\\nCheck the top-level render call using <\" +\n componentName +\n \">.\"));\n componentName = \"\";\n null != didWarnForKey &&\n parentOwner !== didWarnForKey &&\n ((parentOwner = null),\n \"undefined\" !== typeof didWarnForKey.type\n ? (parentOwner = getComponentNameFromType(didWarnForKey.type))\n : \"string\" === typeof didWarnForKey.name &&\n (parentOwner = didWarnForKey.name),\n parentOwner &&\n (componentName =\n \" It was passed a child from \" + parentOwner + \".\"));\n didWarnForKey = node.componentStack;\n node.componentStack = {\n parent: node.componentStack,\n type: resumeSegmentID.type,\n owner: resumeSegmentID._owner,\n stack: null\n };\n console.error(\n 'Each child in a list should have a unique \"key\" prop.%s%s See https://react.dev/link/warning-keys for more information.',\n request,\n componentName\n );\n node.componentStack = didWarnForKey;\n }\n }\n task.treeContext = pushTreeContext(replay, replayNodes, j);\n renderNode(request$jscomp$0, task, childIndex, j);\n }\n task.treeContext = replay;\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n }\n function untrackBoundary(request, boundary) {\n request = request.trackedPostpones;\n null !== request &&\n ((boundary = boundary.trackedContentKeyPath),\n null !== boundary &&\n ((boundary = request.workingMap.get(boundary)),\n void 0 !== boundary &&\n ((boundary.length = 4), (boundary[2] = []), (boundary[3] = null))));\n }\n function spawnNewSuspendedReplayTask(request, task, thenableState) {\n return createReplayTask(\n request,\n thenableState,\n task.replay,\n task.node,\n task.childIndex,\n task.blockedBoundary,\n task.hoistableState,\n task.abortSet,\n task.keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n }\n function spawnNewSuspendedRenderTask(request, task, thenableState) {\n var segment = task.blockedSegment,\n newSegment = createPendingSegment(\n request,\n segment.chunks.length,\n null,\n task.formatContext,\n segment.lastPushedText,\n !0\n );\n segment.children.push(newSegment);\n segment.lastPushedText = !1;\n return createRenderTask(\n request,\n thenableState,\n task.node,\n task.childIndex,\n task.blockedBoundary,\n newSegment,\n task.hoistableState,\n task.abortSet,\n task.keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n }\n function renderNode(request, task, node, childIndex) {\n var previousFormatContext = task.formatContext,\n previousContext = task.context,\n previousKeyPath = task.keyPath,\n previousTreeContext = task.treeContext,\n previousComponentStack = task.componentStack,\n segment = task.blockedSegment;\n if (null === segment)\n try {\n return renderNodeDestructive(request, task, node, childIndex);\n } catch (thrownValue) {\n if (\n (resetHooksState(),\n (node =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : thrownValue),\n \"object\" === typeof node && null !== node)\n ) {\n if (\"function\" === typeof node.then) {\n childIndex = getThenableStateAfterSuspending();\n request = spawnNewSuspendedReplayTask(\n request,\n task,\n childIndex\n ).ping;\n node.then(request, request);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n if (\"Maximum call stack size exceeded\" === node.message) {\n node = getThenableStateAfterSuspending();\n node = spawnNewSuspendedReplayTask(request, task, node);\n request.pingedTasks.push(node);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n }\n }\n else {\n var childrenLength = segment.children.length,\n chunkLength = segment.chunks.length;\n try {\n return renderNodeDestructive(request, task, node, childIndex);\n } catch (thrownValue$3) {\n if (\n (resetHooksState(),\n (segment.children.length = childrenLength),\n (segment.chunks.length = chunkLength),\n (node =\n thrownValue$3 === SuspenseException\n ? getSuspendedThenable()\n : thrownValue$3),\n \"object\" === typeof node && null !== node)\n ) {\n if (\"function\" === typeof node.then) {\n childIndex = getThenableStateAfterSuspending();\n request = spawnNewSuspendedRenderTask(\n request,\n task,\n childIndex\n ).ping;\n node.then(request, request);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n if (\"Maximum call stack size exceeded\" === node.message) {\n node = getThenableStateAfterSuspending();\n node = spawnNewSuspendedRenderTask(request, task, node);\n request.pingedTasks.push(node);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n }\n }\n }\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n switchContext(previousContext);\n throw node;\n }\n function erroredReplay(\n request,\n boundary,\n error,\n errorInfo,\n replayNodes,\n resumeSlots\n ) {\n var errorDigest = logRecoverableError(request, error, errorInfo);\n abortRemainingReplayNodes(\n request,\n boundary,\n replayNodes,\n resumeSlots,\n error,\n errorDigest,\n errorInfo,\n !1\n );\n }\n function abortTaskSoft(task) {\n var boundary = task.blockedBoundary;\n task = task.blockedSegment;\n null !== task && ((task.status = 3), finishedTask(this, boundary, task));\n }\n function abortRemainingReplayNodes(\n request$jscomp$0,\n boundary,\n nodes,\n slots,\n error$jscomp$0,\n errorDigest$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n ) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (4 === node.length)\n abortRemainingReplayNodes(\n request$jscomp$0,\n boundary,\n node[2],\n node[3],\n error$jscomp$0,\n errorDigest$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n );\n else {\n var request = request$jscomp$0;\n node = node[5];\n var error = error$jscomp$0,\n errorDigest = errorDigest$jscomp$0,\n errorInfo = errorInfo$jscomp$0,\n wasAborted = aborted,\n resumedBoundary = createSuspenseBoundary(request, new Set());\n resumedBoundary.parentFlushed = !0;\n resumedBoundary.rootSegmentID = node;\n resumedBoundary.status = CLIENT_RENDERED;\n encodeErrorForBoundary(\n resumedBoundary,\n errorDigest,\n error,\n errorInfo,\n wasAborted\n );\n resumedBoundary.parentFlushed &&\n request.clientRenderedBoundaries.push(resumedBoundary);\n }\n }\n nodes.length = 0;\n if (null !== slots) {\n if (null === boundary)\n throw Error(\n \"We should not have any resumable nodes in the shell. This is a bug in React.\"\n );\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(\n boundary,\n errorDigest$jscomp$0,\n error$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n ),\n boundary.parentFlushed &&\n request$jscomp$0.clientRenderedBoundaries.push(boundary));\n if (\"object\" === typeof slots)\n for (var index in slots) delete slots[index];\n }\n }\n function abortTask(task, request, error) {\n var boundary = task.blockedBoundary,\n segment = task.blockedSegment;\n if (null !== segment) {\n if (6 === segment.status) return;\n segment.status = 3;\n }\n segment = getThrownInfo(task.componentStack);\n if (null === boundary) {\n if (13 !== request.status && request.status !== CLOSED) {\n boundary = task.replay;\n if (null === boundary) {\n logRecoverableError(request, error, segment);\n fatalError(request, error);\n return;\n }\n boundary.pendingTasks--;\n 0 === boundary.pendingTasks &&\n 0 < boundary.nodes.length &&\n ((task = logRecoverableError(request, error, segment)),\n abortRemainingReplayNodes(\n request,\n null,\n boundary.nodes,\n boundary.slots,\n error,\n task,\n segment,\n !0\n ));\n request.pendingRootTasks--;\n 0 === request.pendingRootTasks && completeShell(request);\n }\n } else\n boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n (task = logRecoverableError(request, error, segment)),\n (boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(boundary, task, error, segment, !0),\n untrackBoundary(request, boundary),\n boundary.parentFlushed &&\n request.clientRenderedBoundaries.push(boundary)),\n boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {\n return abortTask(fallbackTask, request, error);\n }),\n boundary.fallbackAbortableTasks.clear();\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n function safelyEmitEarlyPreloads(request, shellComplete) {\n try {\n var renderState = request.renderState,\n onHeaders = renderState.onHeaders;\n if (onHeaders) {\n var headers = renderState.headers;\n if (headers) {\n renderState.headers = null;\n var linkHeader = headers.preconnects;\n headers.fontPreloads &&\n (linkHeader && (linkHeader += \", \"),\n (linkHeader += headers.fontPreloads));\n headers.highImagePreloads &&\n (linkHeader && (linkHeader += \", \"),\n (linkHeader += headers.highImagePreloads));\n if (!shellComplete) {\n var queueIter = renderState.styles.values(),\n queueStep = queueIter.next();\n b: for (\n ;\n 0 < headers.remainingCapacity && !queueStep.done;\n queueStep = queueIter.next()\n )\n for (\n var sheetIter = queueStep.value.sheets.values(),\n sheetStep = sheetIter.next();\n 0 < headers.remainingCapacity && !sheetStep.done;\n sheetStep = sheetIter.next()\n ) {\n var sheet = sheetStep.value,\n props = sheet.props,\n key = props.href,\n props$jscomp$0 = sheet.props;\n var header = getPreloadAsHeader(\n props$jscomp$0.href,\n \"style\",\n {\n crossOrigin: props$jscomp$0.crossOrigin,\n integrity: props$jscomp$0.integrity,\n nonce: props$jscomp$0.nonce,\n type: props$jscomp$0.type,\n fetchPriority: props$jscomp$0.fetchPriority,\n referrerPolicy: props$jscomp$0.referrerPolicy,\n media: props$jscomp$0.media\n }\n );\n if (0 <= (headers.remainingCapacity -= header.length + 2))\n (renderState.resets.style[key] = PRELOAD_NO_CREDS),\n linkHeader && (linkHeader += \", \"),\n (linkHeader += header),\n (renderState.resets.style[key] =\n \"string\" === typeof props.crossOrigin ||\n \"string\" === typeof props.integrity\n ? [props.crossOrigin, props.integrity]\n : PRELOAD_NO_CREDS);\n else break b;\n }\n }\n linkHeader ? onHeaders({ Link: linkHeader }) : onHeaders({});\n }\n }\n } catch (error) {\n logRecoverableError(request, error, {});\n }\n }\n function completeShell(request) {\n null === request.trackedPostpones && safelyEmitEarlyPreloads(request, !0);\n request.onShellError = noop;\n request = request.onShellReady;\n request();\n }\n function completeAll(request) {\n safelyEmitEarlyPreloads(\n request,\n null === request.trackedPostpones\n ? !0\n : null === request.completedRootSegment ||\n request.completedRootSegment.status !== POSTPONED\n );\n request = request.onAllReady;\n request();\n }\n function queueCompletedSegment(boundary, segment) {\n if (\n 0 === segment.chunks.length &&\n 1 === segment.children.length &&\n null === segment.children[0].boundary &&\n -1 === segment.children[0].id\n ) {\n var childSegment = segment.children[0];\n childSegment.id = segment.id;\n childSegment.parentFlushed = !0;\n childSegment.status === COMPLETED &&\n queueCompletedSegment(boundary, childSegment);\n } else boundary.completedSegments.push(segment);\n }\n function finishedTask(request, boundary, segment) {\n if (null === boundary) {\n if (null !== segment && segment.parentFlushed) {\n if (null !== request.completedRootSegment)\n throw Error(\n \"There can only be one root segment. This is a bug in React.\"\n );\n request.completedRootSegment = segment;\n }\n request.pendingRootTasks--;\n 0 === request.pendingRootTasks && completeShell(request);\n } else\n boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n (0 === boundary.pendingTasks\n ? (boundary.status === PENDING && (boundary.status = COMPLETED),\n null !== segment &&\n segment.parentFlushed &&\n segment.status === COMPLETED &&\n queueCompletedSegment(boundary, segment),\n boundary.parentFlushed &&\n request.completedBoundaries.push(boundary),\n boundary.status === COMPLETED &&\n (boundary.fallbackAbortableTasks.forEach(\n abortTaskSoft,\n request\n ),\n boundary.fallbackAbortableTasks.clear()))\n : null !== segment &&\n segment.parentFlushed &&\n segment.status === COMPLETED &&\n (queueCompletedSegment(boundary, segment),\n 1 === boundary.completedSegments.length &&\n boundary.parentFlushed &&\n request.partialBoundaries.push(boundary)));\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n function performWork(request$jscomp$1) {\n if (\n request$jscomp$1.status !== CLOSED &&\n 13 !== request$jscomp$1.status\n ) {\n var prevContext = currentActiveSnapshot,\n prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = HooksDispatcher;\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n var prevRequest = currentRequest;\n currentRequest = request$jscomp$1;\n var prevGetCurrentStackImpl = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = getCurrentStackInDEV;\n var prevResumableState = currentResumableState;\n currentResumableState = request$jscomp$1.resumableState;\n try {\n var pingedTasks = request$jscomp$1.pingedTasks,\n i;\n for (i = 0; i < pingedTasks.length; i++) {\n var request = request$jscomp$1,\n task = pingedTasks[i],\n segment = task.blockedSegment;\n if (null === segment) {\n var prevTaskInDEV = void 0,\n request$jscomp$0 = request;\n request = task;\n if (0 !== request.replay.pendingTasks) {\n switchContext(request.context);\n prevTaskInDEV = currentTaskInDEV;\n currentTaskInDEV = request;\n try {\n \"number\" === typeof request.replay.slots\n ? resumeNode(\n request$jscomp$0,\n request,\n request.replay.slots,\n request.node,\n request.childIndex\n )\n : retryNode(request$jscomp$0, request);\n if (\n 1 === request.replay.pendingTasks &&\n 0 < request.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n request.replay.pendingTasks--;\n request.abortSet.delete(request);\n finishedTask(request$jscomp$0, request.blockedBoundary, null);\n } catch (thrownValue) {\n resetHooksState();\n var x =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : thrownValue;\n if (\n \"object\" === typeof x &&\n null !== x &&\n \"function\" === typeof x.then\n ) {\n var ping = request.ping;\n x.then(ping, ping);\n request.thenableState = getThenableStateAfterSuspending();\n } else {\n request.replay.pendingTasks--;\n request.abortSet.delete(request);\n var errorInfo = getThrownInfo(request.componentStack);\n erroredReplay(\n request$jscomp$0,\n request.blockedBoundary,\n 12 === request$jscomp$0.status\n ? request$jscomp$0.fatalError\n : x,\n errorInfo,\n request.replay.nodes,\n request.replay.slots\n );\n request$jscomp$0.pendingRootTasks--;\n 0 === request$jscomp$0.pendingRootTasks &&\n completeShell(request$jscomp$0);\n request$jscomp$0.allPendingTasks--;\n 0 === request$jscomp$0.allPendingTasks &&\n completeAll(request$jscomp$0);\n }\n } finally {\n currentTaskInDEV = prevTaskInDEV;\n }\n }\n } else {\n request$jscomp$0 = prevTaskInDEV = void 0;\n var task$jscomp$0 = task,\n segment$jscomp$0 = segment;\n if (segment$jscomp$0.status === PENDING) {\n segment$jscomp$0.status = 6;\n switchContext(task$jscomp$0.context);\n request$jscomp$0 = currentTaskInDEV;\n currentTaskInDEV = task$jscomp$0;\n var childrenLength = segment$jscomp$0.children.length,\n chunkLength = segment$jscomp$0.chunks.length;\n try {\n retryNode(request, task$jscomp$0),\n pushSegmentFinale(\n segment$jscomp$0.chunks,\n request.renderState,\n segment$jscomp$0.lastPushedText,\n segment$jscomp$0.textEmbedded\n ),\n task$jscomp$0.abortSet.delete(task$jscomp$0),\n (segment$jscomp$0.status = COMPLETED),\n finishedTask(\n request,\n task$jscomp$0.blockedBoundary,\n segment$jscomp$0\n );\n } catch (thrownValue) {\n resetHooksState();\n segment$jscomp$0.children.length = childrenLength;\n segment$jscomp$0.chunks.length = chunkLength;\n var x$jscomp$0 =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : 12 === request.status\n ? request.fatalError\n : thrownValue;\n if (\n \"object\" === typeof x$jscomp$0 &&\n null !== x$jscomp$0 &&\n \"function\" === typeof x$jscomp$0.then\n ) {\n segment$jscomp$0.status = PENDING;\n task$jscomp$0.thenableState =\n getThenableStateAfterSuspending();\n var ping$jscomp$0 = task$jscomp$0.ping;\n x$jscomp$0.then(ping$jscomp$0, ping$jscomp$0);\n } else {\n var errorInfo$jscomp$0 = getThrownInfo(\n task$jscomp$0.componentStack\n );\n task$jscomp$0.abortSet.delete(task$jscomp$0);\n segment$jscomp$0.status = 4;\n var boundary = task$jscomp$0.blockedBoundary;\n prevTaskInDEV = logRecoverableError(\n request,\n x$jscomp$0,\n errorInfo$jscomp$0\n );\n null === boundary\n ? fatalError(request, x$jscomp$0)\n : (boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(\n boundary,\n prevTaskInDEV,\n x$jscomp$0,\n errorInfo$jscomp$0,\n !1\n ),\n untrackBoundary(request, boundary),\n boundary.parentFlushed &&\n request.clientRenderedBoundaries.push(boundary)));\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n } finally {\n currentTaskInDEV = request$jscomp$0;\n }\n }\n }\n }\n pingedTasks.splice(0, i);\n null !== request$jscomp$1.destination &&\n flushCompletedQueues(\n request$jscomp$1,\n request$jscomp$1.destination\n );\n } catch (error) {\n logRecoverableError(request$jscomp$1, error, {}),\n fatalError(request$jscomp$1, error);\n } finally {\n (currentResumableState = prevResumableState),\n (ReactSharedInternals.H = prevDispatcher),\n (ReactSharedInternals.A = prevAsyncDispatcher),\n (ReactSharedInternals.getCurrentStack = prevGetCurrentStackImpl),\n prevDispatcher === HooksDispatcher && switchContext(prevContext),\n (currentRequest = prevRequest);\n }\n }\n }\n function flushSubtree(request, destination, segment, hoistableState) {\n segment.parentFlushed = !0;\n switch (segment.status) {\n case PENDING:\n segment.id = request.nextSegmentId++;\n case POSTPONED:\n return (\n (hoistableState = segment.id),\n (segment.lastPushedText = !1),\n (segment.textEmbedded = !1),\n (request = request.renderState),\n destination.push(placeholder1),\n destination.push(request.placeholderPrefix),\n (request = hoistableState.toString(16)),\n destination.push(request),\n destination.push(placeholder2)\n );\n case COMPLETED:\n segment.status = FLUSHED;\n var r = !0,\n chunks = segment.chunks,\n chunkIdx = 0;\n segment = segment.children;\n for (var childIdx = 0; childIdx < segment.length; childIdx++) {\n for (r = segment[childIdx]; chunkIdx < r.index; chunkIdx++)\n destination.push(chunks[chunkIdx]);\n r = flushSegment(request, destination, r, hoistableState);\n }\n for (; chunkIdx < chunks.length - 1; chunkIdx++)\n destination.push(chunks[chunkIdx]);\n chunkIdx < chunks.length && (r = destination.push(chunks[chunkIdx]));\n return r;\n default:\n throw Error(\n \"Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.\"\n );\n }\n }\n function flushSegment(request, destination, segment, hoistableState) {\n var boundary = segment.boundary;\n if (null === boundary)\n return flushSubtree(request, destination, segment, hoistableState);\n boundary.parentFlushed = !0;\n if (boundary.status === CLIENT_RENDERED) {\n if (!request.renderState.generateStaticMarkup) {\n var errorDigest = boundary.errorDigest,\n errorMessage = boundary.errorMessage,\n errorStack = boundary.errorStack;\n boundary = boundary.errorComponentStack;\n destination.push(startClientRenderedSuspenseBoundary);\n destination.push(clientRenderedSuspenseBoundaryError1);\n errorDigest &&\n (destination.push(clientRenderedSuspenseBoundaryError1A),\n (errorDigest = escapeTextForBrowser(errorDigest)),\n destination.push(errorDigest),\n destination.push(\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n errorMessage &&\n (destination.push(clientRenderedSuspenseBoundaryError1B),\n (errorMessage = escapeTextForBrowser(errorMessage)),\n destination.push(errorMessage),\n destination.push(\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n errorStack &&\n (destination.push(clientRenderedSuspenseBoundaryError1C),\n (errorStack = escapeTextForBrowser(errorStack)),\n destination.push(errorStack),\n destination.push(\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n boundary &&\n (destination.push(clientRenderedSuspenseBoundaryError1D),\n (errorStack = escapeTextForBrowser(boundary)),\n destination.push(errorStack),\n destination.push(\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n destination.push(clientRenderedSuspenseBoundaryError2);\n }\n flushSubtree(request, destination, segment, hoistableState);\n request = request.renderState.generateStaticMarkup\n ? !0\n : destination.push(endSuspenseBoundary);\n return request;\n }\n if (boundary.status !== COMPLETED)\n return (\n boundary.status === PENDING &&\n (boundary.rootSegmentID = request.nextSegmentId++),\n 0 < boundary.completedSegments.length &&\n request.partialBoundaries.push(boundary),\n writeStartPendingSuspenseBoundary(\n destination,\n request.renderState,\n boundary.rootSegmentID\n ),\n hoistableState &&\n ((errorStack = boundary.fallbackState),\n errorStack.styles.forEach(\n hoistStyleQueueDependency,\n hoistableState\n ),\n errorStack.stylesheets.forEach(\n hoistStylesheetDependency,\n hoistableState\n )),\n flushSubtree(request, destination, segment, hoistableState),\n destination.push(endSuspenseBoundary)\n );\n if (boundary.byteSize > request.progressiveChunkSize)\n return (\n (boundary.rootSegmentID = request.nextSegmentId++),\n request.completedBoundaries.push(boundary),\n writeStartPendingSuspenseBoundary(\n destination,\n request.renderState,\n boundary.rootSegmentID\n ),\n flushSubtree(request, destination, segment, hoistableState),\n destination.push(endSuspenseBoundary)\n );\n hoistableState &&\n ((segment = boundary.contentState),\n segment.styles.forEach(hoistStyleQueueDependency, hoistableState),\n segment.stylesheets.forEach(hoistStylesheetDependency, hoistableState));\n request.renderState.generateStaticMarkup ||\n destination.push(startCompletedSuspenseBoundary);\n segment = boundary.completedSegments;\n if (1 !== segment.length)\n throw Error(\n \"A previously unvisited boundary must have exactly one root segment. This is a bug in React.\"\n );\n flushSegment(request, destination, segment[0], hoistableState);\n request = request.renderState.generateStaticMarkup\n ? !0\n : destination.push(endSuspenseBoundary);\n return request;\n }\n function flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n ) {\n writeStartSegment(\n destination,\n request.renderState,\n segment.parentFormatContext,\n segment.id\n );\n flushSegment(request, destination, segment, hoistableState);\n return writeEndSegment(destination, segment.parentFormatContext);\n }\n function flushCompletedBoundary(request, destination, boundary) {\n for (\n var completedSegments = boundary.completedSegments, i = 0;\n i < completedSegments.length;\n i++\n )\n flushPartiallyCompletedSegment(\n request,\n destination,\n boundary,\n completedSegments[i]\n );\n completedSegments.length = 0;\n writeHoistablesForBoundary(\n destination,\n boundary.contentState,\n request.renderState\n );\n completedSegments = request.resumableState;\n request = request.renderState;\n i = boundary.rootSegmentID;\n boundary = boundary.contentState;\n var requiresStyleInsertion = request.stylesToHoist;\n request.stylesToHoist = !1;\n destination.push(request.startInlineScript);\n requiresStyleInsertion\n ? (completedSegments.instructions & SentCompleteBoundaryFunction) ===\n NothingSent\n ? ((completedSegments.instructions =\n completedSegments.instructions |\n SentStyleInsertionFunction |\n SentCompleteBoundaryFunction),\n destination.push(completeBoundaryWithStylesScript1FullBoth))\n : (completedSegments.instructions & SentStyleInsertionFunction) ===\n NothingSent\n ? ((completedSegments.instructions |= SentStyleInsertionFunction),\n destination.push(completeBoundaryWithStylesScript1FullPartial))\n : destination.push(completeBoundaryWithStylesScript1Partial)\n : (completedSegments.instructions & SentCompleteBoundaryFunction) ===\n NothingSent\n ? ((completedSegments.instructions |= SentCompleteBoundaryFunction),\n destination.push(completeBoundaryScript1Full))\n : destination.push(completeBoundaryScript1Partial);\n completedSegments = i.toString(16);\n destination.push(request.boundaryPrefix);\n destination.push(completedSegments);\n destination.push(completeBoundaryScript2);\n destination.push(request.segmentPrefix);\n destination.push(completedSegments);\n requiresStyleInsertion\n ? (destination.push(completeBoundaryScript3a),\n writeStyleResourceDependenciesInJS(destination, boundary))\n : destination.push(completeBoundaryScript3b);\n boundary = destination.push(completeBoundaryScriptEnd);\n return writeBootstrap(destination, request) && boundary;\n }\n function flushPartiallyCompletedSegment(\n request,\n destination,\n boundary,\n segment\n ) {\n if (segment.status === FLUSHED) return !0;\n var hoistableState = boundary.contentState,\n segmentID = segment.id;\n if (-1 === segmentID) {\n if (-1 === (segment.id = boundary.rootSegmentID))\n throw Error(\n \"A root segment ID must have been assigned by now. This is a bug in React.\"\n );\n return flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n );\n }\n if (segmentID === boundary.rootSegmentID)\n return flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n );\n flushSegmentContainer(request, destination, segment, hoistableState);\n boundary = request.resumableState;\n request = request.renderState;\n destination.push(request.startInlineScript);\n (boundary.instructions & SentCompleteSegmentFunction) === NothingSent\n ? ((boundary.instructions |= SentCompleteSegmentFunction),\n destination.push(completeSegmentScript1Full))\n : destination.push(completeSegmentScript1Partial);\n destination.push(request.segmentPrefix);\n segmentID = segmentID.toString(16);\n destination.push(segmentID);\n destination.push(completeSegmentScript2);\n destination.push(request.placeholderPrefix);\n destination.push(segmentID);\n destination = destination.push(completeSegmentScriptEnd);\n return destination;\n }\n function flushCompletedQueues(request, destination) {\n try {\n if (!(0 < request.pendingRootTasks)) {\n var i,\n completedRootSegment = request.completedRootSegment;\n if (null !== completedRootSegment) {\n if (completedRootSegment.status === POSTPONED) return;\n var renderState = request.renderState,\n htmlChunks = renderState.htmlChunks,\n headChunks = renderState.headChunks,\n i$jscomp$0;\n if (htmlChunks) {\n for (i$jscomp$0 = 0; i$jscomp$0 < htmlChunks.length; i$jscomp$0++)\n destination.push(htmlChunks[i$jscomp$0]);\n if (headChunks)\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < headChunks.length;\n i$jscomp$0++\n )\n destination.push(headChunks[i$jscomp$0]);\n else {\n var chunk = startChunkForTag(\"head\");\n destination.push(chunk);\n destination.push(endOfStartTag);\n }\n } else if (headChunks)\n for (i$jscomp$0 = 0; i$jscomp$0 < headChunks.length; i$jscomp$0++)\n destination.push(headChunks[i$jscomp$0]);\n var charsetChunks = renderState.charsetChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < charsetChunks.length;\n i$jscomp$0++\n )\n destination.push(charsetChunks[i$jscomp$0]);\n charsetChunks.length = 0;\n renderState.preconnects.forEach(flushResource, destination);\n renderState.preconnects.clear();\n var viewportChunks = renderState.viewportChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < viewportChunks.length;\n i$jscomp$0++\n )\n destination.push(viewportChunks[i$jscomp$0]);\n viewportChunks.length = 0;\n renderState.fontPreloads.forEach(flushResource, destination);\n renderState.fontPreloads.clear();\n renderState.highImagePreloads.forEach(flushResource, destination);\n renderState.highImagePreloads.clear();\n renderState.styles.forEach(flushStylesInPreamble, destination);\n var importMapChunks = renderState.importMapChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < importMapChunks.length;\n i$jscomp$0++\n )\n destination.push(importMapChunks[i$jscomp$0]);\n importMapChunks.length = 0;\n renderState.bootstrapScripts.forEach(flushResource, destination);\n renderState.scripts.forEach(flushResource, destination);\n renderState.scripts.clear();\n renderState.bulkPreloads.forEach(flushResource, destination);\n renderState.bulkPreloads.clear();\n var hoistableChunks = renderState.hoistableChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < hoistableChunks.length;\n i$jscomp$0++\n )\n destination.push(hoistableChunks[i$jscomp$0]);\n hoistableChunks.length = 0;\n if (htmlChunks && null === headChunks) {\n var chunk$jscomp$0 = endChunkForTag(\"head\");\n destination.push(chunk$jscomp$0);\n }\n flushSegment(request, destination, completedRootSegment, null);\n request.completedRootSegment = null;\n writeBootstrap(destination, request.renderState);\n }\n var renderState$jscomp$0 = request.renderState;\n completedRootSegment = 0;\n var viewportChunks$jscomp$0 = renderState$jscomp$0.viewportChunks;\n for (\n completedRootSegment = 0;\n completedRootSegment < viewportChunks$jscomp$0.length;\n completedRootSegment++\n )\n destination.push(viewportChunks$jscomp$0[completedRootSegment]);\n viewportChunks$jscomp$0.length = 0;\n renderState$jscomp$0.preconnects.forEach(flushResource, destination);\n renderState$jscomp$0.preconnects.clear();\n renderState$jscomp$0.fontPreloads.forEach(flushResource, destination);\n renderState$jscomp$0.fontPreloads.clear();\n renderState$jscomp$0.highImagePreloads.forEach(\n flushResource,\n destination\n );\n renderState$jscomp$0.highImagePreloads.clear();\n renderState$jscomp$0.styles.forEach(preloadLateStyles, destination);\n renderState$jscomp$0.scripts.forEach(flushResource, destination);\n renderState$jscomp$0.scripts.clear();\n renderState$jscomp$0.bulkPreloads.forEach(flushResource, destination);\n renderState$jscomp$0.bulkPreloads.clear();\n var hoistableChunks$jscomp$0 = renderState$jscomp$0.hoistableChunks;\n for (\n completedRootSegment = 0;\n completedRootSegment < hoistableChunks$jscomp$0.length;\n completedRootSegment++\n )\n destination.push(hoistableChunks$jscomp$0[completedRootSegment]);\n hoistableChunks$jscomp$0.length = 0;\n var clientRenderedBoundaries = request.clientRenderedBoundaries;\n for (i = 0; i < clientRenderedBoundaries.length; i++) {\n var boundary = clientRenderedBoundaries[i];\n renderState$jscomp$0 = destination;\n var resumableState = request.resumableState,\n renderState$jscomp$1 = request.renderState,\n id = boundary.rootSegmentID,\n errorDigest = boundary.errorDigest,\n errorMessage = boundary.errorMessage,\n errorStack = boundary.errorStack,\n errorComponentStack = boundary.errorComponentStack;\n renderState$jscomp$0.push(renderState$jscomp$1.startInlineScript);\n (resumableState.instructions & SentClientRenderFunction) ===\n NothingSent\n ? ((resumableState.instructions |= SentClientRenderFunction),\n renderState$jscomp$0.push(clientRenderScript1Full))\n : renderState$jscomp$0.push(clientRenderScript1Partial);\n renderState$jscomp$0.push(renderState$jscomp$1.boundaryPrefix);\n var chunk$jscomp$1 = id.toString(16);\n renderState$jscomp$0.push(chunk$jscomp$1);\n renderState$jscomp$0.push(clientRenderScript1A);\n if (\n errorDigest ||\n errorMessage ||\n errorStack ||\n errorComponentStack\n ) {\n renderState$jscomp$0.push(clientRenderErrorScriptArgInterstitial);\n var chunk$jscomp$2 = escapeJSStringsForInstructionScripts(\n errorDigest || \"\"\n );\n renderState$jscomp$0.push(chunk$jscomp$2);\n }\n if (errorMessage || errorStack || errorComponentStack) {\n renderState$jscomp$0.push(clientRenderErrorScriptArgInterstitial);\n var chunk$jscomp$3 = escapeJSStringsForInstructionScripts(\n errorMessage || \"\"\n );\n renderState$jscomp$0.push(chunk$jscomp$3);\n }\n if (errorStack || errorComponentStack) {\n renderState$jscomp$0.push(clientRenderErrorScriptArgInterstitial);\n var chunk$jscomp$4 = escapeJSStringsForInstructionScripts(\n errorStack || \"\"\n );\n renderState$jscomp$0.push(chunk$jscomp$4);\n }\n if (errorComponentStack) {\n renderState$jscomp$0.push(clientRenderErrorScriptArgInterstitial);\n var chunk$jscomp$5 =\n escapeJSStringsForInstructionScripts(errorComponentStack);\n renderState$jscomp$0.push(chunk$jscomp$5);\n }\n var JSCompiler_inline_result = renderState$jscomp$0.push(\n clientRenderScriptEnd\n );\n if (!JSCompiler_inline_result) {\n request.destination = null;\n i++;\n clientRenderedBoundaries.splice(0, i);\n return;\n }\n }\n clientRenderedBoundaries.splice(0, i);\n var completedBoundaries = request.completedBoundaries;\n for (i = 0; i < completedBoundaries.length; i++)\n if (\n !flushCompletedBoundary(\n request,\n destination,\n completedBoundaries[i]\n )\n ) {\n request.destination = null;\n i++;\n completedBoundaries.splice(0, i);\n return;\n }\n completedBoundaries.splice(0, i);\n var partialBoundaries = request.partialBoundaries;\n for (i = 0; i < partialBoundaries.length; i++) {\n a: {\n clientRenderedBoundaries = request;\n boundary = destination;\n var boundary$jscomp$0 = partialBoundaries[i],\n completedSegments = boundary$jscomp$0.completedSegments;\n for (\n JSCompiler_inline_result = 0;\n JSCompiler_inline_result < completedSegments.length;\n JSCompiler_inline_result++\n )\n if (\n !flushPartiallyCompletedSegment(\n clientRenderedBoundaries,\n boundary,\n boundary$jscomp$0,\n completedSegments[JSCompiler_inline_result]\n )\n ) {\n JSCompiler_inline_result++;\n completedSegments.splice(0, JSCompiler_inline_result);\n var JSCompiler_inline_result$jscomp$0 = !1;\n break a;\n }\n completedSegments.splice(0, JSCompiler_inline_result);\n JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(\n boundary,\n boundary$jscomp$0.contentState,\n clientRenderedBoundaries.renderState\n );\n }\n if (!JSCompiler_inline_result$jscomp$0) {\n request.destination = null;\n i++;\n partialBoundaries.splice(0, i);\n return;\n }\n }\n partialBoundaries.splice(0, i);\n var largeBoundaries = request.completedBoundaries;\n for (i = 0; i < largeBoundaries.length; i++)\n if (\n !flushCompletedBoundary(request, destination, largeBoundaries[i])\n ) {\n request.destination = null;\n i++;\n largeBoundaries.splice(0, i);\n return;\n }\n largeBoundaries.splice(0, i);\n }\n } finally {\n 0 === request.allPendingTasks &&\n 0 === request.pingedTasks.length &&\n 0 === request.clientRenderedBoundaries.length &&\n 0 === request.completedBoundaries.length &&\n ((request.flushScheduled = !1),\n (i = request.resumableState),\n i.hasBody &&\n ((partialBoundaries = endChunkForTag(\"body\")),\n destination.push(partialBoundaries)),\n i.hasHtml && ((i = endChunkForTag(\"html\")), destination.push(i)),\n 0 !== request.abortableTasks.size &&\n console.error(\n \"There was still abortable task at the root when we closed. This is a bug in React.\"\n ),\n (request.status = CLOSED),\n destination.push(null),\n (request.destination = null));\n }\n }\n function startWork(request) {\n request.flushScheduled = null !== request.destination;\n performWork(request);\n 10 === request.status && (request.status = 11);\n null === request.trackedPostpones &&\n safelyEmitEarlyPreloads(request, 0 === request.pendingRootTasks);\n }\n function enqueueFlush(request) {\n if (\n !1 === request.flushScheduled &&\n 0 === request.pingedTasks.length &&\n null !== request.destination\n ) {\n request.flushScheduled = !0;\n var destination = request.destination;\n destination\n ? flushCompletedQueues(request, destination)\n : (request.flushScheduled = !1);\n }\n }\n function startFlowing(request, destination) {\n if (13 === request.status)\n (request.status = CLOSED), destination.destroy(request.fatalError);\n else if (request.status !== CLOSED && null === request.destination) {\n request.destination = destination;\n try {\n flushCompletedQueues(request, destination);\n } catch (error) {\n logRecoverableError(request, error, {}), fatalError(request, error);\n }\n }\n }\n function abort(request, reason) {\n if (11 === request.status || 10 === request.status) request.status = 12;\n try {\n var abortableTasks = request.abortableTasks;\n if (0 < abortableTasks.size) {\n var error =\n void 0 === reason\n ? Error(\"The render was aborted by the server without a reason.\")\n : \"object\" === typeof reason &&\n null !== reason &&\n \"function\" === typeof reason.then\n ? Error(\"The render was aborted by the server with a promise.\")\n : reason;\n request.fatalError = error;\n abortableTasks.forEach(function (task) {\n return abortTask(task, request, error);\n });\n abortableTasks.clear();\n }\n null !== request.destination &&\n flushCompletedQueues(request, request.destination);\n } catch (error$4) {\n logRecoverableError(request, error$4, {}), fatalError(request, error$4);\n }\n }\n function onError() {}\n function renderToStringImpl(\n children,\n options,\n generateStaticMarkup,\n abortReason\n ) {\n var didFatal = !1,\n fatalError = null,\n result = \"\",\n readyToStream = !1;\n options = createResumableState(\n options ? options.identifierPrefix : void 0\n );\n children = createRequest(\n children,\n options,\n createRenderState(options, generateStaticMarkup),\n createFormatContext(ROOT_HTML_MODE, null, 0),\n Infinity,\n onError,\n void 0,\n function () {\n readyToStream = !0;\n },\n void 0,\n void 0,\n void 0\n );\n startWork(children);\n abort(children, abortReason);\n startFlowing(children, {\n push: function (chunk) {\n null !== chunk && (result += chunk);\n return !0;\n },\n destroy: function (error) {\n didFatal = !0;\n fatalError = error;\n }\n });\n if (didFatal && fatalError !== abortReason) throw fatalError;\n if (!readyToStream)\n throw Error(\n \"A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.\"\n );\n return result;\n }\n var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\"),\n ReactDOM = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_SCOPE_TYPE = Symbol.for(\"react.scope\"),\n REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for(\"react.debug_trace_mode\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\"),\n REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n isArrayImpl = Array.isArray,\n jsxPropsParents = new WeakMap(),\n jsxChildrenParents = new WeakMap(),\n CLIENT_REFERENCE_TAG = Symbol.for(\"react.client.reference\"),\n assign = Object.assign,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {},\n unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n ),\n aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n hasReadOnlyValue = {\n button: !0,\n checkbox: !0,\n image: !0,\n hidden: !0,\n radio: !0,\n reset: !0,\n submit: !0\n },\n ariaProperties = {\n \"aria-current\": 0,\n \"aria-description\": 0,\n \"aria-details\": 0,\n \"aria-disabled\": 0,\n \"aria-hidden\": 0,\n \"aria-invalid\": 0,\n \"aria-keyshortcuts\": 0,\n \"aria-label\": 0,\n \"aria-roledescription\": 0,\n \"aria-autocomplete\": 0,\n \"aria-checked\": 0,\n \"aria-expanded\": 0,\n \"aria-haspopup\": 0,\n \"aria-level\": 0,\n \"aria-modal\": 0,\n \"aria-multiline\": 0,\n \"aria-multiselectable\": 0,\n \"aria-orientation\": 0,\n \"aria-placeholder\": 0,\n \"aria-pressed\": 0,\n \"aria-readonly\": 0,\n \"aria-required\": 0,\n \"aria-selected\": 0,\n \"aria-sort\": 0,\n \"aria-valuemax\": 0,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": 0,\n \"aria-valuetext\": 0,\n \"aria-atomic\": 0,\n \"aria-busy\": 0,\n \"aria-live\": 0,\n \"aria-relevant\": 0,\n \"aria-dropeffect\": 0,\n \"aria-grabbed\": 0,\n \"aria-activedescendant\": 0,\n \"aria-colcount\": 0,\n \"aria-colindex\": 0,\n \"aria-colspan\": 0,\n \"aria-controls\": 0,\n \"aria-describedby\": 0,\n \"aria-errormessage\": 0,\n \"aria-flowto\": 0,\n \"aria-labelledby\": 0,\n \"aria-owns\": 0,\n \"aria-posinset\": 0,\n \"aria-rowcount\": 0,\n \"aria-rowindex\": 0,\n \"aria-rowspan\": 0,\n \"aria-setsize\": 0\n },\n warnedProperties$1 = {},\n rARIA$1 = RegExp(\n \"^(aria)-[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n rARIACamel$1 = RegExp(\n \"^(aria)[A-Z][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n didWarnValueNull = !1,\n possibleStandardNames = {\n accept: \"accept\",\n acceptcharset: \"acceptCharset\",\n \"accept-charset\": \"acceptCharset\",\n accesskey: \"accessKey\",\n action: \"action\",\n allowfullscreen: \"allowFullScreen\",\n alt: \"alt\",\n as: \"as\",\n async: \"async\",\n autocapitalize: \"autoCapitalize\",\n autocomplete: \"autoComplete\",\n autocorrect: \"autoCorrect\",\n autofocus: \"autoFocus\",\n autoplay: \"autoPlay\",\n autosave: \"autoSave\",\n capture: \"capture\",\n cellpadding: \"cellPadding\",\n cellspacing: \"cellSpacing\",\n challenge: \"challenge\",\n charset: \"charSet\",\n checked: \"checked\",\n children: \"children\",\n cite: \"cite\",\n class: \"className\",\n classid: \"classID\",\n classname: \"className\",\n cols: \"cols\",\n colspan: \"colSpan\",\n content: \"content\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n controls: \"controls\",\n controlslist: \"controlsList\",\n coords: \"coords\",\n crossorigin: \"crossOrigin\",\n dangerouslysetinnerhtml: \"dangerouslySetInnerHTML\",\n data: \"data\",\n datetime: \"dateTime\",\n default: \"default\",\n defaultchecked: \"defaultChecked\",\n defaultvalue: \"defaultValue\",\n defer: \"defer\",\n dir: \"dir\",\n disabled: \"disabled\",\n disablepictureinpicture: \"disablePictureInPicture\",\n disableremoteplayback: \"disableRemotePlayback\",\n download: \"download\",\n draggable: \"draggable\",\n enctype: \"encType\",\n enterkeyhint: \"enterKeyHint\",\n fetchpriority: \"fetchPriority\",\n for: \"htmlFor\",\n form: \"form\",\n formmethod: \"formMethod\",\n formaction: \"formAction\",\n formenctype: \"formEncType\",\n formnovalidate: \"formNoValidate\",\n formtarget: \"formTarget\",\n frameborder: \"frameBorder\",\n headers: \"headers\",\n height: \"height\",\n hidden: \"hidden\",\n high: \"high\",\n href: \"href\",\n hreflang: \"hrefLang\",\n htmlfor: \"htmlFor\",\n httpequiv: \"httpEquiv\",\n \"http-equiv\": \"httpEquiv\",\n icon: \"icon\",\n id: \"id\",\n imagesizes: \"imageSizes\",\n imagesrcset: \"imageSrcSet\",\n inert: \"inert\",\n innerhtml: \"innerHTML\",\n inputmode: \"inputMode\",\n integrity: \"integrity\",\n is: \"is\",\n itemid: \"itemID\",\n itemprop: \"itemProp\",\n itemref: \"itemRef\",\n itemscope: \"itemScope\",\n itemtype: \"itemType\",\n keyparams: \"keyParams\",\n keytype: \"keyType\",\n kind: \"kind\",\n label: \"label\",\n lang: \"lang\",\n list: \"list\",\n loop: \"loop\",\n low: \"low\",\n manifest: \"manifest\",\n marginwidth: \"marginWidth\",\n marginheight: \"marginHeight\",\n max: \"max\",\n maxlength: \"maxLength\",\n media: \"media\",\n mediagroup: \"mediaGroup\",\n method: \"method\",\n min: \"min\",\n minlength: \"minLength\",\n multiple: \"multiple\",\n muted: \"muted\",\n name: \"name\",\n nomodule: \"noModule\",\n nonce: \"nonce\",\n novalidate: \"noValidate\",\n open: \"open\",\n optimum: \"optimum\",\n pattern: \"pattern\",\n placeholder: \"placeholder\",\n playsinline: \"playsInline\",\n poster: \"poster\",\n preload: \"preload\",\n profile: \"profile\",\n radiogroup: \"radioGroup\",\n readonly: \"readOnly\",\n referrerpolicy: \"referrerPolicy\",\n rel: \"rel\",\n required: \"required\",\n reversed: \"reversed\",\n role: \"role\",\n rows: \"rows\",\n rowspan: \"rowSpan\",\n sandbox: \"sandbox\",\n scope: \"scope\",\n scoped: \"scoped\",\n scrolling: \"scrolling\",\n seamless: \"seamless\",\n selected: \"selected\",\n shape: \"shape\",\n size: \"size\",\n sizes: \"sizes\",\n span: \"span\",\n spellcheck: \"spellCheck\",\n src: \"src\",\n srcdoc: \"srcDoc\",\n srclang: \"srcLang\",\n srcset: \"srcSet\",\n start: \"start\",\n step: \"step\",\n style: \"style\",\n summary: \"summary\",\n tabindex: \"tabIndex\",\n target: \"target\",\n title: \"title\",\n type: \"type\",\n usemap: \"useMap\",\n value: \"value\",\n width: \"width\",\n wmode: \"wmode\",\n wrap: \"wrap\",\n about: \"about\",\n accentheight: \"accentHeight\",\n \"accent-height\": \"accentHeight\",\n accumulate: \"accumulate\",\n additive: \"additive\",\n alignmentbaseline: \"alignmentBaseline\",\n \"alignment-baseline\": \"alignmentBaseline\",\n allowreorder: \"allowReorder\",\n alphabetic: \"alphabetic\",\n amplitude: \"amplitude\",\n arabicform: \"arabicForm\",\n \"arabic-form\": \"arabicForm\",\n ascent: \"ascent\",\n attributename: \"attributeName\",\n attributetype: \"attributeType\",\n autoreverse: \"autoReverse\",\n azimuth: \"azimuth\",\n basefrequency: \"baseFrequency\",\n baselineshift: \"baselineShift\",\n \"baseline-shift\": \"baselineShift\",\n baseprofile: \"baseProfile\",\n bbox: \"bbox\",\n begin: \"begin\",\n bias: \"bias\",\n by: \"by\",\n calcmode: \"calcMode\",\n capheight: \"capHeight\",\n \"cap-height\": \"capHeight\",\n clip: \"clip\",\n clippath: \"clipPath\",\n \"clip-path\": \"clipPath\",\n clippathunits: \"clipPathUnits\",\n cliprule: \"clipRule\",\n \"clip-rule\": \"clipRule\",\n color: \"color\",\n colorinterpolation: \"colorInterpolation\",\n \"color-interpolation\": \"colorInterpolation\",\n colorinterpolationfilters: \"colorInterpolationFilters\",\n \"color-interpolation-filters\": \"colorInterpolationFilters\",\n colorprofile: \"colorProfile\",\n \"color-profile\": \"colorProfile\",\n colorrendering: \"colorRendering\",\n \"color-rendering\": \"colorRendering\",\n contentscripttype: \"contentScriptType\",\n contentstyletype: \"contentStyleType\",\n cursor: \"cursor\",\n cx: \"cx\",\n cy: \"cy\",\n d: \"d\",\n datatype: \"datatype\",\n decelerate: \"decelerate\",\n descent: \"descent\",\n diffuseconstant: \"diffuseConstant\",\n direction: \"direction\",\n display: \"display\",\n divisor: \"divisor\",\n dominantbaseline: \"dominantBaseline\",\n \"dominant-baseline\": \"dominantBaseline\",\n dur: \"dur\",\n dx: \"dx\",\n dy: \"dy\",\n edgemode: \"edgeMode\",\n elevation: \"elevation\",\n enablebackground: \"enableBackground\",\n \"enable-background\": \"enableBackground\",\n end: \"end\",\n exponent: \"exponent\",\n externalresourcesrequired: \"externalResourcesRequired\",\n fill: \"fill\",\n fillopacity: \"fillOpacity\",\n \"fill-opacity\": \"fillOpacity\",\n fillrule: \"fillRule\",\n \"fill-rule\": \"fillRule\",\n filter: \"filter\",\n filterres: \"filterRes\",\n filterunits: \"filterUnits\",\n floodopacity: \"floodOpacity\",\n \"flood-opacity\": \"floodOpacity\",\n floodcolor: \"floodColor\",\n \"flood-color\": \"floodColor\",\n focusable: \"focusable\",\n fontfamily: \"fontFamily\",\n \"font-family\": \"fontFamily\",\n fontsize: \"fontSize\",\n \"font-size\": \"fontSize\",\n fontsizeadjust: \"fontSizeAdjust\",\n \"font-size-adjust\": \"fontSizeAdjust\",\n fontstretch: \"fontStretch\",\n \"font-stretch\": \"fontStretch\",\n fontstyle: \"fontStyle\",\n \"font-style\": \"fontStyle\",\n fontvariant: \"fontVariant\",\n \"font-variant\": \"fontVariant\",\n fontweight: \"fontWeight\",\n \"font-weight\": \"fontWeight\",\n format: \"format\",\n from: \"from\",\n fx: \"fx\",\n fy: \"fy\",\n g1: \"g1\",\n g2: \"g2\",\n glyphname: \"glyphName\",\n \"glyph-name\": \"glyphName\",\n glyphorientationhorizontal: \"glyphOrientationHorizontal\",\n \"glyph-orientation-horizontal\": \"glyphOrientationHorizontal\",\n glyphorientationvertical: \"glyphOrientationVertical\",\n \"glyph-orientation-vertical\": \"glyphOrientationVertical\",\n glyphref: \"glyphRef\",\n gradienttransform: \"gradientTransform\",\n gradientunits: \"gradientUnits\",\n hanging: \"hanging\",\n horizadvx: \"horizAdvX\",\n \"horiz-adv-x\": \"horizAdvX\",\n horizoriginx: \"horizOriginX\",\n \"horiz-origin-x\": \"horizOriginX\",\n ideographic: \"ideographic\",\n imagerendering: \"imageRendering\",\n \"image-rendering\": \"imageRendering\",\n in2: \"in2\",\n in: \"in\",\n inlist: \"inlist\",\n intercept: \"intercept\",\n k1: \"k1\",\n k2: \"k2\",\n k3: \"k3\",\n k4: \"k4\",\n k: \"k\",\n kernelmatrix: \"kernelMatrix\",\n kernelunitlength: \"kernelUnitLength\",\n kerning: \"kerning\",\n keypoints: \"keyPoints\",\n keysplines: \"keySplines\",\n keytimes: \"keyTimes\",\n lengthadjust: \"lengthAdjust\",\n letterspacing: \"letterSpacing\",\n \"letter-spacing\": \"letterSpacing\",\n lightingcolor: \"lightingColor\",\n \"lighting-color\": \"lightingColor\",\n limitingconeangle: \"limitingConeAngle\",\n local: \"local\",\n markerend: \"markerEnd\",\n \"marker-end\": \"markerEnd\",\n markerheight: \"markerHeight\",\n markermid: \"markerMid\",\n \"marker-mid\": \"markerMid\",\n markerstart: \"markerStart\",\n \"marker-start\": \"markerStart\",\n markerunits: \"markerUnits\",\n markerwidth: \"markerWidth\",\n mask: \"mask\",\n maskcontentunits: \"maskContentUnits\",\n maskunits: \"maskUnits\",\n mathematical: \"mathematical\",\n mode: \"mode\",\n numoctaves: \"numOctaves\",\n offset: \"offset\",\n opacity: \"opacity\",\n operator: \"operator\",\n order: \"order\",\n orient: \"orient\",\n orientation: \"orientation\",\n origin: \"origin\",\n overflow: \"overflow\",\n overlineposition: \"overlinePosition\",\n \"overline-position\": \"overlinePosition\",\n overlinethickness: \"overlineThickness\",\n \"overline-thickness\": \"overlineThickness\",\n paintorder: \"paintOrder\",\n \"paint-order\": \"paintOrder\",\n panose1: \"panose1\",\n \"panose-1\": \"panose1\",\n pathlength: \"pathLength\",\n patterncontentunits: \"patternContentUnits\",\n patterntransform: \"patternTransform\",\n patternunits: \"patternUnits\",\n pointerevents: \"pointerEvents\",\n \"pointer-events\": \"pointerEvents\",\n points: \"points\",\n pointsatx: \"pointsAtX\",\n pointsaty: \"pointsAtY\",\n pointsatz: \"pointsAtZ\",\n popover: \"popover\",\n popovertarget: \"popoverTarget\",\n popovertargetaction: \"popoverTargetAction\",\n prefix: \"prefix\",\n preservealpha: \"preserveAlpha\",\n preserveaspectratio: \"preserveAspectRatio\",\n primitiveunits: \"primitiveUnits\",\n property: \"property\",\n r: \"r\",\n radius: \"radius\",\n refx: \"refX\",\n refy: \"refY\",\n renderingintent: \"renderingIntent\",\n \"rendering-intent\": \"renderingIntent\",\n repeatcount: \"repeatCount\",\n repeatdur: \"repeatDur\",\n requiredextensions: \"requiredExtensions\",\n requiredfeatures: \"requiredFeatures\",\n resource: \"resource\",\n restart: \"restart\",\n result: \"result\",\n results: \"results\",\n rotate: \"rotate\",\n rx: \"rx\",\n ry: \"ry\",\n scale: \"scale\",\n security: \"security\",\n seed: \"seed\",\n shaperendering: \"shapeRendering\",\n \"shape-rendering\": \"shapeRendering\",\n slope: \"slope\",\n spacing: \"spacing\",\n specularconstant: \"specularConstant\",\n specularexponent: \"specularExponent\",\n speed: \"speed\",\n spreadmethod: \"spreadMethod\",\n startoffset: \"startOffset\",\n stddeviation: \"stdDeviation\",\n stemh: \"stemh\",\n stemv: \"stemv\",\n stitchtiles: \"stitchTiles\",\n stopcolor: \"stopColor\",\n \"stop-color\": \"stopColor\",\n stopopacity: \"stopOpacity\",\n \"stop-opacity\": \"stopOpacity\",\n strikethroughposition: \"strikethroughPosition\",\n \"strikethrough-position\": \"strikethroughPosition\",\n strikethroughthickness: \"strikethroughThickness\",\n \"strikethrough-thickness\": \"strikethroughThickness\",\n string: \"string\",\n stroke: \"stroke\",\n strokedasharray: \"strokeDasharray\",\n \"stroke-dasharray\": \"strokeDasharray\",\n strokedashoffset: \"strokeDashoffset\",\n \"stroke-dashoffset\": \"strokeDashoffset\",\n strokelinecap: \"strokeLinecap\",\n \"stroke-linecap\": \"strokeLinecap\",\n strokelinejoin: \"strokeLinejoin\",\n \"stroke-linejoin\": \"strokeLinejoin\",\n strokemiterlimit: \"strokeMiterlimit\",\n \"stroke-miterlimit\": \"strokeMiterlimit\",\n strokewidth: \"strokeWidth\",\n \"stroke-width\": \"strokeWidth\",\n strokeopacity: \"strokeOpacity\",\n \"stroke-opacity\": \"strokeOpacity\",\n suppresscontenteditablewarning: \"suppressContentEditableWarning\",\n suppresshydrationwarning: \"suppressHydrationWarning\",\n surfacescale: \"surfaceScale\",\n systemlanguage: \"systemLanguage\",\n tablevalues: \"tableValues\",\n targetx: \"targetX\",\n targety: \"targetY\",\n textanchor: \"textAnchor\",\n \"text-anchor\": \"textAnchor\",\n textdecoration: \"textDecoration\",\n \"text-decoration\": \"textDecoration\",\n textlength: \"textLength\",\n textrendering: \"textRendering\",\n \"text-rendering\": \"textRendering\",\n to: \"to\",\n transform: \"transform\",\n transformorigin: \"transformOrigin\",\n \"transform-origin\": \"transformOrigin\",\n typeof: \"typeof\",\n u1: \"u1\",\n u2: \"u2\",\n underlineposition: \"underlinePosition\",\n \"underline-position\": \"underlinePosition\",\n underlinethickness: \"underlineThickness\",\n \"underline-thickness\": \"underlineThickness\",\n unicode: \"unicode\",\n unicodebidi: \"unicodeBidi\",\n \"unicode-bidi\": \"unicodeBidi\",\n unicoderange: \"unicodeRange\",\n \"unicode-range\": \"unicodeRange\",\n unitsperem: \"unitsPerEm\",\n \"units-per-em\": \"unitsPerEm\",\n unselectable: \"unselectable\",\n valphabetic: \"vAlphabetic\",\n \"v-alphabetic\": \"vAlphabetic\",\n values: \"values\",\n vectoreffect: \"vectorEffect\",\n \"vector-effect\": \"vectorEffect\",\n version: \"version\",\n vertadvy: \"vertAdvY\",\n \"vert-adv-y\": \"vertAdvY\",\n vertoriginx: \"vertOriginX\",\n \"vert-origin-x\": \"vertOriginX\",\n vertoriginy: \"vertOriginY\",\n \"vert-origin-y\": \"vertOriginY\",\n vhanging: \"vHanging\",\n \"v-hanging\": \"vHanging\",\n videographic: \"vIdeographic\",\n \"v-ideographic\": \"vIdeographic\",\n viewbox: \"viewBox\",\n viewtarget: \"viewTarget\",\n visibility: \"visibility\",\n vmathematical: \"vMathematical\",\n \"v-mathematical\": \"vMathematical\",\n vocab: \"vocab\",\n widths: \"widths\",\n wordspacing: \"wordSpacing\",\n \"word-spacing\": \"wordSpacing\",\n writingmode: \"writingMode\",\n \"writing-mode\": \"writingMode\",\n x1: \"x1\",\n x2: \"x2\",\n x: \"x\",\n xchannelselector: \"xChannelSelector\",\n xheight: \"xHeight\",\n \"x-height\": \"xHeight\",\n xlinkactuate: \"xlinkActuate\",\n \"xlink:actuate\": \"xlinkActuate\",\n xlinkarcrole: \"xlinkArcrole\",\n \"xlink:arcrole\": \"xlinkArcrole\",\n xlinkhref: \"xlinkHref\",\n \"xlink:href\": \"xlinkHref\",\n xlinkrole: \"xlinkRole\",\n \"xlink:role\": \"xlinkRole\",\n xlinkshow: \"xlinkShow\",\n \"xlink:show\": \"xlinkShow\",\n xlinktitle: \"xlinkTitle\",\n \"xlink:title\": \"xlinkTitle\",\n xlinktype: \"xlinkType\",\n \"xlink:type\": \"xlinkType\",\n xmlbase: \"xmlBase\",\n \"xml:base\": \"xmlBase\",\n xmllang: \"xmlLang\",\n \"xml:lang\": \"xmlLang\",\n xmlns: \"xmlns\",\n \"xml:space\": \"xmlSpace\",\n xmlnsxlink: \"xmlnsXlink\",\n \"xmlns:xlink\": \"xmlnsXlink\",\n xmlspace: \"xmlSpace\",\n y1: \"y1\",\n y2: \"y2\",\n y: \"y\",\n ychannelselector: \"yChannelSelector\",\n z: \"z\",\n zoomandpan: \"zoomAndPan\"\n },\n warnedProperties = {},\n EVENT_NAME_REGEX = /^on./,\n INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/,\n rARIA = RegExp(\n \"^(aria)-[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n rARIACamel = RegExp(\n \"^(aria)[A-Z][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/,\n msPattern$1 = /^-ms-/,\n hyphenPattern = /-(.)/g,\n badStyleValueWithSemicolonPattern = /;\\s*$/,\n warnedStyleNames = {},\n warnedStyleValues = {},\n warnedForNaNValue = !1,\n warnedForInfinityValue = !1,\n matchHtmlRegExp = /[\"'&<>]/,\n uppercasePattern = /([A-Z])/g,\n msPattern = /^ms-/,\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n NotPending = Object.freeze({\n pending: !1,\n data: null,\n method: null,\n action: null\n }),\n previousDispatcher = ReactDOMSharedInternals.d;\n ReactDOMSharedInternals.d = {\n f: previousDispatcher.f,\n r: previousDispatcher.r,\n D: function (href) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (\"string\" === typeof href && href) {\n if (!resumableState.dnsResources.hasOwnProperty(href)) {\n resumableState.dnsResources[href] = EXISTS;\n resumableState = renderState.headers;\n var header, JSCompiler_temp;\n if (\n (JSCompiler_temp =\n resumableState && 0 < resumableState.remainingCapacity)\n )\n JSCompiler_temp =\n ((header =\n \"<\" +\n escapeHrefForLinkHeaderURLContext(href) +\n \">; rel=dns-prefetch\"),\n 0 <= (resumableState.remainingCapacity -= header.length + 2));\n JSCompiler_temp\n ? ((renderState.resets.dns[href] = EXISTS),\n resumableState.preconnects &&\n (resumableState.preconnects += \", \"),\n (resumableState.preconnects += header))\n : ((header = []),\n pushLinkImpl(header, { href: href, rel: \"dns-prefetch\" }),\n renderState.preconnects.add(header));\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.D(href);\n },\n C: function (href, crossOrigin) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (\"string\" === typeof href && href) {\n var bucket =\n \"use-credentials\" === crossOrigin\n ? \"credentials\"\n : \"string\" === typeof crossOrigin\n ? \"anonymous\"\n : \"default\";\n if (!resumableState.connectResources[bucket].hasOwnProperty(href)) {\n resumableState.connectResources[bucket][href] = EXISTS;\n resumableState = renderState.headers;\n var header, JSCompiler_temp;\n if (\n (JSCompiler_temp =\n resumableState && 0 < resumableState.remainingCapacity)\n ) {\n JSCompiler_temp =\n \"<\" +\n escapeHrefForLinkHeaderURLContext(href) +\n \">; rel=preconnect\";\n if (\"string\" === typeof crossOrigin) {\n var escapedCrossOrigin =\n escapeStringForLinkHeaderQuotedParamValueContext(\n crossOrigin,\n \"crossOrigin\"\n );\n JSCompiler_temp +=\n '; crossorigin=\"' + escapedCrossOrigin + '\"';\n }\n JSCompiler_temp =\n ((header = JSCompiler_temp),\n 0 <= (resumableState.remainingCapacity -= header.length + 2));\n }\n JSCompiler_temp\n ? ((renderState.resets.connect[bucket][href] = EXISTS),\n resumableState.preconnects &&\n (resumableState.preconnects += \", \"),\n (resumableState.preconnects += header))\n : ((bucket = []),\n pushLinkImpl(bucket, {\n rel: \"preconnect\",\n href: href,\n crossOrigin: crossOrigin\n }),\n renderState.preconnects.add(bucket));\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.C(href, crossOrigin);\n },\n L: function (href, as, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (as && href) {\n switch (as) {\n case \"image\":\n if (options) {\n var imageSrcSet = options.imageSrcSet;\n var imageSizes = options.imageSizes;\n var fetchPriority = options.fetchPriority;\n }\n var key = imageSrcSet\n ? imageSrcSet + \"\\n\" + (imageSizes || \"\")\n : href;\n if (resumableState.imageResources.hasOwnProperty(key)) return;\n resumableState.imageResources[key] = PRELOAD_NO_CREDS;\n resumableState = renderState.headers;\n var header;\n resumableState &&\n 0 < resumableState.remainingCapacity &&\n \"high\" === fetchPriority &&\n ((header = getPreloadAsHeader(href, as, options)),\n 0 <= (resumableState.remainingCapacity -= header.length + 2))\n ? ((renderState.resets.image[key] = PRELOAD_NO_CREDS),\n resumableState.highImagePreloads &&\n (resumableState.highImagePreloads += \", \"),\n (resumableState.highImagePreloads += header))\n : ((resumableState = []),\n pushLinkImpl(\n resumableState,\n assign(\n {\n rel: \"preload\",\n href: imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )\n ),\n \"high\" === fetchPriority\n ? renderState.highImagePreloads.add(resumableState)\n : (renderState.bulkPreloads.add(resumableState),\n renderState.preloads.images.set(key, resumableState)));\n break;\n case \"style\":\n if (resumableState.styleResources.hasOwnProperty(href)) return;\n imageSrcSet = [];\n pushLinkImpl(\n imageSrcSet,\n assign({ rel: \"preload\", href: href, as: as }, options)\n );\n resumableState.styleResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n renderState.preloads.stylesheets.set(href, imageSrcSet);\n renderState.bulkPreloads.add(imageSrcSet);\n break;\n case \"script\":\n if (resumableState.scriptResources.hasOwnProperty(href)) return;\n imageSrcSet = [];\n renderState.preloads.scripts.set(href, imageSrcSet);\n renderState.bulkPreloads.add(imageSrcSet);\n pushLinkImpl(\n imageSrcSet,\n assign({ rel: \"preload\", href: href, as: as }, options)\n );\n resumableState.scriptResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n break;\n default:\n if (resumableState.unknownResources.hasOwnProperty(as)) {\n if (\n ((imageSrcSet = resumableState.unknownResources[as]),\n imageSrcSet.hasOwnProperty(href))\n )\n return;\n } else\n (imageSrcSet = {}),\n (resumableState.unknownResources[as] = imageSrcSet);\n imageSrcSet[href] = PRELOAD_NO_CREDS;\n if (\n (resumableState = renderState.headers) &&\n 0 < resumableState.remainingCapacity &&\n \"font\" === as &&\n ((key = getPreloadAsHeader(href, as, options)),\n 0 <= (resumableState.remainingCapacity -= key.length + 2))\n )\n (renderState.resets.font[href] = PRELOAD_NO_CREDS),\n resumableState.fontPreloads &&\n (resumableState.fontPreloads += \", \"),\n (resumableState.fontPreloads += key);\n else\n switch (\n ((resumableState = []),\n (href = assign(\n { rel: \"preload\", href: href, as: as },\n options\n )),\n pushLinkImpl(resumableState, href),\n as)\n ) {\n case \"font\":\n renderState.fontPreloads.add(resumableState);\n break;\n default:\n renderState.bulkPreloads.add(resumableState);\n }\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.L(href, as, options);\n },\n m: function (href, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (href) {\n var as =\n options && \"string\" === typeof options.as ? options.as : \"script\";\n switch (as) {\n case \"script\":\n if (resumableState.moduleScriptResources.hasOwnProperty(href))\n return;\n as = [];\n resumableState.moduleScriptResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n renderState.preloads.moduleScripts.set(href, as);\n break;\n default:\n if (resumableState.moduleUnknownResources.hasOwnProperty(as)) {\n var resources = resumableState.unknownResources[as];\n if (resources.hasOwnProperty(href)) return;\n } else\n (resources = {}),\n (resumableState.moduleUnknownResources[as] = resources);\n as = [];\n resources[href] = PRELOAD_NO_CREDS;\n }\n pushLinkImpl(\n as,\n assign({ rel: \"modulepreload\", href: href }, options)\n );\n renderState.bulkPreloads.add(as);\n enqueueFlush(request);\n }\n } else previousDispatcher.m(href, options);\n },\n X: function (src, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (src) {\n var resourceState = resumableState.scriptResources.hasOwnProperty(\n src\n )\n ? resumableState.scriptResources[src]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.scriptResources[src] = EXISTS),\n (options = assign({ src: src, async: !0 }, options)),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(options, resourceState),\n (src = renderState.preloads.scripts.get(src))) &&\n (src.length = 0),\n (src = []),\n renderState.scripts.add(src),\n pushScriptImpl(src, options),\n enqueueFlush(request));\n }\n } else previousDispatcher.X(src, options);\n },\n S: function (href, precedence, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (href) {\n precedence = precedence || \"default\";\n var styleQueue = renderState.styles.get(precedence),\n resourceState = resumableState.styleResources.hasOwnProperty(href)\n ? resumableState.styleResources[href]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.styleResources[href] = EXISTS),\n styleQueue ||\n ((styleQueue = {\n precedence: escapeTextForBrowser(precedence),\n rules: [],\n hrefs: [],\n sheets: new Map()\n }),\n renderState.styles.set(precedence, styleQueue)),\n (precedence = {\n state: PENDING$1,\n props: assign(\n {\n rel: \"stylesheet\",\n href: href,\n \"data-precedence\": precedence\n },\n options\n )\n }),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(precedence.props, resourceState),\n (renderState = renderState.preloads.stylesheets.get(href)) &&\n 0 < renderState.length\n ? (renderState.length = 0)\n : (precedence.state = PRELOADED)),\n styleQueue.sheets.set(href, precedence),\n enqueueFlush(request));\n }\n } else previousDispatcher.S(href, precedence, options);\n },\n M: function (src, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (src) {\n var resourceState =\n resumableState.moduleScriptResources.hasOwnProperty(src)\n ? resumableState.moduleScriptResources[src]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.moduleScriptResources[src] = EXISTS),\n (options = assign(\n { src: src, type: \"module\", async: !0 },\n options\n )),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(options, resourceState),\n (src = renderState.preloads.moduleScripts.get(src))) &&\n (src.length = 0),\n (src = []),\n renderState.scripts.add(src),\n pushScriptImpl(src, options),\n enqueueFlush(request));\n }\n } else previousDispatcher.M(src, options);\n }\n };\n var NothingSent = 0,\n SentCompleteSegmentFunction = 1,\n SentCompleteBoundaryFunction = 2,\n SentClientRenderFunction = 4,\n SentStyleInsertionFunction = 8,\n EXISTS = null,\n PRELOAD_NO_CREDS = [];\n Object.freeze(PRELOAD_NO_CREDS);\n var scriptRegex = /(<\\/|<)(s)(cript)/gi;\n var didWarnForNewBooleanPropsWithEmptyValue = {};\n var ROOT_HTML_MODE = 0,\n HTML_HTML_MODE = 1,\n HTML_MODE = 2,\n SVG_MODE = 3,\n MATHML_MODE = 4,\n HTML_TABLE_MODE = 5,\n HTML_TABLE_BODY_MODE = 6,\n HTML_TABLE_ROW_MODE = 7,\n HTML_COLGROUP_MODE = 8,\n styleNameCache = new Map(),\n styleAttributeStart = ' style=\"',\n styleAssign = \":\",\n styleSeparator = \";\",\n attributeSeparator = \" \",\n attributeAssign = '=\"',\n attributeEnd = '\"',\n attributeEmptyString = '=\"\"',\n actionJavaScriptURL = escapeTextForBrowser(\n \"javascript:throw new Error('React form unexpectedly submitted.')\"\n ),\n endOfStartTag = \">\",\n endOfStartTagSelfClosing = \"/>\",\n didWarnDefaultInputValue = !1,\n didWarnDefaultChecked = !1,\n didWarnDefaultSelectValue = !1,\n didWarnDefaultTextareaValue = !1,\n didWarnInvalidOptionChildren = !1,\n didWarnInvalidOptionInnerHTML = !1,\n didWarnSelectedSetOnOption = !1,\n didWarnFormActionType = !1,\n didWarnFormActionName = !1,\n didWarnFormActionTarget = !1,\n didWarnFormActionMethod = !1,\n formReplayingRuntimeScript =\n 'addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error(\\'React form unexpectedly submitted.\\')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});',\n styleRegex = /(<\\/|<)(s)(tyle)/gi,\n leadingNewline = \"\\n\",\n VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,\n validatedTagCache = new Map(),\n endTagCache = new Map(),\n placeholder1 = '<template id=\"',\n placeholder2 = '\"></template>',\n startCompletedSuspenseBoundary = \"\\x3c!--$--\\x3e\",\n startPendingSuspenseBoundary1 = '\\x3c!--$?--\\x3e<template id=\"',\n startPendingSuspenseBoundary2 = '\"></template>',\n startClientRenderedSuspenseBoundary = \"\\x3c!--$!--\\x3e\",\n endSuspenseBoundary = \"\\x3c!--/$--\\x3e\",\n clientRenderedSuspenseBoundaryError1 = \"<template\",\n clientRenderedSuspenseBoundaryErrorAttrInterstitial = '\"',\n clientRenderedSuspenseBoundaryError1A = ' data-dgst=\"',\n clientRenderedSuspenseBoundaryError1B = ' data-msg=\"',\n clientRenderedSuspenseBoundaryError1C = ' data-stck=\"',\n clientRenderedSuspenseBoundaryError1D = ' data-cstck=\"',\n clientRenderedSuspenseBoundaryError2 = \"></template>\",\n startSegmentHTML = '<div hidden id=\"',\n startSegmentHTML2 = '\">',\n endSegmentHTML = \"</div>\",\n startSegmentSVG = '<svg aria-hidden=\"true\" style=\"display:none\" id=\"',\n startSegmentSVG2 = '\">',\n endSegmentSVG = \"</svg>\",\n startSegmentMathML = '<math aria-hidden=\"true\" style=\"display:none\" id=\"',\n startSegmentMathML2 = '\">',\n endSegmentMathML = \"</math>\",\n startSegmentTable = '<table hidden id=\"',\n startSegmentTable2 = '\">',\n endSegmentTable = \"</table>\",\n startSegmentTableBody = '<table hidden><tbody id=\"',\n startSegmentTableBody2 = '\">',\n endSegmentTableBody = \"</tbody></table>\",\n startSegmentTableRow = '<table hidden><tr id=\"',\n startSegmentTableRow2 = '\">',\n endSegmentTableRow = \"</tr></table>\",\n startSegmentColGroup = '<table hidden><colgroup id=\"',\n startSegmentColGroup2 = '\">',\n endSegmentColGroup = \"</colgroup></table>\",\n completeSegmentScript1Full =\n '$RS=function(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"',\n completeSegmentScript1Partial = '$RS(\"',\n completeSegmentScript2 = '\",\"',\n completeSegmentScriptEnd = '\")\\x3c/script>',\n completeBoundaryScript1Full =\n '$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data=\"$!\",a.setAttribute(\"data-dgst\",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if(\"/$\"===d)if(0===f)break;else f--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data=\"$\"}b._reactRetry&&b._reactRetry()}};$RC(\"',\n completeBoundaryScript1Partial = '$RC(\"',\n completeBoundaryWithStylesScript1FullBoth =\n '$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data=\"$!\",a.setAttribute(\"data-dgst\",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if(\"/$\"===d)if(0===f)break;else f--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data=\"$\"}b._reactRetry&&b._reactRetry()}};$RM=new Map;\\n$RR=function(t,u,y){function v(n){this._p=null;n()}for(var w=$RC,p=$RM,q=new Map,r=document,g,b,h=r.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),x=[],k=0;b=h[k++];)\"not all\"===b.getAttribute(\"media\")?x.push(b):(\"LINK\"===b.tagName&&p.set(b.getAttribute(\"href\"),b),q.set(b.dataset.precedence,g=b));b=0;h=[];var l,a;for(k=!0;;){if(k){var e=y[b++];if(!e){k=!1;b=0;continue}var c=!1,m=0;var d=e[m++];if(a=p.get(d)){var f=a._p;c=!0}else{a=r.createElement(\"link\");a.href=\\nd;a.rel=\"stylesheet\";for(a.dataset.precedence=l=e[m++];f=e[m++];)a.setAttribute(f,e[m++]);f=a._p=new Promise(function(n,z){a.onload=v.bind(a,n);a.onerror=v.bind(a,z)});p.set(d,a)}d=a.getAttribute(\"media\");!f||d&&!matchMedia(d).matches||h.push(f);if(c)continue}else{a=x[b++];if(!a)break;l=a.getAttribute(\"data-precedence\");a.removeAttribute(\"media\")}c=q.get(l)||g;c===g&&(g=a);q.set(l,a);c?c.parentNode.insertBefore(a,c.nextSibling):(c=r.head,c.insertBefore(a,c.firstChild))}Promise.all(h).then(w.bind(null,\\nt,u,\"\"),w.bind(null,t,u,\"Resource failed to load\"))};$RR(\"',\n completeBoundaryWithStylesScript1FullPartial =\n '$RM=new Map;\\n$RR=function(t,u,y){function v(n){this._p=null;n()}for(var w=$RC,p=$RM,q=new Map,r=document,g,b,h=r.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),x=[],k=0;b=h[k++];)\"not all\"===b.getAttribute(\"media\")?x.push(b):(\"LINK\"===b.tagName&&p.set(b.getAttribute(\"href\"),b),q.set(b.dataset.precedence,g=b));b=0;h=[];var l,a;for(k=!0;;){if(k){var e=y[b++];if(!e){k=!1;b=0;continue}var c=!1,m=0;var d=e[m++];if(a=p.get(d)){var f=a._p;c=!0}else{a=r.createElement(\"link\");a.href=\\nd;a.rel=\"stylesheet\";for(a.dataset.precedence=l=e[m++];f=e[m++];)a.setAttribute(f,e[m++]);f=a._p=new Promise(function(n,z){a.onload=v.bind(a,n);a.onerror=v.bind(a,z)});p.set(d,a)}d=a.getAttribute(\"media\");!f||d&&!matchMedia(d).matches||h.push(f);if(c)continue}else{a=x[b++];if(!a)break;l=a.getAttribute(\"data-precedence\");a.removeAttribute(\"media\")}c=q.get(l)||g;c===g&&(g=a);q.set(l,a);c?c.parentNode.insertBefore(a,c.nextSibling):(c=r.head,c.insertBefore(a,c.firstChild))}Promise.all(h).then(w.bind(null,\\nt,u,\"\"),w.bind(null,t,u,\"Resource failed to load\"))};$RR(\"',\n completeBoundaryWithStylesScript1Partial = '$RR(\"',\n completeBoundaryScript2 = '\",\"',\n completeBoundaryScript3a = '\",',\n completeBoundaryScript3b = '\"',\n completeBoundaryScriptEnd = \")\\x3c/script>\",\n clientRenderScript1Full =\n '$RX=function(b,c,d,e,f){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),f&&(a.cstck=f),b._reactRetry&&b._reactRetry())};;$RX(\"',\n clientRenderScript1Partial = '$RX(\"',\n clientRenderScript1A = '\"',\n clientRenderErrorScriptArgInterstitial = \",\",\n clientRenderScriptEnd = \")\\x3c/script>\",\n regexForJSStringsInInstructionScripts = /[<\\u2028\\u2029]/g,\n regexForJSStringsInScripts = /[&><\\u2028\\u2029]/g,\n lateStyleTagResourceOpen1 = '<style media=\"not all\" data-precedence=\"',\n lateStyleTagResourceOpen2 = '\" data-href=\"',\n lateStyleTagResourceOpen3 = '\">',\n lateStyleTagTemplateClose = \"</style>\",\n currentlyRenderingBoundaryHasStylesToHoist = !1,\n destinationHasCapacity = !0,\n stylesheetFlushingQueue = [],\n styleTagResourceOpen1 = '<style data-precedence=\"',\n styleTagResourceOpen2 = '\" data-href=\"',\n spaceSeparator = \" \",\n styleTagResourceOpen3 = '\">',\n styleTagResourceClose = \"</style>\",\n arrayFirstOpenBracket = \"[\",\n arraySubsequentOpenBracket = \",[\",\n arrayInterstitial = \",\",\n arrayCloseBracket = \"]\",\n PENDING$1 = 0,\n PRELOADED = 1,\n PREAMBLE = 2,\n LATE = 3,\n regexForHrefInLinkHeaderURLContext = /[<>\\r\\n]/g,\n regexForLinkHeaderQuotedParamValueContext = /[\"';,\\r\\n]/g,\n doctypeChunk = \"\",\n bind = Function.prototype.bind,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n emptyContextObject = {};\n Object.freeze(emptyContextObject);\n var rendererSigil = {};\n var currentActiveSnapshot = null,\n didWarnAboutNoopUpdateForComponent = {},\n didWarnAboutDeprecatedWillMount = {};\n var didWarnAboutUninitializedState = new Set();\n var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n var didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n var didWarnAboutDirectlyAssigningPropsToState = new Set();\n var didWarnAboutUndefinedDerivedState = new Set();\n var didWarnAboutContextTypes$1 = new Set();\n var didWarnAboutChildContextTypes = new Set();\n var didWarnAboutInvalidateContextType = new Set();\n var didWarnOnInvalidCallback = new Set();\n var classComponentUpdater = {\n isMounted: function () {\n return !1;\n },\n enqueueSetState: function (inst, payload, callback) {\n var internals = inst._reactInternals;\n null === internals.queue\n ? warnNoop(inst, \"setState\")\n : (internals.queue.push(payload),\n void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n inst.replace = !0;\n inst.queue = [payload];\n void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback);\n },\n enqueueForceUpdate: function (inst, callback) {\n null === inst._reactInternals.queue\n ? warnNoop(inst, \"forceUpdate\")\n : void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback);\n }\n },\n emptyTreeContext = { id: 1, overflow: \"\" },\n clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2,\n SuspenseException = Error(\n \"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`\"\n ),\n suspendedThenable = null,\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n currentlyRenderingComponent = null,\n currentlyRenderingTask = null,\n currentlyRenderingRequest = null,\n currentlyRenderingKeyPath = null,\n firstWorkInProgressHook = null,\n workInProgressHook = null,\n isReRender = !1,\n didScheduleRenderPhaseUpdate = !1,\n localIdCounter = 0,\n actionStateCounter = 0,\n actionStateMatchingIndex = -1,\n thenableIndexCounter = 0,\n thenableState = null,\n renderPhaseUpdates = null,\n numberOfReRenders = 0,\n isInHookUserCodeInDev = !1,\n currentHookNameInDev,\n HooksDispatcher = {\n readContext: readContext,\n use: function (usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then)\n return unwrapThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE)\n return readContext(usable);\n }\n throw Error(\n \"An unsupported type was passed to use(): \" + String(usable)\n );\n },\n useContext: function (context) {\n currentHookNameInDev = \"useContext\";\n resolveCurrentlyRenderingComponent();\n return context._currentValue2;\n },\n useMemo: useMemo,\n useReducer: useReducer,\n useRef: function (initialValue) {\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n var previousRef = workInProgressHook.memoizedState;\n return null === previousRef\n ? ((initialValue = { current: initialValue }),\n Object.seal(initialValue),\n (workInProgressHook.memoizedState = initialValue))\n : previousRef;\n },\n useState: function (initialState) {\n currentHookNameInDev = \"useState\";\n return useReducer(basicStateReducer, initialState);\n },\n useInsertionEffect: noop$1,\n useLayoutEffect: noop$1,\n useCallback: function (callback, deps) {\n return useMemo(function () {\n return callback;\n }, deps);\n },\n useImperativeHandle: noop$1,\n useEffect: noop$1,\n useDebugValue: noop$1,\n useDeferredValue: function (value, initialValue) {\n resolveCurrentlyRenderingComponent();\n return void 0 !== initialValue ? initialValue : value;\n },\n useTransition: function () {\n resolveCurrentlyRenderingComponent();\n return [!1, unsupportedStartTransition];\n },\n useId: function () {\n var treeId = currentlyRenderingTask.treeContext;\n var overflow = treeId.overflow;\n treeId = treeId.id;\n treeId =\n (treeId & ~(1 << (32 - clz32(treeId) - 1))).toString(32) + overflow;\n var resumableState = currentResumableState;\n if (null === resumableState)\n throw Error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component.\"\n );\n overflow = localIdCounter++;\n treeId = \":\" + resumableState.idPrefix + \"R\" + treeId;\n 0 < overflow && (treeId += \"H\" + overflow.toString(32));\n return treeId + \":\";\n },\n useSyncExternalStore: function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n if (void 0 === getServerSnapshot)\n throw Error(\n \"Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.\"\n );\n return getServerSnapshot();\n },\n useCacheRefresh: function () {\n return unsupportedRefresh;\n },\n useMemoCache: function (size) {\n for (var data = Array(size), i = 0; i < size; i++)\n data[i] = REACT_MEMO_CACHE_SENTINEL;\n return data;\n },\n useHostTransitionStatus: function () {\n resolveCurrentlyRenderingComponent();\n return NotPending;\n },\n useOptimistic: function (passthrough) {\n resolveCurrentlyRenderingComponent();\n return [passthrough, unsupportedSetOptimisticState];\n }\n };\n HooksDispatcher.useFormState = useActionState;\n HooksDispatcher.useActionState = useActionState;\n var currentResumableState = null,\n currentTaskInDEV = null,\n DefaultAsyncDispatcher = {\n getCacheForType: function () {\n throw Error(\"Not implemented.\");\n },\n getOwner: function () {\n return null === currentTaskInDEV\n ? null\n : currentTaskInDEV.componentStack;\n }\n },\n disabledDepth = 0,\n prevLog,\n prevInfo,\n prevWarn,\n prevError,\n prevGroup,\n prevGroupCollapsed,\n prevGroupEnd;\n disabledLog.__reactDisabledLog = !0;\n var prefix,\n suffix,\n reentry = !1;\n var componentFrameCache = new (\n \"function\" === typeof WeakMap ? WeakMap : Map\n )();\n var callComponent = {\n \"react-stack-bottom-frame\": function (Component, props, secondArg) {\n return Component(props, secondArg);\n }\n },\n callComponentInDEV =\n callComponent[\"react-stack-bottom-frame\"].bind(callComponent),\n callRender = {\n \"react-stack-bottom-frame\": function (instance) {\n return instance.render();\n }\n },\n callRenderInDEV = callRender[\"react-stack-bottom-frame\"].bind(callRender),\n callLazyInit = {\n \"react-stack-bottom-frame\": function (lazy) {\n var init = lazy._init;\n return init(lazy._payload);\n }\n },\n callLazyInitInDEV =\n callLazyInit[\"react-stack-bottom-frame\"].bind(callLazyInit),\n CLIENT_RENDERED = 4,\n PENDING = 0,\n COMPLETED = 1,\n FLUSHED = 2,\n POSTPONED = 5,\n CLOSED = 14,\n currentRequest = null,\n didWarnAboutBadClass = {},\n didWarnAboutContextTypes = {},\n didWarnAboutContextTypeOnFunctionComponent = {},\n didWarnAboutGetDerivedStateOnFunctionComponent = {},\n didWarnAboutReassigningProps = !1,\n didWarnAboutGenerators = !1,\n didWarnAboutMaps = !1;\n exports.renderToStaticMarkup = function (children, options) {\n return renderToStringImpl(\n children,\n options,\n !0,\n 'The server used \"renderToStaticMarkup\" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server'\n );\n };\n exports.renderToString = function (children, options) {\n return renderToStringImpl(\n children,\n options,\n !1,\n 'The server used \"renderToString\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server'\n );\n };\n exports.version = \"19.0.0\";\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tc2VydmVyLWxlZ2FjeS5icm93c2VyLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2E7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsSUFBSTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwwQkFBMEI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw2Q0FBNkM7QUFDbkUsc0JBQXNCLDRDQUE0QztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxJQUFJO0FBQ3RDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSx5QkFBeUIsNkJBQTZCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsaUJBQWlCO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHNCQUFzQjtBQUN0QjtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsY0FBYztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtKQUFrSixpQkFBaUI7QUFDbks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrSkFBa0osaUJBQWlCLG1EQUFtRCxtQkFBbUIsV0FBVywrQkFBK0I7QUFDblI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEZBQTRGLEdBQUc7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MscUJBQXFCO0FBQ3ZEO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLHdCQUF3QjtBQUN4Qiw0QkFBNEIsV0FBVyxlQUFlLG1CQUFtQjtBQUN6RSwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLDJCQUEyQjtBQUMzQixrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrSEFBa0gsOEJBQThCO0FBQ2hKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRSxZQUFZO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QiwwQkFBMEI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdWZBQXVmLFdBQVcsMExBQTBMLFNBQVMsV0FBVyxFQUFFO0FBQ2x0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLFlBQVk7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNEJBQTRCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxzQkFBc0I7QUFDekU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtCQUFrQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxQkFBcUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isb0NBQW9DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwyQkFBMkI7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGFBQWE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixpQkFBaUI7QUFDakIscUJBQXFCLFdBQVcsZUFBZSxtQkFBbUI7QUFDbEUsbUJBQW1CO0FBQ25CO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixzQkFBc0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixzQkFBc0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRUFBbUU7QUFDbkU7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDBCQUEwQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQWdEO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxQ0FBcUM7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMEJBQTBCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlCQUFpQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrQkFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGtCQUFrQixnQkFBZ0I7QUFDdkU7QUFDQTtBQUNBLFFBQVE7QUFDUiw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3QkFBd0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHlEQUF5RDtBQUN6RDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDJCQUEyQjtBQUM1RCx3Q0FBd0Msb0JBQW9CO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBOEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxnQ0FBZ0M7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsbUNBQW1DLGdDQUFnQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFDQUFxQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZ0NBQWdDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsOEJBQThCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw0QkFBNEI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsNENBQU87QUFDL0IsaUJBQWlCLG1CQUFPLENBQUMsb0RBQVc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDLDJCQUEyQjtBQUMzQiw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtB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LDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLDJCQUEyQixxQkFBcUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsdUJBQXVCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLDhDQUE4QyxVQUFVO0FBQ3hEO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxxREFBcUQ7QUFDckQseURBQXlEO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLElBQUksNEJBQTRCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxzQkFBc0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGVBQWU7QUFDbkIsR0FBRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tc2VydmVyLWxlZ2FjeS5icm93c2VyLmRldmVsb3BtZW50LmpzPzJlMmQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLypcblxuXG4gSlMgSW1wbGVtZW50YXRpb24gb2YgTXVybXVySGFzaDMgKHIxMzYpIChhcyBvZiBNYXkgMjAsIDIwMTEpXG5cbiBDb3B5cmlnaHQgKGMpIDIwMTEgR2FyeSBDb3VydFxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuKi9cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3R5bGVSZXBsYWNlcihtYXRjaCwgcHJlZml4LCBzLCBzdWZmaXgpIHtcbiAgICAgIHJldHVybiBcIlwiICsgcHJlZml4ICsgKFwic1wiID09PSBzID8gXCJcXFxcNzMgXCIgOiBcIlxcXFw1MyBcIikgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcmlwdFJlcGxhY2VyKG1hdGNoLCBwcmVmaXgsIHMsIHN1ZmZpeCkge1xuICAgICAgcmV0dXJuIFwiXCIgKyBwcmVmaXggKyAoXCJzXCIgPT09IHMgPyBcIlxcXFx1MDA3M1wiIDogXCJcXFxcdTAwNTNcIikgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9iamVjdE5hbWUob2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuICAgICAgICAuY2FsbChvYmplY3QpXG4gICAgICAgIC5yZXBsYWNlKC9eXFxbb2JqZWN0ICguKilcXF0kLywgZnVuY3Rpb24gKG0sIHAwKSB7XG4gICAgICAgICAgcmV0dXJuIHAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2Uoa2V5KSB7XG4gICAgICB2YXIgZW5jb2RlZEtleSA9IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gICAgICByZXR1cm4gJ1wiJyArIGtleSArICdcIicgPT09IGVuY29kZWRLZXkgPyBrZXkgOiBlbmNvZGVkS2V5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKHZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgMTAgPj0gdmFsdWUubGVuZ3RoID8gdmFsdWUgOiB2YWx1ZS5zbGljZSgwLCAxMCkgKyBcIi4uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgIGlmIChpc0FycmF5SW1wbCh2YWx1ZSkpIHJldHVybiBcIlsuLi5dXCI7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHZhbHVlICYmIHZhbHVlLiQkdHlwZW9mID09PSBDTElFTlRfUkVGRVJFTkNFX1RBRylcbiAgICAgICAgICAgIHJldHVybiBcImNsaWVudFwiO1xuICAgICAgICAgIHZhbHVlID0gb2JqZWN0TmFtZSh2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHZhbHVlID8gXCJ7Li4ufVwiIDogdmFsdWU7XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgIHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUdcbiAgICAgICAgICAgID8gXCJjbGllbnRcIlxuICAgICAgICAgICAgOiAodmFsdWUgPSB2YWx1ZS5kaXNwbGF5TmFtZSB8fCB2YWx1ZS5uYW1lKVxuICAgICAgICAgICAgICA/IFwiZnVuY3Rpb24gXCIgKyB2YWx1ZVxuICAgICAgICAgICAgICA6IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiB0eXBlO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgIH1cbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZS5yZW5kZXIpO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZS50eXBlKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHZhciBwYXlsb2FkID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZShwYXlsb2FkKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2Uob2JqZWN0T3JBcnJheSwgZXhwYW5kZWROYW1lKSB7XG4gICAgICB2YXIgb2JqS2luZCA9IG9iamVjdE5hbWUob2JqZWN0T3JBcnJheSk7XG4gICAgICBpZiAoXCJPYmplY3RcIiAhPT0gb2JqS2luZCAmJiBcIkFycmF5XCIgIT09IG9iaktpbmQpIHJldHVybiBvYmpLaW5kO1xuICAgICAgdmFyIHN0YXJ0ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IDA7XG4gICAgICBpZiAoaXNBcnJheUltcGwob2JqZWN0T3JBcnJheSkpXG4gICAgICAgIGlmIChqc3hDaGlsZHJlblBhcmVudHMuaGFzKG9iamVjdE9yQXJyYXkpKSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBqc3hDaGlsZHJlblBhcmVudHMuZ2V0KG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIG9iaktpbmQgPSBcIjxcIiArIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZSkgKyBcIj5cIjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdE9yQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdE9yQXJyYXlbaV07XG4gICAgICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgICAgICA6IFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJiBudWxsICE9PSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgPyBcIntcIiArIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwifVwiXG4gICAgICAgICAgICAgICAgICA6IFwie1wiICsgZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZSh2YWx1ZSkgKyBcIn1cIjtcbiAgICAgICAgICAgIFwiXCIgKyBpID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChsZW5ndGggPSB2YWx1ZS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IHZhbHVlKSlcbiAgICAgICAgICAgICAgOiAob2JqS2luZCA9XG4gICAgICAgICAgICAgICAgICAxNSA+IHZhbHVlLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgdmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogb2JqS2luZCArIFwiey4uLn1cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iaktpbmQgKz0gXCI8L1wiICsgZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSArIFwiPlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9iaktpbmQgPSBcIltcIjtcbiAgICAgICAgICBmb3IgKHR5cGUgPSAwOyB0eXBlIDwgb2JqZWN0T3JBcnJheS5sZW5ndGg7IHR5cGUrKylcbiAgICAgICAgICAgIDAgPCB0eXBlICYmIChvYmpLaW5kICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgIChpID0gb2JqZWN0T3JBcnJheVt0eXBlXSksXG4gICAgICAgICAgICAgIChpID1cbiAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgaSAmJiBudWxsICE9PSBpXG4gICAgICAgICAgICAgICAgICA/IGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKGkpXG4gICAgICAgICAgICAgICAgICA6IGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UoaSkpLFxuICAgICAgICAgICAgICBcIlwiICsgdHlwZSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgKGxlbmd0aCA9IGkubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IGkpKVxuICAgICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgICAxMCA+IGkubGVuZ3RoICYmIDQwID4gb2JqS2luZC5sZW5ndGggKyBpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIGlcbiAgICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcIi4uLlwiKTtcbiAgICAgICAgICBvYmpLaW5kICs9IFwiXVwiO1xuICAgICAgICB9XG4gICAgICBlbHNlIGlmIChvYmplY3RPckFycmF5LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpXG4gICAgICAgIG9iaktpbmQgPSBcIjxcIiArIGRlc2NyaWJlRWxlbWVudFR5cGUob2JqZWN0T3JBcnJheS50eXBlKSArIFwiLz5cIjtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAob2JqZWN0T3JBcnJheS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUcpIHJldHVybiBcImNsaWVudFwiO1xuICAgICAgICBpZiAoanN4UHJvcHNQYXJlbnRzLmhhcyhvYmplY3RPckFycmF5KSkge1xuICAgICAgICAgIG9iaktpbmQgPSBqc3hQcm9wc1BhcmVudHMuZ2V0KG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIG9iaktpbmQgPSBcIjxcIiArIChkZXNjcmliZUVsZW1lbnRUeXBlKG9iaktpbmQpIHx8IFwiLi4uXCIpO1xuICAgICAgICAgIHR5cGUgPSBPYmplY3Qua2V5cyhvYmplY3RPckFycmF5KTtcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHlwZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb2JqS2luZCArPSBcIiBcIjtcbiAgICAgICAgICAgIHZhbHVlID0gdHlwZVtpXTtcbiAgICAgICAgICAgIG9iaktpbmQgKz0gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgXCI9XCI7XG4gICAgICAgICAgICB2YXIgX3ZhbHVlMiA9IG9iamVjdE9yQXJyYXlbdmFsdWVdO1xuICAgICAgICAgICAgdmFyIF9zdWJzdHIyID1cbiAgICAgICAgICAgICAgdmFsdWUgPT09IGV4cGFuZGVkTmFtZSAmJlxuICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgX3ZhbHVlMiAmJlxuICAgICAgICAgICAgICBudWxsICE9PSBfdmFsdWUyXG4gICAgICAgICAgICAgICAgPyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShfdmFsdWUyKVxuICAgICAgICAgICAgICAgIDogZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZShfdmFsdWUyKTtcbiAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBfdmFsdWUyICYmIChfc3Vic3RyMiA9IFwie1wiICsgX3N1YnN0cjIgKyBcIn1cIik7XG4gICAgICAgICAgICB2YWx1ZSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAobGVuZ3RoID0gX3N1YnN0cjIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAob2JqS2luZCArPSBfc3Vic3RyMikpXG4gICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgMTAgPiBfc3Vic3RyMi5sZW5ndGggJiYgNDAgPiBvYmpLaW5kLmxlbmd0aCArIF9zdWJzdHIyLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyBfc3Vic3RyMlxuICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcIi4uLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqS2luZCArPSBcIj5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpLaW5kID0gXCJ7XCI7XG4gICAgICAgICAgdHlwZSA9IE9iamVjdC5rZXlzKG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0eXBlLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgMCA8IGkgJiYgKG9iaktpbmQgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgKHZhbHVlID0gdHlwZVtpXSksXG4gICAgICAgICAgICAgIChvYmpLaW5kICs9IGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwiOiBcIiksXG4gICAgICAgICAgICAgIChfdmFsdWUyID0gb2JqZWN0T3JBcnJheVt2YWx1ZV0pLFxuICAgICAgICAgICAgICAoX3ZhbHVlMiA9XG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIF92YWx1ZTIgJiYgbnVsbCAhPT0gX3ZhbHVlMlxuICAgICAgICAgICAgICAgICAgPyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShfdmFsdWUyKVxuICAgICAgICAgICAgICAgICAgOiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKF92YWx1ZTIpKSxcbiAgICAgICAgICAgICAgdmFsdWUgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChsZW5ndGggPSBfdmFsdWUyLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAob2JqS2luZCArPSBfdmFsdWUyKSlcbiAgICAgICAgICAgICAgICA6IChvYmpLaW5kID1cbiAgICAgICAgICAgICAgICAgICAgMTAgPiBfdmFsdWUyLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgX3ZhbHVlMi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyBfdmFsdWUyXG4gICAgICAgICAgICAgICAgICAgICAgOiBvYmpLaW5kICsgXCIuLi5cIik7XG4gICAgICAgICAgb2JqS2luZCArPSBcIn1cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgID8gb2JqS2luZFxuICAgICAgICA6IC0xIDwgc3RhcnQgJiYgMCA8IGxlbmd0aFxuICAgICAgICAgID8gKChvYmplY3RPckFycmF5ID0gXCIgXCIucmVwZWF0KHN0YXJ0KSArIFwiXlwiLnJlcGVhdChsZW5ndGgpKSxcbiAgICAgICAgICAgIFwiXFxuICBcIiArIG9iaktpbmQgKyBcIlxcbiAgXCIgKyBvYmplY3RPckFycmF5KVxuICAgICAgICAgIDogXCJcXG4gIFwiICsgb2JqS2luZDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbXVybXVyaGFzaDNfMzJfZ2Moa2V5LCBzZWVkKSB7XG4gICAgICB2YXIgcmVtYWluZGVyID0ga2V5Lmxlbmd0aCAmIDM7XG4gICAgICB2YXIgYnl0ZXMgPSBrZXkubGVuZ3RoIC0gcmVtYWluZGVyO1xuICAgICAgdmFyIGgxID0gc2VlZDtcbiAgICAgIGZvciAoc2VlZCA9IDA7IHNlZWQgPCBieXRlczsgKSB7XG4gICAgICAgIHZhciBrMSA9XG4gICAgICAgICAgKGtleS5jaGFyQ29kZUF0KHNlZWQpICYgMjU1KSB8XG4gICAgICAgICAgKChrZXkuY2hhckNvZGVBdCgrK3NlZWQpICYgMjU1KSA8PCA4KSB8XG4gICAgICAgICAgKChrZXkuY2hhckNvZGVBdCgrK3NlZWQpICYgMjU1KSA8PCAxNikgfFxuICAgICAgICAgICgoa2V5LmNoYXJDb2RlQXQoKytzZWVkKSAmIDI1NSkgPDwgMjQpO1xuICAgICAgICArK3NlZWQ7XG4gICAgICAgIGsxID1cbiAgICAgICAgICAoMzQzMjkxODM1MyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAoKCgzNDMyOTE4MzUzICogKGsxID4+PiAxNikpICYgNjU1MzUpIDw8IDE2KSkgJlxuICAgICAgICAgIDQyOTQ5NjcyOTU7XG4gICAgICAgIGsxID0gKGsxIDw8IDE1KSB8IChrMSA+Pj4gMTcpO1xuICAgICAgICBrMSA9XG4gICAgICAgICAgKDQ2MTg0NTkwNyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAoKCg0NjE4NDU5MDcgKiAoazEgPj4+IDE2KSkgJiA2NTUzNSkgPDwgMTYpKSAmXG4gICAgICAgICAgNDI5NDk2NzI5NTtcbiAgICAgICAgaDEgXj0gazE7XG4gICAgICAgIGgxID0gKGgxIDw8IDEzKSB8IChoMSA+Pj4gMTkpO1xuICAgICAgICBoMSA9XG4gICAgICAgICAgKDUgKiAoaDEgJiA2NTUzNSkgKyAoKCg1ICogKGgxID4+PiAxNikpICYgNjU1MzUpIDw8IDE2KSkgJiA0Mjk0OTY3Mjk1O1xuICAgICAgICBoMSA9IChoMSAmIDY1NTM1KSArIDI3NDkyICsgKCgoKGgxID4+PiAxNikgKyA1ODk2NCkgJiA2NTUzNSkgPDwgMTYpO1xuICAgICAgfVxuICAgICAgazEgPSAwO1xuICAgICAgc3dpdGNoIChyZW1haW5kZXIpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGsxIF49IChrZXkuY2hhckNvZGVBdChzZWVkICsgMikgJiAyNTUpIDw8IDE2O1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgazEgXj0gKGtleS5jaGFyQ29kZUF0KHNlZWQgKyAxKSAmIDI1NSkgPDwgODtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIChrMSBePSBrZXkuY2hhckNvZGVBdChzZWVkKSAmIDI1NSksXG4gICAgICAgICAgICAoazEgPVxuICAgICAgICAgICAgICAoMzQzMjkxODM1MyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAgICAgKCgoMzQzMjkxODM1MyAqIChrMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgICAgICAgNDI5NDk2NzI5NSksXG4gICAgICAgICAgICAoazEgPSAoazEgPDwgMTUpIHwgKGsxID4+PiAxNykpLFxuICAgICAgICAgICAgKGgxIF49XG4gICAgICAgICAgICAgICg0NjE4NDU5MDcgKiAoazEgJiA2NTUzNSkgK1xuICAgICAgICAgICAgICAgICgoKDQ2MTg0NTkwNyAqIChrMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgICAgICAgNDI5NDk2NzI5NSk7XG4gICAgICB9XG4gICAgICBoMSBePSBrZXkubGVuZ3RoO1xuICAgICAgaDEgXj0gaDEgPj4+IDE2O1xuICAgICAgaDEgPVxuICAgICAgICAoMjI0NjgyMjUwNyAqIChoMSAmIDY1NTM1KSArXG4gICAgICAgICAgKCgoMjI0NjgyMjUwNyAqIChoMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgNDI5NDk2NzI5NTtcbiAgICAgIGgxIF49IGgxID4+PiAxMztcbiAgICAgIGgxID1cbiAgICAgICAgKDMyNjY0ODk5MDkgKiAoaDEgJiA2NTUzNSkgK1xuICAgICAgICAgICgoKDMyNjY0ODk5MDkgKiAoaDEgPj4+IDE2KSkgJiA2NTUzNSkgPDwgMTYpKSAmXG4gICAgICAgIDQyOTQ5NjcyOTU7XG4gICAgICByZXR1cm4gKGgxIF4gKGgxID4+PiAxNikpID4+PiAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFN5bWJvbCAmJlxuICAgICAgICAgIFN5bWJvbC50b1N0cmluZ1RhZyAmJlxuICAgICAgICAgIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10pIHx8XG4gICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHxcbiAgICAgICAgXCJPYmplY3RcIlxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpLCAhMTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICEwO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBcIlwiICsgdmFsdWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiVGhlIHByb3ZpZGVkIGAlc2AgYXR0cmlidXRlIGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgIHR5cGVOYW1lKHZhbHVlKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKVxuICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja0NTU1Byb3BlcnR5U3RyaW5nQ29lcmNpb24odmFsdWUsIHByb3BOYW1lKSB7XG4gICAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlRoZSBwcm92aWRlZCBgJXNgIENTUyBwcm9wZXJ0eSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLiBUaGlzIHZhbHVlIG11c3QgYmUgY29lcmNlZCB0byBhIHN0cmluZyBiZWZvcmUgdXNpbmcgaXQgaGVyZS5cIixcbiAgICAgICAgICAgIHByb3BOYW1lLFxuICAgICAgICAgICAgdHlwZU5hbWUodmFsdWUpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gICAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlRoZSBwcm92aWRlZCBIVE1MIG1hcmt1cCB1c2VzIGEgdmFsdWUgb2YgdW5zdXBwb3J0ZWQgdHlwZSAlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuXCIsXG4gICAgICAgICAgICB0eXBlTmFtZSh2YWx1ZSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNBdHRyaWJ1dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUsIGF0dHJpYnV0ZU5hbWUpKVxuICAgICAgICByZXR1cm4gITA7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlLCBhdHRyaWJ1dGVOYW1lKSlcbiAgICAgICAgcmV0dXJuICExO1xuICAgICAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYLnRlc3QoYXR0cmlidXRlTmFtZSkpXG4gICAgICAgIHJldHVybiAodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gITApO1xuICAgICAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9ICEwO1xuICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2BcIiwgYXR0cmlidXRlTmFtZSk7XG4gICAgICByZXR1cm4gITE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrQ29udHJvbGxlZFZhbHVlUHJvcHModGFnTmFtZSwgcHJvcHMpIHtcbiAgICAgIGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHxcbiAgICAgICAgcHJvcHMub25DaGFuZ2UgfHxcbiAgICAgICAgcHJvcHMub25JbnB1dCB8fFxuICAgICAgICBwcm9wcy5yZWFkT25seSB8fFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCB8fFxuICAgICAgICBudWxsID09IHByb3BzLnZhbHVlIHx8XG4gICAgICAgIChcInNlbGVjdFwiID09PSB0YWdOYW1lXG4gICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIllvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lzZSwgc2V0IGBvbkNoYW5nZWAuXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC5cIlxuICAgICAgICAgICAgKSk7XG4gICAgICBwcm9wcy5vbkNoYW5nZSB8fFxuICAgICAgICBwcm9wcy5yZWFkT25seSB8fFxuICAgICAgICBwcm9wcy5kaXNhYmxlZCB8fFxuICAgICAgICBudWxsID09IHByb3BzLmNoZWNrZWQgfHxcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIllvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkkMSh0YWdOYW1lLCBuYW1lKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGhhc093blByb3BlcnR5LmNhbGwod2FybmVkUHJvcGVydGllcyQxLCBuYW1lKSAmJlxuICAgICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV1cbiAgICAgIClcbiAgICAgICAgcmV0dXJuICEwO1xuICAgICAgaWYgKHJBUklBQ2FtZWwkMS50ZXN0KG5hbWUpKSB7XG4gICAgICAgIHRhZ05hbWUgPSBcImFyaWEtXCIgKyBuYW1lLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRhZ05hbWUgPSBhcmlhUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0YWdOYW1lKSA/IHRhZ05hbWUgOiBudWxsO1xuICAgICAgICBpZiAobnVsbCA9PSB0YWdOYW1lKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgQVJJQSBhdHRyaWJ1dGUgYCVzYC4gQVJJQSBhdHRyaWJ1dGVzIGZvbGxvdyB0aGUgcGF0dGVybiBhcmlhLSogYW5kIG11c3QgYmUgbG93ZXJjYXNlLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9ICEwKVxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChuYW1lICE9PSB0YWdOYW1lKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgQVJJQSBhdHRyaWJ1dGUgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/XCIsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHRhZ05hbWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAod2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gITApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChyQVJJQSQxLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGFnTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdGFnTmFtZSA9IGFyaWFQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHRhZ05hbWUpID8gdGFnTmFtZSA6IG51bGw7XG4gICAgICAgIGlmIChudWxsID09IHRhZ05hbWUpIHJldHVybiAod2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gITApLCAhMTtcbiAgICAgICAgbmFtZSAhPT0gdGFnTmFtZSAmJlxuICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJVbmtub3duIEFSSUEgYXR0cmlidXRlIGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgP1wiLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHRhZ05hbWVcbiAgICAgICAgICApLFxuICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSAhMCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICEwO1xuICAgIH1cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnRpZXMkMih0eXBlLCBwcm9wcykge1xuICAgICAgdmFyIGludmFsaWRQcm9wcyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgICBmb3IgKGtleSBpbiBwcm9wcylcbiAgICAgICAgdmFsaWRhdGVQcm9wZXJ0eSQxKHR5cGUsIGtleSkgfHwgaW52YWxpZFByb3BzLnB1c2goa2V5KTtcbiAgICAgIHByb3BzID0gaW52YWxpZFByb3BzXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICByZXR1cm4gXCJgXCIgKyBwcm9wICsgXCJgXCI7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiLCBcIik7XG4gICAgICAxID09PSBpbnZhbGlkUHJvcHMubGVuZ3RoXG4gICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiSW52YWxpZCBhcmlhIHByb3AgJXMgb24gPCVzPiB0YWcuIEZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9pbnZhbGlkLWFyaWEtcHJvcHNcIixcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIClcbiAgICAgICAgOiAxIDwgaW52YWxpZFByb3BzLmxlbmd0aCAmJlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkludmFsaWQgYXJpYSBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL2ludmFsaWQtYXJpYS1wcm9wc1wiLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh0YWdOYW1lLCBuYW1lLCB2YWx1ZSwgZXZlbnRSZWdpc3RyeSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwod2FybmVkUHJvcGVydGllcywgbmFtZSkgJiYgd2FybmVkUHJvcGVydGllc1tuYW1lXSlcbiAgICAgICAgcmV0dXJuICEwO1xuICAgICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKFwib25mb2N1c2luXCIgPT09IGxvd2VyQ2FzZWROYW1lIHx8IFwib25mb2N1c291dFwiID09PSBsb3dlckNhc2VkTmFtZSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJSZWFjdCB1c2VzIG9uRm9jdXMgYW5kIG9uQmx1ciBpbnN0ZWFkIG9mIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dC4gQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dCBhcmUgbm90IG5lZWRlZC9zdXBwb3J0ZWQgYnkgUmVhY3QuXCJcbiAgICAgICAgICApLFxuICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICgoXCJmb3JtXCIgPT09IHRhZ05hbWUgJiYgXCJhY3Rpb25cIiA9PT0gbmFtZSkgfHxcbiAgICAgICAgICAoXCJpbnB1dFwiID09PSB0YWdOYW1lICYmIFwiZm9ybUFjdGlvblwiID09PSBuYW1lKSB8fFxuICAgICAgICAgIChcImJ1dHRvblwiID09PSB0YWdOYW1lICYmIFwiZm9ybUFjdGlvblwiID09PSBuYW1lKSlcbiAgICAgIClcbiAgICAgICAgcmV0dXJuICEwO1xuICAgICAgaWYgKG51bGwgIT0gZXZlbnRSZWdpc3RyeSkge1xuICAgICAgICB0YWdOYW1lID0gZXZlbnRSZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuICAgICAgICBpZiAoZXZlbnRSZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzLmhhc093blByb3BlcnR5KG5hbWUpKVxuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgZXZlbnRSZWdpc3RyeSA9IHRhZ05hbWUuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpXG4gICAgICAgICAgPyB0YWdOYW1lW2xvd2VyQ2FzZWROYW1lXVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgaWYgKG51bGwgIT0gZXZlbnRSZWdpc3RyeSlcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJJbnZhbGlkIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/XCIsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIGV2ZW50UmVnaXN0cnlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChFVkVOVF9OQU1FX1JFR0VYLnRlc3QobmFtZSkpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiVW5rbm93biBldmVudCBoYW5kbGVyIHByb3BlcnR5IGAlc2AuIEl0IHdpbGwgYmUgaWdub3JlZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIElOVkFMSURfRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgZXZlbnQgaGFuZGxlciBwcm9wZXJ0eSBgJXNgLiBSZWFjdCBldmVudHMgdXNlIHRoZSBjYW1lbENhc2UgbmFtaW5nIGNvbnZlbnRpb24sIGZvciBleGFtcGxlIGBvbkNsaWNrYC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgaWYgKHJBUklBLnRlc3QobmFtZSkgfHwgckFSSUFDYW1lbC50ZXN0KG5hbWUpKSByZXR1cm4gITA7XG4gICAgICBpZiAoXCJpbm5lcmh0bWxcIiA9PT0gbG93ZXJDYXNlZE5hbWUpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgbG9va3VwIGRvY3VtZW50YXRpb24gb24gYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMClcbiAgICAgICAgKTtcbiAgICAgIGlmIChcImFyaWFcIiA9PT0gbG93ZXJDYXNlZE5hbWUpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiVGhlIGBhcmlhYCBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgaW4gUmVhY3QuIFBhc3MgaW5kaXZpZHVhbCBgYXJpYS1gIGF0dHJpYnV0ZXMgaW5zdGVhZC5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMClcbiAgICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgXCJpc1wiID09PSBsb3dlckNhc2VkTmFtZSAmJlxuICAgICAgICBudWxsICE9PSB2YWx1ZSAmJlxuICAgICAgICB2b2lkIDAgIT09IHZhbHVlICYmXG4gICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiB2YWx1ZVxuICAgICAgKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlJlY2VpdmVkIGEgYCVzYCBmb3IgYSBzdHJpbmcgYXR0cmlidXRlIGBpc2AuIElmIHRoaXMgaXMgZXhwZWN0ZWQsIGNhc3QgdGhlIHZhbHVlIHRvIGEgc3RyaW5nLlwiLFxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlXG4gICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgaWYgKFwibnVtYmVyXCIgPT09IHR5cGVvZiB2YWx1ZSAmJiBpc05hTih2YWx1ZSkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiUmVjZWl2ZWQgTmFOIGZvciB0aGUgYCVzYCBhdHRyaWJ1dGUuIElmIHRoaXMgaXMgZXhwZWN0ZWQsIGNhc3QgdGhlIHZhbHVlIHRvIGEgc3RyaW5nLlwiLFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICksXG4gICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMClcbiAgICAgICAgKTtcbiAgICAgIGlmIChwb3NzaWJsZVN0YW5kYXJkTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKGxvd2VyQ2FzZWROYW1lID0gcG9zc2libGVTdGFuZGFyZE5hbWVzW2xvd2VyQ2FzZWROYW1lXSksXG4gICAgICAgICAgbG93ZXJDYXNlZE5hbWUgIT09IG5hbWUpXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJJbnZhbGlkIERPTSBwcm9wZXJ0eSBgJXNgLiBEaWQgeW91IG1lYW4gYCVzYD9cIixcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbG93ZXJDYXNlZE5hbWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG5hbWUgIT09IGxvd2VyQ2FzZWROYW1lKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlJlYWN0IGRvZXMgbm90IHJlY29nbml6ZSB0aGUgYCVzYCBwcm9wIG9uIGEgRE9NIGVsZW1lbnQuIElmIHlvdSBpbnRlbnRpb25hbGx5IHdhbnQgaXQgdG8gYXBwZWFyIGluIHRoZSBET00gYXMgYSBjdXN0b20gYXR0cmlidXRlLCBzcGVsbCBpdCBhcyBsb3dlcmNhc2UgYCVzYCBpbnN0ZWFkLiBJZiB5b3UgYWNjaWRlbnRhbGx5IHBhc3NlZCBpdCBmcm9tIGEgcGFyZW50IGNvbXBvbmVudCwgcmVtb3ZlIGl0IGZyb20gdGhlIERPTSBlbGVtZW50LlwiLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGxvd2VyQ2FzZWROYW1lXG4gICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgIGNhc2UgXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpcbiAgICAgICAgY2FzZSBcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiOlxuICAgICAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0Q2hlY2tlZFwiOlxuICAgICAgICBjYXNlIFwiaW5uZXJIVE1MXCI6XG4gICAgICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgICAgICByZXR1cm4gITA7XG4gICAgICAgIGNhc2UgXCJpbm5lclRleHRcIjpcbiAgICAgICAgY2FzZSBcInRleHRDb250ZW50XCI6XG4gICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJhdXRvRm9jdXNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2VkXCI6XG4gICAgICAgICAgICBjYXNlIFwibXVsdGlwbGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJtdXRlZFwiOlxuICAgICAgICAgICAgY2FzZSBcInNlbGVjdGVkXCI6XG4gICAgICAgICAgICBjYXNlIFwiY29udGVudEVkaXRhYmxlXCI6XG4gICAgICAgICAgICBjYXNlIFwic3BlbGxDaGVja1wiOlxuICAgICAgICAgICAgY2FzZSBcImRyYWdnYWJsZVwiOlxuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICBjYXNlIFwiYXV0b1JldmVyc2VcIjpcbiAgICAgICAgICAgIGNhc2UgXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCI6XG4gICAgICAgICAgICBjYXNlIFwiZm9jdXNhYmxlXCI6XG4gICAgICAgICAgICBjYXNlIFwicHJlc2VydmVBbHBoYVwiOlxuICAgICAgICAgICAgY2FzZSBcImFsbG93RnVsbFNjcmVlblwiOlxuICAgICAgICAgICAgY2FzZSBcImFzeW5jXCI6XG4gICAgICAgICAgICBjYXNlIFwiYXV0b1BsYXlcIjpcbiAgICAgICAgICAgIGNhc2UgXCJjb250cm9sc1wiOlxuICAgICAgICAgICAgY2FzZSBcImRlZmF1bHRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJkZWZlclwiOlxuICAgICAgICAgICAgY2FzZSBcImRpc2FibGVkXCI6XG4gICAgICAgICAgICBjYXNlIFwiZGlzYWJsZVBpY3R1cmVJblBpY3R1cmVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIjpcbiAgICAgICAgICAgIGNhc2UgXCJmb3JtTm9WYWxpZGF0ZVwiOlxuICAgICAgICAgICAgY2FzZSBcImhpZGRlblwiOlxuICAgICAgICAgICAgY2FzZSBcImxvb3BcIjpcbiAgICAgICAgICAgIGNhc2UgXCJub01vZHVsZVwiOlxuICAgICAgICAgICAgY2FzZSBcIm5vVmFsaWRhdGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJvcGVuXCI6XG4gICAgICAgICAgICBjYXNlIFwicGxheXNJbmxpbmVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJyZWFkT25seVwiOlxuICAgICAgICAgICAgY2FzZSBcInJlcXVpcmVkXCI6XG4gICAgICAgICAgICBjYXNlIFwicmV2ZXJzZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJzY29wZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJzZWFtbGVzc1wiOlxuICAgICAgICAgICAgY2FzZSBcIml0ZW1TY29wZVwiOlxuICAgICAgICAgICAgY2FzZSBcImNhcHR1cmVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJkb3dubG9hZFwiOlxuICAgICAgICAgICAgY2FzZSBcImluZXJ0XCI6XG4gICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIDUpO1xuICAgICAgICAgICAgICBpZiAoXCJkYXRhLVwiID09PSBsb3dlckNhc2VkTmFtZSB8fCBcImFyaWEtXCIgPT09IGxvd2VyQ2FzZWROYW1lKVxuICAgICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBgJXNgIGZvciBhIG5vbi1ib29sZWFuIGF0dHJpYnV0ZSBgJXNgLlxcblxcbklmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJXM9XCIlc1wiIG9yICVzPXt2YWx1ZS50b1N0cmluZygpfS4nLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdSZWNlaXZlZCBgJXNgIGZvciBhIG5vbi1ib29sZWFuIGF0dHJpYnV0ZSBgJXNgLlxcblxcbklmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJXM9XCIlc1wiIG9yICVzPXt2YWx1ZS50b1N0cmluZygpfS5cXG5cXG5JZiB5b3UgdXNlZCB0byBjb25kaXRpb25hbGx5IG9taXQgaXQgd2l0aCAlcz17Y29uZGl0aW9uICYmIHZhbHVlfSwgcGFzcyAlcz17Y29uZGl0aW9uID8gdmFsdWUgOiB1bmRlZmluZWR9IGluc3RlYWQuJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZXR1cm4gKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMCk7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgIHJldHVybiAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKSwgITE7XG4gICAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgICBpZiAoXCJmYWxzZVwiID09PSB2YWx1ZSB8fCBcInRydWVcIiA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgICBjYXNlIFwiY2hlY2tlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwic2VsZWN0ZWRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJtdXRlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwiYWxsb3dGdWxsU2NyZWVuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJhc3luY1wiOlxuICAgICAgICAgICAgICBjYXNlIFwiYXV0b1BsYXlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImNvbnRyb2xzXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkZWZlclwiOlxuICAgICAgICAgICAgICBjYXNlIFwiZGlzYWJsZWRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImZvcm1Ob1ZhbGlkYXRlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJoaWRkZW5cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImxvb3BcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIm5vTW9kdWxlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJub1ZhbGlkYXRlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJvcGVuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJwbGF5c0lubGluZVwiOlxuICAgICAgICAgICAgICBjYXNlIFwicmVhZE9ubHlcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInJlcXVpcmVkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJyZXZlcnNlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwic2NvcGVkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJzZWFtbGVzc1wiOlxuICAgICAgICAgICAgICBjYXNlIFwiaXRlbVNjb3BlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJpbmVydFwiOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgdGhlIHN0cmluZyBgJXNgIGZvciB0aGUgYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC4gJXMgRGlkIHlvdSBtZWFuICVzPXslc30/XCIsXG4gICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICBcImZhbHNlXCIgPT09IHZhbHVlXG4gICAgICAgICAgICAgICAgPyBcIlRoZSBicm93c2VyIHdpbGwgaW50ZXJwcmV0IGl0IGFzIGEgdHJ1dGh5IHZhbHVlLlwiXG4gICAgICAgICAgICAgICAgOiAnQWx0aG91Z2ggdGhpcyB3b3JrcywgaXQgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCBpZiB5b3UgcGFzcyB0aGUgc3RyaW5nIFwiZmFsc2VcIi4nLFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMDtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gITA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdhcm5Vbmtub3duUHJvcGVydGllcyh0eXBlLCBwcm9wcywgZXZlbnRSZWdpc3RyeSkge1xuICAgICAgdmFyIHVua25vd25Qcm9wcyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgICBmb3IgKGtleSBpbiBwcm9wcylcbiAgICAgICAgdmFsaWRhdGVQcm9wZXJ0eSh0eXBlLCBrZXksIHByb3BzW2tleV0sIGV2ZW50UmVnaXN0cnkpIHx8XG4gICAgICAgICAgdW5rbm93blByb3BzLnB1c2goa2V5KTtcbiAgICAgIHByb3BzID0gdW5rbm93blByb3BzXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICByZXR1cm4gXCJgXCIgKyBwcm9wICsgXCJgXCI7XG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKFwiLCBcIik7XG4gICAgICAxID09PSB1bmtub3duUHJvcHMubGVuZ3RoXG4gICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3IgcHJvcCAlcyBvbiA8JXM+IHRhZy4gRWl0aGVyIHJlbW92ZSBpdCBmcm9tIHRoZSBlbGVtZW50LCBvciBwYXNzIGEgc3RyaW5nIG9yIG51bWJlciB2YWx1ZSB0byBrZWVwIGl0IGluIHRoZSBET00uIEZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9hdHRyaWJ1dGUtYmVoYXZpb3IgXCIsXG4gICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICApXG4gICAgICAgIDogMSA8IHVua25vd25Qcm9wcy5sZW5ndGggJiZcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJJbnZhbGlkIHZhbHVlcyBmb3IgcHJvcHMgJXMgb24gPCVzPiB0YWcuIEVpdGhlciByZW1vdmUgdGhlbSBmcm9tIHRoZSBlbGVtZW50LCBvciBwYXNzIGEgc3RyaW5nIG9yIG51bWJlciB2YWx1ZSB0byBrZWVwIHRoZW0gaW4gdGhlIERPTS4gRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL2F0dHJpYnV0ZS1iZWhhdmlvciBcIixcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNhbWVsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGh5cGhlblBhdHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZVRleHRGb3JCcm93c2VyKHRleHQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgXCJib29sZWFuXCIgPT09IHR5cGVvZiB0ZXh0IHx8XG4gICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiB0ZXh0IHx8XG4gICAgICAgIFwiYmlnaW50XCIgPT09IHR5cGVvZiB0ZXh0XG4gICAgICApXG4gICAgICAgIHJldHVybiBcIlwiICsgdGV4dDtcbiAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHRleHQpO1xuICAgICAgdGV4dCA9IFwiXCIgKyB0ZXh0O1xuICAgICAgdmFyIG1hdGNoID0gbWF0Y2hIdG1sUmVnRXhwLmV4ZWModGV4dCk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdmFyIGh0bWwgPSBcIlwiLFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIGxhc3RJbmRleCA9IDA7XG4gICAgICAgIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCB0ZXh0Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIHN3aXRjaCAodGV4dC5jaGFyQ29kZUF0KGluZGV4KSkge1xuICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgbWF0Y2ggPSBcIiZxdW90O1wiO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgICAgIG1hdGNoID0gXCImYW1wO1wiO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgIG1hdGNoID0gXCImI3gyNztcIjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDYwOlxuICAgICAgICAgICAgICBtYXRjaCA9IFwiJmx0O1wiO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjI6XG4gICAgICAgICAgICAgIG1hdGNoID0gXCImZ3Q7XCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhc3RJbmRleCAhPT0gaW5kZXggJiYgKGh0bWwgKz0gdGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSk7XG4gICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgIGh0bWwgKz0gbWF0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dCA9IGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgdGV4dC5zbGljZShsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2FuaXRpemVVUkwodXJsKSB7XG4gICAgICByZXR1cm4gaXNKYXZhU2NyaXB0UHJvdG9jb2wudGVzdChcIlwiICsgdXJsKVxuICAgICAgICA/IFwiamF2YXNjcmlwdDp0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0IGhhcyBibG9ja2VkIGEgamF2YXNjcmlwdDogVVJMIGFzIGEgc2VjdXJpdHkgcHJlY2F1dGlvbi4nKVwiXG4gICAgICAgIDogdXJsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVFbnRpcmVJbmxpbmVTY3JpcHRDb250ZW50KHNjcmlwdFRleHQpIHtcbiAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHNjcmlwdFRleHQpO1xuICAgICAgcmV0dXJuIChcIlwiICsgc2NyaXB0VGV4dCkucmVwbGFjZShzY3JpcHRSZWdleCwgc2NyaXB0UmVwbGFjZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXN1bWFibGVTdGF0ZShcbiAgICAgIGlkZW50aWZpZXJQcmVmaXgsXG4gICAgICBleHRlcm5hbFJ1bnRpbWVDb25maWcsXG4gICAgICBib290c3RyYXBTY3JpcHRDb250ZW50LFxuICAgICAgYm9vdHN0cmFwU2NyaXB0cyxcbiAgICAgIGJvb3RzdHJhcE1vZHVsZXNcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkUHJlZml4OiB2b2lkIDAgPT09IGlkZW50aWZpZXJQcmVmaXggPyBcIlwiIDogaWRlbnRpZmllclByZWZpeCxcbiAgICAgICAgbmV4dEZvcm1JRDogMCxcbiAgICAgICAgc3RyZWFtaW5nRm9ybWF0OiAwLFxuICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50OiBib290c3RyYXBTY3JpcHRDb250ZW50LFxuICAgICAgICBib290c3RyYXBTY3JpcHRzOiBib290c3RyYXBTY3JpcHRzLFxuICAgICAgICBib290c3RyYXBNb2R1bGVzOiBib290c3RyYXBNb2R1bGVzLFxuICAgICAgICBpbnN0cnVjdGlvbnM6IE5vdGhpbmdTZW50LFxuICAgICAgICBoYXNCb2R5OiAhMSxcbiAgICAgICAgaGFzSHRtbDogITEsXG4gICAgICAgIHVua25vd25SZXNvdXJjZXM6IHt9LFxuICAgICAgICBkbnNSZXNvdXJjZXM6IHt9LFxuICAgICAgICBjb25uZWN0UmVzb3VyY2VzOiB7IGRlZmF1bHQ6IHt9LCBhbm9ueW1vdXM6IHt9LCBjcmVkZW50aWFsczoge30gfSxcbiAgICAgICAgaW1hZ2VSZXNvdXJjZXM6IHt9LFxuICAgICAgICBzdHlsZVJlc291cmNlczoge30sXG4gICAgICAgIHNjcmlwdFJlc291cmNlczoge30sXG4gICAgICAgIG1vZHVsZVVua25vd25SZXNvdXJjZXM6IHt9LFxuICAgICAgICBtb2R1bGVTY3JpcHRSZXNvdXJjZXM6IHt9XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVGb3JtYXRDb250ZXh0KGluc2VydGlvbk1vZGUsIHNlbGVjdGVkVmFsdWUsIHRhZ1Njb3BlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnNlcnRpb25Nb2RlOiBpbnNlcnRpb25Nb2RlLFxuICAgICAgICBzZWxlY3RlZFZhbHVlOiBzZWxlY3RlZFZhbHVlLFxuICAgICAgICB0YWdTY29wZTogdGFnU2NvcGVcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENoaWxkRm9ybWF0Q29udGV4dChwYXJlbnRDb250ZXh0LCB0eXBlLCBwcm9wcykge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJub3NjcmlwdFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KFxuICAgICAgICAgICAgSFRNTF9NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGUgfCAxXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KFxuICAgICAgICAgICAgSFRNTF9NT0RFLFxuICAgICAgICAgICAgbnVsbCAhPSBwcm9wcy52YWx1ZSA/IHByb3BzLnZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgcGFyZW50Q29udGV4dC50YWdTY29wZVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgXCJzdmdcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChTVkdfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSk7XG4gICAgICAgIGNhc2UgXCJwaWN0dXJlXCI6XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoXG4gICAgICAgICAgICBIVE1MX01PREUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgcGFyZW50Q29udGV4dC50YWdTY29wZSB8IDJcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwibWF0aFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KE1BVEhNTF9NT0RFLCBudWxsLCBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlKTtcbiAgICAgICAgY2FzZSBcImZvcmVpZ25PYmplY3RcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIG51bGwsIHBhcmVudENvbnRleHQudGFnU2NvcGUpO1xuICAgICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfVEFCTEVfTU9ERSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInRoZWFkXCI6XG4gICAgICAgIGNhc2UgXCJ0Ym9keVwiOlxuICAgICAgICBjYXNlIFwidGZvb3RcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfVEFCTEVfQk9EWV9NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGVcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwiY29sZ3JvdXBcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfQ09MR1JPVVBfTU9ERSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInRyXCI6XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoXG4gICAgICAgICAgICBIVE1MX1RBQkxFX1JPV19NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGVcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA+PSBIVE1MX1RBQkxFX01PREVcbiAgICAgICAgPyBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSlcbiAgICAgICAgOiBwYXJlbnRDb250ZXh0Lmluc2VydGlvbk1vZGUgPT09IFJPT1RfSFRNTF9NT0RFXG4gICAgICAgICAgPyBcImh0bWxcIiA9PT0gdHlwZVxuICAgICAgICAgICAgPyBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfSFRNTF9NT0RFLCBudWxsLCBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlKVxuICAgICAgICAgICAgOiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSlcbiAgICAgICAgICA6IHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gSFRNTF9IVE1MX01PREVcbiAgICAgICAgICAgID8gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIG51bGwsIHBhcmVudENvbnRleHQudGFnU2NvcGUpXG4gICAgICAgICAgICA6IHBhcmVudENvbnRleHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTdHlsZUF0dHJpYnV0ZSh0YXJnZXQsIHN0eWxlKSB7XG4gICAgICBpZiAoXCJvYmplY3RcIiAhPT0gdHlwZW9mIHN0eWxlKVxuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIlRoZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcywgbm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2luZyArICdlbSd9fSB3aGVuIHVzaW5nIEpTWC5cIlxuICAgICAgICApO1xuICAgICAgdmFyIGlzRmlyc3QgPSAhMCxcbiAgICAgICAgc3R5bGVOYW1lO1xuICAgICAgZm9yIChzdHlsZU5hbWUgaW4gc3R5bGUpXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHN0eWxlLCBzdHlsZU5hbWUpKSB7XG4gICAgICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZVtzdHlsZU5hbWVdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG51bGwgIT0gc3R5bGVWYWx1ZSAmJlxuICAgICAgICAgICAgXCJib29sZWFuXCIgIT09IHR5cGVvZiBzdHlsZVZhbHVlICYmXG4gICAgICAgICAgICBcIlwiICE9PSBzdHlsZVZhbHVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoMCA9PT0gc3R5bGVOYW1lLmluZGV4T2YoXCItLVwiKSkge1xuICAgICAgICAgICAgICB2YXIgbmFtZUNodW5rID0gZXNjYXBlVGV4dEZvckJyb3dzZXIoc3R5bGVOYW1lKTtcbiAgICAgICAgICAgICAgY2hlY2tDU1NQcm9wZXJ0eVN0cmluZ0NvZXJjaW9uKHN0eWxlVmFsdWUsIHN0eWxlTmFtZSk7XG4gICAgICAgICAgICAgIHN0eWxlVmFsdWUgPSBlc2NhcGVUZXh0Rm9yQnJvd3NlcigoXCJcIiArIHN0eWxlVmFsdWUpLnRyaW0oKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuYW1lQ2h1bmsgPSBzdHlsZU5hbWU7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIGlmICgtMSA8IG5hbWVDaHVuay5pbmRleE9mKFwiLVwiKSkge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbmFtZUNodW5rO1xuICAgICAgICAgICAgICAgICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmXG4gICAgICAgICAgICAgICAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB8fFxuICAgICAgICAgICAgICAgICAgKCh3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gITApLFxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzP1wiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjYW1lbGl6ZShuYW1lLnJlcGxhY2UobXNQYXR0ZXJuJDEsIFwibXMtXCIpKVxuICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZUNodW5rKSlcbiAgICAgICAgICAgICAgICAobmFtZSA9IG5hbWVDaHVuayksXG4gICAgICAgICAgICAgICAgICAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJlxuICAgICAgICAgICAgICAgICAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSAhMCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJVbnN1cHBvcnRlZCB2ZW5kb3ItcHJlZml4ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz9cIixcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZUNodW5rO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSRqc2NvbXAkMCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSRqc2NvbXAkMCkgJiZcbiAgICAgICAgICAgICAgICAgIHdhcm5lZFN0eWxlVmFsdWVzW3ZhbHVlJGpzY29tcCQwXSkgfHxcbiAgICAgICAgICAgICAgICAgICgod2FybmVkU3R5bGVWYWx1ZXNbdmFsdWUkanNjb21wJDBdID0gITApLFxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ1N0eWxlIHByb3BlcnR5IHZhbHVlcyBzaG91bGRuXFwndCBjb250YWluIGEgc2VtaWNvbG9uLiBUcnkgXCIlczogJXNcIiBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlJGpzY29tcCQwLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLFxuICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgKGlzTmFOKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgPyB3YXJuZWRGb3JOYU5WYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZEZvck5hTlZhbHVlID0gITApLFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LlwiLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWVDaHVua1xuICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgOiBpc0Zpbml0ZSh2YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgd2FybmVkRm9ySW5maW5pdHlWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZEZvckluZmluaXR5VmFsdWUgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJgSW5maW5pdHlgIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS5cIixcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lQ2h1bmtcbiAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICBuYW1lQ2h1bmsgPSBzdHlsZU5hbWU7XG4gICAgICAgICAgICAgIHZhbHVlID0gc3R5bGVOYW1lQ2FjaGUuZ2V0KG5hbWVDaHVuayk7XG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IChuYW1lQ2h1bmsgPSB2YWx1ZSlcbiAgICAgICAgICAgICAgICA6ICgodmFsdWUgPSBlc2NhcGVUZXh0Rm9yQnJvd3NlcihcbiAgICAgICAgICAgICAgICAgICAgbmFtZUNodW5rXG4gICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodXBwZXJjYXNlUGF0dGVybiwgXCItJDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKG1zUGF0dGVybiwgXCItbXMtXCIpXG4gICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICAgIHN0eWxlTmFtZUNhY2hlLnNldChuYW1lQ2h1bmssIHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgIChuYW1lQ2h1bmsgPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2Ygc3R5bGVWYWx1ZVxuICAgICAgICAgICAgICAgID8gKHN0eWxlVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAwID09PSBzdHlsZVZhbHVlIHx8IHVuaXRsZXNzTnVtYmVycy5oYXMoc3R5bGVOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgID8gXCJcIiArIHN0eWxlVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICA6IHN0eWxlVmFsdWUgKyBcInB4XCIpXG4gICAgICAgICAgICAgICAgOiAoY2hlY2tDU1NQcm9wZXJ0eVN0cmluZ0NvZXJjaW9uKHN0eWxlVmFsdWUsIHN0eWxlTmFtZSksXG4gICAgICAgICAgICAgICAgICAoc3R5bGVWYWx1ZSA9IGVzY2FwZVRleHRGb3JCcm93c2VyKFxuICAgICAgICAgICAgICAgICAgICAoXCJcIiArIHN0eWxlVmFsdWUpLnRyaW0oKVxuICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNGaXJzdFxuICAgICAgICAgICAgICA/ICgoaXNGaXJzdCA9ICExKSxcbiAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgICAgIHN0eWxlQXR0cmlidXRlU3RhcnQsXG4gICAgICAgICAgICAgICAgICBuYW1lQ2h1bmssXG4gICAgICAgICAgICAgICAgICBzdHlsZUFzc2lnbixcbiAgICAgICAgICAgICAgICAgIHN0eWxlVmFsdWVcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IHRhcmdldC5wdXNoKHN0eWxlU2VwYXJhdG9yLCBuYW1lQ2h1bmssIHN0eWxlQXNzaWduLCBzdHlsZVZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGlzRmlyc3QgfHwgdGFyZ2V0LnB1c2goYXR0cmlidXRlRW5kKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaEJvb2xlYW5BdHRyaWJ1dGUodGFyZ2V0LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgdmFsdWUgJiZcbiAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgbmFtZSwgYXR0cmlidXRlRW1wdHlTdHJpbmcpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICBcImJvb2xlYW5cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSksXG4gICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hBZGRpdGlvbmFsRm9ybUZpZWxkKHZhbHVlLCBrZXkpIHtcbiAgICAgIHRoaXMucHVzaCgnPGlucHV0IHR5cGU9XCJoaWRkZW5cIicpO1xuICAgICAgdmFsaWRhdGVBZGRpdGlvbmFsRm9ybUZpZWxkKHZhbHVlKTtcbiAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGhpcywgXCJuYW1lXCIsIGtleSk7XG4gICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRoaXMsIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgdGhpcy5wdXNoKGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlQWRkaXRpb25hbEZvcm1GaWVsZCh2YWx1ZSkge1xuICAgICAgaWYgKFwic3RyaW5nXCIgIT09IHR5cGVvZiB2YWx1ZSlcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJGaWxlL0Jsb2IgZmllbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBwcm9ncmVzc2l2ZSBmb3Jtcy4gV2lsbCBmYWxsYmFjayB0byBjbGllbnQgaHlkcmF0aW9uLlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEN1c3RvbUZvcm1GaWVsZHMocmVzdW1hYmxlU3RhdGUsIGZvcm1BY3Rpb24pIHtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmb3JtQWN0aW9uLiQkRk9STV9BQ1RJT04pIHtcbiAgICAgICAgdmFyIGlkID0gcmVzdW1hYmxlU3RhdGUubmV4dEZvcm1JRCsrO1xuICAgICAgICByZXN1bWFibGVTdGF0ZSA9IHJlc3VtYWJsZVN0YXRlLmlkUHJlZml4ICsgaWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFyIGN1c3RvbUZpZWxkcyA9IGZvcm1BY3Rpb24uJCRGT1JNX0FDVElPTihyZXN1bWFibGVTdGF0ZSk7XG4gICAgICAgICAgaWYgKGN1c3RvbUZpZWxkcykge1xuICAgICAgICAgICAgdmFyIGZvcm1EYXRhID0gY3VzdG9tRmllbGRzLmRhdGE7XG4gICAgICAgICAgICBudWxsICE9IGZvcm1EYXRhICYmIGZvcm1EYXRhLmZvckVhY2godmFsaWRhdGVBZGRpdGlvbmFsRm9ybUZpZWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGN1c3RvbUZpZWxkcztcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB4ICYmXG4gICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB4LnRoZW5cbiAgICAgICAgICApXG4gICAgICAgICAgICB0aHJvdyB4O1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkZhaWxlZCB0byBzZXJpYWxpemUgYW4gYWN0aW9uIGZvciBwcm9ncmVzc2l2ZSBlbmhhbmNlbWVudDpcXG4lc1wiLFxuICAgICAgICAgICAgeFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoRm9ybUFjdGlvbkF0dHJpYnV0ZShcbiAgICAgIHRhcmdldCxcbiAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICBmb3JtQWN0aW9uLFxuICAgICAgZm9ybUVuY1R5cGUsXG4gICAgICBmb3JtTWV0aG9kLFxuICAgICAgZm9ybVRhcmdldCxcbiAgICAgIG5hbWVcbiAgICApIHtcbiAgICAgIHZhciBmb3JtRGF0YSA9IG51bGw7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgZm9ybUFjdGlvbikge1xuICAgICAgICBudWxsID09PSBuYW1lIHx8XG4gICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25OYW1lIHx8XG4gICAgICAgICAgKChkaWRXYXJuRm9ybUFjdGlvbk5hbWUgPSAhMCksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdDYW5ub3Qgc3BlY2lmeSBhIFwibmFtZVwiIHByb3AgZm9yIGEgYnV0dG9uIHRoYXQgc3BlY2lmaWVzIGEgZnVuY3Rpb24gYXMgYSBmb3JtQWN0aW9uLiBSZWFjdCBuZWVkcyBpdCB0byBlbmNvZGUgd2hpY2ggYWN0aW9uIHNob3VsZCBiZSBpbnZva2VkLiBJdCB3aWxsIGdldCBvdmVycmlkZGVuLidcbiAgICAgICAgICApKTtcbiAgICAgICAgKG51bGwgPT09IGZvcm1FbmNUeXBlICYmIG51bGwgPT09IGZvcm1NZXRob2QpIHx8XG4gICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25NZXRob2QgfHxcbiAgICAgICAgICAoKGRpZFdhcm5Gb3JtQWN0aW9uTWV0aG9kID0gITApLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgZm9ybUVuY1R5cGUgb3IgZm9ybU1ldGhvZCBmb3IgYSBidXR0b24gdGhhdCBzcGVjaWZpZXMgYSBmdW5jdGlvbiBhcyBhIGZvcm1BY3Rpb24uIFJlYWN0IHByb3ZpZGVzIHRob3NlIGF1dG9tYXRpY2FsbHkuIFRoZXkgd2lsbCBnZXQgb3ZlcnJpZGRlbi5cIlxuICAgICAgICAgICkpO1xuICAgICAgICBudWxsID09PSBmb3JtVGFyZ2V0IHx8XG4gICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25UYXJnZXQgfHxcbiAgICAgICAgICAoKGRpZFdhcm5Gb3JtQWN0aW9uVGFyZ2V0ID0gITApLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgZm9ybVRhcmdldCBmb3IgYSBidXR0b24gdGhhdCBzcGVjaWZpZXMgYSBmdW5jdGlvbiBhcyBhIGZvcm1BY3Rpb24uIFRoZSBmdW5jdGlvbiB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSB3aW5kb3cuXCJcbiAgICAgICAgICApKTtcbiAgICAgICAgdmFyIGN1c3RvbUZpZWxkcyA9IGdldEN1c3RvbUZvcm1GaWVsZHMocmVzdW1hYmxlU3RhdGUsIGZvcm1BY3Rpb24pO1xuICAgICAgICBudWxsICE9PSBjdXN0b21GaWVsZHNcbiAgICAgICAgICA/ICgobmFtZSA9IGN1c3RvbUZpZWxkcy5uYW1lKSxcbiAgICAgICAgICAgIChmb3JtQWN0aW9uID0gY3VzdG9tRmllbGRzLmFjdGlvbiB8fCBcIlwiKSxcbiAgICAgICAgICAgIChmb3JtRW5jVHlwZSA9IGN1c3RvbUZpZWxkcy5lbmNUeXBlKSxcbiAgICAgICAgICAgIChmb3JtTWV0aG9kID0gY3VzdG9tRmllbGRzLm1ldGhvZCksXG4gICAgICAgICAgICAoZm9ybVRhcmdldCA9IGN1c3RvbUZpZWxkcy50YXJnZXQpLFxuICAgICAgICAgICAgKGZvcm1EYXRhID0gY3VzdG9tRmllbGRzLmRhdGEpKVxuICAgICAgICAgIDogKHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIFwiZm9ybUFjdGlvblwiLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgIGFjdGlvbkphdmFTY3JpcHRVUkwsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIChmb3JtVGFyZ2V0ID0gZm9ybU1ldGhvZCA9IGZvcm1FbmNUeXBlID0gZm9ybUFjdGlvbiA9IG5hbWUgPSBudWxsKSxcbiAgICAgICAgICAgIGluamVjdEZvcm1SZXBsYXlpbmdSdW50aW1lKHJlc3VtYWJsZVN0YXRlLCByZW5kZXJTdGF0ZSkpO1xuICAgICAgfVxuICAgICAgbnVsbCAhPSBuYW1lICYmIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBcIm5hbWVcIiwgbmFtZSk7XG4gICAgICBudWxsICE9IGZvcm1BY3Rpb24gJiYgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIFwiZm9ybUFjdGlvblwiLCBmb3JtQWN0aW9uKTtcbiAgICAgIG51bGwgIT0gZm9ybUVuY1R5cGUgJiYgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIFwiZm9ybUVuY1R5cGVcIiwgZm9ybUVuY1R5cGUpO1xuICAgICAgbnVsbCAhPSBmb3JtTWV0aG9kICYmIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBcImZvcm1NZXRob2RcIiwgZm9ybU1ldGhvZCk7XG4gICAgICBudWxsICE9IGZvcm1UYXJnZXQgJiYgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIFwiZm9ybVRhcmdldFwiLCBmb3JtVGFyZ2V0KTtcbiAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIG5hbWUsIHZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgY2FzZSBcImNsYXNzTmFtZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcImNsYXNzXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInRhYkluZGV4XCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIFwidGFiaW5kZXhcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZGlyXCI6XG4gICAgICAgIGNhc2UgXCJyb2xlXCI6XG4gICAgICAgIGNhc2UgXCJ2aWV3Qm94XCI6XG4gICAgICAgIGNhc2UgXCJ3aWR0aFwiOlxuICAgICAgICBjYXNlIFwiaGVpZ2h0XCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgcHVzaFN0eWxlQXR0cmlidXRlKHRhcmdldCwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3JjXCI6XG4gICAgICAgIGNhc2UgXCJocmVmXCI6XG4gICAgICAgICAgaWYgKFwiXCIgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICBcInNyY1wiID09PSBuYW1lXG4gICAgICAgICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICdBbiBlbXB0eSBzdHJpbmcgKFwiXCIpIHdhcyBwYXNzZWQgdG8gdGhlICVzIGF0dHJpYnV0ZS4gVGhpcyBtYXkgY2F1c2UgdGhlIGJyb3dzZXIgdG8gZG93bmxvYWQgdGhlIHdob2xlIHBhZ2UgYWdhaW4gb3ZlciB0aGUgbmV0d29yay4gVG8gZml4IHRoaXMsIGVpdGhlciBkbyBub3QgcmVuZGVyIHRoZSBlbGVtZW50IGF0IGFsbCBvciBwYXNzIG51bGwgdG8gJXMgaW5zdGVhZCBvZiBhbiBlbXB0eSBzdHJpbmcuJyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnQW4gZW1wdHkgc3RyaW5nIChcIlwiKSB3YXMgcGFzc2VkIHRvIHRoZSAlcyBhdHRyaWJ1dGUuIFRvIGZpeCB0aGlzLCBlaXRoZXIgZG8gbm90IHJlbmRlciB0aGUgZWxlbWVudCBhdCBhbGwgb3IgcGFzcyBudWxsIHRvICVzIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nLicsXG4gICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJhY3Rpb25cIjpcbiAgICAgICAgY2FzZSBcImZvcm1BY3Rpb25cIjpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBudWxsID09IHZhbHVlIHx8XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICAgICAgXCJzeW1ib2xcIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgICBcImJvb2xlYW5cIiA9PT0gdHlwZW9mIHZhbHVlXG4gICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgbmFtZSk7XG4gICAgICAgICAgdmFsdWUgPSBzYW5pdGl6ZVVSTChcIlwiICsgdmFsdWUpO1xuICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgY2FzZSBcImRlZmF1bHRDaGVja2VkXCI6XG4gICAgICAgIGNhc2UgXCJpbm5lckhUTUxcIjpcbiAgICAgICAgY2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOlxuICAgICAgICBjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6XG4gICAgICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImF1dG9Gb2N1c1wiOlxuICAgICAgICBjYXNlIFwibXVsdGlwbGVcIjpcbiAgICAgICAgY2FzZSBcIm11dGVkXCI6XG4gICAgICAgICAgcHVzaEJvb2xlYW5BdHRyaWJ1dGUodGFyZ2V0LCBuYW1lLnRvTG93ZXJDYXNlKCksIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rSHJlZlwiOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgICAgIFwiYm9vbGVhblwiID09PSB0eXBlb2YgdmFsdWVcbiAgICAgICAgICApXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplVVJMKFwiXCIgKyB2YWx1ZSk7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICBcInhsaW5rOmhyZWZcIixcbiAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJjb250ZW50RWRpdGFibGVcIjpcbiAgICAgICAgY2FzZSBcInNwZWxsQ2hlY2tcIjpcbiAgICAgICAgY2FzZSBcImRyYWdnYWJsZVwiOlxuICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgY2FzZSBcImF1dG9SZXZlcnNlXCI6XG4gICAgICAgIGNhc2UgXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCI6XG4gICAgICAgIGNhc2UgXCJmb2N1c2FibGVcIjpcbiAgICAgICAgY2FzZSBcInByZXNlcnZlQWxwaGFcIjpcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiaW5lcnRcIjpcbiAgICAgICAgICBcIlwiICE9PSB2YWx1ZSB8fFxuICAgICAgICAgICAgZGlkV2FybkZvck5ld0Jvb2xlYW5Qcm9wc1dpdGhFbXB0eVZhbHVlW25hbWVdIHx8XG4gICAgICAgICAgICAoKGRpZFdhcm5Gb3JOZXdCb29sZWFuUHJvcHNXaXRoRW1wdHlWYWx1ZVtuYW1lXSA9ICEwKSxcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gZW1wdHkgc3RyaW5nIGZvciBhIGJvb2xlYW4gYXR0cmlidXRlIGAlc2AuIFRoaXMgd2lsbCB0cmVhdCB0aGUgYXR0cmlidXRlIGFzIGlmIGl0IHdlcmUgZmFsc2UuIEVpdGhlciBwYXNzIGBmYWxzZWAgdG8gc2lsZW5jZSB0aGlzIHdhcm5pbmcsIG9yIHBhc3MgYHRydWVgIGlmIHlvdSB1c2VkIGFuIGVtcHR5IHN0cmluZyBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIFJlYWN0IHRvIGluZGljYXRlIHRoaXMgYXR0cmlidXRlIGlzIHRydWUuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICkpO1xuICAgICAgICBjYXNlIFwiYWxsb3dGdWxsU2NyZWVuXCI6XG4gICAgICAgIGNhc2UgXCJhc3luY1wiOlxuICAgICAgICBjYXNlIFwiYXV0b1BsYXlcIjpcbiAgICAgICAgY2FzZSBcImNvbnRyb2xzXCI6XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICAgIGNhc2UgXCJkZWZlclwiOlxuICAgICAgICBjYXNlIFwiZGlzYWJsZWRcIjpcbiAgICAgICAgY2FzZSBcImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlXCI6XG4gICAgICAgIGNhc2UgXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIjpcbiAgICAgICAgY2FzZSBcImZvcm1Ob1ZhbGlkYXRlXCI6XG4gICAgICAgIGNhc2UgXCJoaWRkZW5cIjpcbiAgICAgICAgY2FzZSBcImxvb3BcIjpcbiAgICAgICAgY2FzZSBcIm5vTW9kdWxlXCI6XG4gICAgICAgIGNhc2UgXCJub1ZhbGlkYXRlXCI6XG4gICAgICAgIGNhc2UgXCJvcGVuXCI6XG4gICAgICAgIGNhc2UgXCJwbGF5c0lubGluZVwiOlxuICAgICAgICBjYXNlIFwicmVhZE9ubHlcIjpcbiAgICAgICAgY2FzZSBcInJlcXVpcmVkXCI6XG4gICAgICAgIGNhc2UgXCJyZXZlcnNlZFwiOlxuICAgICAgICBjYXNlIFwic2NvcGVkXCI6XG4gICAgICAgIGNhc2UgXCJzZWFtbGVzc1wiOlxuICAgICAgICBjYXNlIFwiaXRlbVNjb3BlXCI6XG4gICAgICAgICAgdmFsdWUgJiZcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgbmFtZSwgYXR0cmlidXRlRW1wdHlTdHJpbmcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiY2FwdHVyZVwiOlxuICAgICAgICBjYXNlIFwiZG93bmxvYWRcIjpcbiAgICAgICAgICAhMCA9PT0gdmFsdWVcbiAgICAgICAgICAgID8gdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBuYW1lLCBhdHRyaWJ1dGVFbXB0eVN0cmluZylcbiAgICAgICAgICAgIDogITEgIT09IHZhbHVlICYmXG4gICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiY29sc1wiOlxuICAgICAgICBjYXNlIFwicm93c1wiOlxuICAgICAgICBjYXNlIFwic2l6ZVwiOlxuICAgICAgICBjYXNlIFwic3BhblwiOlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgICAgICFpc05hTih2YWx1ZSkgJiZcbiAgICAgICAgICAgIDEgPD0gdmFsdWUgJiZcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJyb3dTcGFuXCI6XG4gICAgICAgIGNhc2UgXCJzdGFydFwiOlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgICAgIGlzTmFOKHZhbHVlKSB8fFxuICAgICAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSksXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rQWN0dWF0ZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhsaW5rOmFjdHVhdGVcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieGxpbmtBcmNyb2xlXCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIFwieGxpbms6YXJjcm9sZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bGlua1JvbGVcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bGluazpyb2xlXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rU2hvd1wiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhsaW5rOnNob3dcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieGxpbmtUaXRsZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhsaW5rOnRpdGxlXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rVHlwZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhsaW5rOnR5cGVcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieG1sQmFzZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhtbDpiYXNlXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhtbExhbmdcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bWw6bGFuZ1wiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bWxTcGFjZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhtbDpzcGFjZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgISgyIDwgbmFtZS5sZW5ndGgpIHx8XG4gICAgICAgICAgICAoXCJvXCIgIT09IG5hbWVbMF0gJiYgXCJPXCIgIT09IG5hbWVbMF0pIHx8XG4gICAgICAgICAgICAoXCJuXCIgIT09IG5hbWVbMV0gJiYgXCJOXCIgIT09IG5hbWVbMV0pXG4gICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoKG5hbWUgPSBhbGlhc2VzLmdldChuYW1lKSB8fCBuYW1lKSwgaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgICAgICAgdmFyIHByZWZpeCA9IG5hbWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLCA1KTtcbiAgICAgICAgICAgICAgICAgIGlmIChcImRhdGEtXCIgIT09IHByZWZpeCAmJiBcImFyaWEtXCIgIT09IHByZWZpeCkgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSksXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKSB7XG4gICAgICBpZiAobnVsbCAhPSBpbm5lckhUTUwpIHtcbiAgICAgICAgaWYgKG51bGwgIT0gY2hpbGRyZW4pXG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkNhbiBvbmx5IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKFwib2JqZWN0XCIgIT09IHR5cGVvZiBpbm5lckhUTUwgfHwgIShcIl9faHRtbFwiIGluIGlubmVySFRNTCkpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcImBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBpbiB0aGUgZm9ybSBge19faHRtbDogLi4ufWAuIFBsZWFzZSB2aXNpdCBodHRwczovL3JlYWN0LmRldi9saW5rL2Rhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgaW5uZXJIVE1MID0gaW5uZXJIVE1MLl9faHRtbDtcbiAgICAgICAgbnVsbCAhPT0gaW5uZXJIVE1MICYmXG4gICAgICAgICAgdm9pZCAwICE9PSBpbm5lckhUTUwgJiZcbiAgICAgICAgICAoY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oaW5uZXJIVE1MKSwgdGFyZ2V0LnB1c2goXCJcIiArIGlubmVySFRNTCkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja1NlbGVjdFByb3AocHJvcHMsIHByb3BOYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBudWxsICE9IHZhbHVlICYmXG4gICAgICAgICgodmFsdWUgPSBpc0FycmF5SW1wbCh2YWx1ZSkpLFxuICAgICAgICBwcm9wcy5tdWx0aXBsZSAmJiAhdmFsdWVcbiAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmIGBtdWx0aXBsZWAgaXMgdHJ1ZS5cIixcbiAgICAgICAgICAgICAgcHJvcE5hbWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6ICFwcm9wcy5tdWx0aXBsZSAmJlxuICAgICAgICAgICAgdmFsdWUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyIHZhbHVlIGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuXCIsXG4gICAgICAgICAgICAgIHByb3BOYW1lXG4gICAgICAgICAgICApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmxhdHRlbk9wdGlvbkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgbnVsbCAhPSBjaGlsZCAmJlxuICAgICAgICAgICgoY29udGVudCArPSBjaGlsZCksXG4gICAgICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiB8fFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkIHx8XG4gICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgY2hpbGQgfHxcbiAgICAgICAgICAgIFwiYmlnaW50XCIgPT09IHR5cGVvZiBjaGlsZCB8fFxuICAgICAgICAgICAgKChkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJDYW5ub3QgaW5mZXIgdGhlIG9wdGlvbiB2YWx1ZSBvZiBjb21wbGV4IGNoaWxkcmVuLiBQYXNzIGEgYHZhbHVlYCBwcm9wIG9yIHVzZSBhIHBsYWluIHN0cmluZyBhcyBjaGlsZHJlbiB0byA8b3B0aW9uPi5cIlxuICAgICAgICAgICAgKSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5qZWN0Rm9ybVJlcGxheWluZ1J1bnRpbWUocmVzdW1hYmxlU3RhdGUsIHJlbmRlclN0YXRlKSB7XG4gICAgICAocmVzdW1hYmxlU3RhdGUuaW5zdHJ1Y3Rpb25zICYgMTYpID09PSBOb3RoaW5nU2VudCAmJlxuICAgICAgICAoKHJlc3VtYWJsZVN0YXRlLmluc3RydWN0aW9ucyB8PSAxNiksXG4gICAgICAgIHJlbmRlclN0YXRlLmJvb3RzdHJhcENodW5rcy51bnNoaWZ0KFxuICAgICAgICAgIHJlbmRlclN0YXRlLnN0YXJ0SW5saW5lU2NyaXB0LFxuICAgICAgICAgIGZvcm1SZXBsYXlpbmdSdW50aW1lU2NyaXB0LFxuICAgICAgICAgIFwiXFx4M2Mvc2NyaXB0PlwiXG4gICAgICAgICkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoTGlua0ltcGwodGFyZ2V0LCBwcm9wcykge1xuICAgICAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyhcImxpbmtcIikpO1xuICAgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcylcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSlcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcImxpbmsgaXMgYSBzZWxmLWNsb3NpbmcgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBgY2hpbGRyZW5gIG5vciB1c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlU3R5bGVUZXh0Q29udGVudChzdHlsZVRleHQpIHtcbiAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHN0eWxlVGV4dCk7XG4gICAgICByZXR1cm4gKFwiXCIgKyBzdHlsZVRleHQpLnJlcGxhY2Uoc3R5bGVSZWdleCwgc3R5bGVSZXBsYWNlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTZWxmQ2xvc2luZyh0YXJnZXQsIHByb3BzLCB0YWcpIHtcbiAgICAgIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSk7XG4gICAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIHRhZyArXG4gICAgICAgICAgICAgICAgICAgIFwiIGlzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hUaXRsZUltcGwodGFyZ2V0LCBwcm9wcykge1xuICAgICAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInRpdGxlXCIpKTtcbiAgICAgIHZhciBjaGlsZHJlbiA9IG51bGwsXG4gICAgICAgIGlubmVySFRNTCA9IG51bGwsXG4gICAgICAgIHByb3BLZXk7XG4gICAgICBmb3IgKHByb3BLZXkgaW4gcHJvcHMpXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUpXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gICAgICBwcm9wcyA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG4gICAgICAgID8gMiA+IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICAgID8gY2hpbGRyZW5bMF1cbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgOiBjaGlsZHJlbjtcbiAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHByb3BzICYmXG4gICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiBwcm9wcyAmJlxuICAgICAgICBudWxsICE9PSBwcm9wcyAmJlxuICAgICAgICB2b2lkIDAgIT09IHByb3BzICYmXG4gICAgICAgIHRhcmdldC5wdXNoKGVzY2FwZVRleHRGb3JCcm93c2VyKFwiXCIgKyBwcm9wcykpO1xuICAgICAgcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuICAgICAgdGFyZ2V0LnB1c2goZW5kQ2h1bmtGb3JUYWcoXCJ0aXRsZVwiKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaFNjcmlwdEltcGwodGFyZ2V0LCBwcm9wcykge1xuICAgICAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInNjcmlwdFwiKSk7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBudWxsLFxuICAgICAgICBpbm5lckhUTUwgPSBudWxsLFxuICAgICAgICBwcm9wS2V5O1xuICAgICAgZm9yIChwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgbnVsbCAhPSBjaGlsZHJlbiAmJlxuICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgY2hpbGRyZW4gJiZcbiAgICAgICAgKChwcm9wcyA9XG4gICAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIGNoaWxkcmVuXG4gICAgICAgICAgICA/IFwiYSBudW1iZXIgZm9yIGNoaWxkcmVuXCJcbiAgICAgICAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgICAgICAgICAgPyBcImFuIGFycmF5IGZvciBjaGlsZHJlblwiXG4gICAgICAgICAgICAgIDogXCJzb21ldGhpbmcgdW5leHBlY3RlZCBmb3IgY2hpbGRyZW5cIiksXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJBIHNjcmlwdCBlbGVtZW50IHdhcyByZW5kZXJlZCB3aXRoICVzLiBJZiBzY3JpcHQgZWxlbWVudCBoYXMgY2hpbGRyZW4gaXQgbXVzdCBiZSBhIHNpbmdsZSBzdHJpbmcuIENvbnNpZGVyIHVzaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIG9yIHBhc3NpbmcgYSBwbGFpbiBzdHJpbmcgYXMgY2hpbGRyZW4uXCIsXG4gICAgICAgICAgcHJvcHNcbiAgICAgICAgKSk7XG4gICAgICBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MLCBjaGlsZHJlbik7XG4gICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgY2hpbGRyZW4gJiZcbiAgICAgICAgdGFyZ2V0LnB1c2goZXNjYXBlRW50aXJlSW5saW5lU2NyaXB0Q29udGVudChjaGlsZHJlbikpO1xuICAgICAgdGFyZ2V0LnB1c2goZW5kQ2h1bmtGb3JUYWcoXCJzY3JpcHRcIikpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTdGFydEdlbmVyaWNFbGVtZW50KHRhcmdldCwgcHJvcHMsIHRhZykge1xuICAgICAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyh0YWcpKTtcbiAgICAgIHZhciBpbm5lckhUTUwgPSAodGFnID0gbnVsbCksXG4gICAgICAgIHByb3BLZXk7XG4gICAgICBmb3IgKHByb3BLZXkgaW4gcHJvcHMpXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUpXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgdGFnID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgdGFnKTtcbiAgICAgIHJldHVybiBcInN0cmluZ1wiID09PSB0eXBlb2YgdGFnXG4gICAgICAgID8gKHRhcmdldC5wdXNoKGVzY2FwZVRleHRGb3JCcm93c2VyKHRhZykpLCBudWxsKVxuICAgICAgICA6IHRhZztcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRDaHVua0ZvclRhZyh0YWcpIHtcbiAgICAgIHZhciB0YWdTdGFydENodW5rID0gdmFsaWRhdGVkVGFnQ2FjaGUuZ2V0KHRhZyk7XG4gICAgICBpZiAodm9pZCAwID09PSB0YWdTdGFydENodW5rKSB7XG4gICAgICAgIGlmICghVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSkgdGhyb3cgRXJyb3IoXCJJbnZhbGlkIHRhZzogXCIgKyB0YWcpO1xuICAgICAgICB0YWdTdGFydENodW5rID0gXCI8XCIgKyB0YWc7XG4gICAgICAgIHZhbGlkYXRlZFRhZ0NhY2hlLnNldCh0YWcsIHRhZ1N0YXJ0Q2h1bmspO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhZ1N0YXJ0Q2h1bms7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTdGFydEluc3RhbmNlKFxuICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgdHlwZSxcbiAgICAgIHByb3BzLFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICByZW5kZXJTdGF0ZSxcbiAgICAgIGhvaXN0YWJsZVN0YXRlLFxuICAgICAgZm9ybWF0Q29udGV4dCxcbiAgICAgIHRleHRFbWJlZGRlZCxcbiAgICAgIGlzRmFsbGJhY2tcbiAgICApIHtcbiAgICAgIHZhbGlkYXRlUHJvcGVydGllcyQyKHR5cGUsIHByb3BzKTtcbiAgICAgIChcImlucHV0XCIgIT09IHR5cGUgJiYgXCJ0ZXh0YXJlYVwiICE9PSB0eXBlICYmIFwic2VsZWN0XCIgIT09IHR5cGUpIHx8XG4gICAgICAgIG51bGwgPT0gcHJvcHMgfHxcbiAgICAgICAgbnVsbCAhPT0gcHJvcHMudmFsdWUgfHxcbiAgICAgICAgZGlkV2FyblZhbHVlTnVsbCB8fFxuICAgICAgICAoKGRpZFdhcm5WYWx1ZU51bGwgPSAhMCksXG4gICAgICAgIFwic2VsZWN0XCIgPT09IHR5cGUgJiYgcHJvcHMubXVsdGlwbGVcbiAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiYHZhbHVlYCBwcm9wIG9uIGAlc2Agc2hvdWxkIG5vdCBiZSBudWxsLiBDb25zaWRlciB1c2luZyBhbiBlbXB0eSBhcnJheSB3aGVuIGBtdWx0aXBsZWAgaXMgc2V0IHRvIGB0cnVlYCB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIGB1bmRlZmluZWRgIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJgdmFsdWVgIHByb3Agb24gYCVzYCBzaG91bGQgbm90IGJlIG51bGwuIENvbnNpZGVyIHVzaW5nIGFuIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIGB1bmRlZmluZWRgIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgKSk7XG4gICAgICBiOiBpZiAoLTEgPT09IHR5cGUuaW5kZXhPZihcIi1cIikpIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImFubm90YXRpb24teG1sXCI6XG4gICAgICAgICAgY2FzZSBcImNvbG9yLXByb2ZpbGVcIjpcbiAgICAgICAgICBjYXNlIFwiZm9udC1mYWNlXCI6XG4gICAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1zcmNcIjpcbiAgICAgICAgICBjYXNlIFwiZm9udC1mYWNlLXVyaVwiOlxuICAgICAgICAgIGNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6XG4gICAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6XG4gICAgICAgICAgY2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgICAgICAgYnJlYWsgYjtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITA7XG4gICAgICAgIH1cbiAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCB8fFxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuaXMgfHxcbiAgICAgICAgd2FyblVua25vd25Qcm9wZXJ0aWVzKHR5cGUsIHByb3BzLCBudWxsKTtcbiAgICAgICFwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgJiZcbiAgICAgICAgcHJvcHMuY29udGVudEVkaXRhYmxlICYmXG4gICAgICAgIG51bGwgIT0gcHJvcHMuY2hpbGRyZW4gJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkEgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgdGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzIHByb2JhYmx5IG5vdCBpbnRlbnRpb25hbC5cIlxuICAgICAgICApO1xuICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlICE9PSBTVkdfTU9ERSAmJlxuICAgICAgICBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUgIT09IE1BVEhNTF9NT0RFICYmXG4gICAgICAgIC0xID09PSB0eXBlLmluZGV4T2YoXCItXCIpICYmXG4gICAgICAgIHR5cGUudG9Mb3dlckNhc2UoKSAhPT0gdHlwZSAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiPCVzIC8+IGlzIHVzaW5nIGluY29ycmVjdCBjYXNpbmcuIFVzZSBQYXNjYWxDYXNlIGZvciBSZWFjdCBjb21wb25lbnRzLCBvciBsb3dlcmNhc2UgZm9yIEhUTUwgZWxlbWVudHMuXCIsXG4gICAgICAgICAgdHlwZVxuICAgICAgICApO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJkaXZcIjpcbiAgICAgICAgY2FzZSBcInNwYW5cIjpcbiAgICAgICAgY2FzZSBcInN2Z1wiOlxuICAgICAgICBjYXNlIFwicGF0aFwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJhXCIpKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBudWxsLFxuICAgICAgICAgICAgaW5uZXJIVE1MID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXk7XG4gICAgICAgICAgZm9yIChwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICAgICAgICAgICAgXCJcIiA9PT0gcHJvcFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJocmVmXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgOiBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gICAgICAgICAgcHVzaElubmVySFRNTCh0YXJnZXQkanNjb21wJDAsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVzY2FwZVRleHRGb3JCcm93c2VyKGNoaWxkcmVuKSk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gY2hpbGRyZW47XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMDtcbiAgICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgY2FzZSBcInBcIjpcbiAgICAgICAgY2FzZSBcImxpXCI6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICAgICAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKFwic2VsZWN0XCIsIHByb3BzKTtcbiAgICAgICAgICBjaGVja1NlbGVjdFByb3AocHJvcHMsIFwidmFsdWVcIik7XG4gICAgICAgICAgY2hlY2tTZWxlY3RQcm9wKHByb3BzLCBcImRlZmF1bHRWYWx1ZVwiKTtcbiAgICAgICAgICB2b2lkIDAgPT09IHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICB2b2lkIDAgPT09IHByb3BzLmRlZmF1bHRWYWx1ZSB8fFxuICAgICAgICAgICAgZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90IGJvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCBlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSA9ICEwKSk7XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInNlbGVjdFwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQwO1xuICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkMCBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQwKSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQwID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkMF07XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkMClcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDApIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDAsIGNoaWxkcmVuJGpzY29tcCQwKTtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW4kanNjb21wJDA7XG4gICAgICAgIGNhc2UgXCJvcHRpb25cIjpcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZSA9IGZvcm1hdENvbnRleHQuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwib3B0aW9uXCIpKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgdmFsdWUgPSBudWxsLFxuICAgICAgICAgICAgc2VsZWN0ZWQgPSBudWxsLFxuICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDE7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQxIGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDEpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDEgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQxXTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQxKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkMSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQxID0gcHJvcFZhbHVlJGpzY29tcCQxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHByb3BWYWx1ZSRqc2NvbXAkMTtcbiAgICAgICAgICAgICAgICAgICAgZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAoY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGluc3RlYWQgb2Ygc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LlwiXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAoZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24gPSAhMCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcFZhbHVlJGpzY29tcCQxO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDFcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG51bGwgIT0gc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKG51bGwgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIFwidmFsdWVcIik7XG4gICAgICAgICAgICAgIHZhciBzdHJpbmdWYWx1ZSA9IFwiXCIgKyB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICBudWxsID09PSBpbm5lckhUTUwkanNjb21wJDEgfHxcbiAgICAgICAgICAgICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbklubmVySFRNTCB8fFxuICAgICAgICAgICAgICAgICgoZGlkV2FybkludmFsaWRPcHRpb25Jbm5lckhUTUwgPSAhMCksXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiUGFzcyBhIGB2YWx1ZWAgcHJvcCBpZiB5b3Ugc2V0IGRhbmdlcm91c2x5SW5uZXJIVE1MIHNvIFJlYWN0IGtub3dzIHdoaWNoIHZhbHVlIHNob3VsZCBiZSBzZWxlY3RlZC5cIlxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIChzdHJpbmdWYWx1ZSA9IGZsYXR0ZW5PcHRpb25DaGlsZHJlbihjaGlsZHJlbiRqc2NvbXAkMSkpO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKHNlbGVjdGVkVmFsdWUpKVxuICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdGVkVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAoY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihzZWxlY3RlZFZhbHVlW2ldLCBcInZhbHVlXCIpLFxuICAgICAgICAgICAgICAgICAgXCJcIiArIHNlbGVjdGVkVmFsdWVbaV0gPT09IHN0cmluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goJyBzZWxlY3RlZD1cIlwiJyk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihzZWxlY3RlZFZhbHVlLCBcInNlbGVjdC52YWx1ZVwiKSxcbiAgICAgICAgICAgICAgICBcIlwiICsgc2VsZWN0ZWRWYWx1ZSA9PT0gc3RyaW5nVmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKCcgc2VsZWN0ZWQ9XCJcIicpO1xuICAgICAgICAgIH0gZWxzZSBzZWxlY3RlZCAmJiB0YXJnZXQkanNjb21wJDAucHVzaCgnIHNlbGVjdGVkPVwiXCInKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBwdXNoSW5uZXJIVE1MKHRhcmdldCRqc2NvbXAkMCwgaW5uZXJIVE1MJGpzY29tcCQxLCBjaGlsZHJlbiRqc2NvbXAkMSk7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkcmVuJGpzY29tcCQxO1xuICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKFwidGV4dGFyZWFcIiwgcHJvcHMpO1xuICAgICAgICAgIHZvaWQgMCA9PT0gcHJvcHMudmFsdWUgfHxcbiAgICAgICAgICAgIHZvaWQgMCA9PT0gcHJvcHMuZGVmYXVsdFZhbHVlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRGVmYXVsdFRleHRhcmVhVmFsdWUgfHxcbiAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlRleHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90IGJvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhIGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRUZXh0YXJlYVZhbHVlID0gITApKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwidGV4dGFyZWFcIikpO1xuICAgICAgICAgIHZhciB2YWx1ZSRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBudWxsLFxuICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDIgPSBudWxsLFxuICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMjtcbiAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDIgaW4gcHJvcHMpXG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkMikpIHtcbiAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSRqc2NvbXAkMiA9IHByb3BzW3Byb3BLZXkkanNjb21wJDJdO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDIpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQyKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDIgPSBwcm9wVmFsdWUkanNjb21wJDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gcHJvcFZhbHVlJGpzY29tcCQyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBcImBkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQyLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkMlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBudWxsID09PSB2YWx1ZSRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gZGVmYXVsdFZhbHVlICYmXG4gICAgICAgICAgICAodmFsdWUkanNjb21wJDAgPSBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIGlmIChudWxsICE9IGNoaWxkcmVuJGpzY29tcCQyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlVzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgY2hpbGRyZW4gb24gPHRleHRhcmVhPi5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChudWxsICE9IHZhbHVlJGpzY29tcCQwKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIklmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuJGpzY29tcCQyKSkge1xuICAgICAgICAgICAgICBpZiAoMSA8IGNoaWxkcmVuJGpzY29tcCQyLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIjx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC5cIik7XG4gICAgICAgICAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKGNoaWxkcmVuJGpzY29tcCQyWzBdKTtcbiAgICAgICAgICAgICAgdmFsdWUkanNjb21wJDAgPSBcIlwiICsgY2hpbGRyZW4kanNjb21wJDJbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihjaGlsZHJlbiRqc2NvbXAkMik7XG4gICAgICAgICAgICB2YWx1ZSRqc2NvbXAkMCA9IFwiXCIgKyBjaGlsZHJlbiRqc2NvbXAkMjtcbiAgICAgICAgICB9XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICBcIlxcblwiID09PSB2YWx1ZSRqc2NvbXAkMFswXSAmJlxuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2gobGVhZGluZ05ld2xpbmUpO1xuICAgICAgICAgIG51bGwgIT09IHZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAoY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSRqc2NvbXAkMCwgXCJ2YWx1ZVwiKSxcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVzY2FwZVRleHRGb3JCcm93c2VyKFwiXCIgKyB2YWx1ZSRqc2NvbXAkMCkpKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY2FzZSBcImlucHV0XCI6XG4gICAgICAgICAgY2hlY2tDb250cm9sbGVkVmFsdWVQcm9wcyhcImlucHV0XCIsIHByb3BzKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwiaW5wdXRcIikpO1xuICAgICAgICAgIHZhciBuYW1lID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24gPSBudWxsLFxuICAgICAgICAgICAgZm9ybUVuY1R5cGUgPSBudWxsLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCA9IG51bGwsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0ID0gbnVsbCxcbiAgICAgICAgICAgIHZhbHVlJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBjaGVja2VkID0gbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDM7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQzIGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDMpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDMgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQzXTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQzKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkMykge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dCBpcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwibmFtZVwiOlxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gcHJvcFZhbHVlJGpzY29tcCQzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtQWN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BY3Rpb24gPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcm1FbmNUeXBlXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FbmNUeXBlID0gcHJvcFZhbHVlJGpzY29tcCQzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1NZXRob2QgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcm1UYXJnZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybVRhcmdldCA9IHByb3BWYWx1ZSRqc2NvbXAkMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENoZWNrZWQgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRlZmF1bHRWYWx1ZVwiOlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUkanNjb21wJDAgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoZWNrZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IHByb3BWYWx1ZSRqc2NvbXAkMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCA9PT0gZm9ybUFjdGlvbiB8fFxuICAgICAgICAgICAgXCJpbWFnZVwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBcInN1Ym1pdFwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvblR5cGUgfHxcbiAgICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25UeXBlID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ0FuIGlucHV0IGNhbiBvbmx5IHNwZWNpZnkgYSBmb3JtQWN0aW9uIGFsb25nIHdpdGggdHlwZT1cInN1Ym1pdFwiIG9yIHR5cGU9XCJpbWFnZVwiLidcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIHZhciBmb3JtRGF0YSA9IHB1c2hGb3JtQWN0aW9uQXR0cmlidXRlKFxuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24sXG4gICAgICAgICAgICBmb3JtRW5jVHlwZSxcbiAgICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0LFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgbnVsbCA9PT0gY2hlY2tlZCB8fFxuICAgICAgICAgICAgbnVsbCA9PT0gZGVmYXVsdENoZWNrZWQgfHxcbiAgICAgICAgICAgIGRpZFdhcm5EZWZhdWx0Q2hlY2tlZCB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuIElucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgY2hlY2tlZCBwcm9wLCBvciB0aGUgZGVmYXVsdENoZWNrZWQgcHJvcCwgYnV0IG5vdCBib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCBlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCIsXG4gICAgICAgICAgICAgIFwiQSBjb21wb25lbnRcIixcbiAgICAgICAgICAgICAgcHJvcHMudHlwZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIChkaWRXYXJuRGVmYXVsdENoZWNrZWQgPSAhMCkpO1xuICAgICAgICAgIG51bGwgPT09IHZhbHVlJGpzY29tcCQxIHx8XG4gICAgICAgICAgICBudWxsID09PSBkZWZhdWx0VmFsdWUkanNjb21wJDAgfHxcbiAgICAgICAgICAgIGRpZFdhcm5EZWZhdWx0SW5wdXRWYWx1ZSB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggdmFsdWUgYW5kIGRlZmF1bHRWYWx1ZSBwcm9wcy4gSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiBodHRwczovL3JlYWN0LmRldi9saW5rL2NvbnRyb2xsZWQtY29tcG9uZW50c1wiLFxuICAgICAgICAgICAgICBcIkEgY29tcG9uZW50XCIsXG4gICAgICAgICAgICAgIHByb3BzLnR5cGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRJbnB1dFZhbHVlID0gITApKTtcbiAgICAgICAgICBudWxsICE9PSBjaGVja2VkXG4gICAgICAgICAgICA/IHB1c2hCb29sZWFuQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJjaGVja2VkXCIsIGNoZWNrZWQpXG4gICAgICAgICAgICA6IG51bGwgIT09IGRlZmF1bHRDaGVja2VkICYmXG4gICAgICAgICAgICAgIHB1c2hCb29sZWFuQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJjaGVja2VkXCIsIGRlZmF1bHRDaGVja2VkKTtcbiAgICAgICAgICBudWxsICE9PSB2YWx1ZSRqc2NvbXAkMVxuICAgICAgICAgICAgPyBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJ2YWx1ZVwiLCB2YWx1ZSRqc2NvbXAkMSlcbiAgICAgICAgICAgIDogbnVsbCAhPT0gZGVmYXVsdFZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcInZhbHVlXCIsIGRlZmF1bHRWYWx1ZSRqc2NvbXAkMCk7XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1EYXRhICYmXG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKHB1c2hBZGRpdGlvbmFsRm9ybUZpZWxkLCB0YXJnZXQkanNjb21wJDApO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlIFwiYnV0dG9uXCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcImJ1dHRvblwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQzID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMiA9IG51bGwsXG4gICAgICAgICAgICBuYW1lJGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24kanNjb21wJDAgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDAgPSBudWxsLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0JGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDQ7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQ0IGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDQpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDQgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQ0XTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQ0KVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkNCkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQzID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDIgPSBwcm9wVmFsdWUkanNjb21wJDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm5hbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgbmFtZSRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybUFjdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtQWN0aW9uJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtRW5jVHlwZVwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtRW5jVHlwZSRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybU1ldGhvZFwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtVGFyZ2V0XCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDAgPSBwcm9wVmFsdWUkanNjb21wJDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCA9PT0gZm9ybUFjdGlvbiRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgbnVsbCA9PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBcInN1Ym1pdFwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvblR5cGUgfHxcbiAgICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25UeXBlID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ0EgYnV0dG9uIGNhbiBvbmx5IHNwZWNpZnkgYSBmb3JtQWN0aW9uIGFsb25nIHdpdGggdHlwZT1cInN1Ym1pdFwiIG9yIG5vIHR5cGUuJ1xuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgdmFyIGZvcm1EYXRhJGpzY29tcCQwID0gcHVzaEZvcm1BY3Rpb25BdHRyaWJ1dGUoXG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMCxcbiAgICAgICAgICAgIGZvcm1FbmNUeXBlJGpzY29tcCQwLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICBuYW1lJGpzY29tcCQwXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1EYXRhJGpzY29tcCQwICYmXG4gICAgICAgICAgICBmb3JtRGF0YSRqc2NvbXAkMC5mb3JFYWNoKHB1c2hBZGRpdGlvbmFsRm9ybUZpZWxkLCB0YXJnZXQkanNjb21wJDApO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDIsIGNoaWxkcmVuJGpzY29tcCQzKTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQzKSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkMykpO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMSA9IGNoaWxkcmVuJGpzY29tcCQzO1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDE7XG4gICAgICAgIGNhc2UgXCJmb3JtXCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcImZvcm1cIikpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkNCA9IG51bGwsXG4gICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDMgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMSA9IG51bGwsXG4gICAgICAgICAgICBmb3JtRW5jVHlwZSRqc2NvbXAkMSA9IG51bGwsXG4gICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNTtcbiAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDUgaW4gcHJvcHMpXG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkNSkpIHtcbiAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSRqc2NvbXAkNSA9IHByb3BzW3Byb3BLZXkkanNjb21wJDVdO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDUpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQ1KSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDQgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMyA9IHByb3BWYWx1ZSRqc2NvbXAkNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiYWN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BY3Rpb24kanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImVuY1R5cGVcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm1ldGhvZFwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQxID0gcHJvcFZhbHVlJGpzY29tcCQ1O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0YXJnZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybVRhcmdldCRqc2NvbXAkMSA9IHByb3BWYWx1ZSRqc2NvbXAkNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQ1LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkNVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZm9ybURhdGEkanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUFjdGlvbk5hbWUgPSBudWxsO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmb3JtQWN0aW9uJGpzY29tcCQxKSB7XG4gICAgICAgICAgICAobnVsbCA9PT0gZm9ybUVuY1R5cGUkanNjb21wJDEgJiYgbnVsbCA9PT0gZm9ybU1ldGhvZCRqc2NvbXAkMSkgfHxcbiAgICAgICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25NZXRob2QgfHxcbiAgICAgICAgICAgICAgKChkaWRXYXJuRm9ybUFjdGlvbk1ldGhvZCA9ICEwKSxcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgZW5jVHlwZSBvciBtZXRob2QgZm9yIGEgZm9ybSB0aGF0IHNwZWNpZmllcyBhIGZ1bmN0aW9uIGFzIHRoZSBhY3Rpb24uIFJlYWN0IHByb3ZpZGVzIHRob3NlIGF1dG9tYXRpY2FsbHkuIFRoZXkgd2lsbCBnZXQgb3ZlcnJpZGRlbi5cIlxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIG51bGwgPT09IGZvcm1UYXJnZXQkanNjb21wJDEgfHxcbiAgICAgICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25UYXJnZXQgfHxcbiAgICAgICAgICAgICAgKChkaWRXYXJuRm9ybUFjdGlvblRhcmdldCA9ICEwKSxcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgdGFyZ2V0IGZvciBhIGZvcm0gdGhhdCBzcGVjaWZpZXMgYSBmdW5jdGlvbiBhcyB0aGUgYWN0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgd2luZG93LlwiXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgdmFyIGN1c3RvbUZpZWxkcyA9IGdldEN1c3RvbUZvcm1GaWVsZHMoXG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgICBmb3JtQWN0aW9uJGpzY29tcCQxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbnVsbCAhPT0gY3VzdG9tRmllbGRzXG4gICAgICAgICAgICAgID8gKChmb3JtQWN0aW9uJGpzY29tcCQxID0gY3VzdG9tRmllbGRzLmFjdGlvbiB8fCBcIlwiKSxcbiAgICAgICAgICAgICAgICAoZm9ybUVuY1R5cGUkanNjb21wJDEgPSBjdXN0b21GaWVsZHMuZW5jVHlwZSksXG4gICAgICAgICAgICAgICAgKGZvcm1NZXRob2QkanNjb21wJDEgPSBjdXN0b21GaWVsZHMubWV0aG9kKSxcbiAgICAgICAgICAgICAgICAoZm9ybVRhcmdldCRqc2NvbXAkMSA9IGN1c3RvbUZpZWxkcy50YXJnZXQpLFxuICAgICAgICAgICAgICAgIChmb3JtRGF0YSRqc2NvbXAkMSA9IGN1c3RvbUZpZWxkcy5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZm9ybUFjdGlvbk5hbWUgPSBjdXN0b21GaWVsZHMubmFtZSkpXG4gICAgICAgICAgICAgIDogKHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgXCJhY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgICAgIGFjdGlvbkphdmFTY3JpcHRVUkwsXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIChmb3JtVGFyZ2V0JGpzY29tcCQxID1cbiAgICAgICAgICAgICAgICAgIGZvcm1NZXRob2QkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMSA9XG4gICAgICAgICAgICAgICAgICAgIG51bGwpLFxuICAgICAgICAgICAgICAgIGluamVjdEZvcm1SZXBsYXlpbmdSdW50aW1lKHJlc3VtYWJsZVN0YXRlLCByZW5kZXJTdGF0ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBudWxsICE9IGZvcm1BY3Rpb24kanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcImFjdGlvblwiLCBmb3JtQWN0aW9uJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1FbmNUeXBlJGpzY29tcCQxICYmXG4gICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJlbmNUeXBlXCIsIGZvcm1FbmNUeXBlJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1NZXRob2QkanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcIm1ldGhvZFwiLCBmb3JtTWV0aG9kJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1UYXJnZXQkanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcInRhcmdldFwiLCBmb3JtVGFyZ2V0JGpzY29tcCQxKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBudWxsICE9PSBmb3JtQWN0aW9uTmFtZSAmJlxuICAgICAgICAgICAgKHRhcmdldCRqc2NvbXAkMC5wdXNoKCc8aW5wdXQgdHlwZT1cImhpZGRlblwiJyksXG4gICAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJuYW1lXCIsIGZvcm1BY3Rpb25OYW1lKSxcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyksXG4gICAgICAgICAgICBudWxsICE9IGZvcm1EYXRhJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIGZvcm1EYXRhJGpzY29tcCQxLmZvckVhY2goXG4gICAgICAgICAgICAgICAgcHVzaEFkZGl0aW9uYWxGb3JtRmllbGQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDMsIGNoaWxkcmVuJGpzY29tcCQ0KTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQ0KSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkNCkpO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMiA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMiA9IGNoaWxkcmVuJGpzY29tcCQ0O1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDI7XG4gICAgICAgIGNhc2UgXCJtZW51aXRlbVwiOlxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJtZW51aXRlbVwiKSk7XG4gICAgICAgICAgZm9yICh2YXIgcHJvcEtleSRqc2NvbXAkNiBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ2KSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQ2ID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkNl07XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkNilcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDYpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwibWVudWl0ZW1zIGNhbm5vdCBoYXZlIGBjaGlsZHJlbmAgbm9yIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDYsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQ2XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcIm9iamVjdFwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQ1ID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNCA9IG51bGwsXG4gICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQ3O1xuICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkNyBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ3KSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQ3ID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkN107XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkNylcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDcpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkNSA9IHByb3BWYWx1ZSRqc2NvbXAkNztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ0ID0gcHJvcFZhbHVlJGpzY29tcCQ3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRhXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24ocHJvcFZhbHVlJGpzY29tcCQ3LCBcImRhdGFcIik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYW5pdGl6ZWRWYWx1ZSA9IHNhbml0aXplVVJMKFwiXCIgKyBwcm9wVmFsdWUkanNjb21wJDcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJcIiA9PT0gc2FuaXRpemVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGVtcHR5IHN0cmluZyAoXCJcIikgd2FzIHBhc3NlZCB0byB0aGUgJXMgYXR0cmlidXRlLiBUbyBmaXggdGhpcywgZWl0aGVyIGRvIG5vdCByZW5kZXIgdGhlIGVsZW1lbnQgYXQgYWxsIG9yIHBhc3MgbnVsbCB0byAlcyBpbnN0ZWFkIG9mIGFuIGVtcHR5IHN0cmluZy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDdcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBcImRhdGFcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIoc2FuaXRpemVkVmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDcsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQ3XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDQsIGNoaWxkcmVuJGpzY29tcCQ1KTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQ1KSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkNSkpO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMyA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMyA9IGNoaWxkcmVuJGpzY29tcCQ1O1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDM7XG4gICAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgICAgIHZhciBpbnNlcnRpb25Nb2RlID0gZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlLFxuICAgICAgICAgICAgbm9zY3JpcHRUYWdJblNjb3BlID0gISEoZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDEpO1xuICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBcImNoaWxkcmVuXCIpKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDYgPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICAgICAgY2hpbGQgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuJGpzY29tcCQ2KVxuICAgICAgICAgICAgICAgID8gMiA+IGNoaWxkcmVuJGpzY29tcCQ2Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbiRqc2NvbXAkNlswXVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgOiBjaGlsZHJlbiRqc2NvbXAkNjtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4kanNjb21wJDYpICYmIDEgPCBjaGlsZHJlbiRqc2NvbXAkNi5sZW5ndGhcbiAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gQXJyYXkgd2l0aCBsZW5ndGggJXMgaW5zdGVhZC4gQnJvd3NlcnMgdHJlYXQgYWxsIGNoaWxkIE5vZGVzIG9mIDx0aXRsZT4gdGFncyBhcyBUZXh0IGNvbnRlbnQgYW5kIFJlYWN0IGV4cGVjdHMgdG8gYmUgYWJsZSB0byBjb252ZXJ0IGBjaGlsZHJlbmAgb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSB3aGljaCBpcyB3aHkgQXJyYXlzIG9mIGxlbmd0aCBncmVhdGVyIHRoYW4gMSBhcmUgbm90IHN1cHBvcnRlZC4gV2hlbiB1c2luZyBKU1ggaXQgY2FuIGJlIGNvbW1vbmcgdG8gY29tYmluZSB0ZXh0IG5vZGVzIGFuZCB2YWx1ZSBub2Rlcy4gRm9yIGV4YW1wbGU6IDx0aXRsZT5oZWxsbyB7bmFtZU9mVXNlcn08L3RpdGxlPi4gV2hpbGUgbm90IGltbWVkaWF0ZWx5IGFwcGFyZW50LCBgY2hpbGRyZW5gIGluIHRoaXMgY2FzZSBpcyBhbiBBcnJheSB3aXRoIGxlbmd0aCAyLiBJZiB5b3VyIGBjaGlsZHJlbmAgcHJvcCBpcyB1c2luZyB0aGlzIGZvcm0gdHJ5IHJld3JpdGluZyBpdCB1c2luZyBhIHRlbXBsYXRlIHN0cmluZzogPHRpdGxlPntgaGVsbG8gJHtuYW1lT2ZVc2VyfWB9PC90aXRsZT4uXCIsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkNi5sZW5ndGhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQgfHwgXCJzeW1ib2xcIiA9PT0gdHlwZW9mIGNoaWxkXG4gICAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlJlYWN0IGV4cGVjdCBjaGlsZHJlbiBvZiA8dGl0bGU+IHRhZ3MgdG8gYmUgYSBzdHJpbmcsIG51bWJlciwgYmlnaW50LCBvciBvYmplY3Qgd2l0aCBhIG5vdmVsIGB0b1N0cmluZ2AgbWV0aG9kIGJ1dCBmb3VuZCAlcyBpbnN0ZWFkLiBCcm93c2VycyB0cmVhdCBhbGwgY2hpbGQgTm9kZXMgb2YgPHRpdGxlPiB0YWdzIGFzIFRleHQgY29udGVudCBhbmQgUmVhY3QgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgY2hpbGRyZW4gb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZS5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQgPyBcImEgRnVuY3Rpb25cIiA6IFwiYSBTeWJtb2xcIlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY2hpbGQgJiZcbiAgICAgICAgICAgICAgICAgIGNoaWxkLnRvU3RyaW5nID09PSB7fS50b1N0cmluZyAmJlxuICAgICAgICAgICAgICAgICAgKG51bGwgIT0gY2hpbGQuJCR0eXBlb2ZcbiAgICAgICAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gb2JqZWN0IHRoYXQgYXBwZWFycyB0byBiZSBhIFJlYWN0IGVsZW1lbnQgd2hpY2ggbmV2ZXIgaW1wbGVtZW50cyBhIHN1aXRhYmxlIGB0b1N0cmluZ2AgbWV0aG9kLiBCcm93c2VycyB0cmVhdCBhbGwgY2hpbGQgTm9kZXMgb2YgPHRpdGxlPiB0YWdzIGFzIFRleHQgY29udGVudCBhbmQgUmVhY3QgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgY2hpbGRyZW4gb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSB3aGljaCBpcyB3aHkgcmVuZGVyaW5nIFJlYWN0IGVsZW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQuIElmIHRoZSBgY2hpbGRyZW5gIG9mIDx0aXRsZT4gaXMgYSBSZWFjdCBDb21wb25lbnQgdHJ5IG1vdmluZyB0aGUgPHRpdGxlPiB0YWcgaW50byB0aGF0IGNvbXBvbmVudC4gSWYgdGhlIGBjaGlsZHJlbmAgb2YgPHRpdGxlPiBpcyBzb21lIEhUTUwgbWFya3VwIGNoYW5nZSBpdCB0byBiZSBUZXh0IG9ubHkgdG8gYmUgdmFsaWQgSFRNTC5cIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gb2JqZWN0IHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IGEgc3VpdGFibGUgYHRvU3RyaW5nYCBtZXRob2QuIEJyb3dzZXJzIHRyZWF0IGFsbCBjaGlsZCBOb2RlcyBvZiA8dGl0bGU+IHRhZ3MgYXMgVGV4dCBjb250ZW50IGFuZCBSZWFjdCBleHBlY3RzIHRvIGJlIGFibGUgdG8gY29udmVydCBjaGlsZHJlbiBvZiA8dGl0bGU+IHRhZ3MgdG8gYSBzaW5nbGUgc3RyaW5nIHZhbHVlLiBVc2luZyB0aGUgZGVmYXVsdCBgdG9TdHJpbmdgIG1ldGhvZCBhdmFpbGFibGUgb24gZXZlcnkgb2JqZWN0IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuIENvbnNpZGVyIHdoZXRoZXIgdGhlIGBjaGlsZHJlbmAgb2YgdGhpcyA8dGl0bGU+IGlzIGFuIG9iamVjdCBpbiBlcnJvciBhbmQgY2hhbmdlIGl0IHRvIGEgc3RyaW5nIG9yIG51bWJlciB2YWx1ZSBpZiBzby4gT3RoZXJ3aXNlIGltcGxlbWVudCBhIGB0b1N0cmluZ2AgbWV0aG9kIHRoYXQgUmVhY3QgY2FuIHVzZSB0byBwcm9kdWNlIGEgdmFsaWQgPHRpdGxlPi5cIlxuICAgICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpbnNlcnRpb25Nb2RlID09PSBTVkdfTU9ERSB8fFxuICAgICAgICAgICAgbm9zY3JpcHRUYWdJblNjb3BlIHx8XG4gICAgICAgICAgICBudWxsICE9IHByb3BzLml0ZW1Qcm9wXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNCA9IHB1c2hUaXRsZUltcGwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICAgICAgICA/IChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDQgPSBudWxsKVxuICAgICAgICAgICAgICA6IChwdXNoVGl0bGVJbXBsKHJlbmRlclN0YXRlLmhvaXN0YWJsZUNodW5rcywgcHJvcHMpLFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDQgPSB2b2lkIDApKTtcbiAgICAgICAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ0O1xuICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgIHZhciByZWwgPSBwcm9wcy5yZWwsXG4gICAgICAgICAgICBocmVmID0gcHJvcHMuaHJlZixcbiAgICAgICAgICAgIHByZWNlZGVuY2UgPSBwcm9wcy5wcmVjZWRlbmNlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gU1ZHX01PREUgfHxcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQudGFnU2NvcGUgJiAxIHx8XG4gICAgICAgICAgICBudWxsICE9IHByb3BzLml0ZW1Qcm9wIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgcmVsIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgaHJlZiB8fFxuICAgICAgICAgICAgXCJcIiA9PT0gaHJlZlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgXCJzdHlsZXNoZWV0XCIgPT09IHJlbCAmJlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMucHJlY2VkZW5jZSAmJlxuICAgICAgICAgICAgICAoKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIGhyZWYpIHx8XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICdSZWFjdCBlbmNvdW50ZXJlZCBhIGA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgLi4uLz5gIHdpdGggYSBgcHJlY2VkZW5jZWAgcHJvcCBhbmQgZXhwZWN0ZWQgdGhlIGBocmVmYCBwcm9wIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZyBidXQgZWNvdW50ZXJlZCAlcyBpbnN0ZWFkLiBJZiB5b3VyIGludGVudCB3YXMgdG8gaGF2ZSBSZWFjdCBob2lzdCBhbmQgZGVkdXBsY2lhdGUgdGhpcyBzdHlsZXNoZWV0IHVzaW5nIHRoZSBgcHJlY2VkZW5jZWAgcHJvcCBlbnN1cmUgdGhlcmUgaXMgYSBub24tZW1wdHkgc3RyaW5nIGBocmVmYCBwcm9wIGFzIHdlbGwsIG90aGVyd2lzZSByZW1vdmUgdGhlIGBwcmVjZWRlbmNlYCBwcm9wLicsXG4gICAgICAgICAgICAgICAgICBudWxsID09PSBocmVmXG4gICAgICAgICAgICAgICAgICAgID8gXCJgbnVsbGBcIlxuICAgICAgICAgICAgICAgICAgICA6IHZvaWQgMCA9PT0gaHJlZlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJgdW5kZWZpbmVkYFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlwiID09PSBocmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYW4gZW1wdHkgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3NvbWV0aGluZyB3aXRoIHR5cGUgXCInICsgdHlwZW9mIGhyZWYgKyAnXCInXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICBwdXNoTGlua0ltcGwodGFyZ2V0JGpzY29tcCQwLCBwcm9wcyk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ1ID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKFwic3R5bGVzaGVldFwiID09PSBwcm9wcy5yZWwpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcmVjZWRlbmNlIHx8XG4gICAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgcHJvcHMub25Mb2FkIHx8XG4gICAgICAgICAgICAgIHByb3BzLm9uRXJyb3JcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByZWNlZGVuY2UpXG4gICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAnUmVhY3QgZW5jb3VudGVyZWQgYSBgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIC4uLi8+YCB3aXRoIGEgYHByZWNlZGVuY2VgIHByb3AgYW5kIGEgYGRpc2FibGVkYCBwcm9wLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBkaXNhYmxlZGAgcHJvcCBpbmRpY2F0ZXMgYW4gaW50ZW50IHRvIG1hbmFnZSB0aGUgc3R5bGVzaGVldCBhY3RpdmUgc3RhdGUgZnJvbSB5b3VyIGZyb20geW91ciBDb21wb25lbnQgY29kZSBhbmQgUmVhY3Qgd2lsbCBub3QgaG9pc3Qgb3IgZGVkdXBsaWNhdGUgdGhpcyBzdHlsZXNoZWV0LiBJZiB5b3VyIGludGVudCB3YXMgdG8gaGF2ZSBSZWFjdCBob2lzdCBhbmQgZGVkdXBsY2lhdGUgdGhpcyBzdHlsZXNoZWV0IHVzaW5nIHRoZSBgcHJlY2VkZW5jZWAgcHJvcCByZW1vdmUgdGhlIGBkaXNhYmxlZGAgcHJvcCwgb3RoZXJ3aXNlIHJlbW92ZSB0aGUgYHByZWNlZGVuY2VgIHByb3AuJ1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5vbkxvYWQgfHwgcHJvcHMub25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgdmFyIHByb3BEZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTG9hZCAmJiBwcm9wcy5vbkVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImBvbkxvYWRgIGFuZCBgb25FcnJvcmAgcHJvcHNcIlxuICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMub25Mb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYG9uTG9hZGAgcHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiYG9uRXJyb3JgIHByb3BcIjtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdSZWFjdCBlbmNvdW50ZXJlZCBhIGA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgLi4uLz5gIHdpdGggYSBgcHJlY2VkZW5jZWAgcHJvcCBhbmQgJXMuIFRoZSBwcmVzZW5jZSBvZiBsb2FkaW5nIGFuZCBlcnJvciBoYW5kbGVycyBpbmRpY2F0ZXMgYW4gaW50ZW50IHRvIG1hbmFnZSB0aGUgc3R5bGVzaGVldCBsb2FkaW5nIHN0YXRlIGZyb20geW91ciBmcm9tIHlvdXIgQ29tcG9uZW50IGNvZGUgYW5kIFJlYWN0IHdpbGwgbm90IGhvaXN0IG9yIGRlZHVwbGljYXRlIHRoaXMgc3R5bGVzaGVldC4gSWYgeW91ciBpbnRlbnQgd2FzIHRvIGhhdmUgUmVhY3QgaG9pc3QgYW5kIGRlZHVwbGNpYXRlIHRoaXMgc3R5bGVzaGVldCB1c2luZyB0aGUgYHByZWNlZGVuY2VgIHByb3AgcmVtb3ZlIHRoZSAlcywgb3RoZXJ3aXNlIHJlbW92ZSB0aGUgYHByZWNlZGVuY2VgIHByb3AuJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDUgPSBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgIHByb3BzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgc3R5bGVRdWV1ZSA9IHJlbmRlclN0YXRlLnN0eWxlcy5nZXQocHJlY2VkZW5jZSksXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSA9IHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgaHJlZlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgID8gcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl1cbiAgICAgICAgICAgICAgICAgIDogdm9pZCAwO1xuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0ZSAhPT0gRVhJU1RTKSB7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl0gPSBFWElTVFM7XG4gICAgICAgICAgICAgICAgc3R5bGVRdWV1ZSB8fFxuICAgICAgICAgICAgICAgICAgKChzdHlsZVF1ZXVlID0ge1xuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBlc2NhcGVUZXh0Rm9yQnJvd3NlcihwcmVjZWRlbmNlKSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBocmVmczogW10sXG4gICAgICAgICAgICAgICAgICAgIHNoZWV0czogbmV3IE1hcCgpXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnN0eWxlcy5zZXQocHJlY2VkZW5jZSwgc3R5bGVRdWV1ZSkpO1xuICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiBQRU5ESU5HJDEsXG4gICAgICAgICAgICAgICAgICBwcm9wczogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBcImRhdGEtcHJlY2VkZW5jZVwiOiBwcm9wcy5wcmVjZWRlbmNlLFxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBudWxsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgIDIgPT09IHJlc291cmNlU3RhdGUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGFkb3B0UHJlbG9hZENyZWRlbnRpYWxzKHJlc291cmNlLnByb3BzLCByZXNvdXJjZVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHZhciBwcmVsb2FkUmVzb3VyY2UgPVxuICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5zdHlsZXNoZWV0cy5nZXQoaHJlZik7XG4gICAgICAgICAgICAgICAgICBwcmVsb2FkUmVzb3VyY2UgJiYgMCA8IHByZWxvYWRSZXNvdXJjZS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAocHJlbG9hZFJlc291cmNlLmxlbmd0aCA9IDApXG4gICAgICAgICAgICAgICAgICAgIDogKHJlc291cmNlLnN0YXRlID0gUFJFTE9BREVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuc2V0KGhyZWYsIHJlc291cmNlKTtcbiAgICAgICAgICAgICAgICBob2lzdGFibGVTdGF0ZSAmJiBob2lzdGFibGVTdGF0ZS5zdHlsZXNoZWV0cy5hZGQocmVzb3VyY2UpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlUXVldWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlID0gc3R5bGVRdWV1ZS5zaGVldHMuZ2V0KGhyZWYpO1xuICAgICAgICAgICAgICAgIF9yZXNvdXJjZSAmJlxuICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGUgJiZcbiAgICAgICAgICAgICAgICAgIGhvaXN0YWJsZVN0YXRlLnN0eWxlc2hlZXRzLmFkZChfcmVzb3VyY2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRleHRFbWJlZGRlZCAmJiB0YXJnZXQkanNjb21wJDAucHVzaChcIlxceDNjIS0tIC0tXFx4M2VcIik7XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvcHMub25Mb2FkIHx8IHByb3BzLm9uRXJyb3JcbiAgICAgICAgICAgICAgPyAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ1ID0gcHVzaExpbmtJbXBsKFxuICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6ICh0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0JGpzY29tcCQwLnB1c2goXCJcXHgzYyEtLSAtLVxceDNlXCIpLFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDUgPSBpc0ZhbGxiYWNrXG4gICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgIDogcHVzaExpbmtJbXBsKHJlbmRlclN0YXRlLmhvaXN0YWJsZUNodW5rcywgcHJvcHMpKSk7XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNTtcbiAgICAgICAgY2FzZSBcInNjcmlwdFwiOlxuICAgICAgICAgIHZhciBhc3luY1Byb3AgPSBwcm9wcy5hc3luYztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgcHJvcHMuc3JjIHx8XG4gICAgICAgICAgICAhcHJvcHMuc3JjIHx8XG4gICAgICAgICAgICAhYXN5bmNQcm9wIHx8XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhc3luY1Byb3AgfHxcbiAgICAgICAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiBhc3luY1Byb3AgfHxcbiAgICAgICAgICAgIHByb3BzLm9uTG9hZCB8fFxuICAgICAgICAgICAgcHJvcHMub25FcnJvciB8fFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBTVkdfTU9ERSB8fFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDEgfHxcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuaXRlbVByb3BcbiAgICAgICAgICApXG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ2ID0gcHVzaFNjcmlwdEltcGwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gcHJvcHMuc3JjO1xuICAgICAgICAgICAgaWYgKFwibW9kdWxlXCIgPT09IHByb3BzLnR5cGUpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IHJlc3VtYWJsZVN0YXRlLm1vZHVsZVNjcmlwdFJlc291cmNlcztcbiAgICAgICAgICAgICAgdmFyIHByZWxvYWRzID0gcmVuZGVyU3RhdGUucHJlbG9hZHMubW9kdWxlU2NyaXB0cztcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAocmVzb3VyY2VzID0gcmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzKSxcbiAgICAgICAgICAgICAgICAocHJlbG9hZHMgPSByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5zY3JpcHRzKTtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZVN0YXRlJGpzY29tcCQwID0gcmVzb3VyY2VzLmhhc093blByb3BlcnR5KGtleSlcbiAgICAgICAgICAgICAgPyByZXNvdXJjZXNba2V5XVxuICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZVN0YXRlJGpzY29tcCQwICE9PSBFWElTVFMpIHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VzW2tleV0gPSBFWElTVFM7XG4gICAgICAgICAgICAgIHZhciBzY3JpcHRQcm9wcyA9IHByb3BzO1xuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0ZSRqc2NvbXAkMCkge1xuICAgICAgICAgICAgICAgIDIgPT09IHJlc291cmNlU3RhdGUkanNjb21wJDAubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAoKHNjcmlwdFByb3BzID0gYXNzaWduKHt9LCBwcm9wcykpLFxuICAgICAgICAgICAgICAgICAgYWRvcHRQcmVsb2FkQ3JlZGVudGlhbHMoc2NyaXB0UHJvcHMsIHJlc291cmNlU3RhdGUkanNjb21wJDApKTtcbiAgICAgICAgICAgICAgICB2YXIgcHJlbG9hZFJlc291cmNlJGpzY29tcCQwID0gcHJlbG9hZHMuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgcHJlbG9hZFJlc291cmNlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAgICAgICAocHJlbG9hZFJlc291cmNlJGpzY29tcCQwLmxlbmd0aCA9IDApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciByZXNvdXJjZSRqc2NvbXAkMCA9IFtdO1xuICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5zY3JpcHRzLmFkZChyZXNvdXJjZSRqc2NvbXAkMCk7XG4gICAgICAgICAgICAgIHB1c2hTY3JpcHRJbXBsKHJlc291cmNlJGpzY29tcCQwLCBzY3JpcHRQcm9wcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0JGpzY29tcCQwLnB1c2goXCJcXHgzYyEtLSAtLVxceDNlXCIpO1xuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ2ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNjtcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgdmFyIGluc2VydGlvbk1vZGUkanNjb21wJDAgPSBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUsXG4gICAgICAgICAgICBub3NjcmlwdFRhZ0luU2NvcGUkanNjb21wJDAgPSAhIShmb3JtYXRDb250ZXh0LnRhZ1Njb3BlICYgMSk7XG4gICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIFwiY2hpbGRyZW5cIikpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkNyA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgICAgICBjaGlsZCRqc2NvbXAkMCA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4kanNjb21wJDcpXG4gICAgICAgICAgICAgICAgPyAyID4gY2hpbGRyZW4kanNjb21wJDcubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuJGpzY29tcCQ3WzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICA6IGNoaWxkcmVuJGpzY29tcCQ3O1xuICAgICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNoaWxkJGpzY29tcCQwIHx8XG4gICAgICAgICAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiBjaGlsZCRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGNoaWxkJGpzY29tcCQwKSkgJiZcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIlJlYWN0IGV4cGVjdCBjaGlsZHJlbiBvZiA8c3R5bGU+IHRhZ3MgdG8gYmUgYSBzdHJpbmcsIG51bWJlciwgb3Igb2JqZWN0IHdpdGggYSBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgJXMgaW5zdGVhZC4gSW4gYnJvd3NlcnMgc3R5bGUgRWxlbWVudHMgY2FuIG9ubHkgaGF2ZSBgVGV4dGAgTm9kZXMgYXMgY2hpbGRyZW4uXCIsXG4gICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgID8gXCJhIEZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIDogXCJzeW1ib2xcIiA9PT0gdHlwZW9mIGNoaWxkJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgID8gXCJhIFN5Ym1vbFwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJhbiBBcnJheVwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBwcmVjZWRlbmNlJGpzY29tcCQwID0gcHJvcHMucHJlY2VkZW5jZSxcbiAgICAgICAgICAgIGhyZWYkanNjb21wJDAgPSBwcm9wcy5ocmVmO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGluc2VydGlvbk1vZGUkanNjb21wJDAgPT09IFNWR19NT0RFIHx8XG4gICAgICAgICAgICBub3NjcmlwdFRhZ0luU2NvcGUkanNjb21wJDAgfHxcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuaXRlbVByb3AgfHxcbiAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcmVjZWRlbmNlJGpzY29tcCQwIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgaHJlZiRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgXCJcIiA9PT0gaHJlZiRqc2NvbXAkMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInN0eWxlXCIpKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkOCA9IG51bGwsXG4gICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNSA9IG51bGwsXG4gICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDg7XG4gICAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDggaW4gcHJvcHMpXG4gICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ4KSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDggPSBwcm9wc1twcm9wS2V5JGpzY29tcCQ4XTtcbiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDgpXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDggPSBwcm9wVmFsdWUkanNjb21wJDg7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNSA9IHByb3BWYWx1ZSRqc2NvbXAkODtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkOCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkOFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgICAgdmFyIGNoaWxkJGpzY29tcCQxID0gQXJyYXkuaXNBcnJheShjaGlsZHJlbiRqc2NvbXAkOClcbiAgICAgICAgICAgICAgPyAyID4gY2hpbGRyZW4kanNjb21wJDgubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBjaGlsZHJlbiRqc2NvbXAkOFswXVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICA6IGNoaWxkcmVuJGpzY29tcCQ4O1xuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY2hpbGQkanNjb21wJDEgJiZcbiAgICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIGNoaWxkJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGNoaWxkJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gY2hpbGQkanNjb21wJDEgJiZcbiAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZXNjYXBlU3R5bGVUZXh0Q29udGVudChjaGlsZCRqc2NvbXAkMSkpO1xuICAgICAgICAgICAgcHVzaElubmVySFRNTChcbiAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDUsXG4gICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQ4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kQ2h1bmtGb3JUYWcoXCJzdHlsZVwiKSk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ3ID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHJlZiRqc2NvbXAkMC5pbmNsdWRlcyhcIiBcIikgJiZcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAnUmVhY3QgZXhwZWN0ZWQgdGhlIGBocmVmYCBwcm9wIGZvciBhIDxzdHlsZT4gdGFnIG9wdGluZyBpbnRvIGhvaXN0aW5nIHNlbWFudGljcyB1c2luZyB0aGUgYHByZWNlZGVuY2VgIHByb3AgdG8gbm90IGhhdmUgYW55IHNwYWNlcyBidXQgZWNvdW50ZXJlZCBzcGFjZXMgaW5zdGVhZC4gdXNpbmcgc3BhY2VzIGluIHRoaXMgcHJvcCB3aWxsIGNhdXNlIGh5ZHJhdGlvbiBvZiB0aGlzIHN0eWxlIHRvIGZhaWwgb24gdGhlIGNsaWVudC4gVGhlIGhyZWYgZm9yIHRoZSA8c3R5bGU+IHdoZXJlIHRoaXMgb2N1cnJlZCBpcyBcIiVzXCIuJyxcbiAgICAgICAgICAgICAgICBocmVmJGpzY29tcCQwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2YXIgc3R5bGVRdWV1ZSRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuc3R5bGVzLmdldChwcmVjZWRlbmNlJGpzY29tcCQwKSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSRqc2NvbXAkMSA9XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZiRqc2NvbXAkMClcbiAgICAgICAgICAgICAgICAgID8gcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZiRqc2NvbXAkMF1cbiAgICAgICAgICAgICAgICAgIDogdm9pZCAwO1xuICAgICAgICAgICAgaWYgKHJlc291cmNlU3RhdGUkanNjb21wJDEgIT09IEVYSVNUUykge1xuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5zdHlsZVJlc291cmNlc1tocmVmJGpzY29tcCQwXSA9IEVYSVNUUztcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSRqc2NvbXAkMSAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnUmVhY3QgZW5jb3VudGVyZWQgYSBob2lzdGFibGUgc3R5bGUgdGFnIGZvciB0aGUgc2FtZSBocmVmIGFzIGEgcHJlbG9hZDogXCIlc1wiLiBXaGVuIHVzaW5nIGEgc3R5bGUgdGFnIHRvIGlubGluZSBzdHlsZXMgeW91IHNob3VsZCBub3QgYWxzbyBwcmVsb2FkIGl0IGFzIGEgc3R5bHNoZWV0LicsXG4gICAgICAgICAgICAgICAgICBocmVmJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgc3R5bGVRdWV1ZSRqc2NvbXAkMFxuICAgICAgICAgICAgICAgID8gc3R5bGVRdWV1ZSRqc2NvbXAkMC5ocmVmcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3NlcihocmVmJGpzY29tcCQwKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogKChzdHlsZVF1ZXVlJGpzY29tcCQwID0ge1xuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBlc2NhcGVUZXh0Rm9yQnJvd3NlcihwcmVjZWRlbmNlJGpzY29tcCQwKSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBocmVmczogW2VzY2FwZVRleHRGb3JCcm93c2VyKGhyZWYkanNjb21wJDApXSxcbiAgICAgICAgICAgICAgICAgICAgc2hlZXRzOiBuZXcgTWFwKClcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuc3R5bGVzLnNldChcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVRdWV1ZSRqc2NvbXAkMFxuICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBzdHlsZVF1ZXVlJGpzY29tcCQwLnJ1bGVzLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQ5ID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDYgPSBudWxsLFxuICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDk7XG4gICAgICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkOSBpbiBwcm9wcylcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkOSkpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDkgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQ5XTtcbiAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkOSlcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkOSA9IHByb3BWYWx1ZSRqc2NvbXAkOTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ2ID0gcHJvcFZhbHVlJGpzY29tcCQ5O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgY2hpbGQkanNjb21wJDIgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuJGpzY29tcCQ5KVxuICAgICAgICAgICAgICAgID8gMiA+IGNoaWxkcmVuJGpzY29tcCQ5Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbiRqc2NvbXAkOVswXVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgOiBjaGlsZHJlbiRqc2NvbXAkOTtcbiAgICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY2hpbGQkanNjb21wJDIgJiZcbiAgICAgICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgY2hpbGQkanNjb21wJDIgJiZcbiAgICAgICAgICAgICAgICBudWxsICE9PSBjaGlsZCRqc2NvbXAkMiAmJlxuICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gY2hpbGQkanNjb21wJDIgJiZcbiAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChlc2NhcGVTdHlsZVRleHRDb250ZW50KGNoaWxkJGpzY29tcCQyKSk7XG4gICAgICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwkanNjb21wJDYsIGNoaWxkcmVuJGpzY29tcCQ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0eWxlUXVldWUkanNjb21wJDAgJiZcbiAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGUgJiZcbiAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGUuc3R5bGVzLmFkZChzdHlsZVF1ZXVlJGpzY29tcCQwKTtcbiAgICAgICAgICAgIHRleHRFbWJlZGRlZCAmJiB0YXJnZXQkanNjb21wJDAucHVzaChcIlxceDNjIS0tIC0tXFx4M2VcIik7XG4gICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDcgPSB2b2lkIDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDc7XG4gICAgICAgIGNhc2UgXCJtZXRhXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBTVkdfTU9ERSB8fFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDEgfHxcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuaXRlbVByb3BcbiAgICAgICAgICApXG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ4ID0gcHVzaFNlbGZDbG9zaW5nKFxuICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcIm1ldGFcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0JGpzY29tcCQwLnB1c2goXCJcXHgzYyEtLSAtLVxceDNlXCIpLFxuICAgICAgICAgICAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ4ID0gaXNGYWxsYmFja1xuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByb3BzLmNoYXJTZXRcbiAgICAgICAgICAgICAgICAgID8gcHVzaFNlbGZDbG9zaW5nKHJlbmRlclN0YXRlLmNoYXJzZXRDaHVua3MsIHByb3BzLCBcIm1ldGFcIilcbiAgICAgICAgICAgICAgICAgIDogXCJ2aWV3cG9ydFwiID09PSBwcm9wcy5uYW1lXG4gICAgICAgICAgICAgICAgICAgID8gcHVzaFNlbGZDbG9zaW5nKHJlbmRlclN0YXRlLnZpZXdwb3J0Q2h1bmtzLCBwcm9wcywgXCJtZXRhXCIpXG4gICAgICAgICAgICAgICAgICAgIDogcHVzaFNlbGZDbG9zaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuaG9pc3RhYmxlQ2h1bmtzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1ldGFcIlxuICAgICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDg7XG4gICAgICAgIGNhc2UgXCJsaXN0aW5nXCI6XG4gICAgICAgIGNhc2UgXCJwcmVcIjpcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKHR5cGUpKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDEwID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNyA9IG51bGwsXG4gICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQxMDtcbiAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDEwIGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDEwKSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQxMCA9IHByb3BzW3Byb3BLZXkkanNjb21wJDEwXTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQxMClcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDEwKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDEwID0gcHJvcFZhbHVlJGpzY29tcCQxMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ3ID0gcHJvcFZhbHVlJGpzY29tcCQxMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQxMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDEwXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIGlmIChudWxsICE9IGlubmVySFRNTCRqc2NvbXAkNykge1xuICAgICAgICAgICAgaWYgKG51bGwgIT0gY2hpbGRyZW4kanNjb21wJDEwKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbiBvbmx5IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIFwib2JqZWN0XCIgIT09IHR5cGVvZiBpbm5lckhUTUwkanNjb21wJDcgfHxcbiAgICAgICAgICAgICAgIShcIl9faHRtbFwiIGluIGlubmVySFRNTCRqc2NvbXAkNylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIGh0bWwgPSBpbm5lckhUTUwkanNjb21wJDcuX19odG1sO1xuICAgICAgICAgICAgbnVsbCAhPT0gaHRtbCAmJlxuICAgICAgICAgICAgICB2b2lkIDAgIT09IGh0bWwgJiZcbiAgICAgICAgICAgICAgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBodG1sICYmIDAgPCBodG1sLmxlbmd0aCAmJiBcIlxcblwiID09PSBodG1sWzBdXG4gICAgICAgICAgICAgICAgPyB0YXJnZXQkanNjb21wJDAucHVzaChsZWFkaW5nTmV3bGluZSwgaHRtbClcbiAgICAgICAgICAgICAgICA6IChjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihodG1sKSxcbiAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKFwiXCIgKyBodG1sKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgY2hpbGRyZW4kanNjb21wJDEwICYmXG4gICAgICAgICAgICBcIlxcblwiID09PSBjaGlsZHJlbiRqc2NvbXAkMTBbMF0gJiZcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGxlYWRpbmdOZXdsaW5lKTtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW4kanNjb21wJDEwO1xuICAgICAgICBjYXNlIFwiaW1nXCI6XG4gICAgICAgICAgdmFyIHNyYyA9IHByb3BzLnNyYyxcbiAgICAgICAgICAgIHNyY1NldCA9IHByb3BzLnNyY1NldDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICBcImxhenlcIiA9PT0gcHJvcHMubG9hZGluZyB8fFxuICAgICAgICAgICAgICAoIXNyYyAmJiAhc3JjU2V0KSB8fFxuICAgICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHNyYyAmJiBudWxsICE9IHNyYykgfHxcbiAgICAgICAgICAgICAgKFwic3RyaW5nXCIgIT09IHR5cGVvZiBzcmNTZXQgJiYgbnVsbCAhPSBzcmNTZXQpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICBcImxvd1wiICE9PSBwcm9wcy5mZXRjaFByaW9yaXR5ICYmXG4gICAgICAgICAgICAhMSA9PT0gISEoZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDMpICYmXG4gICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHNyYyB8fFxuICAgICAgICAgICAgICBcIjpcIiAhPT0gc3JjWzRdIHx8XG4gICAgICAgICAgICAgIChcImRcIiAhPT0gc3JjWzBdICYmIFwiRFwiICE9PSBzcmNbMF0pIHx8XG4gICAgICAgICAgICAgIChcImFcIiAhPT0gc3JjWzFdICYmIFwiQVwiICE9PSBzcmNbMV0pIHx8XG4gICAgICAgICAgICAgIChcInRcIiAhPT0gc3JjWzJdICYmIFwiVFwiICE9PSBzcmNbMl0pIHx8XG4gICAgICAgICAgICAgIChcImFcIiAhPT0gc3JjWzNdICYmIFwiQVwiICE9PSBzcmNbM10pKSAmJlxuICAgICAgICAgICAgKFwic3RyaW5nXCIgIT09IHR5cGVvZiBzcmNTZXQgfHxcbiAgICAgICAgICAgICAgXCI6XCIgIT09IHNyY1NldFs0XSB8fFxuICAgICAgICAgICAgICAoXCJkXCIgIT09IHNyY1NldFswXSAmJiBcIkRcIiAhPT0gc3JjU2V0WzBdKSB8fFxuICAgICAgICAgICAgICAoXCJhXCIgIT09IHNyY1NldFsxXSAmJiBcIkFcIiAhPT0gc3JjU2V0WzFdKSB8fFxuICAgICAgICAgICAgICAoXCJ0XCIgIT09IHNyY1NldFsyXSAmJiBcIlRcIiAhPT0gc3JjU2V0WzJdKSB8fFxuICAgICAgICAgICAgICAoXCJhXCIgIT09IHNyY1NldFszXSAmJiBcIkFcIiAhPT0gc3JjU2V0WzNdKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBzaXplcyA9IFwic3RyaW5nXCIgPT09IHR5cGVvZiBwcm9wcy5zaXplcyA/IHByb3BzLnNpemVzIDogdm9pZCAwLFxuICAgICAgICAgICAgICBrZXkkanNjb21wJDAgPSBzcmNTZXQgPyBzcmNTZXQgKyBcIlxcblwiICsgKHNpemVzIHx8IFwiXCIpIDogc3JjLFxuICAgICAgICAgICAgICBwcm9tb3RhYmxlUHJlbG9hZHMgPSByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5pbWFnZXMsXG4gICAgICAgICAgICAgIHJlc291cmNlJGpzY29tcCQxID0gcHJvbW90YWJsZVByZWxvYWRzLmdldChrZXkkanNjb21wJDApO1xuICAgICAgICAgICAgaWYgKHJlc291cmNlJGpzY29tcCQxKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBcImhpZ2hcIiA9PT0gcHJvcHMuZmV0Y2hQcmlvcml0eSB8fFxuICAgICAgICAgICAgICAgIDEwID4gcmVuZGVyU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMuc2l6ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcHJvbW90YWJsZVByZWxvYWRzLmRlbGV0ZShrZXkkanNjb21wJDApLFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMuYWRkKHJlc291cmNlJGpzY29tcCQxKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICFyZXN1bWFibGVTdGF0ZS5pbWFnZVJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShrZXkkanNjb21wJDApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuaW1hZ2VSZXNvdXJjZXNba2V5JGpzY29tcCQwXSA9IFBSRUxPQURfTk9fQ1JFRFM7XG4gICAgICAgICAgICAgIHZhciBpbnB1dCA9IHByb3BzLmNyb3NzT3JpZ2luO1xuICAgICAgICAgICAgICB2YXIgY3Jvc3NPcmlnaW4gPVxuICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBpbnB1dFxuICAgICAgICAgICAgICAgICAgPyBcInVzZS1jcmVkZW50aWFsc1wiID09PSBpbnB1dFxuICAgICAgICAgICAgICAgICAgICA/IGlucHV0XG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgICAgOiB2b2lkIDA7XG4gICAgICAgICAgICAgIHZhciBoZWFkZXJzID0gcmVuZGVyU3RhdGUuaGVhZGVycyxcbiAgICAgICAgICAgICAgICBoZWFkZXI7XG4gICAgICAgICAgICAgIGhlYWRlcnMgJiZcbiAgICAgICAgICAgICAgMCA8IGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgJiZcbiAgICAgICAgICAgICAgKFwiaGlnaFwiID09PSBwcm9wcy5mZXRjaFByaW9yaXR5IHx8XG4gICAgICAgICAgICAgICAgNTAwID4gaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2Fkcy5sZW5ndGgpICYmXG4gICAgICAgICAgICAgICgoaGVhZGVyID0gZ2V0UHJlbG9hZEFzSGVhZGVyKHNyYywgXCJpbWFnZVwiLCB7XG4gICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQ6IHByb3BzLnNyY1NldCxcbiAgICAgICAgICAgICAgICBpbWFnZVNpemVzOiBwcm9wcy5zaXplcyxcbiAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgaW50ZWdyaXR5OiBwcm9wcy5pbnRlZ3JpdHksXG4gICAgICAgICAgICAgICAgbm9uY2U6IHByb3BzLm5vbmNlLFxuICAgICAgICAgICAgICAgIHR5cGU6IHByb3BzLnR5cGUsXG4gICAgICAgICAgICAgICAgZmV0Y2hQcmlvcml0eTogcHJvcHMuZmV0Y2hQcmlvcml0eSxcbiAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogcHJvcHMucmVmZXJlclBvbGljeVxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgIDAgPD0gKGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgLT0gaGVhZGVyLmxlbmd0aCArIDIpKVxuICAgICAgICAgICAgICAgID8gKChyZW5kZXJTdGF0ZS5yZXNldHMuaW1hZ2Vba2V5JGpzY29tcCQwXSA9IFBSRUxPQURfTk9fQ1JFRFMpLFxuICAgICAgICAgICAgICAgICAgaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAgICAgICAoaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2FkcyArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAgICAgKGhlYWRlcnMuaGlnaEltYWdlUHJlbG9hZHMgKz0gaGVhZGVyKSlcbiAgICAgICAgICAgICAgICA6ICgocmVzb3VyY2UkanNjb21wJDEgPSBbXSksXG4gICAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwocmVzb3VyY2UkanNjb21wJDEsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgICAgICAgYXM6IFwiaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogc3JjU2V0ID8gdm9pZCAwIDogc3JjLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldDogc3JjU2V0LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemVzOiBzaXplcyxcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICBpbnRlZ3JpdHk6IHByb3BzLmludGVncml0eSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogcHJvcHMudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQcmlvcml0eTogcHJvcHMuZmV0Y2hQcmlvcml0eSxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHByb3BzLnJlZmVycmVyUG9saWN5XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIFwiaGlnaFwiID09PSBwcm9wcy5mZXRjaFByaW9yaXR5IHx8XG4gICAgICAgICAgICAgICAgICAxMCA+IHJlbmRlclN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzLnNpemVcbiAgICAgICAgICAgICAgICAgICAgPyByZW5kZXJTdGF0ZS5oaWdoSW1hZ2VQcmVsb2Fkcy5hZGQocmVzb3VyY2UkanNjb21wJDEpXG4gICAgICAgICAgICAgICAgICAgIDogKHJlbmRlclN0YXRlLmJ1bGtQcmVsb2Fkcy5hZGQocmVzb3VyY2UkanNjb21wJDEpLFxuICAgICAgICAgICAgICAgICAgICAgIHByb21vdGFibGVQcmVsb2Fkcy5zZXQoa2V5JGpzY29tcCQwLCByZXNvdXJjZSRqc2NvbXAkMSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHB1c2hTZWxmQ2xvc2luZyh0YXJnZXQkanNjb21wJDAsIHByb3BzLCBcImltZ1wiKTtcbiAgICAgICAgY2FzZSBcImJhc2VcIjpcbiAgICAgICAgY2FzZSBcImFyZWFcIjpcbiAgICAgICAgY2FzZSBcImJyXCI6XG4gICAgICAgIGNhc2UgXCJjb2xcIjpcbiAgICAgICAgY2FzZSBcImVtYmVkXCI6XG4gICAgICAgIGNhc2UgXCJoclwiOlxuICAgICAgICBjYXNlIFwia2V5Z2VuXCI6XG4gICAgICAgIGNhc2UgXCJwYXJhbVwiOlxuICAgICAgICBjYXNlIFwic291cmNlXCI6XG4gICAgICAgIGNhc2UgXCJ0cmFja1wiOlxuICAgICAgICBjYXNlIFwid2JyXCI6XG4gICAgICAgICAgcmV0dXJuIHB1c2hTZWxmQ2xvc2luZyh0YXJnZXQkanNjb21wJDAsIHByb3BzLCB0eXBlKTtcbiAgICAgICAgY2FzZSBcImFubm90YXRpb24teG1sXCI6XG4gICAgICAgIGNhc2UgXCJjb2xvci1wcm9maWxlXCI6XG4gICAgICAgIGNhc2UgXCJmb250LWZhY2VcIjpcbiAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1zcmNcIjpcbiAgICAgICAgY2FzZSBcImZvbnQtZmFjZS11cmlcIjpcbiAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1mb3JtYXRcIjpcbiAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6XG4gICAgICAgIGNhc2UgXCJtaXNzaW5nLWdseXBoXCI6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJoZWFkXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlIDwgSFRNTF9NT0RFICYmXG4gICAgICAgICAgICBudWxsID09PSByZW5kZXJTdGF0ZS5oZWFkQ2h1bmtzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5oZWFkQ2h1bmtzID0gW107XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ5ID0gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQoXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlLmhlYWRDaHVua3MsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcImhlYWRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkOSA9IHB1c2hTdGFydEdlbmVyaWNFbGVtZW50KFxuICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcImhlYWRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ5O1xuICAgICAgICBjYXNlIFwiaHRtbFwiOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gUk9PVF9IVE1MX01PREUgJiZcbiAgICAgICAgICAgIG51bGwgPT09IHJlbmRlclN0YXRlLmh0bWxDaHVua3NcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmh0bWxDaHVua3MgPSBbZG9jdHlwZUNodW5rXTtcbiAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDEwID0gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQoXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlLmh0bWxDaHVua3MsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcImh0bWxcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMTAgPSBwdXNoU3RhcnRHZW5lcmljRWxlbWVudChcbiAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgXCJodG1sXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMTA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKC0xICE9PSB0eXBlLmluZGV4T2YoXCItXCIpKSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKHR5cGUpKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkMTEgPSBudWxsLFxuICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDggPSBudWxsLFxuICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQxMTtcbiAgICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkMTEgaW4gcHJvcHMpXG4gICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQxMSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQxMSA9IHByb3BzW3Byb3BLZXkkanNjb21wJDExXTtcbiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDExKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BLZXkkanNjb21wJDExO1xuICAgICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQxMSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMTEgPSBwcm9wVmFsdWUkanNjb21wJDExO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDggPSBwcm9wVmFsdWUkanNjb21wJDExO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICBwdXNoU3R5bGVBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBwcm9wVmFsdWUkanNjb21wJDExKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNsYXNzTmFtZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBcImNsYXNzXCI7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBdHRyaWJ1dGVOYW1lU2FmZShwcm9wS2V5JGpzY29tcCQxMSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHByb3BWYWx1ZSRqc2NvbXAkMTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiBwcm9wVmFsdWUkanNjb21wJDExICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhMSAhPT0gcHJvcFZhbHVlJGpzY29tcCQxMVxuICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEwID09PSBwcm9wVmFsdWUkanNjb21wJDExKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDExID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBwcm9wVmFsdWUkanNjb21wJDExKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIocHJvcFZhbHVlJGpzY29tcCQxMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICAgIHB1c2hJbm5lckhUTUwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ4LFxuICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMTFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4kanNjb21wJDExO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQkanNjb21wJDAsIHByb3BzLCB0eXBlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5kQ2h1bmtGb3JUYWcodGFnKSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbmRUYWdDYWNoZS5nZXQodGFnKTtcbiAgICAgIHZvaWQgMCA9PT0gY2h1bmsgJiZcbiAgICAgICAgKChjaHVuayA9IFwiPC9cIiArIHRhZyArIFwiPlwiKSwgZW5kVGFnQ2FjaGUuc2V0KHRhZywgY2h1bmspKTtcbiAgICAgIHJldHVybiBjaHVuaztcbiAgICB9XG4gICAgZnVuY3Rpb24gd3JpdGVCb290c3RyYXAoZGVzdGluYXRpb24sIHJlbmRlclN0YXRlKSB7XG4gICAgICByZW5kZXJTdGF0ZSA9IHJlbmRlclN0YXRlLmJvb3RzdHJhcENodW5rcztcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVuZGVyU3RhdGUubGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlbmRlclN0YXRlW2ldKTtcbiAgICAgIHJldHVybiBpIDwgcmVuZGVyU3RhdGUubGVuZ3RoXG4gICAgICAgID8gKChpID0gcmVuZGVyU3RhdGVbaV0pLCAocmVuZGVyU3RhdGUubGVuZ3RoID0gMCksIGRlc3RpbmF0aW9uLnB1c2goaSkpXG4gICAgICAgIDogITA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlU3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVuZGVyU3RhdGUsIGlkKSB7XG4gICAgICBkZXN0aW5hdGlvbi5wdXNoKHN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkxKTtcbiAgICAgIGlmIChudWxsID09PSBpZClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJBbiBJRCBtdXN0IGhhdmUgYmVlbiBhc3NpZ25lZCBiZWZvcmUgd2UgY2FuIGNvbXBsZXRlIHRoZSBib3VuZGFyeS5cIlxuICAgICAgICApO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZS5ib3VuZGFyeVByZWZpeCk7XG4gICAgICByZW5kZXJTdGF0ZSA9IGlkLnRvU3RyaW5nKDE2KTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVuZGVyU3RhdGUpO1xuICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeTIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3cml0ZVN0YXJ0U2VnbWVudChkZXN0aW5hdGlvbiwgcmVuZGVyU3RhdGUsIGZvcm1hdENvbnRleHQsIGlkKSB7XG4gICAgICBzd2l0Y2ggKGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICBjYXNlIFJPT1RfSFRNTF9NT0RFOlxuICAgICAgICBjYXNlIEhUTUxfSFRNTF9NT0RFOlxuICAgICAgICBjYXNlIEhUTUxfTU9ERTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydFNlZ21lbnRIVE1MKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVuZGVyU3RhdGUuc2VnbWVudFByZWZpeCksXG4gICAgICAgICAgICAocmVuZGVyU3RhdGUgPSBpZC50b1N0cmluZygxNikpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHN0YXJ0U2VnbWVudEhUTUwyKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgU1ZHX01PREU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRTZWdtZW50U1ZHKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVuZGVyU3RhdGUuc2VnbWVudFByZWZpeCksXG4gICAgICAgICAgICAocmVuZGVyU3RhdGUgPSBpZC50b1N0cmluZygxNikpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHN0YXJ0U2VnbWVudFNWRzIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBNQVRITUxfTU9ERTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydFNlZ21lbnRNYXRoTUwpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIChyZW5kZXJTdGF0ZSA9IGlkLnRvU3RyaW5nKDE2KSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlbmRlclN0YXRlKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRTZWdtZW50TWF0aE1MMilcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfTU9ERTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydFNlZ21lbnRUYWJsZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlbmRlclN0YXRlLnNlZ21lbnRQcmVmaXgpLFxuICAgICAgICAgICAgKHJlbmRlclN0YXRlID0gaWQudG9TdHJpbmcoMTYpKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVuZGVyU3RhdGUpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydFNlZ21lbnRUYWJsZTIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBIVE1MX1RBQkxFX0JPRFlfTU9ERTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydFNlZ21lbnRUYWJsZUJvZHkpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIChyZW5kZXJTdGF0ZSA9IGlkLnRvU3RyaW5nKDE2KSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlbmRlclN0YXRlKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRTZWdtZW50VGFibGVCb2R5MilcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfUk9XX01PREU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRTZWdtZW50VGFibGVSb3cpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIChyZW5kZXJTdGF0ZSA9IGlkLnRvU3RyaW5nKDE2KSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlbmRlclN0YXRlKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRTZWdtZW50VGFibGVSb3cyKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgSFRNTF9DT0xHUk9VUF9NT0RFOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHN0YXJ0U2VnbWVudENvbEdyb3VwKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVuZGVyU3RhdGUuc2VnbWVudFByZWZpeCksXG4gICAgICAgICAgICAocmVuZGVyU3RhdGUgPSBpZC50b1N0cmluZygxNikpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZW5kZXJTdGF0ZSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHN0YXJ0U2VnbWVudENvbEdyb3VwMilcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IEVycm9yKFwiVW5rbm93biBpbnNlcnRpb24gbW9kZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgZm9ybWF0Q29udGV4dCkge1xuICAgICAgc3dpdGNoIChmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgY2FzZSBST09UX0hUTUxfTU9ERTpcbiAgICAgICAgY2FzZSBIVE1MX0hUTUxfTU9ERTpcbiAgICAgICAgY2FzZSBIVE1MX01PREU6XG4gICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uLnB1c2goZW5kU2VnbWVudEhUTUwpO1xuICAgICAgICBjYXNlIFNWR19NT0RFOlxuICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5wdXNoKGVuZFNlZ21lbnRTVkcpO1xuICAgICAgICBjYXNlIE1BVEhNTF9NT0RFOlxuICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5wdXNoKGVuZFNlZ21lbnRNYXRoTUwpO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfTU9ERTpcbiAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb24ucHVzaChlbmRTZWdtZW50VGFibGUpO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfQk9EWV9NT0RFOlxuICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5wdXNoKGVuZFNlZ21lbnRUYWJsZUJvZHkpO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfUk9XX01PREU6XG4gICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uLnB1c2goZW5kU2VnbWVudFRhYmxlUm93KTtcbiAgICAgICAgY2FzZSBIVE1MX0NPTEdST1VQX01PREU6XG4gICAgICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uLnB1c2goZW5kU2VnbWVudENvbEdyb3VwKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBFcnJvcihcIlVua25vd24gaW5zZXJ0aW9uIG1vZGUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoaW5wdXQpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpbnB1dCkucmVwbGFjZShcbiAgICAgICAgcmVnZXhGb3JKU1N0cmluZ3NJbkluc3RydWN0aW9uU2NyaXB0cyxcbiAgICAgICAgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgc3dpdGNoIChtYXRjaCkge1xuICAgICAgICAgICAgY2FzZSBcIjxcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHUwMDNjXCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjAyOFwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTIwMjhcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXHUyMDI5XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcIlxcXFx1MjAyOVwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMgZW5jb3VudGVyZWQgYSBtYXRjaCBpdCBkb2VzIG5vdCBrbm93IGhvdyB0byByZXBsYWNlLiB0aGlzIG1lYW5zIHRoZSBtYXRjaCByZWdleCBhbmQgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgYXJlIG5vIGxvbmdlciBpbiBzeW5jLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0XCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZUpTT2JqZWN0Rm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKGlucHV0KSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5wdXQpLnJlcGxhY2UoXG4gICAgICAgIHJlZ2V4Rm9ySlNTdHJpbmdzSW5TY3JpcHRzLFxuICAgICAgICBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgICAgICBzd2l0Y2ggKG1hdGNoKSB7XG4gICAgICAgICAgICBjYXNlIFwiJlwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTAwMjZcIjtcbiAgICAgICAgICAgIGNhc2UgXCI+XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcIlxcXFx1MDAzZVwiO1xuICAgICAgICAgICAgY2FzZSBcIjxcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHUwMDNjXCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjAyOFwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTIwMjhcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXHUyMDI5XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcIlxcXFx1MjAyOVwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyBlbmNvdW50ZXJlZCBhIG1hdGNoIGl0IGRvZXMgbm90IGtub3cgaG93IHRvIHJlcGxhY2UuIHRoaXMgbWVhbnMgdGhlIG1hdGNoIHJlZ2V4IGFuZCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBhcmUgbm8gbG9uZ2VyIGluIHN5bmMuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3RcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTdHlsZVRhZ3NMYXRlRm9yQm91bmRhcnkoc3R5bGVRdWV1ZSkge1xuICAgICAgdmFyIHJ1bGVzID0gc3R5bGVRdWV1ZS5ydWxlcyxcbiAgICAgICAgaHJlZnMgPSBzdHlsZVF1ZXVlLmhyZWZzO1xuICAgICAgMCA8IHJ1bGVzLmxlbmd0aCAmJlxuICAgICAgICAwID09PSBocmVmcy5sZW5ndGggJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIlJlYWN0IGV4cGVjdGVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGhyZWYgZm9yIGFuIGEgaG9pc3RhYmxlIHN0eWxlIGJ1dCBmb3VuZCBub25lLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICk7XG4gICAgICB2YXIgaSA9IDA7XG4gICAgICBpZiAoaHJlZnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucHVzaChsYXRlU3R5bGVUYWdSZXNvdXJjZU9wZW4xKTtcbiAgICAgICAgdGhpcy5wdXNoKHN0eWxlUXVldWUucHJlY2VkZW5jZSk7XG4gICAgICAgIGZvciAodGhpcy5wdXNoKGxhdGVTdHlsZVRhZ1Jlc291cmNlT3BlbjIpOyBpIDwgaHJlZnMubGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgICAgIHRoaXMucHVzaChocmVmc1tpXSksIHRoaXMucHVzaChzcGFjZVNlcGFyYXRvcik7XG4gICAgICAgIHRoaXMucHVzaChocmVmc1tpXSk7XG4gICAgICAgIHRoaXMucHVzaChsYXRlU3R5bGVUYWdSZXNvdXJjZU9wZW4zKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB0aGlzLnB1c2gocnVsZXNbaV0pO1xuICAgICAgICBkZXN0aW5hdGlvbkhhc0NhcGFjaXR5ID0gdGhpcy5wdXNoKGxhdGVTdHlsZVRhZ1RlbXBsYXRlQ2xvc2UpO1xuICAgICAgICBjdXJyZW50bHlSZW5kZXJpbmdCb3VuZGFyeUhhc1N0eWxlc1RvSG9pc3QgPSAhMDtcbiAgICAgICAgcnVsZXMubGVuZ3RoID0gMDtcbiAgICAgICAgaHJlZnMubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzU3R5bGVzVG9Ib2lzdChzdHlsZXNoZWV0KSB7XG4gICAgICByZXR1cm4gc3R5bGVzaGVldC5zdGF0ZSAhPT0gUFJFQU1CTEVcbiAgICAgICAgPyAoY3VycmVudGx5UmVuZGVyaW5nQm91bmRhcnlIYXNTdHlsZXNUb0hvaXN0ID0gITApXG4gICAgICAgIDogITE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlSG9pc3RhYmxlc0ZvckJvdW5kYXJ5KFxuICAgICAgZGVzdGluYXRpb24sXG4gICAgICBob2lzdGFibGVTdGF0ZSxcbiAgICAgIHJlbmRlclN0YXRlXG4gICAgKSB7XG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdCb3VuZGFyeUhhc1N0eWxlc1RvSG9pc3QgPSAhMTtcbiAgICAgIGRlc3RpbmF0aW9uSGFzQ2FwYWNpdHkgPSAhMDtcbiAgICAgIGhvaXN0YWJsZVN0YXRlLnN0eWxlcy5mb3JFYWNoKGZsdXNoU3R5bGVUYWdzTGF0ZUZvckJvdW5kYXJ5LCBkZXN0aW5hdGlvbik7XG4gICAgICBob2lzdGFibGVTdGF0ZS5zdHlsZXNoZWV0cy5mb3JFYWNoKGhhc1N0eWxlc1RvSG9pc3QpO1xuICAgICAgY3VycmVudGx5UmVuZGVyaW5nQm91bmRhcnlIYXNTdHlsZXNUb0hvaXN0ICYmXG4gICAgICAgIChyZW5kZXJTdGF0ZS5zdHlsZXNUb0hvaXN0ID0gITApO1xuICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uSGFzQ2FwYWNpdHk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoUmVzb3VyY2UocmVzb3VyY2UpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UubGVuZ3RoOyBpKyspIHRoaXMucHVzaChyZXNvdXJjZVtpXSk7XG4gICAgICByZXNvdXJjZS5sZW5ndGggPSAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmbHVzaFN0eWxlSW5QcmVhbWJsZShzdHlsZXNoZWV0KSB7XG4gICAgICBwdXNoTGlua0ltcGwoc3R5bGVzaGVldEZsdXNoaW5nUXVldWUsIHN0eWxlc2hlZXQucHJvcHMpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNoZWV0Rmx1c2hpbmdRdWV1ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgdGhpcy5wdXNoKHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlW2ldKTtcbiAgICAgIHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICBzdHlsZXNoZWV0LnN0YXRlID0gUFJFQU1CTEU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoU3R5bGVzSW5QcmVhbWJsZShzdHlsZVF1ZXVlKSB7XG4gICAgICB2YXIgaGFzU3R5bGVzaGVldHMgPSAwIDwgc3R5bGVRdWV1ZS5zaGVldHMuc2l6ZTtcbiAgICAgIHN0eWxlUXVldWUuc2hlZXRzLmZvckVhY2goZmx1c2hTdHlsZUluUHJlYW1ibGUsIHRoaXMpO1xuICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuY2xlYXIoKTtcbiAgICAgIHZhciBydWxlcyA9IHN0eWxlUXVldWUucnVsZXMsXG4gICAgICAgIGhyZWZzID0gc3R5bGVRdWV1ZS5ocmVmcztcbiAgICAgIGlmICghaGFzU3R5bGVzaGVldHMgfHwgaHJlZnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucHVzaChzdHlsZVRhZ1Jlc291cmNlT3BlbjEpO1xuICAgICAgICB0aGlzLnB1c2goc3R5bGVRdWV1ZS5wcmVjZWRlbmNlKTtcbiAgICAgICAgc3R5bGVRdWV1ZSA9IDA7XG4gICAgICAgIGlmIChocmVmcy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgdGhpcy5wdXNoKHN0eWxlVGFnUmVzb3VyY2VPcGVuMik7XG4gICAgICAgICAgICBzdHlsZVF1ZXVlIDwgaHJlZnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHN0eWxlUXVldWUrK1xuICAgICAgICAgIClcbiAgICAgICAgICAgIHRoaXMucHVzaChocmVmc1tzdHlsZVF1ZXVlXSksIHRoaXMucHVzaChzcGFjZVNlcGFyYXRvcik7XG4gICAgICAgICAgdGhpcy5wdXNoKGhyZWZzW3N0eWxlUXVldWVdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2goc3R5bGVUYWdSZXNvdXJjZU9wZW4zKTtcbiAgICAgICAgZm9yIChzdHlsZVF1ZXVlID0gMDsgc3R5bGVRdWV1ZSA8IHJ1bGVzLmxlbmd0aDsgc3R5bGVRdWV1ZSsrKVxuICAgICAgICAgIHRoaXMucHVzaChydWxlc1tzdHlsZVF1ZXVlXSk7XG4gICAgICAgIHRoaXMucHVzaChzdHlsZVRhZ1Jlc291cmNlQ2xvc2UpO1xuICAgICAgICBydWxlcy5sZW5ndGggPSAwO1xuICAgICAgICBocmVmcy5sZW5ndGggPSAwO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwcmVsb2FkTGF0ZVN0eWxlKHN0eWxlc2hlZXQpIHtcbiAgICAgIGlmIChzdHlsZXNoZWV0LnN0YXRlID09PSBQRU5ESU5HJDEpIHtcbiAgICAgICAgc3R5bGVzaGVldC5zdGF0ZSA9IFBSRUxPQURFRDtcbiAgICAgICAgdmFyIHByb3BzID0gc3R5bGVzaGVldC5wcm9wcztcbiAgICAgICAgcHVzaExpbmtJbXBsKHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlLCB7XG4gICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICBhczogXCJzdHlsZVwiLFxuICAgICAgICAgIGhyZWY6IHN0eWxlc2hlZXQucHJvcHMuaHJlZixcbiAgICAgICAgICBjcm9zc09yaWdpbjogcHJvcHMuY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgZmV0Y2hQcmlvcml0eTogcHJvcHMuZmV0Y2hQcmlvcml0eSxcbiAgICAgICAgICBpbnRlZ3JpdHk6IHByb3BzLmludGVncml0eSxcbiAgICAgICAgICBtZWRpYTogcHJvcHMubWVkaWEsXG4gICAgICAgICAgaHJlZkxhbmc6IHByb3BzLmhyZWZMYW5nLFxuICAgICAgICAgIHJlZmVycmVyUG9saWN5OiBwcm9wcy5yZWZlcnJlclBvbGljeVxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBzdHlsZXNoZWV0ID0gMDtcbiAgICAgICAgICBzdHlsZXNoZWV0IDwgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUubGVuZ3RoO1xuICAgICAgICAgIHN0eWxlc2hlZXQrK1xuICAgICAgICApXG4gICAgICAgICAgdGhpcy5wdXNoKHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlW3N0eWxlc2hlZXRdKTtcbiAgICAgICAgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJlbG9hZExhdGVTdHlsZXMoc3R5bGVRdWV1ZSkge1xuICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuZm9yRWFjaChwcmVsb2FkTGF0ZVN0eWxlLCB0aGlzKTtcbiAgICAgIHN0eWxlUXVldWUuc2hlZXRzLmNsZWFyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlU3R5bGVSZXNvdXJjZURlcGVuZGVuY2llc0luSlMoZGVzdGluYXRpb24sIGhvaXN0YWJsZVN0YXRlKSB7XG4gICAgICBkZXN0aW5hdGlvbi5wdXNoKGFycmF5Rmlyc3RPcGVuQnJhY2tldCk7XG4gICAgICB2YXIgbmV4dEFycmF5T3BlbkJyYWNrQ2h1bmsgPSBhcnJheUZpcnN0T3BlbkJyYWNrZXQ7XG4gICAgICBob2lzdGFibGVTdGF0ZS5zdHlsZXNoZWV0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICBpZiAocmVzb3VyY2Uuc3RhdGUgIT09IFBSRUFNQkxFKVxuICAgICAgICAgIGlmIChyZXNvdXJjZS5zdGF0ZSA9PT0gTEFURSlcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gobmV4dEFycmF5T3BlbkJyYWNrQ2h1bmspLFxuICAgICAgICAgICAgICAocmVzb3VyY2UgPSByZXNvdXJjZS5wcm9wcy5ocmVmKSxcbiAgICAgICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihyZXNvdXJjZSwgXCJocmVmXCIpLFxuICAgICAgICAgICAgICAocmVzb3VyY2UgPSBlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhcIlwiICsgcmVzb3VyY2UpKSxcbiAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChyZXNvdXJjZSksXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goYXJyYXlDbG9zZUJyYWNrZXQpLFxuICAgICAgICAgICAgICAobmV4dEFycmF5T3BlbkJyYWNrQ2h1bmsgPSBhcnJheVN1YnNlcXVlbnRPcGVuQnJhY2tldCk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKG5leHRBcnJheU9wZW5CcmFja0NodW5rKTtcbiAgICAgICAgICAgIHZhciBwcmVjZWRlbmNlID0gcmVzb3VyY2UucHJvcHNbXCJkYXRhLXByZWNlZGVuY2VcIl0sXG4gICAgICAgICAgICAgIHByb3BzID0gcmVzb3VyY2UucHJvcHMsXG4gICAgICAgICAgICAgIGNvZXJjZWRIcmVmID0gc2FuaXRpemVVUkwoXCJcIiArIHJlc291cmNlLnByb3BzLmhyZWYpO1xuICAgICAgICAgICAgY29lcmNlZEhyZWYgPSBlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhjb2VyY2VkSHJlZik7XG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGNvZXJjZWRIcmVmKTtcbiAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24ocHJlY2VkZW5jZSwgXCJwcmVjZWRlbmNlXCIpO1xuICAgICAgICAgICAgcHJlY2VkZW5jZSA9IFwiXCIgKyBwcmVjZWRlbmNlO1xuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChhcnJheUludGVyc3RpdGlhbCk7XG4gICAgICAgICAgICBwcmVjZWRlbmNlID0gZXNjYXBlSlNPYmplY3RGb3JJbnN0cnVjdGlvblNjcmlwdHMocHJlY2VkZW5jZSk7XG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHByZWNlZGVuY2UpO1xuICAgICAgICAgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcylcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpICYmXG4gICAgICAgICAgICAgICAgKChwcmVjZWRlbmNlID0gcHJvcHNbcHJvcEtleV0pLCBudWxsICE9IHByZWNlZGVuY2UpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJocmVmXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwicmVsXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwicHJlY2VkZW5jZVwiOlxuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhdGEtcHJlY2VkZW5jZVwiOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwibGluayBpcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB3cml0ZVN0eWxlUmVzb3VyY2VBdHRyaWJ1dGVJbkpTKFxuICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXksXG4gICAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goYXJyYXlDbG9zZUJyYWNrZXQpO1xuICAgICAgICAgICAgbmV4dEFycmF5T3BlbkJyYWNrQ2h1bmsgPSBhcnJheVN1YnNlcXVlbnRPcGVuQnJhY2tldDtcbiAgICAgICAgICAgIHJlc291cmNlLnN0YXRlID0gTEFURTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goYXJyYXlDbG9zZUJyYWNrZXQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3cml0ZVN0eWxlUmVzb3VyY2VBdHRyaWJ1dGVJbkpTKGRlc3RpbmF0aW9uLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICBjYXNlIFwiaW5uZXJIVE1MXCI6XG4gICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICBjYXNlIFwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCI6XG4gICAgICAgIGNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgXCJjbGFzc05hbWVcIjpcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gXCJjbGFzc1wiO1xuICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgIG5hbWUgPSBcIlwiICsgdmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJoaWRkZW5cIjpcbiAgICAgICAgICBpZiAoITEgPT09IHZhbHVlKSByZXR1cm47XG4gICAgICAgICAgbmFtZSA9IFwiXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzcmNcIjpcbiAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplVVJMKHZhbHVlKTtcbiAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCBhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgICBuYW1lID0gXCJcIiArIHZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICgyIDwgbmFtZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgKFwib1wiID09PSBuYW1lWzBdIHx8IFwiT1wiID09PSBuYW1lWzBdKSAmJlxuICAgICAgICAgICAgICAoXCJuXCIgPT09IG5hbWVbMV0gfHwgXCJOXCIgPT09IG5hbWVbMV0pKSB8fFxuICAgICAgICAgICAgIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgbmFtZSA9IFwiXCIgKyB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goYXJyYXlJbnRlcnN0aXRpYWwpO1xuICAgICAgYXR0cmlidXRlTmFtZSA9IGVzY2FwZUpTT2JqZWN0Rm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChhdHRyaWJ1dGVOYW1lKTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goYXJyYXlJbnRlcnN0aXRpYWwpO1xuICAgICAgYXR0cmlidXRlTmFtZSA9IGVzY2FwZUpTT2JqZWN0Rm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKG5hbWUpO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChhdHRyaWJ1dGVOYW1lKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlSG9pc3RhYmxlU3RhdGUoKSB7XG4gICAgICByZXR1cm4geyBzdHlsZXM6IG5ldyBTZXQoKSwgc3R5bGVzaGVldHM6IG5ldyBTZXQoKSB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmVsb2FkQm9vdHN0cmFwU2NyaXB0T3JNb2R1bGUoXG4gICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgaHJlZixcbiAgICAgIHByb3BzXG4gICAgKSB7XG4gICAgICAocmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYpIHx8XG4gICAgICAgIHJlc3VtYWJsZVN0YXRlLm1vZHVsZVNjcmlwdFJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShocmVmKSkgJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnSW50ZXJuYWwgUmVhY3QgRXJyb3I6IFJlYWN0IGV4cGVjdGVkIGJvb3RzdHJhcCBzY3JpcHQgb3IgbW9kdWxlIHdpdGggc3JjIFwiJXNcIiB0byBub3QgaGF2ZSBiZWVuIHByZWxvYWRlZCBhbHJlYWR5LiBwbGVhc2UgZmlsZSBhbiBpc3N1ZScsXG4gICAgICAgICAgaHJlZlxuICAgICAgICApO1xuICAgICAgcmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzW2hyZWZdID0gRVhJU1RTO1xuICAgICAgcmVzdW1hYmxlU3RhdGUubW9kdWxlU2NyaXB0UmVzb3VyY2VzW2hyZWZdID0gRVhJU1RTO1xuICAgICAgcmVzdW1hYmxlU3RhdGUgPSBbXTtcbiAgICAgIHB1c2hMaW5rSW1wbChyZXN1bWFibGVTdGF0ZSwgcHJvcHMpO1xuICAgICAgcmVuZGVyU3RhdGUuYm9vdHN0cmFwU2NyaXB0cy5hZGQocmVzdW1hYmxlU3RhdGUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZG9wdFByZWxvYWRDcmVkZW50aWFscyh0YXJnZXQsIHByZWxvYWRTdGF0ZSkge1xuICAgICAgbnVsbCA9PSB0YXJnZXQuY3Jvc3NPcmlnaW4gJiYgKHRhcmdldC5jcm9zc09yaWdpbiA9IHByZWxvYWRTdGF0ZVswXSk7XG4gICAgICBudWxsID09IHRhcmdldC5pbnRlZ3JpdHkgJiYgKHRhcmdldC5pbnRlZ3JpdHkgPSBwcmVsb2FkU3RhdGVbMV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRQcmVsb2FkQXNIZWFkZXIoaHJlZiwgYXMsIHBhcmFtcykge1xuICAgICAgaHJlZiA9IGVzY2FwZUhyZWZGb3JMaW5rSGVhZGVyVVJMQ29udGV4dChocmVmKTtcbiAgICAgIGFzID0gZXNjYXBlU3RyaW5nRm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0KGFzLCBcImFzXCIpO1xuICAgICAgYXMgPSBcIjxcIiArIGhyZWYgKyAnPjsgcmVsPXByZWxvYWQ7IGFzPVwiJyArIGFzICsgJ1wiJztcbiAgICAgIGZvciAodmFyIHBhcmFtTmFtZSBpbiBwYXJhbXMpXG4gICAgICAgIGhhc093blByb3BlcnR5LmNhbGwocGFyYW1zLCBwYXJhbU5hbWUpICYmXG4gICAgICAgICAgKChocmVmID0gcGFyYW1zW3BhcmFtTmFtZV0pLFxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmXG4gICAgICAgICAgICAoYXMgKz1cbiAgICAgICAgICAgICAgXCI7IFwiICtcbiAgICAgICAgICAgICAgcGFyYW1OYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAnPVwiJyArXG4gICAgICAgICAgICAgIGVzY2FwZVN0cmluZ0ZvckxpbmtIZWFkZXJRdW90ZWRQYXJhbVZhbHVlQ29udGV4dChcbiAgICAgICAgICAgICAgICBocmVmLFxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZVxuICAgICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgJ1wiJykpO1xuICAgICAgcmV0dXJuIGFzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVIcmVmRm9yTGlua0hlYWRlclVSTENvbnRleHQoaHJlZklucHV0KSB7XG4gICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKGhyZWZJbnB1dCwgXCJocmVmXCIpO1xuICAgICAgcmV0dXJuIChcIlwiICsgaHJlZklucHV0KS5yZXBsYWNlKFxuICAgICAgICByZWdleEZvckhyZWZJbkxpbmtIZWFkZXJVUkxDb250ZXh0LFxuICAgICAgICBlc2NhcGVIcmVmRm9yTGlua0hlYWRlclVSTENvbnRleHRSZXBsYWNlclxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlSHJlZkZvckxpbmtIZWFkZXJVUkxDb250ZXh0UmVwbGFjZXIobWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAobWF0Y2gpIHtcbiAgICAgICAgY2FzZSBcIjxcIjpcbiAgICAgICAgICByZXR1cm4gXCIlM0NcIjtcbiAgICAgICAgY2FzZSBcIj5cIjpcbiAgICAgICAgICByZXR1cm4gXCIlM0VcIjtcbiAgICAgICAgY2FzZSBcIlxcblwiOlxuICAgICAgICAgIHJldHVybiBcIiUwQVwiO1xuICAgICAgICBjYXNlIFwiXFxyXCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTBEXCI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcImVzY2FwZUxpbmtIcmVmRm9ySGVhZGVyQ29udGV4dFJlcGxhY2VyIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdFwiXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nRm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0KHZhbHVlLCBuYW1lKSB7XG4gICAgICB3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkgJiZcbiAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJUaGUgcHJvdmlkZWQgYCVzYCBvcHRpb24gaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuXCIsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0eXBlTmFtZSh2YWx1ZSlcbiAgICAgICAgKSxcbiAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSk7XG4gICAgICByZXR1cm4gKFwiXCIgKyB2YWx1ZSkucmVwbGFjZShcbiAgICAgICAgcmVnZXhGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHQsXG4gICAgICAgIGVzY2FwZVN0cmluZ0ZvckxpbmtIZWFkZXJRdW90ZWRQYXJhbVZhbHVlQ29udGV4dFJlcGxhY2VyXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHRSZXBsYWNlcihtYXRjaCkge1xuICAgICAgc3dpdGNoIChtYXRjaCkge1xuICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgcmV0dXJuIFwiJTIyXCI7XG4gICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTI3XCI7XG4gICAgICAgIGNhc2UgXCI7XCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTNCXCI7XG4gICAgICAgIGNhc2UgXCIsXCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTJDXCI7XG4gICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICByZXR1cm4gXCIlMEFcIjtcbiAgICAgICAgY2FzZSBcIlxcclwiOlxuICAgICAgICAgIHJldHVybiBcIiUwRFwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJlc2NhcGVTdHJpbmdGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHRSZXBsYWNlciBlbmNvdW50ZXJlZCBhIG1hdGNoIGl0IGRvZXMgbm90IGtub3cgaG93IHRvIHJlcGxhY2UuIHRoaXMgbWVhbnMgdGhlIG1hdGNoIHJlZ2V4IGFuZCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBhcmUgbm8gbG9uZ2VyIGluIHN5bmMuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3RcIlxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhvaXN0U3R5bGVRdWV1ZURlcGVuZGVuY3koc3R5bGVRdWV1ZSkge1xuICAgICAgdGhpcy5zdHlsZXMuYWRkKHN0eWxlUXVldWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBob2lzdFN0eWxlc2hlZXREZXBlbmRlbmN5KHN0eWxlc2hlZXQpIHtcbiAgICAgIHRoaXMuc3R5bGVzaGVldHMuYWRkKHN0eWxlc2hlZXQpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZW5kZXJTdGF0ZShyZXN1bWFibGVTdGF0ZSwgZ2VuZXJhdGVTdGF0aWNNYXJrdXApIHtcbiAgICAgIHZhciBpZFByZWZpeCA9IHJlc3VtYWJsZVN0YXRlLmlkUHJlZml4LFxuICAgICAgICBib290c3RyYXBDaHVua3MgPSBbXSxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0Q29udGVudCA9IHJlc3VtYWJsZVN0YXRlLmJvb3RzdHJhcFNjcmlwdENvbnRlbnQsXG4gICAgICAgIGJvb3RzdHJhcFNjcmlwdHMgPSByZXN1bWFibGVTdGF0ZS5ib290c3RyYXBTY3JpcHRzLFxuICAgICAgICBib290c3RyYXBNb2R1bGVzID0gcmVzdW1hYmxlU3RhdGUuYm9vdHN0cmFwTW9kdWxlcztcbiAgICAgIHZvaWQgMCAhPT0gYm9vdHN0cmFwU2NyaXB0Q29udGVudCAmJlxuICAgICAgICBib290c3RyYXBDaHVua3MucHVzaChcbiAgICAgICAgICBcIjxzY3JpcHQ+XCIsXG4gICAgICAgICAgZXNjYXBlRW50aXJlSW5saW5lU2NyaXB0Q29udGVudChib290c3RyYXBTY3JpcHRDb250ZW50KSxcbiAgICAgICAgICBcIlxceDNjL3NjcmlwdD5cIlxuICAgICAgICApO1xuICAgICAgaWRQcmVmaXggPSB7XG4gICAgICAgIHBsYWNlaG9sZGVyUHJlZml4OiBpZFByZWZpeCArIFwiUDpcIixcbiAgICAgICAgc2VnbWVudFByZWZpeDogaWRQcmVmaXggKyBcIlM6XCIsXG4gICAgICAgIGJvdW5kYXJ5UHJlZml4OiBpZFByZWZpeCArIFwiQjpcIixcbiAgICAgICAgc3RhcnRJbmxpbmVTY3JpcHQ6IFwiPHNjcmlwdD5cIixcbiAgICAgICAgaHRtbENodW5rczogbnVsbCxcbiAgICAgICAgaGVhZENodW5rczogbnVsbCxcbiAgICAgICAgZXh0ZXJuYWxSdW50aW1lU2NyaXB0OiBudWxsLFxuICAgICAgICBib290c3RyYXBDaHVua3M6IGJvb3RzdHJhcENodW5rcyxcbiAgICAgICAgaW1wb3J0TWFwQ2h1bmtzOiBbXSxcbiAgICAgICAgb25IZWFkZXJzOiB2b2lkIDAsXG4gICAgICAgIGhlYWRlcnM6IG51bGwsXG4gICAgICAgIHJlc2V0czoge1xuICAgICAgICAgIGZvbnQ6IHt9LFxuICAgICAgICAgIGRuczoge30sXG4gICAgICAgICAgY29ubmVjdDogeyBkZWZhdWx0OiB7fSwgYW5vbnltb3VzOiB7fSwgY3JlZGVudGlhbHM6IHt9IH0sXG4gICAgICAgICAgaW1hZ2U6IHt9LFxuICAgICAgICAgIHN0eWxlOiB7fVxuICAgICAgICB9LFxuICAgICAgICBjaGFyc2V0Q2h1bmtzOiBbXSxcbiAgICAgICAgdmlld3BvcnRDaHVua3M6IFtdLFxuICAgICAgICBob2lzdGFibGVDaHVua3M6IFtdLFxuICAgICAgICBwcmVjb25uZWN0czogbmV3IFNldCgpLFxuICAgICAgICBmb250UHJlbG9hZHM6IG5ldyBTZXQoKSxcbiAgICAgICAgaGlnaEltYWdlUHJlbG9hZHM6IG5ldyBTZXQoKSxcbiAgICAgICAgc3R5bGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGJvb3RzdHJhcFNjcmlwdHM6IG5ldyBTZXQoKSxcbiAgICAgICAgc2NyaXB0czogbmV3IFNldCgpLFxuICAgICAgICBidWxrUHJlbG9hZHM6IG5ldyBTZXQoKSxcbiAgICAgICAgcHJlbG9hZHM6IHtcbiAgICAgICAgICBpbWFnZXM6IG5ldyBNYXAoKSxcbiAgICAgICAgICBzdHlsZXNoZWV0czogbmV3IE1hcCgpLFxuICAgICAgICAgIHNjcmlwdHM6IG5ldyBNYXAoKSxcbiAgICAgICAgICBtb2R1bGVTY3JpcHRzOiBuZXcgTWFwKClcbiAgICAgICAgfSxcbiAgICAgICAgbm9uY2U6IHZvaWQgMCxcbiAgICAgICAgaG9pc3RhYmxlU3RhdGU6IG51bGwsXG4gICAgICAgIHN0eWxlc1RvSG9pc3Q6ICExXG4gICAgICB9O1xuICAgICAgaWYgKHZvaWQgMCAhPT0gYm9vdHN0cmFwU2NyaXB0cylcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50ID0gMDtcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50IDwgYm9vdHN0cmFwU2NyaXB0cy5sZW5ndGg7XG4gICAgICAgICAgYm9vdHN0cmFwU2NyaXB0Q29udGVudCsrXG4gICAgICAgICkge1xuICAgICAgICAgIHZhciBzY3JpcHRDb25maWcgPSBib290c3RyYXBTY3JpcHRzW2Jvb3RzdHJhcFNjcmlwdENvbnRlbnRdLFxuICAgICAgICAgICAgc3JjLFxuICAgICAgICAgICAgY3Jvc3NPcmlnaW4gPSB2b2lkIDAsXG4gICAgICAgICAgICBpbnRlZ3JpdHkgPSB2b2lkIDAsXG4gICAgICAgICAgICBwcm9wcyA9IHtcbiAgICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgICAgYXM6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IFwibG93XCIsXG4gICAgICAgICAgICAgIG5vbmNlOiB2b2lkIDBcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHNjcmlwdENvbmZpZ1xuICAgICAgICAgICAgPyAocHJvcHMuaHJlZiA9IHNyYyA9IHNjcmlwdENvbmZpZylcbiAgICAgICAgICAgIDogKChwcm9wcy5ocmVmID0gc3JjID0gc2NyaXB0Q29uZmlnLnNyYyksXG4gICAgICAgICAgICAgIChwcm9wcy5pbnRlZ3JpdHkgPSBpbnRlZ3JpdHkgPVxuICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzY3JpcHRDb25maWcuaW50ZWdyaXR5XG4gICAgICAgICAgICAgICAgICA/IHNjcmlwdENvbmZpZy5pbnRlZ3JpdHlcbiAgICAgICAgICAgICAgICAgIDogdm9pZCAwKSxcbiAgICAgICAgICAgICAgKHByb3BzLmNyb3NzT3JpZ2luID0gY3Jvc3NPcmlnaW4gPVxuICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzY3JpcHRDb25maWcgfHxcbiAgICAgICAgICAgICAgICBudWxsID09IHNjcmlwdENvbmZpZy5jcm9zc09yaWdpblxuICAgICAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgICAgIDogXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gc2NyaXB0Q29uZmlnLmNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiXCIpKTtcbiAgICAgICAgICBwcmVsb2FkQm9vdHN0cmFwU2NyaXB0T3JNb2R1bGUocmVzdW1hYmxlU3RhdGUsIGlkUHJlZml4LCBzcmMsIHByb3BzKTtcbiAgICAgICAgICBib290c3RyYXBDaHVua3MucHVzaCgnPHNjcmlwdCBzcmM9XCInLCBlc2NhcGVUZXh0Rm9yQnJvd3NlcihzcmMpKTtcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgaW50ZWdyaXR5ICYmXG4gICAgICAgICAgICBib290c3RyYXBDaHVua3MucHVzaChcbiAgICAgICAgICAgICAgJ1wiIGludGVncml0eT1cIicsXG4gICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKGludGVncml0eSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNyb3NzT3JpZ2luICYmXG4gICAgICAgICAgICBib290c3RyYXBDaHVua3MucHVzaChcbiAgICAgICAgICAgICAgJ1wiIGNyb3Nzb3JpZ2luPVwiJyxcbiAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIoY3Jvc3NPcmlnaW4pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGJvb3RzdHJhcENodW5rcy5wdXNoKCdcIiBhc3luYz1cIlwiPlxceDNjL3NjcmlwdD4nKTtcbiAgICAgICAgfVxuICAgICAgaWYgKHZvaWQgMCAhPT0gYm9vdHN0cmFwTW9kdWxlcylcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRzID0gMDtcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRzIDwgYm9vdHN0cmFwTW9kdWxlcy5sZW5ndGg7XG4gICAgICAgICAgYm9vdHN0cmFwU2NyaXB0cysrXG4gICAgICAgIClcbiAgICAgICAgICAoYm9vdHN0cmFwU2NyaXB0Q29udGVudCA9IGJvb3RzdHJhcE1vZHVsZXNbYm9vdHN0cmFwU2NyaXB0c10pLFxuICAgICAgICAgICAgKGNyb3NzT3JpZ2luID0gc3JjID0gdm9pZCAwKSxcbiAgICAgICAgICAgIChpbnRlZ3JpdHkgPSB7XG4gICAgICAgICAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IFwibG93XCIsXG4gICAgICAgICAgICAgIG5vbmNlOiB2b2lkIDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGJvb3RzdHJhcFNjcmlwdENvbnRlbnRcbiAgICAgICAgICAgICAgPyAoaW50ZWdyaXR5LmhyZWYgPSBzY3JpcHRDb25maWcgPSBib290c3RyYXBTY3JpcHRDb250ZW50KVxuICAgICAgICAgICAgICA6ICgoaW50ZWdyaXR5LmhyZWYgPSBzY3JpcHRDb25maWcgPSBib290c3RyYXBTY3JpcHRDb250ZW50LnNyYyksXG4gICAgICAgICAgICAgICAgKGludGVncml0eS5pbnRlZ3JpdHkgPSBjcm9zc09yaWdpbiA9XG4gICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgYm9vdHN0cmFwU2NyaXB0Q29udGVudC5pbnRlZ3JpdHlcbiAgICAgICAgICAgICAgICAgICAgPyBib290c3RyYXBTY3JpcHRDb250ZW50LmludGVncml0eVxuICAgICAgICAgICAgICAgICAgICA6IHZvaWQgMCksXG4gICAgICAgICAgICAgICAgKGludGVncml0eS5jcm9zc09yaWdpbiA9IHNyYyA9XG4gICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgYm9vdHN0cmFwU2NyaXB0Q29udGVudCB8fFxuICAgICAgICAgICAgICAgICAgbnVsbCA9PSBib290c3RyYXBTY3JpcHRDb250ZW50LmNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgICAgICAgIDogXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gYm9vdHN0cmFwU2NyaXB0Q29udGVudC5jcm9zc09yaWdpblxuICAgICAgICAgICAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJcIikpLFxuICAgICAgICAgICAgcHJlbG9hZEJvb3RzdHJhcFNjcmlwdE9yTW9kdWxlKFxuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgaWRQcmVmaXgsXG4gICAgICAgICAgICAgIHNjcmlwdENvbmZpZyxcbiAgICAgICAgICAgICAgaW50ZWdyaXR5XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYm9vdHN0cmFwQ2h1bmtzLnB1c2goXG4gICAgICAgICAgICAgICc8c2NyaXB0IHR5cGU9XCJtb2R1bGVcIiBzcmM9XCInLFxuICAgICAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3NlcihzY3JpcHRDb25maWcpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNyb3NzT3JpZ2luICYmXG4gICAgICAgICAgICAgIGJvb3RzdHJhcENodW5rcy5wdXNoKFxuICAgICAgICAgICAgICAgICdcIiBpbnRlZ3JpdHk9XCInLFxuICAgICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKGNyb3NzT3JpZ2luKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHNyYyAmJlxuICAgICAgICAgICAgICBib290c3RyYXBDaHVua3MucHVzaChcbiAgICAgICAgICAgICAgICAnXCIgY3Jvc3NvcmlnaW49XCInLFxuICAgICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHNyYylcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvb3RzdHJhcENodW5rcy5wdXNoKCdcIiBhc3luYz1cIlwiPlxceDNjL3NjcmlwdD4nKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBsYWNlaG9sZGVyUHJlZml4OiBpZFByZWZpeC5wbGFjZWhvbGRlclByZWZpeCxcbiAgICAgICAgc2VnbWVudFByZWZpeDogaWRQcmVmaXguc2VnbWVudFByZWZpeCxcbiAgICAgICAgYm91bmRhcnlQcmVmaXg6IGlkUHJlZml4LmJvdW5kYXJ5UHJlZml4LFxuICAgICAgICBzdGFydElubGluZVNjcmlwdDogaWRQcmVmaXguc3RhcnRJbmxpbmVTY3JpcHQsXG4gICAgICAgIGh0bWxDaHVua3M6IGlkUHJlZml4Lmh0bWxDaHVua3MsXG4gICAgICAgIGhlYWRDaHVua3M6IGlkUHJlZml4LmhlYWRDaHVua3MsXG4gICAgICAgIGV4dGVybmFsUnVudGltZVNjcmlwdDogaWRQcmVmaXguZXh0ZXJuYWxSdW50aW1lU2NyaXB0LFxuICAgICAgICBib290c3RyYXBDaHVua3M6IGlkUHJlZml4LmJvb3RzdHJhcENodW5rcyxcbiAgICAgICAgaW1wb3J0TWFwQ2h1bmtzOiBpZFByZWZpeC5pbXBvcnRNYXBDaHVua3MsXG4gICAgICAgIG9uSGVhZGVyczogaWRQcmVmaXgub25IZWFkZXJzLFxuICAgICAgICBoZWFkZXJzOiBpZFByZWZpeC5oZWFkZXJzLFxuICAgICAgICByZXNldHM6IGlkUHJlZml4LnJlc2V0cyxcbiAgICAgICAgY2hhcnNldENodW5rczogaWRQcmVmaXguY2hhcnNldENodW5rcyxcbiAgICAgICAgdmlld3BvcnRDaHVua3M6IGlkUHJlZml4LnZpZXdwb3J0Q2h1bmtzLFxuICAgICAgICBob2lzdGFibGVDaHVua3M6IGlkUHJlZml4LmhvaXN0YWJsZUNodW5rcyxcbiAgICAgICAgcHJlY29ubmVjdHM6IGlkUHJlZml4LnByZWNvbm5lY3RzLFxuICAgICAgICBmb250UHJlbG9hZHM6IGlkUHJlZml4LmZvbnRQcmVsb2FkcyxcbiAgICAgICAgaGlnaEltYWdlUHJlbG9hZHM6IGlkUHJlZml4LmhpZ2hJbWFnZVByZWxvYWRzLFxuICAgICAgICBzdHlsZXM6IGlkUHJlZml4LnN0eWxlcyxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0czogaWRQcmVmaXguYm9vdHN0cmFwU2NyaXB0cyxcbiAgICAgICAgc2NyaXB0czogaWRQcmVmaXguc2NyaXB0cyxcbiAgICAgICAgYnVsa1ByZWxvYWRzOiBpZFByZWZpeC5idWxrUHJlbG9hZHMsXG4gICAgICAgIHByZWxvYWRzOiBpZFByZWZpeC5wcmVsb2FkcyxcbiAgICAgICAgc3R5bGVzVG9Ib2lzdDogaWRQcmVmaXguc3R5bGVzVG9Ib2lzdCxcbiAgICAgICAgZ2VuZXJhdGVTdGF0aWNNYXJrdXA6IGdlbmVyYXRlU3RhdGljTWFya3VwXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoVGV4dEluc3RhbmNlKHRhcmdldCwgdGV4dCwgcmVuZGVyU3RhdGUsIHRleHRFbWJlZGRlZCkge1xuICAgICAgaWYgKHJlbmRlclN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwKVxuICAgICAgICByZXR1cm4gdGFyZ2V0LnB1c2goZXNjYXBlVGV4dEZvckJyb3dzZXIodGV4dCkpLCAhMTtcbiAgICAgIFwiXCIgPT09IHRleHRcbiAgICAgICAgPyAodGFyZ2V0ID0gdGV4dEVtYmVkZGVkKVxuICAgICAgICA6ICh0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0LnB1c2goXCJcXHgzYyEtLSAtLVxceDNlXCIpLFxuICAgICAgICAgIHRhcmdldC5wdXNoKGVzY2FwZVRleHRGb3JCcm93c2VyKHRleHQpKSxcbiAgICAgICAgICAodGFyZ2V0ID0gITApKTtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTZWdtZW50RmluYWxlKFxuICAgICAgdGFyZ2V0LFxuICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICBsYXN0UHVzaGVkVGV4dCxcbiAgICAgIHRleHRFbWJlZGRlZFxuICAgICkge1xuICAgICAgcmVuZGVyU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXAgfHxcbiAgICAgICAgKGxhc3RQdXNoZWRUZXh0ICYmIHRleHRFbWJlZGRlZCAmJiB0YXJnZXQucHVzaChcIlxceDNjIS0tIC0tXFx4M2VcIikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xuICAgICAgaWYgKG51bGwgPT0gdHlwZSkgcmV0dXJuIG51bGw7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgcmV0dXJuIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0VcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiB0eXBlO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJGcmFnbWVudFwiO1xuICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlBvcnRhbFwiO1xuICAgICAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiUHJvZmlsZXJcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN0cmljdE1vZGVcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN1c3BlbnNlXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlN1c3BlbnNlTGlzdFwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIChcIm51bWJlclwiID09PSB0eXBlb2YgdHlwZS50YWcgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuIFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0eXBlLiQkdHlwZW9mKVxuICAgICAgICApIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Qcm92aWRlclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAodHlwZS5fY29udGV4dC5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIikgKyBcIi5Db25zdW1lclwiO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHZhciBpbm5lclR5cGUgPSB0eXBlLnJlbmRlcjtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgdHlwZSB8fFxuICAgICAgICAgICAgICAoKHR5cGUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgXCJcIiksXG4gICAgICAgICAgICAgICh0eXBlID0gXCJcIiAhPT0gdHlwZSA/IFwiRm9yd2FyZFJlZihcIiArIHR5cGUgKyBcIilcIiA6IFwiRm9yd2FyZFJlZlwiKSk7XG4gICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbm5lclR5cGUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGwpLFxuICAgICAgICAgICAgICBudWxsICE9PSBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA/IGlubmVyVHlwZVxuICAgICAgICAgICAgICAgIDogZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgXCJNZW1vXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBpbm5lclR5cGUgPSB0eXBlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUoaW5uZXJUeXBlKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCkge1xuICAgICAgaWYgKHByZXYgIT09IG5leHQpIHtcbiAgICAgICAgcHJldi5jb250ZXh0Ll9jdXJyZW50VmFsdWUyID0gcHJldi5wYXJlbnRWYWx1ZTtcbiAgICAgICAgcHJldiA9IHByZXYucGFyZW50O1xuICAgICAgICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuICAgICAgICBpZiAobnVsbCA9PT0gcHJldikge1xuICAgICAgICAgIGlmIChudWxsICE9PSBwYXJlbnROZXh0KVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIHN0YWNrcyBtdXN0IHJlYWNoIHRoZSByb290IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG51bGwgPT09IHBhcmVudE5leHQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgXCJUaGUgc3RhY2tzIG11c3QgcmVhY2ggdGhlIHJvb3QgYXQgdGhlIHNhbWUgdGltZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwcmV2LCBwYXJlbnROZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBuZXh0LnZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwb3BBbGxQcmV2aW91cyhwcmV2KSB7XG4gICAgICBwcmV2LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBwcmV2LnBhcmVudFZhbHVlO1xuICAgICAgcHJldiA9IHByZXYucGFyZW50O1xuICAgICAgbnVsbCAhPT0gcHJldiAmJiBwb3BBbGxQcmV2aW91cyhwcmV2KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaEFsbE5leHQobmV4dCkge1xuICAgICAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcbiAgICAgIG51bGwgIT09IHBhcmVudE5leHQgJiYgcHVzaEFsbE5leHQocGFyZW50TmV4dCk7XG4gICAgICBuZXh0LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBuZXh0LnZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCkge1xuICAgICAgcHJldi5jb250ZXh0Ll9jdXJyZW50VmFsdWUyID0gcHJldi5wYXJlbnRWYWx1ZTtcbiAgICAgIHByZXYgPSBwcmV2LnBhcmVudDtcbiAgICAgIGlmIChudWxsID09PSBwcmV2KVxuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIlRoZSBkZXB0aCBtdXN0IGVxdWFsIGF0IGxlYXN0IGF0IHplcm8gYmVmb3JlIHJlYWNoaW5nIHRoZSByb290LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICk7XG4gICAgICBwcmV2LmRlcHRoID09PSBuZXh0LmRlcHRoXG4gICAgICAgID8gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dClcbiAgICAgICAgOiBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcE5leHRUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpIHtcbiAgICAgIHZhciBwYXJlbnROZXh0ID0gbmV4dC5wYXJlbnQ7XG4gICAgICBpZiAobnVsbCA9PT0gcGFyZW50TmV4dClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJUaGUgZGVwdGggbXVzdCBlcXVhbCBhdCBsZWFzdCBhdCB6ZXJvIGJlZm9yZSByZWFjaGluZyB0aGUgcm9vdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgcHJldi5kZXB0aCA9PT0gcGFyZW50TmV4dC5kZXB0aFxuICAgICAgICA/IHBvcFRvTmVhcmVzdENvbW1vbkFuY2VzdG9yKHByZXYsIHBhcmVudE5leHQpXG4gICAgICAgIDogcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgcGFyZW50TmV4dCk7XG4gICAgICBuZXh0LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBuZXh0LnZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzd2l0Y2hDb250ZXh0KG5ld1NuYXBzaG90KSB7XG4gICAgICB2YXIgcHJldiA9IGN1cnJlbnRBY3RpdmVTbmFwc2hvdDtcbiAgICAgIHByZXYgIT09IG5ld1NuYXBzaG90ICYmXG4gICAgICAgIChudWxsID09PSBwcmV2XG4gICAgICAgICAgPyBwdXNoQWxsTmV4dChuZXdTbmFwc2hvdClcbiAgICAgICAgICA6IG51bGwgPT09IG5ld1NuYXBzaG90XG4gICAgICAgICAgICA/IHBvcEFsbFByZXZpb3VzKHByZXYpXG4gICAgICAgICAgICA6IHByZXYuZGVwdGggPT09IG5ld1NuYXBzaG90LmRlcHRoXG4gICAgICAgICAgICAgID8gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV3U25hcHNob3QpXG4gICAgICAgICAgICAgIDogcHJldi5kZXB0aCA+IG5ld1NuYXBzaG90LmRlcHRoXG4gICAgICAgICAgICAgICAgPyBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocHJldiwgbmV3U25hcHNob3QpXG4gICAgICAgICAgICAgICAgOiBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBuZXdTbmFwc2hvdCksXG4gICAgICAgIChjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXdTbmFwc2hvdCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3YXJuT25JbnZhbGlkQ2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICAgIGlmIChudWxsICE9PSBjYWxsYmFjayAmJiBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjYWxsYmFjaykge1xuICAgICAgICB2YXIga2V5ID0gU3RyaW5nKGNhbGxiYWNrKTtcbiAgICAgICAgZGlkV2Fybk9uSW52YWxpZENhbGxiYWNrLmhhcyhrZXkpIHx8XG4gICAgICAgICAgKGRpZFdhcm5PbkludmFsaWRDYWxsYmFjay5hZGQoa2V5KSxcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJFeHBlY3RlZCB0aGUgbGFzdCBvcHRpb25hbCBgY2FsbGJhY2tgIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLlwiLFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICApKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAgICAgIHB1YmxpY0luc3RhbmNlID1cbiAgICAgICAgKChwdWJsaWNJbnN0YW5jZSA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yKSAmJlxuICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShwdWJsaWNJbnN0YW5jZSkpIHx8XG4gICAgICAgIFwiUmVhY3RDbGFzc1wiO1xuICAgICAgdmFyIHdhcm5pbmdLZXkgPSBwdWJsaWNJbnN0YW5jZSArIFwiLlwiICsgY2FsbGVyTmFtZTtcbiAgICAgIGRpZFdhcm5BYm91dE5vb3BVcGRhdGVGb3JDb21wb25lbnRbd2FybmluZ0tleV0gfHxcbiAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJDYW4gb25seSB1cGRhdGUgYSBtb3VudGluZyBjb21wb25lbnQuIFRoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91bnQoKSBvbiB0aGUgc2VydmVyLiBUaGlzIGlzIGEgbm8tb3AuXFxuXFxuUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LlwiLFxuICAgICAgICAgIGNhbGxlck5hbWUsXG4gICAgICAgICAgcHVibGljSW5zdGFuY2VcbiAgICAgICAgKSxcbiAgICAgICAgKGRpZFdhcm5BYm91dE5vb3BVcGRhdGVGb3JDb21wb25lbnRbd2FybmluZ0tleV0gPSAhMCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoVHJlZUNvbnRleHQoYmFzZUNvbnRleHQsIHRvdGFsQ2hpbGRyZW4sIGluZGV4KSB7XG4gICAgICB2YXIgYmFzZUlkV2l0aExlYWRpbmdCaXQgPSBiYXNlQ29udGV4dC5pZDtcbiAgICAgIGJhc2VDb250ZXh0ID0gYmFzZUNvbnRleHQub3ZlcmZsb3c7XG4gICAgICB2YXIgYmFzZUxlbmd0aCA9IDMyIC0gY2x6MzIoYmFzZUlkV2l0aExlYWRpbmdCaXQpIC0gMTtcbiAgICAgIGJhc2VJZFdpdGhMZWFkaW5nQml0ICY9IH4oMSA8PCBiYXNlTGVuZ3RoKTtcbiAgICAgIGluZGV4ICs9IDE7XG4gICAgICB2YXIgbGVuZ3RoID0gMzIgLSBjbHozMih0b3RhbENoaWxkcmVuKSArIGJhc2VMZW5ndGg7XG4gICAgICBpZiAoMzAgPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIG51bWJlck9mT3ZlcmZsb3dCaXRzID0gYmFzZUxlbmd0aCAtIChiYXNlTGVuZ3RoICUgNSk7XG4gICAgICAgIGxlbmd0aCA9IChcbiAgICAgICAgICBiYXNlSWRXaXRoTGVhZGluZ0JpdCAmXG4gICAgICAgICAgKCgxIDw8IG51bWJlck9mT3ZlcmZsb3dCaXRzKSAtIDEpXG4gICAgICAgICkudG9TdHJpbmcoMzIpO1xuICAgICAgICBiYXNlSWRXaXRoTGVhZGluZ0JpdCA+Pj0gbnVtYmVyT2ZPdmVyZmxvd0JpdHM7XG4gICAgICAgIGJhc2VMZW5ndGggLT0gbnVtYmVyT2ZPdmVyZmxvd0JpdHM7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6XG4gICAgICAgICAgICAoMSA8PCAoMzIgLSBjbHozMih0b3RhbENoaWxkcmVuKSArIGJhc2VMZW5ndGgpKSB8XG4gICAgICAgICAgICAoaW5kZXggPDwgYmFzZUxlbmd0aCkgfFxuICAgICAgICAgICAgYmFzZUlkV2l0aExlYWRpbmdCaXQsXG4gICAgICAgICAgb3ZlcmZsb3c6IGxlbmd0aCArIGJhc2VDb250ZXh0XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogKDEgPDwgbGVuZ3RoKSB8IChpbmRleCA8PCBiYXNlTGVuZ3RoKSB8IGJhc2VJZFdpdGhMZWFkaW5nQml0LFxuICAgICAgICBvdmVyZmxvdzogYmFzZUNvbnRleHRcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsejMyRmFsbGJhY2soeCkge1xuICAgICAgeCA+Pj49IDA7XG4gICAgICByZXR1cm4gMCA9PT0geCA/IDMyIDogKDMxIC0gKChsb2coeCkgLyBMTjIpIHwgMCkpIHwgMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbm9vcCQyKCkge31cbiAgICBmdW5jdGlvbiB0cmFja1VzZWRUaGVuYWJsZSh0aGVuYWJsZVN0YXRlLCB0aGVuYWJsZSwgaW5kZXgpIHtcbiAgICAgIGluZGV4ID0gdGhlbmFibGVTdGF0ZVtpbmRleF07XG4gICAgICB2b2lkIDAgPT09IGluZGV4XG4gICAgICAgID8gdGhlbmFibGVTdGF0ZS5wdXNoKHRoZW5hYmxlKVxuICAgICAgICA6IGluZGV4ICE9PSB0aGVuYWJsZSAmJlxuICAgICAgICAgICh0aGVuYWJsZS50aGVuKG5vb3AkMiwgbm9vcCQyKSwgKHRoZW5hYmxlID0gaW5kZXgpKTtcbiAgICAgIHN3aXRjaCAodGhlbmFibGUuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgICAgIHRocm93IHRoZW5hYmxlLnJlYXNvbjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgdGhlbmFibGUuc3RhdHVzXG4gICAgICAgICAgICA/IHRoZW5hYmxlLnRoZW4obm9vcCQyLCBub29wJDIpXG4gICAgICAgICAgICA6ICgodGhlbmFibGVTdGF0ZSA9IHRoZW5hYmxlKSxcbiAgICAgICAgICAgICAgKHRoZW5hYmxlU3RhdGUuc3RhdHVzID0gXCJwZW5kaW5nXCIpLFxuICAgICAgICAgICAgICB0aGVuYWJsZVN0YXRlLnRoZW4oXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKGZ1bGZpbGxlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXCJwZW5kaW5nXCIgPT09IHRoZW5hYmxlLnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZnVsZmlsbGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUuc3RhdHVzID0gXCJmdWxmaWxsZWRcIjtcbiAgICAgICAgICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUudmFsdWUgPSBmdWxmaWxsZWRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgaWYgKFwicGVuZGluZ1wiID09PSB0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdGVkVGhlbmFibGUucmVhc29uID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICBzd2l0Y2ggKHRoZW5hYmxlLnN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICAgICAgdGhyb3cgdGhlbmFibGUucmVhc29uO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdXNwZW5kZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgICAgIHRocm93IFN1c3BlbnNlRXhjZXB0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpIHtcbiAgICAgIGlmIChudWxsID09PSBzdXNwZW5kZWRUaGVuYWJsZSlcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJFeHBlY3RlZCBhIHN1c3BlbmRlZCB0aGVuYWJsZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICAgICAgKTtcbiAgICAgIHZhciB0aGVuYWJsZSA9IHN1c3BlbmRlZFRoZW5hYmxlO1xuICAgICAgc3VzcGVuZGVkVGhlbmFibGUgPSBudWxsO1xuICAgICAgcmV0dXJuIHRoZW5hYmxlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gICAgICByZXR1cm4gKHggPT09IHkgJiYgKDAgIT09IHggfHwgMSAvIHggPT09IDEgLyB5KSkgfHwgKHggIT09IHggJiYgeSAhPT0geSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKSB7XG4gICAgICBpZiAobnVsbCA9PT0gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KVxuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIkludmFsaWQgaG9vayBjYWxsLiBIb29rcyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIG9mIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gY29tcG9uZW50LiBUaGlzIGNvdWxkIGhhcHBlbiBmb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcgcmVhc29uczpcXG4xLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4yLiBZb3UgbWlnaHQgYmUgYnJlYWtpbmcgdGhlIFJ1bGVzIG9mIEhvb2tzXFxuMy4gWW91IG1pZ2h0IGhhdmUgbW9yZSB0aGFuIG9uZSBjb3B5IG9mIFJlYWN0IGluIHRoZSBzYW1lIGFwcFxcblNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL2ludmFsaWQtaG9vay1jYWxsIGZvciB0aXBzIGFib3V0IGhvdyB0byBkZWJ1ZyBhbmQgZml4IHRoaXMgcHJvYmxlbS5cIlxuICAgICAgICApO1xuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ICYmXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJEbyBub3QgY2FsbCBIb29rcyBpbnNpZGUgdXNlRWZmZWN0KC4uLiksIHVzZU1lbW8oLi4uKSwgb3Igb3RoZXIgYnVpbHQtaW4gSG9va3MuIFlvdSBjYW4gb25seSBjYWxsIEhvb2tzIGF0IHRoZSB0b3AgbGV2ZWwgb2YgeW91ciBSZWFjdCBmdW5jdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL3J1bGVzLW9mLWhvb2tzXCJcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUhvb2soKSB7XG4gICAgICBpZiAoMCA8IG51bWJlck9mUmVSZW5kZXJzKVxuICAgICAgICB0aHJvdyBFcnJvcihcIlJlbmRlcmVkIG1vcmUgaG9va3MgdGhhbiBkdXJpbmcgdGhlIHByZXZpb3VzIHJlbmRlclwiKTtcbiAgICAgIHJldHVybiB7IG1lbW9pemVkU3RhdGU6IG51bGwsIHF1ZXVlOiBudWxsLCBuZXh0OiBudWxsIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpIHtcbiAgICAgIG51bGwgPT09IHdvcmtJblByb2dyZXNzSG9va1xuICAgICAgICA/IG51bGwgPT09IGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rXG4gICAgICAgICAgPyAoKGlzUmVSZW5kZXIgPSAhMSksXG4gICAgICAgICAgICAoZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPSB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjcmVhdGVIb29rKCkpKVxuICAgICAgICAgIDogKChpc1JlUmVuZGVyID0gITApLCAod29ya0luUHJvZ3Jlc3NIb29rID0gZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2spKVxuICAgICAgICA6IG51bGwgPT09IHdvcmtJblByb2dyZXNzSG9vay5uZXh0XG4gICAgICAgICAgPyAoKGlzUmVSZW5kZXIgPSAhMSksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rLm5leHQgPSBjcmVhdGVIb29rKCkpKVxuICAgICAgICAgIDogKChpc1JlUmVuZGVyID0gITApLCAod29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rLm5leHQpKTtcbiAgICAgIHJldHVybiB3b3JrSW5Qcm9ncmVzc0hvb2s7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKSB7XG4gICAgICB2YXIgc3RhdGUgPSB0aGVuYWJsZVN0YXRlO1xuICAgICAgdGhlbmFibGVTdGF0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlc2V0SG9va3NTdGF0ZSgpIHtcbiAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9ICExO1xuICAgICAgY3VycmVudGx5UmVuZGVyaW5nS2V5UGF0aCA9XG4gICAgICAgIGN1cnJlbnRseVJlbmRlcmluZ1JlcXVlc3QgPVxuICAgICAgICBjdXJyZW50bHlSZW5kZXJpbmdUYXNrID1cbiAgICAgICAgY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50ID1cbiAgICAgICAgICBudWxsO1xuICAgICAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9ICExO1xuICAgICAgZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsO1xuICAgICAgbnVtYmVyT2ZSZVJlbmRlcnMgPSAwO1xuICAgICAgd29ya0luUHJvZ3Jlc3NIb29rID0gcmVuZGVyUGhhc2VVcGRhdGVzID0gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZENvbnRleHQoY29udGV4dCkge1xuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ICYmXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJDb250ZXh0IGNhbiBvbmx5IGJlIHJlYWQgd2hpbGUgUmVhY3QgaXMgcmVuZGVyaW5nLiBJbiBjbGFzc2VzLCB5b3UgY2FuIHJlYWQgaXQgaW4gdGhlIHJlbmRlciBtZXRob2Qgb3IgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLiBJbiBmdW5jdGlvbiBjb21wb25lbnRzLCB5b3UgY2FuIHJlYWQgaXQgZGlyZWN0bHkgaW4gdGhlIGZ1bmN0aW9uIGJvZHksIGJ1dCBub3QgaW5zaWRlIEhvb2tzIGxpa2UgdXNlUmVkdWNlcigpIG9yIHVzZU1lbW8oKS5cIlxuICAgICAgICApO1xuICAgICAgcmV0dXJuIGNvbnRleHQuX2N1cnJlbnRWYWx1ZTI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJhc2ljU3RhdGVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhY3Rpb24gPyBhY3Rpb24oc3RhdGUpIDogYWN0aW9uO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgICAgIHJlZHVjZXIgIT09IGJhc2ljU3RhdGVSZWR1Y2VyICYmIChjdXJyZW50SG9va05hbWVJbkRldiA9IFwidXNlUmVkdWNlclwiKTtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgICAgaWYgKGlzUmVSZW5kZXIpIHtcbiAgICAgICAgaW5pdCA9IHdvcmtJblByb2dyZXNzSG9vay5xdWV1ZTtcbiAgICAgICAgaW5pdGlhbEFyZyA9IGluaXQuZGlzcGF0Y2g7XG4gICAgICAgIGlmIChudWxsICE9PSByZW5kZXJQaGFzZVVwZGF0ZXMpIHtcbiAgICAgICAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQoaW5pdCk7XG4gICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSkge1xuICAgICAgICAgICAgcmVuZGVyUGhhc2VVcGRhdGVzLmRlbGV0ZShpbml0KTtcbiAgICAgICAgICAgIGluaXQgPSB3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgdmFyIGFjdGlvbiA9IGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUuYWN0aW9uO1xuICAgICAgICAgICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMDtcbiAgICAgICAgICAgICAgaW5pdCA9IHJlZHVjZXIoaW5pdCwgYWN0aW9uKTtcbiAgICAgICAgICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITE7XG4gICAgICAgICAgICAgIGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUgPSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQ7XG4gICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlKTtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gaW5pdDtcbiAgICAgICAgICAgIHJldHVybiBbaW5pdCwgaW5pdGlhbEFyZ107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIGluaXRpYWxBcmddO1xuICAgICAgfVxuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITA7XG4gICAgICByZWR1Y2VyID1cbiAgICAgICAgcmVkdWNlciA9PT0gYmFzaWNTdGF0ZVJlZHVjZXJcbiAgICAgICAgICA/IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluaXRpYWxBcmdcbiAgICAgICAgICAgID8gaW5pdGlhbEFyZygpXG4gICAgICAgICAgICA6IGluaXRpYWxBcmdcbiAgICAgICAgICA6IHZvaWQgMCAhPT0gaW5pdFxuICAgICAgICAgICAgPyBpbml0KGluaXRpYWxBcmcpXG4gICAgICAgICAgICA6IGluaXRpYWxBcmc7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gcmVkdWNlcjtcbiAgICAgIHJlZHVjZXIgPSB3b3JrSW5Qcm9ncmVzc0hvb2sucXVldWUgPSB7IGxhc3Q6IG51bGwsIGRpc3BhdGNoOiBudWxsIH07XG4gICAgICByZWR1Y2VyID0gcmVkdWNlci5kaXNwYXRjaCA9IGRpc3BhdGNoQWN0aW9uLmJpbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCxcbiAgICAgICAgcmVkdWNlclxuICAgICAgKTtcbiAgICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIHJlZHVjZXJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VNZW1vKG5leHRDcmVhdGUsIGRlcHMpIHtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgICAgZGVwcyA9IHZvaWQgMCA9PT0gZGVwcyA/IG51bGwgOiBkZXBzO1xuICAgICAgaWYgKG51bGwgIT09IHdvcmtJblByb2dyZXNzSG9vaykge1xuICAgICAgICB2YXIgcHJldlN0YXRlID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG4gICAgICAgIGlmIChudWxsICE9PSBwcmV2U3RhdGUgJiYgbnVsbCAhPT0gZGVwcykge1xuICAgICAgICAgIGE6IHtcbiAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBwcmV2U3RhdGVbMV07XG4gICAgICAgICAgICBpZiAobnVsbCA9PT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KVxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXMgcmVjZWl2ZWQgYSBmaW5hbCBhcmd1bWVudCBkdXJpbmcgdGhpcyByZW5kZXIsIGJ1dCBub3QgZHVyaW5nIHRoZSBwcmV2aW91cyByZW5kZXIuIEV2ZW4gdGhvdWdoIHRoZSBmaW5hbCBhcmd1bWVudCBpcyBvcHRpb25hbCwgaXRzIHR5cGUgY2Fubm90IGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMuXCIsXG4gICAgICAgICAgICAgICAgY3VycmVudEhvb2tOYW1lSW5EZXZcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITEpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGRlcHMubGVuZ3RoICE9PSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGZpbmFsIGFyZ3VtZW50IHBhc3NlZCB0byAlcyBjaGFuZ2VkIHNpemUgYmV0d2VlbiByZW5kZXJzLiBUaGUgb3JkZXIgYW5kIHNpemUgb2YgdGhpcyBhcnJheSBtdXN0IHJlbWFpbiBjb25zdGFudC5cXG5cXG5QcmV2aW91czogJXNcXG5JbmNvbWluZzogJXNcIixcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRIb29rTmFtZUluRGV2LFxuICAgICAgICAgICAgICAgICAgXCJbXCIgKyBkZXBzLmpvaW4oXCIsIFwiKSArIFwiXVwiLFxuICAgICAgICAgICAgICAgICAgXCJbXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQuam9pbihcIiwgXCIpICsgXCJdXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgICAgICBpIDwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0Lmxlbmd0aCAmJiBpIDwgZGVwcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoIW9iamVjdElzKGRlcHNbaV0sIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFtpXSkpIHtcbiAgICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSByZXR1cm4gcHJldlN0YXRlWzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMDtcbiAgICAgIG5leHRDcmVhdGUgPSBuZXh0Q3JlYXRlKCk7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gW25leHRDcmVhdGUsIGRlcHNdO1xuICAgICAgcmV0dXJuIG5leHRDcmVhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRpc3BhdGNoQWN0aW9uKGNvbXBvbmVudElkZW50aXR5LCBxdWV1ZSwgYWN0aW9uKSB7XG4gICAgICBpZiAoMjUgPD0gbnVtYmVyT2ZSZVJlbmRlcnMpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVG9vIG1hbnkgcmUtcmVuZGVycy4gUmVhY3QgbGltaXRzIHRoZSBudW1iZXIgb2YgcmVuZGVycyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3AuXCJcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb21wb25lbnRJZGVudGl0eSA9PT0gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKChkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gITApLFxuICAgICAgICAgIChjb21wb25lbnRJZGVudGl0eSA9IHsgYWN0aW9uOiBhY3Rpb24sIG5leHQ6IG51bGwgfSksXG4gICAgICAgICAgbnVsbCA9PT0gcmVuZGVyUGhhc2VVcGRhdGVzICYmIChyZW5kZXJQaGFzZVVwZGF0ZXMgPSBuZXcgTWFwKCkpLFxuICAgICAgICAgIChhY3Rpb24gPSByZW5kZXJQaGFzZVVwZGF0ZXMuZ2V0KHF1ZXVlKSksXG4gICAgICAgICAgdm9pZCAwID09PSBhY3Rpb24pXG4gICAgICAgIClcbiAgICAgICAgICByZW5kZXJQaGFzZVVwZGF0ZXMuc2V0KHF1ZXVlLCBjb21wb25lbnRJZGVudGl0eSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAocXVldWUgPSBhY3Rpb247IG51bGwgIT09IHF1ZXVlLm5leHQ7ICkgcXVldWUgPSBxdWV1ZS5uZXh0O1xuICAgICAgICAgIHF1ZXVlLm5leHQgPSBjb21wb25lbnRJZGVudGl0eTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFN0YXJ0VHJhbnNpdGlvbigpIHtcbiAgICAgIHRocm93IEVycm9yKFwic3RhcnRUcmFuc2l0aW9uIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFNldE9wdGltaXN0aWNTdGF0ZSgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiQ2Fubm90IHVwZGF0ZSBvcHRpbWlzdGljIHN0YXRlIHdoaWxlIHJlbmRlcmluZy5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVzZUFjdGlvblN0YXRlKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspIHtcbiAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHZhciBhY3Rpb25TdGF0ZUhvb2tJbmRleCA9IGFjdGlvblN0YXRlQ291bnRlcisrLFxuICAgICAgICByZXF1ZXN0ID0gY3VycmVudGx5UmVuZGVyaW5nUmVxdWVzdDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhY3Rpb24uJCRGT1JNX0FDVElPTikge1xuICAgICAgICB2YXIgbmV4dFBvc3RiYWNrU3RhdGVLZXkgPSBudWxsLFxuICAgICAgICAgIGNvbXBvbmVudEtleVBhdGggPSBjdXJyZW50bHlSZW5kZXJpbmdLZXlQYXRoO1xuICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5mb3JtU3RhdGU7XG4gICAgICAgIHZhciBpc1NpZ25hdHVyZUVxdWFsID0gYWN0aW9uLiQkSVNfU0lHTkFUVVJFX0VRVUFMO1xuICAgICAgICBpZiAobnVsbCAhPT0gcmVxdWVzdCAmJiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpc1NpZ25hdHVyZUVxdWFsKSB7XG4gICAgICAgICAgdmFyIHBvc3RiYWNrS2V5ID0gcmVxdWVzdFsxXTtcbiAgICAgICAgICBpc1NpZ25hdHVyZUVxdWFsLmNhbGwoYWN0aW9uLCByZXF1ZXN0WzJdLCByZXF1ZXN0WzNdKSAmJlxuICAgICAgICAgICAgKChuZXh0UG9zdGJhY2tTdGF0ZUtleSA9XG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gcGVybWFsaW5rXG4gICAgICAgICAgICAgICAgPyBcInBcIiArIHBlcm1hbGlua1xuICAgICAgICAgICAgICAgIDogXCJrXCIgK1xuICAgICAgICAgICAgICAgICAgbXVybXVyaGFzaDNfMzJfZ2MoXG4gICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRLZXlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uU3RhdGVIb29rSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgcG9zdGJhY2tLZXkgPT09IG5leHRQb3N0YmFja1N0YXRlS2V5ICYmXG4gICAgICAgICAgICAgICgoYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4ID0gYWN0aW9uU3RhdGVIb29rSW5kZXgpLFxuICAgICAgICAgICAgICAoaW5pdGlhbFN0YXRlID0gcmVxdWVzdFswXSkpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm91bmRBY3Rpb24gPSBhY3Rpb24uYmluZChudWxsLCBpbml0aWFsU3RhdGUpO1xuICAgICAgICBhY3Rpb24gPSBmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICAgIGJvdW5kQWN0aW9uKHBheWxvYWQpO1xuICAgICAgICB9O1xuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBib3VuZEFjdGlvbi4kJEZPUk1fQUNUSU9OICYmXG4gICAgICAgICAgKGFjdGlvbi4kJEZPUk1fQUNUSU9OID0gZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ID0gYm91bmRBY3Rpb24uJCRGT1JNX0FDVElPTihwcmVmaXgpO1xuICAgICAgICAgICAgdm9pZCAwICE9PSBwZXJtYWxpbmsgJiZcbiAgICAgICAgICAgICAgKGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24ocGVybWFsaW5rLCBcInRhcmdldFwiKSxcbiAgICAgICAgICAgICAgKHBlcm1hbGluayArPSBcIlwiKSxcbiAgICAgICAgICAgICAgKHByZWZpeC5hY3Rpb24gPSBwZXJtYWxpbmspKTtcbiAgICAgICAgICAgIHZhciBmb3JtRGF0YSA9IHByZWZpeC5kYXRhO1xuICAgICAgICAgICAgZm9ybURhdGEgJiZcbiAgICAgICAgICAgICAgKG51bGwgPT09IG5leHRQb3N0YmFja1N0YXRlS2V5ICYmXG4gICAgICAgICAgICAgICAgKG5leHRQb3N0YmFja1N0YXRlS2V5ID1cbiAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gcGVybWFsaW5rXG4gICAgICAgICAgICAgICAgICAgID8gXCJwXCIgKyBwZXJtYWxpbmtcbiAgICAgICAgICAgICAgICAgICAgOiBcImtcIiArXG4gICAgICAgICAgICAgICAgICAgICAgbXVybXVyaGFzaDNfMzJfZ2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEtleVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblN0YXRlSG9va0luZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiJEFDVElPTl9LRVlcIiwgbmV4dFBvc3RiYWNrU3RhdGVLZXkpKTtcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbaW5pdGlhbFN0YXRlLCBhY3Rpb24sICExXTtcbiAgICAgIH1cbiAgICAgIHZhciBfYm91bmRBY3Rpb24gPSBhY3Rpb24uYmluZChudWxsLCBpbml0aWFsU3RhdGUpO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICAgIF9ib3VuZEFjdGlvbihwYXlsb2FkKTtcbiAgICAgICAgfSxcbiAgICAgICAgITFcbiAgICAgIF07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVud3JhcFRoZW5hYmxlKHRoZW5hYmxlKSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGVuYWJsZUluZGV4Q291bnRlcjtcbiAgICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyICs9IDE7XG4gICAgICBudWxsID09PSB0aGVuYWJsZVN0YXRlICYmICh0aGVuYWJsZVN0YXRlID0gW10pO1xuICAgICAgcmV0dXJuIHRyYWNrVXNlZFRoZW5hYmxlKHRoZW5hYmxlU3RhdGUsIHRoZW5hYmxlLCBpbmRleCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVuc3VwcG9ydGVkUmVmcmVzaCgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiQ2FjaGUgY2Fubm90IGJlIHJlZnJlc2hlZCBkdXJpbmcgc2VydmVyIHJlbmRlcmluZy5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vb3AkMSgpIHt9XG4gICAgZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuICAgIGZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICAgICAgaWYgKDAgPT09IGRpc2FibGVkRGVwdGgpIHtcbiAgICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7XG4gICAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgICB3cml0YWJsZTogITBcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZGlzYWJsZWREZXB0aCsrO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gICAgICBkaXNhYmxlZERlcHRoLS07XG4gICAgICBpZiAoMCA9PT0gZGlzYWJsZWREZXB0aCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB7IGNvbmZpZ3VyYWJsZTogITAsIGVudW1lcmFibGU6ICEwLCB3cml0YWJsZTogITAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkxvZyB9KSxcbiAgICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2SW5mbyB9KSxcbiAgICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2V2FybiB9KSxcbiAgICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkVycm9yIH0pLFxuICAgICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2R3JvdXAgfSksXG4gICAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZCB9KSxcbiAgICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkdyb3VwRW5kIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgMCA+IGRpc2FibGVkRGVwdGggJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcImRpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBwcmVmaXgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgICAgcHJlZml4ID0gKG1hdGNoICYmIG1hdGNoWzFdKSB8fCBcIlwiO1xuICAgICAgICAgIHN1ZmZpeCA9XG4gICAgICAgICAgICAtMSA8IHguc3RhY2suaW5kZXhPZihcIlxcbiAgICBhdFwiKVxuICAgICAgICAgICAgICA/IFwiICg8YW5vbnltb3VzPilcIlxuICAgICAgICAgICAgICA6IC0xIDwgeC5zdGFjay5pbmRleE9mKFwiQFwiKVxuICAgICAgICAgICAgICAgID8gXCJAdW5rbm93bjowOjBcIlxuICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgfVxuICAgICAgcmV0dXJuIFwiXFxuXCIgKyBwcmVmaXggKyBuYW1lICsgc3VmZml4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgICAgIGlmICghZm4gfHwgcmVlbnRyeSkgcmV0dXJuIFwiXCI7XG4gICAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG4gICAgICBpZiAodm9pZCAwICE9PSBmcmFtZSkgcmV0dXJuIGZyYW1lO1xuICAgICAgcmVlbnRyeSA9ICEwO1xuICAgICAgZnJhbWUgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdm9pZCAwO1xuICAgICAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlciA9IG51bGw7XG4gICAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5IO1xuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IG51bGw7XG4gICAgICBkaXNhYmxlTG9ncygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIFJ1bkluUm9vdEZyYW1lID0ge1xuICAgICAgICAgIERldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgXCJwcm9wc1wiLCB7XG4gICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSB4O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHgkMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDEpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSB4JDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChGYWtlID0gZm4oKSkgJiZcbiAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIEZha2UuY2F0Y2ggJiZcbiAgICAgICAgICAgICAgICAgIEZha2UuY2F0Y2goZnVuY3Rpb24gKCkge30pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzYW1wbGUuc3RhY2spXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdC5kaXNwbGF5TmFtZSA9XG4gICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIjtcbiAgICAgICAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFxuICAgICAgICAgIFwibmFtZVwiXG4gICAgICAgICk7XG4gICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci5jb25maWd1cmFibGUgJiZcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXG4gICAgICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgICAgIHsgdmFsdWU6IFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCIgfVxuICAgICAgICAgICk7XG4gICAgICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPVxuICAgICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksXG4gICAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgICAgY29udHJvbFN0YWNrID0gX1J1bkluUm9vdEZyYW1lJERldGVyWzFdO1xuICAgICAgICBpZiAoc2FtcGxlU3RhY2sgJiYgY29udHJvbFN0YWNrKSB7XG4gICAgICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlU3RhY2suc3BsaXQoXCJcXG5cIiksXG4gICAgICAgICAgICBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IG5hbWVQcm9wRGVzY3JpcHRvciA9IDA7XG4gICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPCBzYW1wbGVMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgKVxuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yKys7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA8IGNvbnRyb2xMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFjb250cm9sTGluZXNbX1J1bkluUm9vdEZyYW1lJERldGVyXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIClcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlcisrO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA9PT0gc2FtcGxlTGluZXMubGVuZ3RoIHx8XG4gICAgICAgICAgICBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPT09IGNvbnRyb2xMaW5lcy5sZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgICAgICAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlciAmJlxuICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgIGNvbnRyb2xMaW5lc1tfUnVuSW5Sb290RnJhbWUkRGV0ZXJdO1xuXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlci0tO1xuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJiAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlcjtcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci0tLCBfUnVuSW5Sb290RnJhbWUkRGV0ZXItLVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXSAhPT1cbiAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoMSAhPT0gbmFtZVByb3BEZXNjcmlwdG9yIHx8IDEgIT09IF9SdW5JblJvb3RGcmFtZSREZXRlcikge1xuICAgICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChuYW1lUHJvcERlc2NyaXB0b3ItLSxcbiAgICAgICAgICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyLS0sXG4gICAgICAgICAgICAgICAgICAgIDAgPiBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl0pXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgbmV3IFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBmbi5kaXNwbGF5TmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgIF9mcmFtZS5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgKF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKFwiPGFub255bW91cz5cIiwgZm4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoMSA8PSBuYW1lUHJvcERlc2NyaXB0b3IgJiYgMCA8PSBfUnVuSW5Sb290RnJhbWUkRGV0ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAocmVlbnRyeSA9ICExKSxcbiAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IHByZXZpb3VzRGlzcGF0Y2hlciksXG4gICAgICAgICAgcmVlbmFibGVMb2dzKCksXG4gICAgICAgICAgKEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnJhbWUpO1xuICAgICAgfVxuICAgICAgc2FtcGxlTGluZXMgPSAoc2FtcGxlTGluZXMgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiBcIlwiKVxuICAgICAgICA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHNhbXBsZUxpbmVzKVxuICAgICAgICA6IFwiXCI7XG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmbiAmJiBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc2FtcGxlTGluZXMpO1xuICAgICAgcmV0dXJuIHNhbXBsZUxpbmVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZUNvbXBvbmVudFN0YWNrQnlUeXBlKHR5cGUpIHtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHJldHVybiB0eXBlLnByb3RvdHlwZSAmJiB0eXBlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50XG4gICAgICAgICAgPyAoKHR5cGUgPSBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsICEwKSksIHR5cGUpXG4gICAgICAgICAgOiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsICExKTtcbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSAmJiBudWxsICE9PSB0eXBlKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyLCAhMSk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSh0eXBlLnR5cGUsICExKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZSxcbiAgICAgICAgICAgICAgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgICBsYXp5Q29tcG9uZW50ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHR5cGUgPSBsYXp5Q29tcG9uZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJMYXp5XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50U3RhY2tCeVR5cGUodHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlLm5hbWUpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChwYXlsb2FkID0gdHlwZS5lbnYpLFxuICAgICAgICAgICAgZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXG4gICAgICAgICAgICAgIHR5cGUubmFtZSArIChwYXlsb2FkID8gXCIgW1wiICsgcGF5bG9hZCArIFwiXVwiIDogXCJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlTGlzdFwiKTtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFN0YWNrQnlDb21wb25lbnRTdGFja05vZGUoY29tcG9uZW50U3RhY2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gXCJcIjtcbiAgICAgICAgZG9cbiAgICAgICAgICAoaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudFN0YWNrQnlUeXBlKGNvbXBvbmVudFN0YWNrLnR5cGUpKSxcbiAgICAgICAgICAgIChjb21wb25lbnRTdGFjayA9IGNvbXBvbmVudFN0YWNrLnBhcmVudCk7XG4gICAgICAgIHdoaWxlIChjb21wb25lbnRTdGFjayk7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICByZXR1cm4gXCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIiArIHgubWVzc2FnZSArIFwiXFxuXCIgKyB4LnN0YWNrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycm9yKSB7XG4gICAgICBpZiAoXG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlcnJvciAmJlxuICAgICAgICBudWxsICE9PSBlcnJvciAmJlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3IuZW52aXJvbm1lbnROYW1lXG4gICAgICApIHtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGVycm9yLmVudmlyb25tZW50TmFtZTtcbiAgICAgICAgZXJyb3IgPSBbZXJyb3JdLnNsaWNlKDApO1xuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3JbMF1cbiAgICAgICAgICA/IGVycm9yLnNwbGljZShcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgXCJbJXNdIFwiICsgZXJyb3JbMF0sXG4gICAgICAgICAgICAgIFwiIFwiICsgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ICsgXCIgXCJcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGVycm9yLnNwbGljZSgwLCAwLCBcIlslc10gXCIsIFwiIFwiICsgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ICsgXCIgXCIpO1xuICAgICAgICBlcnJvci51bnNoaWZ0KGNvbnNvbGUpO1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBiaW5kLmFwcGx5KGNvbnNvbGUuZXJyb3IsIGVycm9yKTtcbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KCk7XG4gICAgICB9IGVsc2UgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbm9vcCgpIHt9XG4gICAgZnVuY3Rpb24gUmVxdWVzdEluc3RhbmNlKFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICByZW5kZXJTdGF0ZSxcbiAgICAgIHJvb3RGb3JtYXRDb250ZXh0LFxuICAgICAgcHJvZ3Jlc3NpdmVDaHVua1NpemUsXG4gICAgICBvbkVycm9yLFxuICAgICAgb25BbGxSZWFkeSxcbiAgICAgIG9uU2hlbGxSZWFkeSxcbiAgICAgIG9uU2hlbGxFcnJvcixcbiAgICAgIG9uRmF0YWxFcnJvcixcbiAgICAgIG9uUG9zdHBvbmUsXG4gICAgICBmb3JtU3RhdGVcbiAgICApIHtcbiAgICAgIHZhciBhYm9ydFNldCA9IG5ldyBTZXQoKTtcbiAgICAgIHRoaXMuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgdGhpcy5mbHVzaFNjaGVkdWxlZCA9ICExO1xuICAgICAgdGhpcy5yZXN1bWFibGVTdGF0ZSA9IHJlc3VtYWJsZVN0YXRlO1xuICAgICAgdGhpcy5yZW5kZXJTdGF0ZSA9IHJlbmRlclN0YXRlO1xuICAgICAgdGhpcy5yb290Rm9ybWF0Q29udGV4dCA9IHJvb3RGb3JtYXRDb250ZXh0O1xuICAgICAgdGhpcy5wcm9ncmVzc2l2ZUNodW5rU2l6ZSA9XG4gICAgICAgIHZvaWQgMCA9PT0gcHJvZ3Jlc3NpdmVDaHVua1NpemUgPyAxMjgwMCA6IHByb2dyZXNzaXZlQ2h1bmtTaXplO1xuICAgICAgdGhpcy5zdGF0dXMgPSAxMDtcbiAgICAgIHRoaXMuZmF0YWxFcnJvciA9IG51bGw7XG4gICAgICB0aGlzLnBlbmRpbmdSb290VGFza3MgPSB0aGlzLmFsbFBlbmRpbmdUYXNrcyA9IHRoaXMubmV4dFNlZ21lbnRJZCA9IDA7XG4gICAgICB0aGlzLmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gbnVsbDtcbiAgICAgIHRoaXMuYWJvcnRhYmxlVGFza3MgPSBhYm9ydFNldDtcbiAgICAgIHRoaXMucGluZ2VkVGFza3MgPSBbXTtcbiAgICAgIHRoaXMuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzID0gW107XG4gICAgICB0aGlzLmNvbXBsZXRlZEJvdW5kYXJpZXMgPSBbXTtcbiAgICAgIHRoaXMucGFydGlhbEJvdW5kYXJpZXMgPSBbXTtcbiAgICAgIHRoaXMudHJhY2tlZFBvc3Rwb25lcyA9IG51bGw7XG4gICAgICB0aGlzLm9uRXJyb3IgPSB2b2lkIDAgPT09IG9uRXJyb3IgPyBkZWZhdWx0RXJyb3JIYW5kbGVyIDogb25FcnJvcjtcbiAgICAgIHRoaXMub25Qb3N0cG9uZSA9IHZvaWQgMCA9PT0gb25Qb3N0cG9uZSA/IG5vb3AgOiBvblBvc3Rwb25lO1xuICAgICAgdGhpcy5vbkFsbFJlYWR5ID0gdm9pZCAwID09PSBvbkFsbFJlYWR5ID8gbm9vcCA6IG9uQWxsUmVhZHk7XG4gICAgICB0aGlzLm9uU2hlbGxSZWFkeSA9IHZvaWQgMCA9PT0gb25TaGVsbFJlYWR5ID8gbm9vcCA6IG9uU2hlbGxSZWFkeTtcbiAgICAgIHRoaXMub25TaGVsbEVycm9yID0gdm9pZCAwID09PSBvblNoZWxsRXJyb3IgPyBub29wIDogb25TaGVsbEVycm9yO1xuICAgICAgdGhpcy5vbkZhdGFsRXJyb3IgPSB2b2lkIDAgPT09IG9uRmF0YWxFcnJvciA/IG5vb3AgOiBvbkZhdGFsRXJyb3I7XG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IHZvaWQgMCA9PT0gZm9ybVN0YXRlID8gbnVsbCA6IGZvcm1TdGF0ZTtcbiAgICAgIHRoaXMuZGlkV2FybkZvcktleSA9IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3QoXG4gICAgICBjaGlsZHJlbixcbiAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICByb290Rm9ybWF0Q29udGV4dCxcbiAgICAgIHByb2dyZXNzaXZlQ2h1bmtTaXplLFxuICAgICAgb25FcnJvcixcbiAgICAgIG9uQWxsUmVhZHksXG4gICAgICBvblNoZWxsUmVhZHksXG4gICAgICBvblNoZWxsRXJyb3IsXG4gICAgICBvbkZhdGFsRXJyb3IsXG4gICAgICBvblBvc3Rwb25lLFxuICAgICAgZm9ybVN0YXRlXG4gICAgKSB7XG4gICAgICByZXN1bWFibGVTdGF0ZSA9IG5ldyBSZXF1ZXN0SW5zdGFuY2UoXG4gICAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgICByZW5kZXJTdGF0ZSxcbiAgICAgICAgcm9vdEZvcm1hdENvbnRleHQsXG4gICAgICAgIHByb2dyZXNzaXZlQ2h1bmtTaXplLFxuICAgICAgICBvbkVycm9yLFxuICAgICAgICBvbkFsbFJlYWR5LFxuICAgICAgICBvblNoZWxsUmVhZHksXG4gICAgICAgIG9uU2hlbGxFcnJvcixcbiAgICAgICAgb25GYXRhbEVycm9yLFxuICAgICAgICBvblBvc3Rwb25lLFxuICAgICAgICBmb3JtU3RhdGVcbiAgICAgICk7XG4gICAgICByZW5kZXJTdGF0ZSA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KFxuICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgMCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgcm9vdEZvcm1hdENvbnRleHQsXG4gICAgICAgICExLFxuICAgICAgICAhMVxuICAgICAgKTtcbiAgICAgIHJlbmRlclN0YXRlLnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgIGNoaWxkcmVuID0gY3JlYXRlUmVuZGVyVGFzayhcbiAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgIG51bGwsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAtMSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHJlc3VtYWJsZVN0YXRlLmFib3J0YWJsZVRhc2tzLFxuICAgICAgICBudWxsLFxuICAgICAgICByb290Rm9ybWF0Q29udGV4dCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZW1wdHlUcmVlQ29udGV4dCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgITFcbiAgICAgICk7XG4gICAgICBwdXNoQ29tcG9uZW50U3RhY2soY2hpbGRyZW4pO1xuICAgICAgcmVzdW1hYmxlU3RhdGUucGluZ2VkVGFza3MucHVzaChjaGlsZHJlbik7XG4gICAgICByZXR1cm4gcmVzdW1hYmxlU3RhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBpbmdUYXNrKHJlcXVlc3QsIHRhc2spIHtcbiAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaCh0YXNrKTtcbiAgICAgIDEgPT09IHJlcXVlc3QucGluZ2VkVGFza3MubGVuZ3RoICYmXG4gICAgICAgICgocmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9IG51bGwgIT09IHJlcXVlc3QuZGVzdGluYXRpb24pLFxuICAgICAgICBwZXJmb3JtV29yayhyZXF1ZXN0KSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkocmVxdWVzdCwgZmFsbGJhY2tBYm9ydGFibGVUYXNrcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBQRU5ESU5HLFxuICAgICAgICByb290U2VnbWVudElEOiAtMSxcbiAgICAgICAgcGFyZW50Rmx1c2hlZDogITEsXG4gICAgICAgIHBlbmRpbmdUYXNrczogMCxcbiAgICAgICAgY29tcGxldGVkU2VnbWVudHM6IFtdLFxuICAgICAgICBieXRlU2l6ZTogMCxcbiAgICAgICAgZmFsbGJhY2tBYm9ydGFibGVUYXNrczogZmFsbGJhY2tBYm9ydGFibGVUYXNrcyxcbiAgICAgICAgZXJyb3JEaWdlc3Q6IG51bGwsXG4gICAgICAgIGNvbnRlbnRTdGF0ZTogY3JlYXRlSG9pc3RhYmxlU3RhdGUoKSxcbiAgICAgICAgZmFsbGJhY2tTdGF0ZTogY3JlYXRlSG9pc3RhYmxlU3RhdGUoKSxcbiAgICAgICAgdHJhY2tlZENvbnRlbnRLZXlQYXRoOiBudWxsLFxuICAgICAgICB0cmFja2VkRmFsbGJhY2tOb2RlOiBudWxsLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IG51bGwsXG4gICAgICAgIGVycm9yU3RhY2s6IG51bGwsXG4gICAgICAgIGVycm9yQ29tcG9uZW50U3RhY2s6IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclRhc2soXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGhlbmFibGVTdGF0ZSxcbiAgICAgIG5vZGUsXG4gICAgICBjaGlsZEluZGV4LFxuICAgICAgYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgYmxvY2tlZFNlZ21lbnQsXG4gICAgICBob2lzdGFibGVTdGF0ZSxcbiAgICAgIGFib3J0U2V0LFxuICAgICAga2V5UGF0aCxcbiAgICAgIGZvcm1hdENvbnRleHQsXG4gICAgICBjb250ZXh0LFxuICAgICAgdHJlZUNvbnRleHQsXG4gICAgICBjb21wb25lbnRTdGFjayxcbiAgICAgIGlzRmFsbGJhY2tcbiAgICApIHtcbiAgICAgIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzKys7XG4gICAgICBudWxsID09PSBibG9ja2VkQm91bmRhcnlcbiAgICAgICAgPyByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MrK1xuICAgICAgICA6IGJsb2NrZWRCb3VuZGFyeS5wZW5kaW5nVGFza3MrKztcbiAgICAgIHZhciB0YXNrID0ge1xuICAgICAgICByZXBsYXk6IG51bGwsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgIGNoaWxkSW5kZXg6IGNoaWxkSW5kZXgsXG4gICAgICAgIHBpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gcGluZ1Rhc2socmVxdWVzdCwgdGFzayk7XG4gICAgICAgIH0sXG4gICAgICAgIGJsb2NrZWRCb3VuZGFyeTogYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICBibG9ja2VkU2VnbWVudDogYmxvY2tlZFNlZ21lbnQsXG4gICAgICAgIGhvaXN0YWJsZVN0YXRlOiBob2lzdGFibGVTdGF0ZSxcbiAgICAgICAgYWJvcnRTZXQ6IGFib3J0U2V0LFxuICAgICAgICBrZXlQYXRoOiBrZXlQYXRoLFxuICAgICAgICBmb3JtYXRDb250ZXh0OiBmb3JtYXRDb250ZXh0LFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICB0cmVlQ29udGV4dDogdHJlZUNvbnRleHQsXG4gICAgICAgIGNvbXBvbmVudFN0YWNrOiBjb21wb25lbnRTdGFjayxcbiAgICAgICAgdGhlbmFibGVTdGF0ZTogdGhlbmFibGVTdGF0ZSxcbiAgICAgICAgaXNGYWxsYmFjazogaXNGYWxsYmFja1xuICAgICAgfTtcbiAgICAgIGFib3J0U2V0LmFkZCh0YXNrKTtcbiAgICAgIHJldHVybiB0YXNrO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXBsYXlUYXNrKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHRoZW5hYmxlU3RhdGUsXG4gICAgICByZXBsYXksXG4gICAgICBub2RlLFxuICAgICAgY2hpbGRJbmRleCxcbiAgICAgIGJsb2NrZWRCb3VuZGFyeSxcbiAgICAgIGhvaXN0YWJsZVN0YXRlLFxuICAgICAgYWJvcnRTZXQsXG4gICAgICBrZXlQYXRoLFxuICAgICAgZm9ybWF0Q29udGV4dCxcbiAgICAgIGNvbnRleHQsXG4gICAgICB0cmVlQ29udGV4dCxcbiAgICAgIGNvbXBvbmVudFN0YWNrLFxuICAgICAgaXNGYWxsYmFja1xuICAgICkge1xuICAgICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MrKztcbiAgICAgIG51bGwgPT09IGJsb2NrZWRCb3VuZGFyeVxuICAgICAgICA/IHJlcXVlc3QucGVuZGluZ1Jvb3RUYXNrcysrXG4gICAgICAgIDogYmxvY2tlZEJvdW5kYXJ5LnBlbmRpbmdUYXNrcysrO1xuICAgICAgcmVwbGF5LnBlbmRpbmdUYXNrcysrO1xuICAgICAgdmFyIHRhc2sgPSB7XG4gICAgICAgIHJlcGxheTogcmVwbGF5LFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBjaGlsZEluZGV4OiBjaGlsZEluZGV4LFxuICAgICAgICBwaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHBpbmdUYXNrKHJlcXVlc3QsIHRhc2spO1xuICAgICAgICB9LFxuICAgICAgICBibG9ja2VkQm91bmRhcnk6IGJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgYmxvY2tlZFNlZ21lbnQ6IG51bGwsXG4gICAgICAgIGhvaXN0YWJsZVN0YXRlOiBob2lzdGFibGVTdGF0ZSxcbiAgICAgICAgYWJvcnRTZXQ6IGFib3J0U2V0LFxuICAgICAgICBrZXlQYXRoOiBrZXlQYXRoLFxuICAgICAgICBmb3JtYXRDb250ZXh0OiBmb3JtYXRDb250ZXh0LFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICB0cmVlQ29udGV4dDogdHJlZUNvbnRleHQsXG4gICAgICAgIGNvbXBvbmVudFN0YWNrOiBjb21wb25lbnRTdGFjayxcbiAgICAgICAgdGhlbmFibGVTdGF0ZTogdGhlbmFibGVTdGF0ZSxcbiAgICAgICAgaXNGYWxsYmFjazogaXNGYWxsYmFja1xuICAgICAgfTtcbiAgICAgIGFib3J0U2V0LmFkZCh0YXNrKTtcbiAgICAgIHJldHVybiB0YXNrO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBpbmRleCxcbiAgICAgIGJvdW5kYXJ5LFxuICAgICAgcGFyZW50Rm9ybWF0Q29udGV4dCxcbiAgICAgIGxhc3RQdXNoZWRUZXh0LFxuICAgICAgdGV4dEVtYmVkZGVkXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IFBFTkRJTkcsXG4gICAgICAgIGlkOiAtMSxcbiAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICBwYXJlbnRGbHVzaGVkOiAhMSxcbiAgICAgICAgY2h1bmtzOiBbXSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICBwYXJlbnRGb3JtYXRDb250ZXh0OiBwYXJlbnRGb3JtYXRDb250ZXh0LFxuICAgICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICAgIGxhc3RQdXNoZWRUZXh0OiBsYXN0UHVzaGVkVGV4dCxcbiAgICAgICAgdGV4dEVtYmVkZGVkOiB0ZXh0RW1iZWRkZWRcbiAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRTdGFja0luREVWKCkge1xuICAgICAgcmV0dXJuIG51bGwgPT09IGN1cnJlbnRUYXNrSW5ERVYgfHxcbiAgICAgICAgbnVsbCA9PT0gY3VycmVudFRhc2tJbkRFVi5jb21wb25lbnRTdGFja1xuICAgICAgICA/IFwiXCJcbiAgICAgICAgOiBnZXRTdGFja0J5Q29tcG9uZW50U3RhY2tOb2RlKGN1cnJlbnRUYXNrSW5ERVYuY29tcG9uZW50U3RhY2spO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoU2VydmVyQ29tcG9uZW50U3RhY2sodGFzaywgZGVidWdJbmZvKSB7XG4gICAgICBpZiAobnVsbCAhPSBkZWJ1Z0luZm8pXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVidWdJbmZvLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNvbXBvbmVudEluZm8gPSBkZWJ1Z0luZm9baV07XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNvbXBvbmVudEluZm8ubmFtZSAmJlxuICAgICAgICAgICAgKHRhc2suY29tcG9uZW50U3RhY2sgPSB7XG4gICAgICAgICAgICAgIHBhcmVudDogdGFzay5jb21wb25lbnRTdGFjayxcbiAgICAgICAgICAgICAgdHlwZTogY29tcG9uZW50SW5mbyxcbiAgICAgICAgICAgICAgb3duZXI6IGNvbXBvbmVudEluZm8ub3duZXIsXG4gICAgICAgICAgICAgIHN0YWNrOiBudWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoQ29tcG9uZW50U3RhY2sodGFzaykge1xuICAgICAgdmFyIG5vZGUgPSB0YXNrLm5vZGU7XG4gICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiYgbnVsbCAhPT0gbm9kZSlcbiAgICAgICAgc3dpdGNoIChub2RlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgICB2YXIgdHlwZSA9IG5vZGUudHlwZSxcbiAgICAgICAgICAgICAgb3duZXIgPSBub2RlLl9vd25lcjtcbiAgICAgICAgICAgIHB1c2hTZXJ2ZXJDb21wb25lbnRTdGFjayh0YXNrLCBub2RlLl9kZWJ1Z0luZm8pO1xuICAgICAgICAgICAgdGFzay5jb21wb25lbnRTdGFjayA9IHtcbiAgICAgICAgICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICBvd25lcjogb3duZXIsXG4gICAgICAgICAgICAgIHN0YWNrOiBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICBwdXNoU2VydmVyQ29tcG9uZW50U3RhY2sodGFzaywgbm9kZS5fZGVidWdJbmZvKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBub2RlLnRoZW4gJiZcbiAgICAgICAgICAgICAgcHVzaFNlcnZlckNvbXBvbmVudFN0YWNrKHRhc2ssIG5vZGUuX2RlYnVnSW5mbyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VGhyb3duSW5mbyhub2RlKSB7XG4gICAgICB2YXIgZXJyb3JJbmZvID0ge307XG4gICAgICBub2RlICYmXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvckluZm8sIFwiY29tcG9uZW50U3RhY2tcIiwge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogITAsXG4gICAgICAgICAgZW51bWVyYWJsZTogITAsXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgc3RhY2sgPSBnZXRTdGFja0J5Q29tcG9uZW50U3RhY2tOb2RlKG5vZGUpO1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9ySW5mbywgXCJjb21wb25lbnRTdGFja1wiLCB7XG4gICAgICAgICAgICAgIHZhbHVlOiBzdGFja1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhY2s7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBlcnJvckluZm87XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVuY29kZUVycm9yRm9yQm91bmRhcnkoXG4gICAgICBib3VuZGFyeSxcbiAgICAgIGRpZ2VzdCxcbiAgICAgIGVycm9yLFxuICAgICAgdGhyb3duSW5mbyxcbiAgICAgIHdhc0Fib3J0ZWRcbiAgICApIHtcbiAgICAgIGJvdW5kYXJ5LmVycm9yRGlnZXN0ID0gZGlnZXN0O1xuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICA/ICgoZGlnZXN0ID0gU3RyaW5nKGVycm9yLm1lc3NhZ2UpKSwgKGVycm9yID0gU3RyaW5nKGVycm9yLnN0YWNrKSkpXG4gICAgICAgIDogKChkaWdlc3QgPVxuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmIG51bGwgIT09IGVycm9yXG4gICAgICAgICAgICAgID8gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2UoZXJyb3IpXG4gICAgICAgICAgICAgIDogU3RyaW5nKGVycm9yKSksXG4gICAgICAgICAgKGVycm9yID0gbnVsbCkpO1xuICAgICAgd2FzQWJvcnRlZCA9IHdhc0Fib3J0ZWRcbiAgICAgICAgPyBcIlN3aXRjaGVkIHRvIGNsaWVudCByZW5kZXJpbmcgYmVjYXVzZSB0aGUgc2VydmVyIHJlbmRlcmluZyBhYm9ydGVkIGR1ZSB0bzpcXG5cXG5cIlxuICAgICAgICA6IFwiU3dpdGNoZWQgdG8gY2xpZW50IHJlbmRlcmluZyBiZWNhdXNlIHRoZSBzZXJ2ZXIgcmVuZGVyaW5nIGVycm9yZWQ6XFxuXFxuXCI7XG4gICAgICBib3VuZGFyeS5lcnJvck1lc3NhZ2UgPSB3YXNBYm9ydGVkICsgZGlnZXN0O1xuICAgICAgYm91bmRhcnkuZXJyb3JTdGFjayA9IG51bGwgIT09IGVycm9yID8gd2FzQWJvcnRlZCArIGVycm9yIDogbnVsbDtcbiAgICAgIGJvdW5kYXJ5LmVycm9yQ29tcG9uZW50U3RhY2sgPSB0aHJvd25JbmZvLmNvbXBvbmVudFN0YWNrO1xuICAgIH1cbiAgICBmdW5jdGlvbiBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCBlcnJvckluZm8pIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0Lm9uRXJyb3I7XG4gICAgICBlcnJvciA9IHJlcXVlc3QoZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgICBpZiAobnVsbCAhPSBlcnJvciAmJiBcInN0cmluZ1wiICE9PSB0eXBlb2YgZXJyb3IpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ29uRXJyb3IgcmV0dXJuZWQgc29tZXRoaW5nIHdpdGggYSB0eXBlIG90aGVyIHRoYW4gXCJzdHJpbmdcIi4gb25FcnJvciBzaG91bGQgcmV0dXJuIGEgc3RyaW5nIGFuZCBtYXkgcmV0dXJuIG51bGwgb3IgdW5kZWZpbmVkIGJ1dCBtdXN0IG5vdCByZXR1cm4gYW55dGhpbmcgZWxzZS4gSXQgcmVjZWl2ZWQgc29tZXRoaW5nIG9mIHR5cGUgXCIlc1wiIGluc3RlYWQnLFxuICAgICAgICAgIHR5cGVvZiBlcnJvclxuICAgICAgICApO1xuICAgICAgZWxzZSByZXR1cm4gZXJyb3I7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgICAgIHZhciBvblNoZWxsRXJyb3IgPSByZXF1ZXN0Lm9uU2hlbGxFcnJvcixcbiAgICAgICAgb25GYXRhbEVycm9yID0gcmVxdWVzdC5vbkZhdGFsRXJyb3I7XG4gICAgICBvblNoZWxsRXJyb3IoZXJyb3IpO1xuICAgICAgb25GYXRhbEVycm9yKGVycm9yKTtcbiAgICAgIG51bGwgIT09IHJlcXVlc3QuZGVzdGluYXRpb25cbiAgICAgICAgPyAoKHJlcXVlc3Quc3RhdHVzID0gQ0xPU0VEKSwgcmVxdWVzdC5kZXN0aW5hdGlvbi5kZXN0cm95KGVycm9yKSlcbiAgICAgICAgOiAoKHJlcXVlc3Quc3RhdHVzID0gMTMpLCAocmVxdWVzdC5mYXRhbEVycm9yID0gZXJyb3IpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVuZGVyV2l0aEhvb2tzKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHRhc2ssXG4gICAgICBrZXlQYXRoLFxuICAgICAgQ29tcG9uZW50LFxuICAgICAgcHJvcHMsXG4gICAgICBzZWNvbmRBcmdcbiAgICApIHtcbiAgICAgIHZhciBwcmV2VGhlbmFibGVTdGF0ZSA9IHRhc2sudGhlbmFibGVTdGF0ZTtcbiAgICAgIHRhc2sudGhlbmFibGVTdGF0ZSA9IG51bGw7XG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQgPSB7fTtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ1Rhc2sgPSB0YXNrO1xuICAgICAgY3VycmVudGx5UmVuZGVyaW5nUmVxdWVzdCA9IHJlcXVlc3Q7XG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdLZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9ICExO1xuICAgICAgYWN0aW9uU3RhdGVDb3VudGVyID0gbG9jYWxJZENvdW50ZXIgPSAwO1xuICAgICAgYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4ID0gLTE7XG4gICAgICB0aGVuYWJsZUluZGV4Q291bnRlciA9IDA7XG4gICAgICB0aGVuYWJsZVN0YXRlID0gcHJldlRoZW5hYmxlU3RhdGU7XG4gICAgICBmb3IgKFxuICAgICAgICByZXF1ZXN0ID0gY2FsbENvbXBvbmVudEluREVWKENvbXBvbmVudCwgcHJvcHMsIHNlY29uZEFyZyk7XG4gICAgICAgIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGU7XG5cbiAgICAgIClcbiAgICAgICAgKGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSAhMSksXG4gICAgICAgICAgKGFjdGlvblN0YXRlQ291bnRlciA9IGxvY2FsSWRDb3VudGVyID0gMCksXG4gICAgICAgICAgKGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleCA9IC0xKSxcbiAgICAgICAgICAodGhlbmFibGVJbmRleENvdW50ZXIgPSAwKSxcbiAgICAgICAgICAobnVtYmVyT2ZSZVJlbmRlcnMgKz0gMSksXG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzSG9vayA9IG51bGwpLFxuICAgICAgICAgIChyZXF1ZXN0ID0gQ29tcG9uZW50KHByb3BzLCBzZWNvbmRBcmcpKTtcbiAgICAgIHJlc2V0SG9va3NTdGF0ZSgpO1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbmlzaEZ1bmN0aW9uQ29tcG9uZW50KFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHRhc2ssXG4gICAgICBrZXlQYXRoLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBoYXNJZCxcbiAgICAgIGFjdGlvblN0YXRlQ291bnQsXG4gICAgICBhY3Rpb25TdGF0ZU1hdGNoaW5nSW5kZXhcbiAgICApIHtcbiAgICAgIHZhciBkaWRFbWl0QWN0aW9uU3RhdGVNYXJrZXJzID0gITE7XG4gICAgICBpZiAoMCAhPT0gYWN0aW9uU3RhdGVDb3VudCAmJiBudWxsICE9PSByZXF1ZXN0LmZvcm1TdGF0ZSkge1xuICAgICAgICB2YXIgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQ7XG4gICAgICAgIGlmIChudWxsICE9PSBzZWdtZW50KSB7XG4gICAgICAgICAgZGlkRW1pdEFjdGlvblN0YXRlTWFya2VycyA9ICEwO1xuICAgICAgICAgIHNlZ21lbnQgPSBzZWdtZW50LmNodW5rcztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvblN0YXRlQ291bnQ7IGkrKylcbiAgICAgICAgICAgIGkgPT09IGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleFxuICAgICAgICAgICAgICA/IHNlZ21lbnQucHVzaChcIlxceDNjIS0tRiEtLVxceDNlXCIpXG4gICAgICAgICAgICAgIDogc2VnbWVudC5wdXNoKFwiXFx4M2MhLS1GLS1cXHgzZVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0aW9uU3RhdGVDb3VudCA9IHRhc2sua2V5UGF0aDtcbiAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICBoYXNJZFxuICAgICAgICA/ICgoa2V5UGF0aCA9IHRhc2sudHJlZUNvbnRleHQpLFxuICAgICAgICAgICh0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KGtleVBhdGgsIDEsIDApKSxcbiAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuLCAtMSksXG4gICAgICAgICAgKHRhc2sudHJlZUNvbnRleHQgPSBrZXlQYXRoKSlcbiAgICAgICAgOiBkaWRFbWl0QWN0aW9uU3RhdGVNYXJrZXJzXG4gICAgICAgICAgPyByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuLCAtMSlcbiAgICAgICAgICA6IHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbiwgLTEpO1xuICAgICAgdGFzay5rZXlQYXRoID0gYWN0aW9uU3RhdGVDb3VudDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmVuZGVyRWxlbWVudChyZXF1ZXN0LCB0YXNrLCBrZXlQYXRoLCB0eXBlLCBwcm9wcywgcmVmKSB7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgaWYgKHR5cGUucHJvdG90eXBlICYmIHR5cGUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpIHtcbiAgICAgICAgICB2YXIgbmV3UHJvcHMgPSBwcm9wcztcbiAgICAgICAgICBpZiAoXCJyZWZcIiBpbiBwcm9wcykge1xuICAgICAgICAgICAgbmV3UHJvcHMgPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKVxuICAgICAgICAgICAgICBcInJlZlwiICE9PSBwcm9wTmFtZSAmJiAobmV3UHJvcHNbcHJvcE5hbWVdID0gcHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgICAgICAgIGlmIChkZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgICAgIG5ld1Byb3BzID09PSBwcm9wcyAmJiAobmV3UHJvcHMgPSBhc3NpZ24oe30sIG5ld1Byb3BzLCBwcm9wcykpO1xuICAgICAgICAgICAgZm9yICh2YXIgX3Byb3BOYW1lIGluIGRlZmF1bHRQcm9wcylcbiAgICAgICAgICAgICAgdm9pZCAwID09PSBuZXdQcm9wc1tfcHJvcE5hbWVdICYmXG4gICAgICAgICAgICAgICAgKG5ld1Byb3BzW19wcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbX3Byb3BOYW1lXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZXNvbHZlZFByb3BzID0gbmV3UHJvcHM7XG4gICAgICAgICAgdmFyIGNvbnRleHQgPSBlbXB0eUNvbnRleHRPYmplY3QsXG4gICAgICAgICAgICBjb250ZXh0VHlwZSA9IHR5cGUuY29udGV4dFR5cGU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJjb250ZXh0VHlwZVwiIGluIHR5cGUgJiZcbiAgICAgICAgICAgIG51bGwgIT09IGNvbnRleHRUeXBlICYmXG4gICAgICAgICAgICAodm9pZCAwID09PSBjb250ZXh0VHlwZSB8fFxuICAgICAgICAgICAgICBjb250ZXh0VHlwZS4kJHR5cGVvZiAhPT0gUkVBQ1RfQ09OVEVYVF9UWVBFKSAmJlxuICAgICAgICAgICAgIWRpZFdhcm5BYm91dEludmFsaWRhdGVDb250ZXh0VHlwZS5oYXModHlwZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dEludmFsaWRhdGVDb250ZXh0VHlwZS5hZGQodHlwZSk7XG4gICAgICAgICAgICB2YXIgYWRkZW5kdW0gPVxuICAgICAgICAgICAgICB2b2lkIDAgPT09IGNvbnRleHRUeXBlXG4gICAgICAgICAgICAgICAgPyBcIiBIb3dldmVyLCBpdCBpcyBzZXQgdG8gdW5kZWZpbmVkLiBUaGlzIGNhbiBiZSBjYXVzZWQgYnkgYSB0eXBvIG9yIGJ5IG1peGluZyB1cCBuYW1lZCBhbmQgZGVmYXVsdCBpbXBvcnRzLiBUaGlzIGNhbiBhbHNvIGhhcHBlbiBkdWUgdG8gYSBjaXJjdWxhciBkZXBlbmRlbmN5LCBzbyB0cnkgbW92aW5nIHRoZSBjcmVhdGVDb250ZXh0KCkgY2FsbCB0byBhIHNlcGFyYXRlIGZpbGUuXCJcbiAgICAgICAgICAgICAgICA6IFwib2JqZWN0XCIgIT09IHR5cGVvZiBjb250ZXh0VHlwZVxuICAgICAgICAgICAgICAgICAgPyBcIiBIb3dldmVyLCBpdCBpcyBzZXQgdG8gYSBcIiArIHR5cGVvZiBjb250ZXh0VHlwZSArIFwiLlwiXG4gICAgICAgICAgICAgICAgICA6IGNvbnRleHRUeXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05TVU1FUl9UWVBFXG4gICAgICAgICAgICAgICAgICAgID8gXCIgRGlkIHlvdSBhY2NpZGVudGFsbHkgcGFzcyB0aGUgQ29udGV4dC5Db25zdW1lciBpbnN0ZWFkP1wiXG4gICAgICAgICAgICAgICAgICAgIDogXCIgSG93ZXZlciwgaXQgaXMgc2V0IHRvIGFuIG9iamVjdCB3aXRoIGtleXMge1wiICtcbiAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0VHlwZSkuam9pbihcIiwgXCIpICtcbiAgICAgICAgICAgICAgICAgICAgICBcIn0uXCI7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIGRlZmluZXMgYW4gaW52YWxpZCBjb250ZXh0VHlwZS4gY29udGV4dFR5cGUgc2hvdWxkIHBvaW50IHRvIHRoZSBDb250ZXh0IG9iamVjdCByZXR1cm5lZCBieSBSZWFjdC5jcmVhdGVDb250ZXh0KCkuJXNcIixcbiAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiQ29tcG9uZW50XCIsXG4gICAgICAgICAgICAgIGFkZGVuZHVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgY29udGV4dFR5cGUgJiZcbiAgICAgICAgICAgIG51bGwgIT09IGNvbnRleHRUeXBlICYmXG4gICAgICAgICAgICAoY29udGV4dCA9IGNvbnRleHRUeXBlLl9jdXJyZW50VmFsdWUyKTtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBuZXcgdHlwZShyZXNvbHZlZFByb3BzLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyAmJlxuICAgICAgICAgICAgKG51bGwgPT09IGluc3RhbmNlLnN0YXRlIHx8IHZvaWQgMCA9PT0gaW5zdGFuY2Uuc3RhdGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlLmhhcyhjb21wb25lbnROYW1lKSB8fFxuICAgICAgICAgICAgICAoZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlLmFkZChjb21wb25lbnROYW1lKSxcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcImAlc2AgdXNlcyBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBidXQgaXRzIGluaXRpYWwgc3RhdGUgaXMgJXMuIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkLiBJbnN0ZWFkLCBkZWZpbmUgdGhlIGluaXRpYWwgc3RhdGUgYnkgYXNzaWduaW5nIGFuIG9iamVjdCB0byBgdGhpcy5zdGF0ZWAgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGAlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IGBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNgIGFyZ3VtZW50cyBoYXZlIGEgY29uc2lzdGVudCBzaGFwZS5cIixcbiAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lLFxuICAgICAgICAgICAgICAgIG51bGwgPT09IGluc3RhbmNlLnN0YXRlID8gXCJudWxsXCIgOiBcInVuZGVmaW5lZFwiLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIHx8XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIGZvdW5kV2lsbE1vdW50TmFtZSA9IG51bGwsXG4gICAgICAgICAgICAgIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgPSBudWxsLFxuICAgICAgICAgICAgICBmb3VuZFdpbGxVcGRhdGVOYW1lID0gbnVsbDtcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCAmJlxuICAgICAgICAgICAgITAgIT09IGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nXG4gICAgICAgICAgICAgID8gKGZvdW5kV2lsbE1vdW50TmFtZSA9IFwiY29tcG9uZW50V2lsbE1vdW50XCIpXG4gICAgICAgICAgICAgIDogXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCAmJlxuICAgICAgICAgICAgICAgIChmb3VuZFdpbGxNb3VudE5hbWUgPSBcIlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnRcIik7XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzICYmXG4gICAgICAgICAgICAhMCAhPT1cbiAgICAgICAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcy5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nXG4gICAgICAgICAgICAgID8gKGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgPSBcImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcIilcbiAgICAgICAgICAgICAgOiBcImZ1bmN0aW9uXCIgPT09XG4gICAgICAgICAgICAgICAgICB0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiZcbiAgICAgICAgICAgICAgICAoZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9XG4gICAgICAgICAgICAgICAgICBcIlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXCIpO1xuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVwZGF0ZSAmJlxuICAgICAgICAgICAgITAgIT09IGluc3RhbmNlLmNvbXBvbmVudFdpbGxVcGRhdGUuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ1xuICAgICAgICAgICAgICA/IChmb3VuZFdpbGxVcGRhdGVOYW1lID0gXCJjb21wb25lbnRXaWxsVXBkYXRlXCIpXG4gICAgICAgICAgICAgIDogXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUgJiZcbiAgICAgICAgICAgICAgICAoZm91bmRXaWxsVXBkYXRlTmFtZSA9IFwiVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGVcIik7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG51bGwgIT09IGZvdW5kV2lsbE1vdW50TmFtZSB8fFxuICAgICAgICAgICAgICBudWxsICE9PSBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lIHx8XG4gICAgICAgICAgICAgIG51bGwgIT09IGZvdW5kV2lsbFVwZGF0ZU5hbWVcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB2YXIgX2NvbXBvbmVudE5hbWUgPVxuICAgICAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiQ29tcG9uZW50XCIsXG4gICAgICAgICAgICAgICAgbmV3QXBpTmFtZSA9XG4gICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1xuICAgICAgICAgICAgICAgICAgICA/IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKClcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKVwiO1xuICAgICAgICAgICAgICBkaWRXYXJuQWJvdXRMZWdhY3lMaWZlY3ljbGVzQW5kRGVyaXZlZFN0YXRlLmhhcyhfY29tcG9uZW50TmFtZSkgfHxcbiAgICAgICAgICAgICAgICAoZGlkV2FybkFib3V0TGVnYWN5TGlmZWN5Y2xlc0FuZERlcml2ZWRTdGF0ZS5hZGQoXG4gICAgICAgICAgICAgICAgICBfY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVW5zYWZlIGxlZ2FjeSBsaWZlY3ljbGVzIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgY29tcG9uZW50cyB1c2luZyBuZXcgY29tcG9uZW50IEFQSXMuXFxuXFxuJXMgdXNlcyAlcyBidXQgYWxzbyBjb250YWlucyB0aGUgZm9sbG93aW5nIGxlZ2FjeSBsaWZlY3ljbGVzOiVzJXMlc1xcblxcblRoZSBhYm92ZSBsaWZlY3ljbGVzIHNob3VsZCBiZSByZW1vdmVkLiBMZWFybiBtb3JlIGFib3V0IHRoaXMgd2FybmluZyBoZXJlOlxcbmh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvdW5zYWZlLWNvbXBvbmVudC1saWZlY3ljbGVzXCIsXG4gICAgICAgICAgICAgICAgICBfY29tcG9uZW50TmFtZSxcbiAgICAgICAgICAgICAgICAgIG5ld0FwaU5hbWUsXG4gICAgICAgICAgICAgICAgICBudWxsICE9PSBmb3VuZFdpbGxNb3VudE5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBcIlxcbiAgXCIgKyBmb3VuZFdpbGxNb3VudE5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZVxuICAgICAgICAgICAgICAgICAgICA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWVcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZm91bmRXaWxsVXBkYXRlTmFtZVxuICAgICAgICAgICAgICAgICAgICA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFVwZGF0ZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiQ29tcG9uZW50XCI7XG4gICAgICAgICAgaW5zdGFuY2UucmVuZGVyIHx8XG4gICAgICAgICAgICAodHlwZS5wcm90b3R5cGUgJiYgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVuZGVyXG4gICAgICAgICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSAlcyBpbnN0YW5jZTogZGlkIHlvdSBhY2NpZGVudGFsbHkgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvcj9cIixcbiAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSAlcyBpbnN0YW5jZTogeW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBkZWZpbmUgYHJlbmRlcmAuXCIsXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgIWluc3RhbmNlLmdldEluaXRpYWxTdGF0ZSB8fFxuICAgICAgICAgICAgaW5zdGFuY2UuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkIHx8XG4gICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSB8fFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiBEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUgcHJvcGVydHkgaW5zdGVhZD9cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpbnN0YW5jZS5nZXREZWZhdWx0UHJvcHMgJiZcbiAgICAgICAgICAgICFpbnN0YW5jZS5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiZ2V0RGVmYXVsdFByb3BzIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVhZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpbnN0YW5jZS5jb250ZXh0VHlwZSAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJjb250ZXh0VHlwZSB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBjb250ZXh0VHlwZSBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHR5cGUuY2hpbGRDb250ZXh0VHlwZXMgJiZcbiAgICAgICAgICAgICFkaWRXYXJuQWJvdXRDaGlsZENvbnRleHRUeXBlcy5oYXModHlwZSkgJiZcbiAgICAgICAgICAgIChkaWRXYXJuQWJvdXRDaGlsZENvbnRleHRUeXBlcy5hZGQodHlwZSksXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIHVzZXMgdGhlIGxlZ2FjeSBjaGlsZENvbnRleHRUeXBlcyBBUEkgd2hpY2ggd2FzIHJlbW92ZWQgaW4gUmVhY3QgMTkuIFVzZSBSZWFjdC5jcmVhdGVDb250ZXh0KCkgaW5zdGVhZC4gKGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvbGVnYWN5LWNvbnRleHQpXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIHR5cGUuY29udGV4dFR5cGVzICYmXG4gICAgICAgICAgICAhZGlkV2FybkFib3V0Q29udGV4dFR5cGVzJDEuaGFzKHR5cGUpICYmXG4gICAgICAgICAgICAoZGlkV2FybkFib3V0Q29udGV4dFR5cGVzJDEuYWRkKHR5cGUpLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyB1c2VzIHRoZSBsZWdhY3kgY29udGV4dFR5cGVzIEFQSSB3aGljaCB3YXMgcmVtb3ZlZCBpbiBSZWFjdCAxOS4gVXNlIFJlYWN0LmNyZWF0ZUNvbnRleHQoKSB3aXRoIHN0YXRpYyBjb250ZXh0VHlwZSBpbnN0ZWFkLiAoaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9sZWdhY3ktY29udGV4dClcIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50U2hvdWxkVXBkYXRlICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHR5cGUucHJvdG90eXBlICYmXG4gICAgICAgICAgICB0eXBlLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCAmJlxuICAgICAgICAgICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGluc3RhbmNlLnNob3VsZENvbXBvbmVudFVwZGF0ZSAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpLiBzaG91bGRDb21wb25lbnRVcGRhdGUgc2hvdWxkIG5vdCBiZSB1c2VkIHdoZW4gZXh0ZW5kaW5nIFJlYWN0LlB1cmVDb21wb25lbnQuIFBsZWFzZSBleHRlbmQgUmVhY3QuQ29tcG9uZW50IGlmIHNob3VsZENvbXBvbmVudFVwZGF0ZSBpcyB1c2VkLlwiLFxuICAgICAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgXCJBIHB1cmUgY29tcG9uZW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50RGlkVW5tb3VudCAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIGNvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/XCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50RGlkUmVjZWl2ZVByb3BzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgY29tcG9uZW50RGlkUmVjZWl2ZVByb3BzKCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuIElmIHlvdSBtZWFudCB0byB1cGRhdGUgdGhlIHN0YXRlIGluIHJlc3BvbnNlIHRvIGNoYW5naW5nIHByb3BzLCB1c2UgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpLiBJZiB5b3UgbWVhbnQgdG8gZmV0Y2ggZGF0YSBvciBydW4gc2lkZS1lZmZlY3RzIG9yIG11dGF0aW9ucyBhZnRlciBSZWFjdCBoYXMgdXBkYXRlZCB0aGUgVUksIHVzZSBjb21wb25lbnREaWRVcGRhdGUoKS5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpP1wiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/XCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdmFyIGhhc011dGF0ZWRQcm9wcyA9IGluc3RhbmNlLnByb3BzICE9PSByZXNvbHZlZFByb3BzO1xuICAgICAgICAgIHZvaWQgMCAhPT0gaW5zdGFuY2UucHJvcHMgJiZcbiAgICAgICAgICAgIGhhc011dGF0ZWRQcm9wcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJXaGVuIGNhbGxpbmcgc3VwZXIoKSBpbiBgJXNgLCBtYWtlIHN1cmUgdG8gcGFzcyB1cCB0aGUgc2FtZSBwcm9wcyB0aGF0IHlvdXIgY29tcG9uZW50J3MgY29uc3RydWN0b3Igd2FzIHBhc3NlZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBpbnN0YW5jZS5kZWZhdWx0UHJvcHMgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiU2V0dGluZyBkZWZhdWx0UHJvcHMgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMgaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSBpZ25vcmVkLiBJbnN0ZWFkLCBkZWZpbmUgZGVmYXVsdFByb3BzIGFzIGEgc3RhdGljIHByb3BlcnR5IG9uICVzLlwiLFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGluc3RhbmNlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIHx8XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnREaWRVcGRhdGUgfHxcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZS5oYXModHlwZSkgfHxcbiAgICAgICAgICAgIChkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGUuYWRkKHR5cGUpLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlczogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBzaG91bGQgYmUgdXNlZCB3aXRoIGNvbXBvbmVudERpZFVwZGF0ZSgpLiBUaGlzIGNvbXBvbmVudCBkZWZpbmVzIGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgb25seS5cIixcbiAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXM6IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIGFuZCB3aWxsIGJlIGlnbm9yZWQuIEluc3RlYWQsIGRlY2xhcmUgaXQgYXMgYSBzdGF0aWMgbWV0aG9kLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlczogZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKCkgaXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBtZXRob2QgYW5kIHdpbGwgYmUgaWdub3JlZC4gSW5zdGVhZCwgZGVjbGFyZSBpdCBhcyBhIHN0YXRpYyBtZXRob2QuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlczogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBpcyBkZWZpbmVkIGFzIGEgc3RhdGljIG1ldGhvZCBhbmQgd2lsbCBiZSBpZ25vcmVkLiBJbnN0ZWFkLCBkZWNsYXJlIGl0IGFzIGFuIGluc3RhbmNlIG1ldGhvZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB2YXIgc3RhdGUgPSBpbnN0YW5jZS5zdGF0ZTtcbiAgICAgICAgICBzdGF0ZSAmJlxuICAgICAgICAgICAgKFwib2JqZWN0XCIgIT09IHR5cGVvZiBzdGF0ZSB8fCBpc0FycmF5SW1wbChzdGF0ZSkpICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiJXMuc3RhdGU6IG11c3QgYmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxsXCIsIG5hbWUpO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmdldENoaWxkQ29udGV4dCAmJlxuICAgICAgICAgICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHR5cGUuY2hpbGRDb250ZXh0VHlwZXMgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHZvaWQgMCAhPT0gaW5zdGFuY2Uuc3RhdGUgPyBpbnN0YW5jZS5zdGF0ZSA6IG51bGw7XG4gICAgICAgICAgaW5zdGFuY2UudXBkYXRlciA9IGNsYXNzQ29tcG9uZW50VXBkYXRlcjtcbiAgICAgICAgICBpbnN0YW5jZS5wcm9wcyA9IHJlc29sdmVkUHJvcHM7XG4gICAgICAgICAgaW5zdGFuY2Uuc3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgICAgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSB7IHF1ZXVlOiBbXSwgcmVwbGFjZTogITEgfTtcbiAgICAgICAgICBpbnN0YW5jZS5fcmVhY3RJbnRlcm5hbHMgPSBpbnRlcm5hbEluc3RhbmNlO1xuICAgICAgICAgIHZhciBjb250ZXh0VHlwZSRqc2NvbXAkMCA9IHR5cGUuY29udGV4dFR5cGU7XG4gICAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9XG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgY29udGV4dFR5cGUkanNjb21wJDAgJiZcbiAgICAgICAgICAgIG51bGwgIT09IGNvbnRleHRUeXBlJGpzY29tcCQwXG4gICAgICAgICAgICAgID8gY29udGV4dFR5cGUkanNjb21wJDAuX2N1cnJlbnRWYWx1ZTJcbiAgICAgICAgICAgICAgOiBlbXB0eUNvbnRleHRPYmplY3Q7XG4gICAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlID09PSByZXNvbHZlZFByb3BzKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50TmFtZSRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0RGlyZWN0bHlBc3NpZ25pbmdQcm9wc1RvU3RhdGUuaGFzKFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lJGpzY29tcCQwXG4gICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgIChkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZS5hZGQoXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBhc3NpZ24gcHJvcHMgZGlyZWN0bHkgdG8gc3RhdGUgYmVjYXVzZSB1cGRhdGVzIHRvIHByb3BzIHdvbid0IGJlIHJlZmxlY3RlZCBpbiBzdGF0ZS4gSW4gbW9zdCBjYXNlcywgaXQgaXMgYmV0dGVyIHRvIHVzZSBwcm9wcyBkaXJlY3RseS5cIixcbiAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lJGpzY29tcCQwXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gdHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcykge1xuICAgICAgICAgICAgdmFyIHBhcnRpYWxTdGF0ZSA9IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhcbiAgICAgICAgICAgICAgcmVzb2x2ZWRQcm9wcyxcbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcGFydGlhbFN0YXRlKSB7XG4gICAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lJGpzY29tcCQxID1cbiAgICAgICAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgXCJDb21wb25lbnRcIjtcbiAgICAgICAgICAgICAgZGlkV2FybkFib3V0VW5kZWZpbmVkRGVyaXZlZFN0YXRlLmhhcyhjb21wb25lbnROYW1lJGpzY29tcCQxKSB8fFxuICAgICAgICAgICAgICAgIChkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUkanNjb21wJDEpLFxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIiVzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpOiBBIHZhbGlkIHN0YXRlIG9iamVjdCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLlwiLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9XG4gICAgICAgICAgICAgIG51bGwgPT09IHBhcnRpYWxTdGF0ZSB8fCB2b2lkIDAgPT09IHBhcnRpYWxTdGF0ZVxuICAgICAgICAgICAgICAgID8gaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICAgICAgOiBhc3NpZ24oe30sIGluaXRpYWxTdGF0ZSwgcGFydGlhbFN0YXRlKTtcbiAgICAgICAgICAgIGluc3RhbmNlLnN0YXRlID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB0eXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyAmJlxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgaW5zdGFuY2UuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgJiZcbiAgICAgICAgICAgIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IHx8XG4gICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBvbGRTdGF0ZSA9IGluc3RhbmNlLnN0YXRlO1xuICAgICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgITAgIT09IGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lJGpzY29tcCQyID1cbiAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgICAgICBkaWRXYXJuQWJvdXREZXByZWNhdGVkV2lsbE1vdW50W2NvbXBvbmVudE5hbWUkanNjb21wJDJdIHx8XG4gICAgICAgICAgICAgICAgICAoY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBcImNvbXBvbmVudFdpbGxNb3VudCBoYXMgYmVlbiByZW5hbWVkLCBhbmQgaXMgbm90IHJlY29tbWVuZGVkIGZvciB1c2UuIFNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL3Vuc2FmZS1jb21wb25lbnQtbGlmZWN5Y2xlcyBmb3IgZGV0YWlscy5cXG5cXG4qIE1vdmUgY29kZSBmcm9tIGNvbXBvbmVudFdpbGxNb3VudCB0byBjb21wb25lbnREaWRNb3VudCAocHJlZmVycmVkIGluIG1vc3QgY2FzZXMpIG9yIHRoZSBjb25zdHJ1Y3Rvci5cXG5cXG5QbGVhc2UgdXBkYXRlIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50czogJXNcIixcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIChkaWRXYXJuQWJvdXREZXByZWNhdGVkV2lsbE1vdW50W2NvbXBvbmVudE5hbWUkanNjb21wJDJdID1cbiAgICAgICAgICAgICAgICAgICAgITApKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICAgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgICAgICAgb2xkU3RhdGUgIT09IGluc3RhbmNlLnN0YXRlICYmXG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXMuY29tcG9uZW50V2lsbE1vdW50KCk6IEFzc2lnbmluZyBkaXJlY3RseSB0byB0aGlzLnN0YXRlIGlzIGRlcHJlY2F0ZWQgKGV4Y2VwdCBpbnNpZGUgYSBjb21wb25lbnQncyBjb25zdHJ1Y3RvcikuIFVzZSBzZXRTdGF0ZSBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGNsYXNzQ29tcG9uZW50VXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN0YXRlLFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG51bGwgIT09IGludGVybmFsSW5zdGFuY2UucXVldWUgJiZcbiAgICAgICAgICAgICAgMCA8IGludGVybmFsSW5zdGFuY2UucXVldWUubGVuZ3RoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdmFyIG9sZFF1ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZSxcbiAgICAgICAgICAgICAgICBvbGRSZXBsYWNlID0gaW50ZXJuYWxJbnN0YW5jZS5yZXBsYWNlO1xuICAgICAgICAgICAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgICAgICAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5yZXBsYWNlID0gITE7XG4gICAgICAgICAgICAgIGlmIChvbGRSZXBsYWNlICYmIDEgPT09IG9sZFF1ZXVlLmxlbmd0aClcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG9sZFF1ZXVlWzBdO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgdmFyIG5leHRTdGF0ZSA9IG9sZFJlcGxhY2UgPyBvbGRRdWV1ZVswXSA6IGluc3RhbmNlLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBkb250TXV0YXRlID0gITAsXG4gICAgICAgICAgICAgICAgICAgIGkgPSBvbGRSZXBsYWNlID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgICBpIDwgb2xkUXVldWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbCA9IG9sZFF1ZXVlW2ldLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU3RhdGUkanNjb21wJDAgPVxuICAgICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHBhcnRpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFydGlhbC5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnRpYWw7XG4gICAgICAgICAgICAgICAgICBudWxsICE9IHBhcnRpYWxTdGF0ZSRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9udE11dGF0ZVxuICAgICAgICAgICAgICAgICAgICAgID8gKChkb250TXV0YXRlID0gITEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5leHRTdGF0ZSA9IGFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbFN0YXRlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbihuZXh0U3RhdGUsIHBhcnRpYWxTdGF0ZSRqc2NvbXAkMCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGludGVybmFsSW5zdGFuY2UucXVldWUgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbmV4dENoaWxkcmVuID0gY2FsbFJlbmRlckluREVWKGluc3RhbmNlKTtcbiAgICAgICAgICBpZiAoMTIgPT09IHJlcXVlc3Quc3RhdHVzKSB0aHJvdyBudWxsO1xuICAgICAgICAgIGluc3RhbmNlLnByb3BzICE9PSByZXNvbHZlZFByb3BzICYmXG4gICAgICAgICAgICAoZGlkV2FybkFib3V0UmVhc3NpZ25pbmdQcm9wcyB8fFxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiSXQgbG9va3MgbGlrZSAlcyBpcyByZWFzc2lnbmluZyBpdHMgb3duIGB0aGlzLnByb3BzYCB3aGlsZSByZW5kZXJpbmcuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBhbmQgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGJ1Z3MuXCIsXG4gICAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiYSBjb21wb25lbnRcIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSAhMCkpO1xuICAgICAgICAgIHZhciBwcmV2S2V5UGF0aCA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBuZXh0Q2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZS5wcm90b3R5cGUgJiYgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVuZGVyKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50TmFtZSRqc2NvbXAkMyA9XG4gICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWUkanNjb21wJDNdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBoYXZlIGEgcmVuZGVyIG1ldGhvZCwgYnV0IGRvZXNuJ3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4gVGhpcyBpcyBsaWtlbHkgdG8gY2F1c2UgZXJyb3JzLiBDaGFuZ2UgJXMgdG8gZXh0ZW5kIFJlYWN0LkNvbXBvbmVudCBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWUkanNjb21wJDMsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkM1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAoZGlkV2FybkFib3V0QmFkQ2xhc3NbY29tcG9uZW50TmFtZSRqc2NvbXAkM10gPSAhMCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgdmFsdWUgPSByZW5kZXJXaXRoSG9va3MoXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB2b2lkIDBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICgxMiA9PT0gcmVxdWVzdC5zdGF0dXMpIHRocm93IG51bGw7XG4gICAgICAgICAgdmFyIGhhc0lkID0gMCAhPT0gbG9jYWxJZENvdW50ZXIsXG4gICAgICAgICAgICBhY3Rpb25TdGF0ZUNvdW50ID0gYWN0aW9uU3RhdGVDb3VudGVyLFxuICAgICAgICAgICAgYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4JGpzY29tcCQwID0gYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4O1xuICAgICAgICAgIGlmICh0eXBlLmNvbnRleHRUeXBlcykge1xuICAgICAgICAgICAgdmFyIF9jb21wb25lbnROYW1lJGpzY29tcCQwID1cbiAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiVW5rbm93blwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVzW19jb21wb25lbnROYW1lJGpzY29tcCQwXSB8fFxuICAgICAgICAgICAgICAoKGRpZFdhcm5BYm91dENvbnRleHRUeXBlc1tfY29tcG9uZW50TmFtZSRqc2NvbXAkMF0gPSAhMCksXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgXCIlcyB1c2VzIHRoZSBsZWdhY3kgY29udGV4dFR5cGVzIEFQSSB3aGljaCB3YXMgcmVtb3ZlZCBpbiBSZWFjdCAxOS4gVXNlIFJlYWN0LmNyZWF0ZUNvbnRleHQoKSB3aXRoIFJlYWN0LnVzZUNvbnRleHQoKSBpbnN0ZWFkLiAoaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9sZWdhY3ktY29udGV4dClcIixcbiAgICAgICAgICAgICAgICBfY29tcG9uZW50TmFtZSRqc2NvbXAkMFxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHlwZSAmJlxuICAgICAgICAgICAgdHlwZS5jaGlsZENvbnRleHRUeXBlcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJjaGlsZENvbnRleHRUeXBlcyBjYW5ub3QgYmUgZGVmaW5lZCBvbiBhIGZ1bmN0aW9uIGNvbXBvbmVudC5cXG4gICVzLmNoaWxkQ29udGV4dFR5cGVzID0gLi4uXCIsXG4gICAgICAgICAgICAgIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IFwiQ29tcG9uZW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSB7XG4gICAgICAgICAgICB2YXIgX2NvbXBvbmVudE5hbWUyID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiVW5rbm93blwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLlwiLFxuICAgICAgICAgICAgICAgIF9jb21wb25lbnROYW1lMlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAoZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdID1cbiAgICAgICAgICAgICAgICAhMCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZS5jb250ZXh0VHlwZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdHlwZS5jb250ZXh0VHlwZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIF9jb21wb25lbnROYW1lMyA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTNdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgY29udGV4dFR5cGUuXCIsXG4gICAgICAgICAgICAgICAgX2NvbXBvbmVudE5hbWUzXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIChkaWRXYXJuQWJvdXRDb250ZXh0VHlwZU9uRnVuY3Rpb25Db21wb25lbnRbX2NvbXBvbmVudE5hbWUzXSA9XG4gICAgICAgICAgICAgICAgITApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmluaXNoRnVuY3Rpb25Db21wb25lbnQoXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGhhc0lkLFxuICAgICAgICAgICAgYWN0aW9uU3RhdGVDb3VudCxcbiAgICAgICAgICAgIGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleCRqc2NvbXAkMFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIGVsc2UgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgICAgaWYgKG51bGwgPT09IHNlZ21lbnQpIHtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICAgIHByZXZDb250ZXh0ID0gdGFzay5mb3JtYXRDb250ZXh0LFxuICAgICAgICAgICAgcHJldktleVBhdGgkanNjb21wJDAgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gZ2V0Q2hpbGRGb3JtYXRDb250ZXh0KHByZXZDb250ZXh0LCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldkNvbnRleHQ7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIF9jaGlsZHJlbiA9IHB1c2hTdGFydEluc3RhbmNlKFxuICAgICAgICAgICAgc2VnbWVudC5jaHVua3MsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgIHRhc2suaG9pc3RhYmxlU3RhdGUsXG4gICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQsXG4gICAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0LFxuICAgICAgICAgICAgdGFzay5pc0ZhbGxiYWNrXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICAgICAgdmFyIF9wcmV2Q29udGV4dCA9IHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgIF9wcmV2S2V5UGF0aDIgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gZ2V0Q2hpbGRGb3JtYXRDb250ZXh0KF9wcmV2Q29udGV4dCwgdHlwZSwgcHJvcHMpO1xuICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBfY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBfcHJldkNvbnRleHQ7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0gX3ByZXZLZXlQYXRoMjtcbiAgICAgICAgICBhOiB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2VnbWVudC5jaHVua3MsXG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImFyZWFcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImJhc2VcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImJyXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJjb2xcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImVtYmVkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJoclwiOlxuICAgICAgICAgICAgICBjYXNlIFwiaW1nXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJpbnB1dFwiOlxuICAgICAgICAgICAgICBjYXNlIFwia2V5Z2VuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJtZXRhXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJwYXJhbVwiOlxuICAgICAgICAgICAgICBjYXNlIFwic291cmNlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJ0cmFja1wiOlxuICAgICAgICAgICAgICBjYXNlIFwid2JyXCI6XG4gICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgY2FzZSBcImJvZHlcIjpcbiAgICAgICAgICAgICAgICBpZiAoX3ByZXZDb250ZXh0Lmluc2VydGlvbk1vZGUgPD0gSFRNTF9IVE1MX01PREUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmhhc0JvZHkgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiaHRtbFwiOlxuICAgICAgICAgICAgICAgIGlmIChfcHJldkNvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gUk9PVF9IVE1MX01PREUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmhhc0h0bWwgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0LnB1c2goZW5kQ2h1bmtGb3JUYWcodHlwZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEVHQUNZX0hJRERFTl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgICB2YXIgcHJldktleVBhdGgkanNjb21wJDEgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIHByb3BzLmNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkMTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFJFQUNUX09GRlNDUkVFTl9UWVBFOlxuICAgICAgICAgICAgaWYgKFwiaGlkZGVuXCIgIT09IHByb3BzLm1vZGUpIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZLZXlQYXRoJGpzY29tcCQyID0gdGFzay5rZXlQYXRoO1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgICB2YXIgX3ByZXZLZXlQYXRoMyA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IF9wcmV2S2V5UGF0aDM7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBSRUFDVF9TQ09QRV9UWVBFOlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVhY3RET01TZXJ2ZXIgZG9lcyBub3QgeWV0IHN1cHBvcnQgc2NvcGUgY29tcG9uZW50cy5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICBhOiBpZiAobnVsbCAhPT0gdGFzay5yZXBsYXkpIHtcbiAgICAgICAgICAgICAgdmFyIF9wcmV2S2V5UGF0aCA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICAgICAgdmFyIF9jb250ZW50ID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBfY29udGVudCwgLTEpO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IF9wcmV2S2V5UGF0aDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZLZXlQYXRoJGpzY29tcCQzID0gdGFzay5rZXlQYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgcGFyZW50SG9pc3RhYmxlU3RhdGUgPSB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50LFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gcHJvcHMuZmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgY29udGVudCA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrQWJvcnRTZXQgPSBuZXcgU2V0KCksXG4gICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIGZhbGxiYWNrQWJvcnRTZXQpO1xuICAgICAgICAgICAgICBudWxsICE9PSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXMgJiZcbiAgICAgICAgICAgICAgICAobmV3Qm91bmRhcnkudHJhY2tlZENvbnRlbnRLZXlQYXRoID0ga2V5UGF0aCk7XG4gICAgICAgICAgICAgIHZhciBib3VuZGFyeVNlZ21lbnQgPSBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQuY2h1bmtzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQsXG4gICAgICAgICAgICAgICAgITEsXG4gICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcGFyZW50U2VnbWVudC5jaGlsZHJlbi5wdXNoKGJvdW5kYXJ5U2VnbWVudCk7XG4gICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQubGFzdFB1c2hlZFRleHQgPSAhMTtcbiAgICAgICAgICAgICAgdmFyIGNvbnRlbnRSb290U2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAhMSxcbiAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQucGFyZW50Rmx1c2hlZCA9ICEwO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZhbGxiYWNrS2V5UGF0aCA9IFtcbiAgICAgICAgICAgICAgICAgICAga2V5UGF0aFswXSxcbiAgICAgICAgICAgICAgICAgICAgXCJTdXNwZW5zZSBGYWxsYmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBrZXlQYXRoWzJdXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXBsYXlOb2RlID0gW1xuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0tleVBhdGhbMV0sXG4gICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrS2V5UGF0aFsyXSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzLndvcmtpbmdNYXAuc2V0KFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tLZXlQYXRoLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXBsYXlOb2RlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS50cmFja2VkRmFsbGJhY2tOb2RlID0gZmFsbGJhY2tSZXBsYXlOb2RlO1xuICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZFNlZ21lbnQgPSBib3VuZGFyeVNlZ21lbnQ7XG4gICAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gZmFsbGJhY2tLZXlQYXRoO1xuICAgICAgICAgICAgICAgIGJvdW5kYXJ5U2VnbWVudC5zdGF0dXMgPSA2O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGZhbGxiYWNrLCAtMSksXG4gICAgICAgICAgICAgICAgICAgIHB1c2hTZWdtZW50RmluYWxlKFxuICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5U2VnbWVudC5jaHVua3MsXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeVNlZ21lbnQubGFzdFB1c2hlZFRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnlTZWdtZW50LnRleHRFbWJlZGRlZFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAoYm91bmRhcnlTZWdtZW50LnN0YXR1cyA9IENPTVBMRVRFRCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAodGhyb3duVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IChcbiAgICAgICAgICAgICAgICAgICAgKChib3VuZGFyeVNlZ21lbnQuc3RhdHVzID0gMTIgPT09IHJlcXVlc3Quc3RhdHVzID8gMyA6IDQpLFxuICAgICAgICAgICAgICAgICAgICB0aHJvd25WYWx1ZSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICh0YXNrLmJsb2NrZWRTZWdtZW50ID0gcGFyZW50U2VnbWVudCksXG4gICAgICAgICAgICAgICAgICAgICh0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkMyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBzdXNwZW5kZWRQcmltYXJ5VGFzayA9IGNyZWF0ZVJlbmRlclRhc2soXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAtMSxcbiAgICAgICAgICAgICAgICAgIG5ld0JvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgY29udGVudFJvb3RTZWdtZW50LFxuICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkuY29udGVudFN0YXRlLFxuICAgICAgICAgICAgICAgICAgdGFzay5hYm9ydFNldCxcbiAgICAgICAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQsXG4gICAgICAgICAgICAgICAgICB0YXNrLmNvbnRleHQsXG4gICAgICAgICAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgdGFzay5jb21wb25lbnRTdGFjayxcbiAgICAgICAgICAgICAgICAgIHRhc2suaXNGYWxsYmFja1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcHVzaENvbXBvbmVudFN0YWNrKHN1c3BlbmRlZFByaW1hcnlUYXNrKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0LnBpbmdlZFRhc2tzLnB1c2goc3VzcGVuZGVkUHJpbWFyeVRhc2spO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gbmV3Qm91bmRhcnk7XG4gICAgICAgICAgICAgICAgdGFzay5ob2lzdGFibGVTdGF0ZSA9IG5ld0JvdW5kYXJ5LmNvbnRlbnRTdGF0ZTtcbiAgICAgICAgICAgICAgICB0YXNrLmJsb2NrZWRTZWdtZW50ID0gY29udGVudFJvb3RTZWdtZW50O1xuICAgICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgICAgICAgY29udGVudFJvb3RTZWdtZW50LnN0YXR1cyA9IDY7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY29udGVudCwgLTEpLFxuICAgICAgICAgICAgICAgICAgICBwdXNoU2VnbWVudEZpbmFsZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQuY2h1bmtzLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVuZGVyU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudFJvb3RTZWdtZW50Lmxhc3RQdXNoZWRUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSb290U2VnbWVudC50ZXh0RW1iZWRkZWRcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnRSb290U2VnbWVudC5zdGF0dXMgPSBDT01QTEVURUQpLFxuICAgICAgICAgICAgICAgICAgICBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQobmV3Qm91bmRhcnksIGNvbnRlbnRSb290U2VnbWVudCksXG4gICAgICAgICAgICAgICAgICAgIDAgPT09IG5ld0JvdW5kYXJ5LnBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAgIG5ld0JvdW5kYXJ5LnN0YXR1cyA9PT0gUEVORElORylcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS5zdGF0dXMgPSBDT01QTEVURUQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAodGhyb3duVmFsdWUkMikge1xuICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkuc3RhdHVzID0gQ0xJRU5UX1JFTkRFUkVEO1xuICAgICAgICAgICAgICAgICAgaWYgKDEyID09PSByZXF1ZXN0LnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gMztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gcmVxdWVzdC5mYXRhbEVycm9yO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gNCksIChlcnJvciA9IHRocm93blZhbHVlJDIpO1xuICAgICAgICAgICAgICAgICAgdmFyIHRocm93bkluZm8gPSBnZXRUaHJvd25JbmZvKHRhc2suY29tcG9uZW50U3RhY2spO1xuICAgICAgICAgICAgICAgICAgdmFyIGVycm9yRGlnZXN0ID0gbG9nUmVjb3ZlcmFibGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIHRocm93bkluZm9cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEaWdlc3QsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB0aHJvd25JbmZvLFxuICAgICAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHVudHJhY2tCb3VuZGFyeShyZXF1ZXN0LCBuZXdCb3VuZGFyeSk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICh0YXNrLmJsb2NrZWRCb3VuZGFyeSA9IHBhcmVudEJvdW5kYXJ5KSxcbiAgICAgICAgICAgICAgICAgICAgKHRhc2suaG9pc3RhYmxlU3RhdGUgPSBwYXJlbnRIb2lzdGFibGVTdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICh0YXNrLmJsb2NrZWRTZWdtZW50ID0gcGFyZW50U2VnbWVudCksXG4gICAgICAgICAgICAgICAgICAgICh0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkMyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBzdXNwZW5kZWRGYWxsYmFja1Rhc2sgPSBjcmVhdGVSZW5kZXJUYXNrKFxuICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICBmYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgIC0xLFxuICAgICAgICAgICAgICAgICAgcGFyZW50Qm91bmRhcnksXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeVNlZ21lbnQsXG4gICAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS5mYWxsYmFja1N0YXRlLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tBYm9ydFNldCxcbiAgICAgICAgICAgICAgICAgIFtrZXlQYXRoWzBdLCBcIlN1c3BlbnNlIEZhbGxiYWNrXCIsIGtleVBhdGhbMl1dLFxuICAgICAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgdGFzay50cmVlQ29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2ssXG4gICAgICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcHVzaENvbXBvbmVudFN0YWNrKHN1c3BlbmRlZEZhbGxiYWNrVGFzayk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5waW5nZWRUYXNrcy5wdXNoKHN1c3BlbmRlZEZhbGxiYWNrVGFzayk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiYgbnVsbCAhPT0gdHlwZSlcbiAgICAgICAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgICAgaWYgKFwicmVmXCIgaW4gcHJvcHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNXaXRob3V0UmVmID0ge307XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BzKVxuICAgICAgICAgICAgICAgICAgXCJyZWZcIiAhPT0ga2V5ICYmIChwcm9wc1dpdGhvdXRSZWZba2V5XSA9IHByb3BzW2tleV0pO1xuICAgICAgICAgICAgICB9IGVsc2UgcHJvcHNXaXRob3V0UmVmID0gcHJvcHM7XG4gICAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkMCA9IHJlbmRlcldpdGhIb29rcyhcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAga2V5UGF0aCxcbiAgICAgICAgICAgICAgICB0eXBlLnJlbmRlcixcbiAgICAgICAgICAgICAgICBwcm9wc1dpdGhvdXRSZWYsXG4gICAgICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGZpbmlzaEZ1bmN0aW9uQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgICBrZXlQYXRoLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgIDAgIT09IGxvY2FsSWRDb3VudGVyLFxuICAgICAgICAgICAgICAgIGFjdGlvblN0YXRlQ291bnRlcixcbiAgICAgICAgICAgICAgICBhY3Rpb25TdGF0ZU1hdGNoaW5nSW5kZXhcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywga2V5UGF0aCwgdHlwZS50eXBlLCBwcm9wcywgcmVmKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSRqc2NvbXAkMCA9IHByb3BzLnZhbHVlLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQxID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAgIHZhciBwcmV2U25hcHNob3QgPSB0YXNrLmNvbnRleHQ7XG4gICAgICAgICAgICAgIHZhciBwcmV2S2V5UGF0aCRqc2NvbXAkNCA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgICAgdmFyIHByZXZWYWx1ZSA9IHR5cGUuX2N1cnJlbnRWYWx1ZTI7XG4gICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRWYWx1ZTIgPSB2YWx1ZSRqc2NvbXAkMDtcbiAgICAgICAgICAgICAgdm9pZCAwICE9PSB0eXBlLl9jdXJyZW50UmVuZGVyZXIyICYmXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gdHlwZS5fY3VycmVudFJlbmRlcmVyMiAmJlxuICAgICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlcjIgIT09IHJlbmRlcmVyU2lnaWwgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJEZXRlY3RlZCBtdWx0aXBsZSByZW5kZXJlcnMgY29uY3VycmVudGx5IHJlbmRlcmluZyB0aGUgc2FtZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlcjIgPSByZW5kZXJlclNpZ2lsO1xuICAgICAgICAgICAgICB2YXIgcHJldk5vZGUgPSBjdXJyZW50QWN0aXZlU25hcHNob3QsXG4gICAgICAgICAgICAgICAgbmV3Tm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgIHBhcmVudDogcHJldk5vZGUsXG4gICAgICAgICAgICAgICAgICBkZXB0aDogbnVsbCA9PT0gcHJldk5vZGUgPyAwIDogcHJldk5vZGUuZGVwdGggKyAxLFxuICAgICAgICAgICAgICAgICAgY29udGV4dDogdHlwZSxcbiAgICAgICAgICAgICAgICAgIHBhcmVudFZhbHVlOiBwcmV2VmFsdWUsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUkanNjb21wJDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXdOb2RlO1xuICAgICAgICAgICAgICB0YXNrLmNvbnRleHQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4kanNjb21wJDEsIC0xKTtcbiAgICAgICAgICAgICAgdmFyIHByZXZTbmFwc2hvdCRqc2NvbXAkMCA9IGN1cnJlbnRBY3RpdmVTbmFwc2hvdDtcbiAgICAgICAgICAgICAgaWYgKG51bGwgPT09IHByZXZTbmFwc2hvdCRqc2NvbXAkMClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVHJpZWQgdG8gcG9wIGEgQ29udGV4dCBhdCB0aGUgcm9vdCBvZiB0aGUgYXBwLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcHJldlNuYXBzaG90JGpzY29tcCQwLmNvbnRleHQgIT09IHR5cGUgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJUaGUgcGFyZW50IGNvbnRleHQgaXMgbm90IHRoZSBleHBlY3RlZCBjb250ZXh0LiBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcHJldlNuYXBzaG90JGpzY29tcCQwLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPVxuICAgICAgICAgICAgICAgIHByZXZTbmFwc2hvdCRqc2NvbXAkMC5wYXJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgdm9pZCAwICE9PSB0eXBlLl9jdXJyZW50UmVuZGVyZXIyICYmXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gdHlwZS5fY3VycmVudFJlbmRlcmVyMiAmJlxuICAgICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlcjIgIT09IHJlbmRlcmVyU2lnaWwgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJEZXRlY3RlZCBtdWx0aXBsZSByZW5kZXJlcnMgY29uY3VycmVudGx5IHJlbmRlcmluZyB0aGUgc2FtZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlcjIgPSByZW5kZXJlclNpZ2lsO1xuICAgICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gKGN1cnJlbnRBY3RpdmVTbmFwc2hvdCA9XG4gICAgICAgICAgICAgICAgcHJldlNuYXBzaG90JGpzY29tcCQwLnBhcmVudCk7XG4gICAgICAgICAgICAgIHRhc2suY29udGV4dCA9IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDQ7XG4gICAgICAgICAgICAgIHByZXZTbmFwc2hvdCAhPT0gdGFzay5jb250ZXh0ICYmXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiUG9wcGluZyB0aGUgY29udGV4dCBwcm92aWRlciBkaWQgbm90IHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzbmFwc2hvdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgICAgdmFyIGNvbnRleHQkanNjb21wJDAgPSB0eXBlLl9jb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlbmRlciA9IHByb3BzLmNoaWxkcmVuO1xuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiByZW5kZXIgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJBIGNvbnRleHQgY29uc3VtZXIgd2FzIHJlbmRlcmVkIHdpdGggbXVsdGlwbGUgY2hpbGRyZW4sIG9yIGEgY2hpbGQgdGhhdCBpc24ndCBhIGZ1bmN0aW9uLiBBIGNvbnRleHQgY29uc3VtZXIgZXhwZWN0cyBhIHNpbmdsZSBjaGlsZCB0aGF0IGlzIGEgZnVuY3Rpb24uIElmIHlvdSBkaWQgcGFzcyBhIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGFyb3VuZCBpdC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHZhciBuZXdDaGlsZHJlbiA9IHJlbmRlcihjb250ZXh0JGpzY29tcCQwLl9jdXJyZW50VmFsdWUyKSxcbiAgICAgICAgICAgICAgICBwcmV2S2V5UGF0aCRqc2NvbXAkNSA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5ld0NoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IHByZXZLZXlQYXRoJGpzY29tcCQ1O1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgdmFyIENvbXBvbmVudCA9IGNhbGxMYXp5SW5pdEluREVWKHR5cGUpO1xuICAgICAgICAgICAgICBpZiAoMTIgPT09IHJlcXVlc3Quc3RhdHVzKSB0aHJvdyBudWxsO1xuICAgICAgICAgICAgICByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGtleVBhdGgsIENvbXBvbmVudCwgcHJvcHMsIHJlZik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIHZhciBpbmZvID0gXCJcIjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZvaWQgMCA9PT0gdHlwZSB8fFxuICAgICAgICAgIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdHlwZSAmJlxuICAgICAgICAgICAgMCA9PT0gT2JqZWN0LmtleXModHlwZSkubGVuZ3RoKVxuICAgICAgICApXG4gICAgICAgICAgaW5mbyArPVxuICAgICAgICAgICAgXCIgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIkVsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogXCIgK1xuICAgICAgICAgICAgKChudWxsID09IHR5cGUgPyB0eXBlIDogdHlwZW9mIHR5cGUpICsgXCIuXCIgKyBpbmZvKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZXN1bWVOb2RlKHJlcXVlc3QsIHRhc2ssIHNlZ21lbnRJZCwgbm9kZSwgY2hpbGRJbmRleCkge1xuICAgICAgdmFyIHByZXZSZXBsYXkgPSB0YXNrLnJlcGxheSxcbiAgICAgICAgYmxvY2tlZEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgIHJlc3VtZWRTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAwLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0LFxuICAgICAgICAgICExLFxuICAgICAgICAgICExXG4gICAgICAgICk7XG4gICAgICByZXN1bWVkU2VnbWVudC5pZCA9IHNlZ21lbnRJZDtcbiAgICAgIHJlc3VtZWRTZWdtZW50LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgIHRyeSB7XG4gICAgICAgICh0YXNrLnJlcGxheSA9IG51bGwpLFxuICAgICAgICAgICh0YXNrLmJsb2NrZWRTZWdtZW50ID0gcmVzdW1lZFNlZ21lbnQpLFxuICAgICAgICAgIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCksXG4gICAgICAgICAgKHJlc3VtZWRTZWdtZW50LnN0YXR1cyA9IENPTVBMRVRFRCksXG4gICAgICAgICAgbnVsbCA9PT0gYmxvY2tlZEJvdW5kYXJ5XG4gICAgICAgICAgICA/IChyZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gcmVzdW1lZFNlZ21lbnQpXG4gICAgICAgICAgICA6IChxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYmxvY2tlZEJvdW5kYXJ5LCByZXN1bWVkU2VnbWVudCksXG4gICAgICAgICAgICAgIGJsb2NrZWRCb3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgcmVxdWVzdC5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKGJsb2NrZWRCb3VuZGFyeSkpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgKHRhc2sucmVwbGF5ID0gcHJldlJlcGxheSksICh0YXNrLmJsb2NrZWRTZWdtZW50ID0gbnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBub2RlLCBjaGlsZEluZGV4KSB7XG4gICAgICBudWxsICE9PSB0YXNrLnJlcGxheSAmJiBcIm51bWJlclwiID09PSB0eXBlb2YgdGFzay5yZXBsYXkuc2xvdHNcbiAgICAgICAgPyByZXN1bWVOb2RlKHJlcXVlc3QsIHRhc2ssIHRhc2sucmVwbGF5LnNsb3RzLCBub2RlLCBjaGlsZEluZGV4KVxuICAgICAgICA6ICgodGFzay5ub2RlID0gbm9kZSksXG4gICAgICAgICAgKHRhc2suY2hpbGRJbmRleCA9IGNoaWxkSW5kZXgpLFxuICAgICAgICAgIChub2RlID0gdGFzay5jb21wb25lbnRTdGFjayksXG4gICAgICAgICAgcHVzaENvbXBvbmVudFN0YWNrKHRhc2spLFxuICAgICAgICAgIHJldHJ5Tm9kZShyZXF1ZXN0LCB0YXNrKSxcbiAgICAgICAgICAodGFzay5jb21wb25lbnRTdGFjayA9IG5vZGUpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcmV0cnlOb2RlKHJlcXVlc3QsIHRhc2spIHtcbiAgICAgIHZhciBub2RlID0gdGFzay5ub2RlLFxuICAgICAgICBjaGlsZEluZGV4ID0gdGFzay5jaGlsZEluZGV4O1xuICAgICAgaWYgKG51bGwgIT09IG5vZGUpIHtcbiAgICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBub2RlKSB7XG4gICAgICAgICAgc3dpdGNoIChub2RlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgICAgICAgdmFyIHR5cGUgPSBub2RlLnR5cGUsXG4gICAgICAgICAgICAgICAga2V5ID0gbm9kZS5rZXksXG4gICAgICAgICAgICAgICAgcHJvcHMgPSBub2RlLnByb3BzO1xuICAgICAgICAgICAgICBub2RlID0gcHJvcHMucmVmO1xuICAgICAgICAgICAgICB2YXIgcmVmID0gdm9pZCAwICE9PSBub2RlID8gbm9kZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSxcbiAgICAgICAgICAgICAgICBrZXlPckluZGV4ID1cbiAgICAgICAgICAgICAgICAgIG51bGwgPT0ga2V5ID8gKC0xID09PSBjaGlsZEluZGV4ID8gMCA6IGNoaWxkSW5kZXgpIDoga2V5LFxuICAgICAgICAgICAgICAgIGtleVBhdGggPSBbdGFzay5rZXlQYXRoLCBuYW1lLCBrZXlPckluZGV4XTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT09IHRhc2sucmVwbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlcGxheSA9IHRhc2sucmVwbGF5O1xuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXggPSByZXBsYXkubm9kZXM7XG4gICAgICAgICAgICAgICAgZm9yIChub2RlID0gMDsgbm9kZSA8IGNoaWxkSW5kZXgubGVuZ3RoOyBub2RlKyspXG4gICAgICAgICAgICAgICAgICBpZiAoKChrZXkgPSBjaGlsZEluZGV4W25vZGVdKSwga2V5T3JJbmRleCA9PT0ga2V5WzFdKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoNCA9PT0ga2V5Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBuYW1lICYmIG5hbWUgIT09IGtleVswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIHRoZSByZXN1bWUgdG8gcmVuZGVyIDxcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5WzBdICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj4gaW4gdGhpcyBzbG90IGJ1dCBpbnN0ZWFkIGl0IHJlbmRlcmVkIDxcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+LiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlcyA9IGtleVsyXTtcbiAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlbM107XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRhc2subm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICB0YXNrLnJlcGxheSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzOiBjaGlsZE5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvdHM6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrczogMVxuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywga2V5UGF0aCwgdHlwZSwgcHJvcHMsIHJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAwIDwgdGFzay5yZXBsYXkubm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZmluZCBhbGwgcmVzdW1hYmxlIHNsb3RzIGJ5IGtleS9pbmRleCBkdXJpbmcgcmVwbGF5aW5nLiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5yZXBsYXkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgeCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh4ID09PSBTdXNwZW5zZUV4Y2VwdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXNrLm5vZGUgPT09IG5hbWUgJiYgKHRhc2sucmVwbGF5ID0gcmVwbGF5KSwgeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMgPSBnZXRUaHJvd25JbmZvKHRhc2suY29tcG9uZW50U3RhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JlZFJlcGxheShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHRhc2sucmVwbGF5ID0gcmVwbGF5O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSBSRUFDVF9TVVNQRU5TRV9UWVBFKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgdGhlIHJlc3VtZSB0byByZW5kZXIgPFN1c3BlbnNlPiBpbiB0aGlzIHNsb3QgYnV0IGluc3RlYWQgaXQgcmVuZGVyZWQgPFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiVW5rbm93blwiKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+LiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmID0ga2V5WzVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGF5ID0ga2V5WzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGtleVszXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleU9ySW5kZXggPSBudWxsID09PSBrZXlbNF0gPyBbXSA6IGtleVs0XVsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IG51bGwgPT09IGtleVs0XSA/IG51bGwgOiBrZXlbNF1bM107XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJldktleVBhdGggPSB0YXNrLmtleVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVwbGF5U2V0ID0gdGFzay5yZXBsYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEhvaXN0YWJsZVN0YXRlID0gdGFzay5ob2lzdGFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IHByb3BzLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMgPSBwcm9wcy5mYWxsYmFjaztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmYWxsYmFja0Fib3J0U2V0ID0gbmV3IFNldCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tBYm9ydFNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5yb290U2VnbWVudElEID0gcmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5ibG9ja2VkQm91bmRhcnkgPSByZXN1bWVkQm91bmRhcnk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlID0gcmVzdW1lZEJvdW5kYXJ5LmNvbnRlbnRTdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnJlcGxheSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXM6IHJlcGxheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdHM6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdUYXNrczogMVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY29udGVudCwgLTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9PT0gdGFzay5yZXBsYXkucGVuZGluZ1Rhc2tzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA8IHRhc2sucmVwbGF5Lm5vZGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvdWxkbid0IGZpbmQgYWxsIHJlc3VtYWJsZSBzbG90cyBieSBrZXkvaW5kZXggZHVyaW5nIHJlcGxheWluZy4gVGhlIHRyZWUgZG9lc24ndCBtYXRjaCBzbyBSZWFjdCB3aWxsIGZhbGxiYWNrIHRvIGNsaWVudCByZW5kZXJpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnJlcGxheS5wZW5kaW5nVGFza3MtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPT09IHJlc3VtZWRCb3VuZGFyeS5wZW5kaW5nVGFza3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnkuc3RhdHVzID09PSBQRU5ESU5HXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5zdGF0dXMgPSBDT01QTEVURUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2gocmVzdW1lZEJvdW5kYXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAocmVzdW1lZEJvdW5kYXJ5LnN0YXR1cyA9IENMSUVOVF9SRU5ERVJFRCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkTm9kZXMgPSBnZXRUaHJvd25JbmZvKHRhc2suY29tcG9uZW50U3RhY2spKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZSA9IGxvZ1JlY292ZXJhYmxlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlRXJyb3JGb3JCb3VuZGFyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5yZXBsYXkucGVuZGluZ1Rhc2tzLS0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAodGFzay5ibG9ja2VkQm91bmRhcnkgPSBwYXJlbnRCb3VuZGFyeSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhc2suaG9pc3RhYmxlU3RhdGUgPSBwYXJlbnRIb2lzdGFibGVTdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhc2sucmVwbGF5ID0gcHJldmlvdXNSZXBsYXlTZXQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzID0gY3JlYXRlUmVwbGF5VGFzayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBub2Rlczoga2V5T3JJbmRleCwgc2xvdHM6IGtleSwgcGVuZGluZ1Rhc2tzOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Qm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5mYWxsYmFja1N0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0Fib3J0U2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBba2V5UGF0aFswXSwgXCJTdXNwZW5zZSBGYWxsYmFja1wiLCBrZXlQYXRoWzJdXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sudHJlZUNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICEwXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHVzaENvbXBvbmVudFN0YWNrKGNoaWxkTm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5waW5nZWRUYXNrcy5wdXNoKGNoaWxkTm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjaGlsZEluZGV4LnNwbGljZShub2RlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGtleVBhdGgsIHR5cGUsIHByb3BzLCByZWYpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIlBvcnRhbHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgcmVuZGVyZXIuIFJlbmRlciB0aGVtIGNvbmRpdGlvbmFsbHkgc28gdGhhdCB0aGV5IG9ubHkgYXBwZWFyIG9uIHRoZSBjbGllbnQgcmVuZGVyLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgbm9kZSA9IGNhbGxMYXp5SW5pdEluREVWKG5vZGUpO1xuICAgICAgICAgICAgICBpZiAoMTIgPT09IHJlcXVlc3Quc3RhdHVzKSB0aHJvdyBudWxsO1xuICAgICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKG5vZGUpKSB7XG4gICAgICAgICAgICByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBudWxsID09PSBub2RlIHx8IFwib2JqZWN0XCIgIT09IHR5cGVvZiBub2RlXG4gICAgICAgICAgICA/IChwcm9wcyA9IG51bGwpXG4gICAgICAgICAgICA6ICgoY2hpbGROb2RlcyA9XG4gICAgICAgICAgICAgICAgKE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBub2RlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0pIHx8XG4gICAgICAgICAgICAgICAgbm9kZVtcIkBAaXRlcmF0b3JcIl0pLFxuICAgICAgICAgICAgICAocHJvcHMgPSBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjaGlsZE5vZGVzID8gY2hpbGROb2RlcyA6IG51bGwpKTtcbiAgICAgICAgICBpZiAocHJvcHMgJiYgKGNoaWxkTm9kZXMgPSBwcm9wcy5jYWxsKG5vZGUpKSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXMgPT09IG5vZGUpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIC0xICE9PSBjaGlsZEluZGV4IHx8XG4gICAgICAgICAgICAgICAgbnVsbCA9PT0gdGFzay5jb21wb25lbnRTdGFjayB8fFxuICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHRhc2suY29tcG9uZW50U3RhY2sudHlwZSB8fFxuICAgICAgICAgICAgICAgIFwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl1cIiAhPT1cbiAgICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0YXNrLmNvbXBvbmVudFN0YWNrLnR5cGUpIHx8XG4gICAgICAgICAgICAgICAgXCJbb2JqZWN0IEdlbmVyYXRvcl1cIiAhPT1cbiAgICAgICAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjaGlsZE5vZGVzKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZGlkV2FybkFib3V0R2VuZXJhdG9ycyB8fFxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJVc2luZyBJdGVyYXRvcnMgYXMgY2hpbGRyZW4gaXMgdW5zdXBwb3J0ZWQgYW5kIHdpbGwgbGlrZWx5IHlpZWxkIHVuZXhwZWN0ZWQgcmVzdWx0cyBiZWNhdXNlIGVudW1lcmF0aW5nIGEgZ2VuZXJhdG9yIG11dGF0ZXMgaXQuIFlvdSBtYXkgY29udmVydCBpdCB0byBhbiBhcnJheSB3aXRoIGBBcnJheS5mcm9tKClgIG9yIHRoZSBgWy4uLnNwcmVhZF1gIG9wZXJhdG9yIGJlZm9yZSByZW5kZXJpbmcuIFlvdSBjYW4gYWxzbyB1c2UgYW4gSXRlcmFibGUgdGhhdCBjYW4gaXRlcmF0ZSBtdWx0aXBsZSB0aW1lcyBvdmVyIHRoZSBzYW1lIGl0ZW1zLlwiXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKGRpZFdhcm5BYm91dEdlbmVyYXRvcnMgPSAhMCk7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgbm9kZS5lbnRyaWVzICE9PSBwcm9wcyB8fFxuICAgICAgICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgfHxcbiAgICAgICAgICAgICAgICAoY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYW4gYXJyYXkgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAoZGlkV2FybkFib3V0TWFwcyA9ICEwKSk7XG4gICAgICAgICAgICBub2RlID0gY2hpbGROb2Rlcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAoIW5vZGUuZG9uZSkge1xuICAgICAgICAgICAgICBwcm9wcyA9IFtdO1xuICAgICAgICAgICAgICBkbyBwcm9wcy5wdXNoKG5vZGUudmFsdWUpLCAobm9kZSA9IGNoaWxkTm9kZXMubmV4dCgpKTtcbiAgICAgICAgICAgICAgd2hpbGUgKCFub2RlLmRvbmUpO1xuICAgICAgICAgICAgICByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QsIHRhc2ssIHByb3BzLCBjaGlsZEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG5vZGUudGhlbilcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICh0YXNrLnRoZW5hYmxlU3RhdGUgPSBudWxsKSxcbiAgICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgICB1bndyYXBUaGVuYWJsZShub2RlKSxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG5vZGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSlcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUoXG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgIG5vZGUuX2N1cnJlbnRWYWx1ZTIsXG4gICAgICAgICAgICAgIGNoaWxkSW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2hpbGRJbmRleCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChub2RlKTtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArXG4gICAgICAgICAgICAgIChcIltvYmplY3QgT2JqZWN0XVwiID09PSBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICAgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMobm9kZSkuam9pbihcIiwgXCIpICsgXCJ9XCJcbiAgICAgICAgICAgICAgICA6IGNoaWxkSW5kZXgpICtcbiAgICAgICAgICAgICAgXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBub2RlXG4gICAgICAgICAgPyAoKGNoaWxkSW5kZXggPSB0YXNrLmJsb2NrZWRTZWdtZW50KSxcbiAgICAgICAgICAgIG51bGwgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgICAgICAgKGNoaWxkSW5kZXgubGFzdFB1c2hlZFRleHQgPSBwdXNoVGV4dEluc3RhbmNlKFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXguY2h1bmtzLFxuICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4Lmxhc3RQdXNoZWRUZXh0XG4gICAgICAgICAgICAgICkpKVxuICAgICAgICAgIDogXCJudW1iZXJcIiA9PT0gdHlwZW9mIG5vZGUgfHwgXCJiaWdpbnRcIiA9PT0gdHlwZW9mIG5vZGVcbiAgICAgICAgICAgID8gKChjaGlsZEluZGV4ID0gdGFzay5ibG9ja2VkU2VnbWVudCksXG4gICAgICAgICAgICAgIG51bGwgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgICAgICAgICAoY2hpbGRJbmRleC5sYXN0UHVzaGVkVGV4dCA9IHB1c2hUZXh0SW5zdGFuY2UoXG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4LmNodW5rcyxcbiAgICAgICAgICAgICAgICAgIFwiXCIgKyBub2RlLFxuICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkSW5kZXgubGFzdFB1c2hlZFRleHRcbiAgICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgIDogKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG5vZGUgJiZcbiAgICAgICAgICAgICAgICAoKGNoaWxkSW5kZXggPSBub2RlLmRpc3BsYXlOYW1lIHx8IG5vZGUubmFtZSB8fCBcIkNvbXBvbmVudFwiKSxcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkLiBUaGlzIG1heSBoYXBwZW4gaWYgeW91IHJldHVybiAlcyBpbnN0ZWFkIG9mIDwlcyAvPiBmcm9tIHJlbmRlci4gT3IgbWF5YmUgeW91IG1lYW50IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiByZXR1cm4gaXQuXCIsXG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4LFxuICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleFxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2Ygbm9kZSAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlN5bWJvbHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkLlxcbiAgJXNcIixcbiAgICAgICAgICAgICAgICAgIFN0cmluZyhub2RlKVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QkanNjb21wJDAsIHRhc2ssIGNoaWxkcmVuLCBjaGlsZEluZGV4KSB7XG4gICAgICB2YXIgcHJldktleVBhdGggPSB0YXNrLmtleVBhdGgsXG4gICAgICAgIHByZXZpb3VzQ29tcG9uZW50U3RhY2sgPSB0YXNrLmNvbXBvbmVudFN0YWNrO1xuICAgICAgcHVzaFNlcnZlckNvbXBvbmVudFN0YWNrKHRhc2ssIHRhc2subm9kZS5fZGVidWdJbmZvKTtcbiAgICAgIGlmIChcbiAgICAgICAgLTEgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgKCh0YXNrLmtleVBhdGggPSBbdGFzay5rZXlQYXRoLCBcIkZyYWdtZW50XCIsIGNoaWxkSW5kZXhdKSxcbiAgICAgICAgbnVsbCAhPT0gdGFzay5yZXBsYXkpXG4gICAgICApIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgcmVwbGF5ID0gdGFzay5yZXBsYXksIHJlcGxheU5vZGVzID0gcmVwbGF5Lm5vZGVzLCBqID0gMDtcbiAgICAgICAgICBqIDwgcmVwbGF5Tm9kZXMubGVuZ3RoO1xuICAgICAgICAgIGorK1xuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IHJlcGxheU5vZGVzW2pdO1xuICAgICAgICAgIGlmIChub2RlWzFdID09PSBjaGlsZEluZGV4KSB7XG4gICAgICAgICAgICBjaGlsZEluZGV4ID0gbm9kZVsyXTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlWzNdO1xuICAgICAgICAgICAgdGFzay5yZXBsYXkgPSB7IG5vZGVzOiBjaGlsZEluZGV4LCBzbG90czogbm9kZSwgcGVuZGluZ1Rhc2tzOiAxIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QkanNjb21wJDAsIHRhc2ssIGNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAxID09PSB0YXNrLnJlcGxheS5wZW5kaW5nVGFza3MgJiZcbiAgICAgICAgICAgICAgICAwIDwgdGFzay5yZXBsYXkubm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZmluZCBhbGwgcmVzdW1hYmxlIHNsb3RzIGJ5IGtleS9pbmRleCBkdXJpbmcgcmVwbGF5aW5nLiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHggJiZcbiAgICAgICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICAgICAgKHggPT09IFN1c3BlbnNlRXhjZXB0aW9uIHx8IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlbilcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRocm93IHg7XG4gICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICBjaGlsZHJlbiA9IGdldFRocm93bkluZm8odGFzay5jb21wb25lbnRTdGFjayk7XG4gICAgICAgICAgICAgIGVycm9yZWRSZXBsYXkoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICB0YXNrLmJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXgsXG4gICAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5yZXBsYXkgPSByZXBsYXk7XG4gICAgICAgICAgICByZXBsYXlOb2Rlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGg7XG4gICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXBsYXkgPSB0YXNrLnRyZWVDb250ZXh0O1xuICAgICAgcmVwbGF5Tm9kZXMgPSBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICBpZiAoXG4gICAgICAgIG51bGwgIT09IHRhc2sucmVwbGF5ICYmXG4gICAgICAgICgoaiA9IHRhc2sucmVwbGF5LnNsb3RzKSwgbnVsbCAhPT0gaiAmJiBcIm9iamVjdFwiID09PSB0eXBlb2YgailcbiAgICAgICkge1xuICAgICAgICBmb3IgKGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwgcmVwbGF5Tm9kZXM7IGNoaWxkSW5kZXgrKykge1xuICAgICAgICAgIG5vZGUgPSBjaGlsZHJlbltjaGlsZEluZGV4XTtcbiAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KHJlcGxheSwgcmVwbGF5Tm9kZXMsIGNoaWxkSW5kZXgpO1xuICAgICAgICAgIHZhciByZXN1bWVTZWdtZW50SUQgPSBqW2NoaWxkSW5kZXhdO1xuICAgICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiByZXN1bWVTZWdtZW50SURcbiAgICAgICAgICAgID8gKHJlc3VtZU5vZGUoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRCxcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXhcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGVsZXRlIGpbY2hpbGRJbmRleF0pXG4gICAgICAgICAgICA6IHJlbmRlck5vZGUocmVxdWVzdCRqc2NvbXAkMCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHJlcGxheTtcbiAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGg7XG4gICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGogPSAwOyBqIDwgcmVwbGF5Tm9kZXM7IGorKykge1xuICAgICAgICBjaGlsZEluZGV4ID0gY2hpbGRyZW5bal07XG4gICAgICAgIHZhciByZXF1ZXN0ID0gcmVxdWVzdCRqc2NvbXAkMDtcbiAgICAgICAgbm9kZSA9IHRhc2s7XG4gICAgICAgIHJlc3VtZVNlZ21lbnRJRCA9IGNoaWxkSW5kZXg7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBudWxsICE9PSByZXN1bWVTZWdtZW50SUQgJiZcbiAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgcmVzdW1lU2VnbWVudElEICYmXG4gICAgICAgICAgKHJlc3VtZVNlZ21lbnRJRC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFIHx8XG4gICAgICAgICAgICByZXN1bWVTZWdtZW50SUQuJCR0eXBlb2YgPT09IFJFQUNUX1BPUlRBTF9UWVBFKSAmJlxuICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRC5fc3RvcmUgJiZcbiAgICAgICAgICAoKCFyZXN1bWVTZWdtZW50SUQuX3N0b3JlLnZhbGlkYXRlZCAmJiBudWxsID09IHJlc3VtZVNlZ21lbnRJRC5rZXkpIHx8XG4gICAgICAgICAgICAyID09PSByZXN1bWVTZWdtZW50SUQuX3N0b3JlLnZhbGlkYXRlZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKFwib2JqZWN0XCIgIT09IHR5cGVvZiByZXN1bWVTZWdtZW50SUQuX3N0b3JlKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVhY3QgQ29tcG9uZW50IGluIHdhcm5Gb3JNaXNzaW5nS2V5IHNob3VsZCBoYXZlIGEgX3N0b3JlLiBUaGlzIGVycm9yIGlzIGxpa2VseSBjYXVzZWQgYnkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRC5fc3RvcmUudmFsaWRhdGVkID0gMTtcbiAgICAgICAgICB2YXIgZGlkV2FybkZvcktleSA9IHJlcXVlc3QuZGlkV2FybkZvcktleTtcbiAgICAgICAgICBudWxsID09IGRpZFdhcm5Gb3JLZXkgJiZcbiAgICAgICAgICAgIChkaWRXYXJuRm9yS2V5ID0gcmVxdWVzdC5kaWRXYXJuRm9yS2V5ID0gbmV3IFdlYWtTZXQoKSk7XG4gICAgICAgICAgcmVxdWVzdCA9IG5vZGUuY29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHJlcXVlc3QgJiYgIWRpZFdhcm5Gb3JLZXkuaGFzKHJlcXVlc3QpKSB7XG4gICAgICAgICAgICBkaWRXYXJuRm9yS2V5LmFkZChyZXF1ZXN0KTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHJlc3VtZVNlZ21lbnRJRC50eXBlKTtcbiAgICAgICAgICAgIGRpZFdhcm5Gb3JLZXkgPSByZXN1bWVTZWdtZW50SUQuX293bmVyO1xuICAgICAgICAgICAgdmFyIHBhcmVudE93bmVyID0gcmVxdWVzdC5vd25lcjtcbiAgICAgICAgICAgIHJlcXVlc3QgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHBhcmVudE93bmVyICYmIFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBwYXJlbnRPd25lci50eXBlKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHBhcmVudE93bmVyLnR5cGUpO1xuICAgICAgICAgICAgICBuYW1lICYmXG4gICAgICAgICAgICAgICAgKHJlcXVlc3QgPSBcIlxcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGBcIiArIG5hbWUgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdCB8fFxuICAgICAgICAgICAgICAoY29tcG9uZW50TmFtZSAmJlxuICAgICAgICAgICAgICAgIChyZXF1ZXN0ID1cbiAgICAgICAgICAgICAgICAgIFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgK1xuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSArXG4gICAgICAgICAgICAgICAgICBcIj4uXCIpKTtcbiAgICAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgbnVsbCAhPSBkaWRXYXJuRm9yS2V5ICYmXG4gICAgICAgICAgICAgIHBhcmVudE93bmVyICE9PSBkaWRXYXJuRm9yS2V5ICYmXG4gICAgICAgICAgICAgICgocGFyZW50T3duZXIgPSBudWxsKSxcbiAgICAgICAgICAgICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGRpZFdhcm5Gb3JLZXkudHlwZVxuICAgICAgICAgICAgICAgID8gKHBhcmVudE93bmVyID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGRpZFdhcm5Gb3JLZXkudHlwZSkpXG4gICAgICAgICAgICAgICAgOiBcInN0cmluZ1wiID09PSB0eXBlb2YgZGlkV2FybkZvcktleS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAocGFyZW50T3duZXIgPSBkaWRXYXJuRm9yS2V5Lm5hbWUpLFxuICAgICAgICAgICAgICBwYXJlbnRPd25lciAmJlxuICAgICAgICAgICAgICAgIChjb21wb25lbnROYW1lID1cbiAgICAgICAgICAgICAgICAgIFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgcGFyZW50T3duZXIgKyBcIi5cIikpO1xuICAgICAgICAgICAgZGlkV2FybkZvcktleSA9IG5vZGUuY29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgICBub2RlLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG5vZGUuY29tcG9uZW50U3RhY2ssXG4gICAgICAgICAgICAgIHR5cGU6IHJlc3VtZVNlZ21lbnRJRC50eXBlLFxuICAgICAgICAgICAgICBvd25lcjogcmVzdW1lU2VnbWVudElELl9vd25lcixcbiAgICAgICAgICAgICAgc3RhY2s6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLiVzJXMgU2VlIGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsXG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBub2RlLmNvbXBvbmVudFN0YWNrID0gZGlkV2FybkZvcktleTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHB1c2hUcmVlQ29udGV4dChyZXBsYXksIHJlcGxheU5vZGVzLCBqKTtcbiAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0JGpzY29tcCQwLCB0YXNrLCBjaGlsZEluZGV4LCBqKTtcbiAgICAgIH1cbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSByZXBsYXk7XG4gICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aDtcbiAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgYm91bmRhcnkpIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXM7XG4gICAgICBudWxsICE9PSByZXF1ZXN0ICYmXG4gICAgICAgICgoYm91bmRhcnkgPSBib3VuZGFyeS50cmFja2VkQ29udGVudEtleVBhdGgpLFxuICAgICAgICBudWxsICE9PSBib3VuZGFyeSAmJlxuICAgICAgICAgICgoYm91bmRhcnkgPSByZXF1ZXN0LndvcmtpbmdNYXAuZ2V0KGJvdW5kYXJ5KSksXG4gICAgICAgICAgdm9pZCAwICE9PSBib3VuZGFyeSAmJlxuICAgICAgICAgICAgKChib3VuZGFyeS5sZW5ndGggPSA0KSwgKGJvdW5kYXJ5WzJdID0gW10pLCAoYm91bmRhcnlbM10gPSBudWxsKSkpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3Bhd25OZXdTdXNwZW5kZWRSZXBsYXlUYXNrKHJlcXVlc3QsIHRhc2ssIHRoZW5hYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybiBjcmVhdGVSZXBsYXlUYXNrKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB0aGVuYWJsZVN0YXRlLFxuICAgICAgICB0YXNrLnJlcGxheSxcbiAgICAgICAgdGFzay5ub2RlLFxuICAgICAgICB0YXNrLmNoaWxkSW5kZXgsXG4gICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICB0YXNrLmFib3J0U2V0LFxuICAgICAgICB0YXNrLmtleVBhdGgsXG4gICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICB0YXNrLmlzRmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwYXduTmV3U3VzcGVuZGVkUmVuZGVyVGFzayhyZXF1ZXN0LCB0YXNrLCB0aGVuYWJsZVN0YXRlKSB7XG4gICAgICB2YXIgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQsXG4gICAgICAgIG5ld1NlZ21lbnQgPSBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIHNlZ21lbnQuY2h1bmtzLmxlbmd0aCxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0LFxuICAgICAgICAgICEwXG4gICAgICAgICk7XG4gICAgICBzZWdtZW50LmNoaWxkcmVuLnB1c2gobmV3U2VnbWVudCk7XG4gICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICByZXR1cm4gY3JlYXRlUmVuZGVyVGFzayhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgdGhlbmFibGVTdGF0ZSxcbiAgICAgICAgdGFzay5ub2RlLFxuICAgICAgICB0YXNrLmNoaWxkSW5kZXgsXG4gICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICBuZXdTZWdtZW50LFxuICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICB0YXNrLmFib3J0U2V0LFxuICAgICAgICB0YXNrLmtleVBhdGgsXG4gICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICB0YXNrLmlzRmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCkge1xuICAgICAgdmFyIHByZXZpb3VzRm9ybWF0Q29udGV4dCA9IHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgcHJldmlvdXNDb250ZXh0ID0gdGFzay5jb250ZXh0LFxuICAgICAgICBwcmV2aW91c0tleVBhdGggPSB0YXNrLmtleVBhdGgsXG4gICAgICAgIHByZXZpb3VzVHJlZUNvbnRleHQgPSB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICBwcmV2aW91c0NvbXBvbmVudFN0YWNrID0gdGFzay5jb21wb25lbnRTdGFjayxcbiAgICAgICAgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQ7XG4gICAgICBpZiAobnVsbCA9PT0gc2VnbWVudClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChyZXNldEhvb2tzU3RhdGUoKSxcbiAgICAgICAgICAgIChub2RlID1cbiAgICAgICAgICAgICAgdGhyb3duVmFsdWUgPT09IFN1c3BlbnNlRXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgPyBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpXG4gICAgICAgICAgICAgICAgOiB0aHJvd25WYWx1ZSksXG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygbm9kZSAmJiBudWxsICE9PSBub2RlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG5vZGUudGhlbikge1xuICAgICAgICAgICAgICBjaGlsZEluZGV4ID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgICAgICByZXF1ZXN0ID0gc3Bhd25OZXdTdXNwZW5kZWRSZXBsYXlUYXNrKFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICkucGluZztcbiAgICAgICAgICAgICAgbm9kZS50aGVuKHJlcXVlc3QsIHJlcXVlc3QpO1xuICAgICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBwcmV2aW91c0Zvcm1hdENvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldmlvdXNLZXlQYXRoO1xuICAgICAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldmlvdXNUcmVlQ29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5jb21wb25lbnRTdGFjayA9IHByZXZpb3VzQ29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIiA9PT0gbm9kZS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgIG5vZGUgPSBnZXRUaGVuYWJsZVN0YXRlQWZ0ZXJTdXNwZW5kaW5nKCk7XG4gICAgICAgICAgICAgIG5vZGUgPSBzcGF3bk5ld1N1c3BlbmRlZFJlcGxheVRhc2socmVxdWVzdCwgdGFzaywgbm9kZSk7XG4gICAgICAgICAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IHByZXZpb3VzS2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHByZXZpb3VzVHJlZUNvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHByZXZpb3VzQ29udGV4dCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBzZWdtZW50LmNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICBjaHVua0xlbmd0aCA9IHNlZ21lbnQuY2h1bmtzLmxlbmd0aDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSQzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHJlc2V0SG9va3NTdGF0ZSgpLFxuICAgICAgICAgICAgKHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoID0gY2hpbGRyZW5MZW5ndGgpLFxuICAgICAgICAgICAgKHNlZ21lbnQuY2h1bmtzLmxlbmd0aCA9IGNodW5rTGVuZ3RoKSxcbiAgICAgICAgICAgIChub2RlID1cbiAgICAgICAgICAgICAgdGhyb3duVmFsdWUkMyA9PT0gU3VzcGVuc2VFeGNlcHRpb25cbiAgICAgICAgICAgICAgICA/IGdldFN1c3BlbmRlZFRoZW5hYmxlKClcbiAgICAgICAgICAgICAgICA6IHRocm93blZhbHVlJDMpLFxuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiYgbnVsbCAhPT0gbm9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBub2RlLnRoZW4pIHtcbiAgICAgICAgICAgICAgY2hpbGRJbmRleCA9IGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKTtcbiAgICAgICAgICAgICAgcmVxdWVzdCA9IHNwYXduTmV3U3VzcGVuZGVkUmVuZGVyVGFzayhcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAgY2hpbGRJbmRleFxuICAgICAgICAgICAgICApLnBpbmc7XG4gICAgICAgICAgICAgIG5vZGUudGhlbihyZXF1ZXN0LCByZXF1ZXN0KTtcbiAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IHByZXZpb3VzS2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHByZXZpb3VzVHJlZUNvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHByZXZpb3VzQ29udGV4dCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIgPT09IG5vZGUubWVzc2FnZSkge1xuICAgICAgICAgICAgICBub2RlID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgICAgICBub2RlID0gc3Bhd25OZXdTdXNwZW5kZWRSZW5kZXJUYXNrKHJlcXVlc3QsIHRhc2ssIG5vZGUpO1xuICAgICAgICAgICAgICByZXF1ZXN0LnBpbmdlZFRhc2tzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCA9IHByZXZpb3VzRm9ybWF0Q29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5jb250ZXh0ID0gcHJldmlvdXNDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2aW91c0tleVBhdGg7XG4gICAgICAgICAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwcmV2aW91c1RyZWVDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gcHJldmlvdXNDb21wb25lbnRTdGFjaztcbiAgICAgICAgICAgICAgc3dpdGNoQ29udGV4dChwcmV2aW91c0NvbnRleHQpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBwcmV2aW91c0Zvcm1hdENvbnRleHQ7XG4gICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICB0YXNrLmtleVBhdGggPSBwcmV2aW91c0tleVBhdGg7XG4gICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldmlvdXNUcmVlQ29udGV4dDtcbiAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcbiAgICAgIHRocm93IG5vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVycm9yZWRSZXBsYXkoXG4gICAgICByZXF1ZXN0LFxuICAgICAgYm91bmRhcnksXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mbyxcbiAgICAgIHJlcGxheU5vZGVzLFxuICAgICAgcmVzdW1lU2xvdHNcbiAgICApIHtcbiAgICAgIHZhciBlcnJvckRpZ2VzdCA9IGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgICBhYm9ydFJlbWFpbmluZ1JlcGxheU5vZGVzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgcmVwbGF5Tm9kZXMsXG4gICAgICAgIHJlc3VtZVNsb3RzLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgZXJyb3JEaWdlc3QsXG4gICAgICAgIGVycm9ySW5mbyxcbiAgICAgICAgITFcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFib3J0VGFza1NvZnQodGFzaykge1xuICAgICAgdmFyIGJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gICAgICB0YXNrID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgIG51bGwgIT09IHRhc2sgJiYgKCh0YXNrLnN0YXR1cyA9IDMpLCBmaW5pc2hlZFRhc2sodGhpcywgYm91bmRhcnksIHRhc2spKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWJvcnRSZW1haW5pbmdSZXBsYXlOb2RlcyhcbiAgICAgIHJlcXVlc3QkanNjb21wJDAsXG4gICAgICBib3VuZGFyeSxcbiAgICAgIG5vZGVzLFxuICAgICAgc2xvdHMsXG4gICAgICBlcnJvciRqc2NvbXAkMCxcbiAgICAgIGVycm9yRGlnZXN0JGpzY29tcCQwLFxuICAgICAgZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgYWJvcnRlZFxuICAgICkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAoNCA9PT0gbm9kZS5sZW5ndGgpXG4gICAgICAgICAgYWJvcnRSZW1haW5pbmdSZXBsYXlOb2RlcyhcbiAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAsXG4gICAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICAgIG5vZGVbMl0sXG4gICAgICAgICAgICBub2RlWzNdLFxuICAgICAgICAgICAgZXJyb3IkanNjb21wJDAsXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGVycm9ySW5mbyRqc2NvbXAkMCxcbiAgICAgICAgICAgIGFib3J0ZWRcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgcmVxdWVzdCA9IHJlcXVlc3QkanNjb21wJDA7XG4gICAgICAgICAgbm9kZSA9IG5vZGVbNV07XG4gICAgICAgICAgdmFyIGVycm9yID0gZXJyb3IkanNjb21wJDAsXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCA9IGVycm9yRGlnZXN0JGpzY29tcCQwLFxuICAgICAgICAgICAgZXJyb3JJbmZvID0gZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgICAgICAgd2FzQWJvcnRlZCA9IGFib3J0ZWQsXG4gICAgICAgICAgICByZXN1bWVkQm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIG5ldyBTZXQoKSk7XG4gICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgICAgICByZXN1bWVkQm91bmRhcnkucm9vdFNlZ21lbnRJRCA9IG5vZGU7XG4gICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnN0YXR1cyA9IENMSUVOVF9SRU5ERVJFRDtcbiAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LFxuICAgICAgICAgICAgZXJyb3JEaWdlc3QsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGVycm9ySW5mbyxcbiAgICAgICAgICAgIHdhc0Fib3J0ZWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKHJlc3VtZWRCb3VuZGFyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGVzLmxlbmd0aCA9IDA7XG4gICAgICBpZiAobnVsbCAhPT0gc2xvdHMpIHtcbiAgICAgICAgaWYgKG51bGwgPT09IGJvdW5kYXJ5KVxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJXZSBzaG91bGQgbm90IGhhdmUgYW55IHJlc3VtYWJsZSBub2RlcyBpbiB0aGUgc2hlbGwuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICApO1xuICAgICAgICBib3VuZGFyeS5zdGF0dXMgIT09IENMSUVOVF9SRU5ERVJFRCAmJlxuICAgICAgICAgICgoYm91bmRhcnkuc3RhdHVzID0gQ0xJRU5UX1JFTkRFUkVEKSxcbiAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGVycm9yJGpzY29tcCQwLFxuICAgICAgICAgICAgZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgICAgICAgYWJvcnRlZFxuICAgICAgICAgICksXG4gICAgICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSkpO1xuICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHNsb3RzKVxuICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHNsb3RzKSBkZWxldGUgc2xvdHNbaW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhYm9ydFRhc2sodGFzaywgcmVxdWVzdCwgZXJyb3IpIHtcbiAgICAgIHZhciBib3VuZGFyeSA9IHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgIGlmIChudWxsICE9PSBzZWdtZW50KSB7XG4gICAgICAgIGlmICg2ID09PSBzZWdtZW50LnN0YXR1cykgcmV0dXJuO1xuICAgICAgICBzZWdtZW50LnN0YXR1cyA9IDM7XG4gICAgICB9XG4gICAgICBzZWdtZW50ID0gZ2V0VGhyb3duSW5mbyh0YXNrLmNvbXBvbmVudFN0YWNrKTtcbiAgICAgIGlmIChudWxsID09PSBib3VuZGFyeSkge1xuICAgICAgICBpZiAoMTMgIT09IHJlcXVlc3Quc3RhdHVzICYmIHJlcXVlc3Quc3RhdHVzICE9PSBDTE9TRUQpIHtcbiAgICAgICAgICBib3VuZGFyeSA9IHRhc2sucmVwbGF5O1xuICAgICAgICAgIGlmIChudWxsID09PSBib3VuZGFyeSkge1xuICAgICAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwgc2VnbWVudCk7XG4gICAgICAgICAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYm91bmRhcnkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgMCA9PT0gYm91bmRhcnkucGVuZGluZ1Rhc2tzICYmXG4gICAgICAgICAgICAwIDwgYm91bmRhcnkubm9kZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAoKHRhc2sgPSBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCBzZWdtZW50KSksXG4gICAgICAgICAgICBhYm9ydFJlbWFpbmluZ1JlcGxheU5vZGVzKFxuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBib3VuZGFyeS5ub2RlcyxcbiAgICAgICAgICAgICAgYm91bmRhcnkuc2xvdHMsXG4gICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzLS07XG4gICAgICAgICAgMCA9PT0gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzICYmIGNvbXBsZXRlU2hlbGwocmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZVxuICAgICAgICBib3VuZGFyeS5wZW5kaW5nVGFza3MtLSxcbiAgICAgICAgICBib3VuZGFyeS5zdGF0dXMgIT09IENMSUVOVF9SRU5ERVJFRCAmJlxuICAgICAgICAgICAgKChib3VuZGFyeS5zdGF0dXMgPSBDTElFTlRfUkVOREVSRUQpLFxuICAgICAgICAgICAgKHRhc2sgPSBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCBzZWdtZW50KSksXG4gICAgICAgICAgICAoYm91bmRhcnkuc3RhdHVzID0gQ0xJRU5UX1JFTkRFUkVEKSxcbiAgICAgICAgICAgIGVuY29kZUVycm9yRm9yQm91bmRhcnkoYm91bmRhcnksIHRhc2ssIGVycm9yLCBzZWdtZW50LCAhMCksXG4gICAgICAgICAgICB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgYm91bmRhcnkpLFxuICAgICAgICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KSksXG4gICAgICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5mb3JFYWNoKGZ1bmN0aW9uIChmYWxsYmFja1Rhc2spIHtcbiAgICAgICAgICAgIHJldHVybiBhYm9ydFRhc2soZmFsbGJhY2tUYXNrLCByZXF1ZXN0LCBlcnJvcik7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpO1xuICAgICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MtLTtcbiAgICAgIDAgPT09IHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzICYmIGNvbXBsZXRlQWxsKHJlcXVlc3QpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzYWZlbHlFbWl0RWFybHlQcmVsb2FkcyhyZXF1ZXN0LCBzaGVsbENvbXBsZXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgIG9uSGVhZGVycyA9IHJlbmRlclN0YXRlLm9uSGVhZGVycztcbiAgICAgICAgaWYgKG9uSGVhZGVycykge1xuICAgICAgICAgIHZhciBoZWFkZXJzID0gcmVuZGVyU3RhdGUuaGVhZGVycztcbiAgICAgICAgICBpZiAoaGVhZGVycykge1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuaGVhZGVycyA9IG51bGw7XG4gICAgICAgICAgICB2YXIgbGlua0hlYWRlciA9IGhlYWRlcnMucHJlY29ubmVjdHM7XG4gICAgICAgICAgICBoZWFkZXJzLmZvbnRQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAobGlua0hlYWRlciAmJiAobGlua0hlYWRlciArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAobGlua0hlYWRlciArPSBoZWFkZXJzLmZvbnRQcmVsb2FkcykpO1xuICAgICAgICAgICAgaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAobGlua0hlYWRlciAmJiAobGlua0hlYWRlciArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAobGlua0hlYWRlciArPSBoZWFkZXJzLmhpZ2hJbWFnZVByZWxvYWRzKSk7XG4gICAgICAgICAgICBpZiAoIXNoZWxsQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgdmFyIHF1ZXVlSXRlciA9IHJlbmRlclN0YXRlLnN0eWxlcy52YWx1ZXMoKSxcbiAgICAgICAgICAgICAgICBxdWV1ZVN0ZXAgPSBxdWV1ZUl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgICBiOiBmb3IgKFxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICAwIDwgaGVhZGVycy5yZW1haW5pbmdDYXBhY2l0eSAmJiAhcXVldWVTdGVwLmRvbmU7XG4gICAgICAgICAgICAgICAgcXVldWVTdGVwID0gcXVldWVJdGVyLm5leHQoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICAgIHZhciBzaGVldEl0ZXIgPSBxdWV1ZVN0ZXAudmFsdWUuc2hlZXRzLnZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBzaGVldFN0ZXAgPSBzaGVldEl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgMCA8IGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgJiYgIXNoZWV0U3RlcC5kb25lO1xuICAgICAgICAgICAgICAgICAgc2hlZXRTdGVwID0gc2hlZXRJdGVyLm5leHQoKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdmFyIHNoZWV0ID0gc2hlZXRTdGVwLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcyA9IHNoZWV0LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICBrZXkgPSBwcm9wcy5ocmVmLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcyRqc2NvbXAkMCA9IHNoZWV0LnByb3BzO1xuICAgICAgICAgICAgICAgICAgdmFyIGhlYWRlciA9IGdldFByZWxvYWRBc0hlYWRlcihcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMkanNjb21wJDAuaHJlZixcbiAgICAgICAgICAgICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzJGpzY29tcCQwLmNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgIGludGVncml0eTogcHJvcHMkanNjb21wJDAuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiBwcm9wcyRqc2NvbXAkMC5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcyRqc2NvbXAkMC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IHByb3BzJGpzY29tcCQwLmZldGNoUHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHByb3BzJGpzY29tcCQwLnJlZmVycmVyUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiBwcm9wcyRqc2NvbXAkMC5tZWRpYVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKDAgPD0gKGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgLT0gaGVhZGVyLmxlbmd0aCArIDIpKVxuICAgICAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUucmVzZXRzLnN0eWxlW2tleV0gPSBQUkVMT0FEX05PX0NSRURTKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rSGVhZGVyICYmIChsaW5rSGVhZGVyICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgKGxpbmtIZWFkZXIgKz0gaGVhZGVyKSxcbiAgICAgICAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUucmVzZXRzLnN0eWxlW2tleV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByb3BzLmNyb3NzT3JpZ2luIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuaW50ZWdyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gW3Byb3BzLmNyb3NzT3JpZ2luLCBwcm9wcy5pbnRlZ3JpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogUFJFTE9BRF9OT19DUkVEUyk7XG4gICAgICAgICAgICAgICAgICBlbHNlIGJyZWFrIGI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGlua0hlYWRlciA/IG9uSGVhZGVycyh7IExpbms6IGxpbmtIZWFkZXIgfSkgOiBvbkhlYWRlcnMoe30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wbGV0ZVNoZWxsKHJlcXVlc3QpIHtcbiAgICAgIG51bGwgPT09IHJlcXVlc3QudHJhY2tlZFBvc3Rwb25lcyAmJiBzYWZlbHlFbWl0RWFybHlQcmVsb2FkcyhyZXF1ZXN0LCAhMCk7XG4gICAgICByZXF1ZXN0Lm9uU2hlbGxFcnJvciA9IG5vb3A7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5vblNoZWxsUmVhZHk7XG4gICAgICByZXF1ZXN0KCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbXBsZXRlQWxsKHJlcXVlc3QpIHtcbiAgICAgIHNhZmVseUVtaXRFYXJseVByZWxvYWRzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBudWxsID09PSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXNcbiAgICAgICAgICA/ICEwXG4gICAgICAgICAgOiBudWxsID09PSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50IHx8XG4gICAgICAgICAgICAgIHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQuc3RhdHVzICE9PSBQT1NUUE9ORURcbiAgICAgICk7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5vbkFsbFJlYWR5O1xuICAgICAgcmVxdWVzdCgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYm91bmRhcnksIHNlZ21lbnQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgMCA9PT0gc2VnbWVudC5jaHVua3MubGVuZ3RoICYmXG4gICAgICAgIDEgPT09IHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoICYmXG4gICAgICAgIG51bGwgPT09IHNlZ21lbnQuY2hpbGRyZW5bMF0uYm91bmRhcnkgJiZcbiAgICAgICAgLTEgPT09IHNlZ21lbnQuY2hpbGRyZW5bMF0uaWRcbiAgICAgICkge1xuICAgICAgICB2YXIgY2hpbGRTZWdtZW50ID0gc2VnbWVudC5jaGlsZHJlblswXTtcbiAgICAgICAgY2hpbGRTZWdtZW50LmlkID0gc2VnbWVudC5pZDtcbiAgICAgICAgY2hpbGRTZWdtZW50LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgICAgY2hpbGRTZWdtZW50LnN0YXR1cyA9PT0gQ09NUExFVEVEICYmXG4gICAgICAgICAgcXVldWVDb21wbGV0ZWRTZWdtZW50KGJvdW5kYXJ5LCBjaGlsZFNlZ21lbnQpO1xuICAgICAgfSBlbHNlIGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbmlzaGVkVGFzayhyZXF1ZXN0LCBib3VuZGFyeSwgc2VnbWVudCkge1xuICAgICAgaWYgKG51bGwgPT09IGJvdW5kYXJ5KSB7XG4gICAgICAgIGlmIChudWxsICE9PSBzZWdtZW50ICYmIHNlZ21lbnQucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICAgIGlmIChudWxsICE9PSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50KVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlcmUgY2FuIG9ubHkgYmUgb25lIHJvb3Qgc2VnbWVudC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gc2VnbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MtLTtcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzICYmIGNvbXBsZXRlU2hlbGwocmVxdWVzdCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgYm91bmRhcnkucGVuZGluZ1Rhc2tzLS0sXG4gICAgICAgICAgYm91bmRhcnkuc3RhdHVzICE9PSBDTElFTlRfUkVOREVSRUQgJiZcbiAgICAgICAgICAgICgwID09PSBib3VuZGFyeS5wZW5kaW5nVGFza3NcbiAgICAgICAgICAgICAgPyAoYm91bmRhcnkuc3RhdHVzID09PSBQRU5ESU5HICYmIChib3VuZGFyeS5zdGF0dXMgPSBDT01QTEVURUQpLFxuICAgICAgICAgICAgICAgIG51bGwgIT09IHNlZ21lbnQgJiZcbiAgICAgICAgICAgICAgICAgIHNlZ21lbnQucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICAgICAgc2VnbWVudC5zdGF0dXMgPT09IENPTVBMRVRFRCAmJlxuICAgICAgICAgICAgICAgICAgcXVldWVDb21wbGV0ZWRTZWdtZW50KGJvdW5kYXJ5LCBzZWdtZW50KSxcbiAgICAgICAgICAgICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSksXG4gICAgICAgICAgICAgICAgYm91bmRhcnkuc3RhdHVzID09PSBDT01QTEVURUQgJiZcbiAgICAgICAgICAgICAgICAgIChib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgIGFib3J0VGFza1NvZnQsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkpKVxuICAgICAgICAgICAgICA6IG51bGwgIT09IHNlZ21lbnQgJiZcbiAgICAgICAgICAgICAgICBzZWdtZW50LnBhcmVudEZsdXNoZWQgJiZcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXR1cyA9PT0gQ09NUExFVEVEICYmXG4gICAgICAgICAgICAgICAgKHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgc2VnbWVudCksXG4gICAgICAgICAgICAgICAgMSA9PT0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpKSk7XG4gICAgICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcy0tO1xuICAgICAgMCA9PT0gcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MgJiYgY29tcGxldGVBbGwocmVxdWVzdCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlcmZvcm1Xb3JrKHJlcXVlc3QkanNjb21wJDEpIHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVxdWVzdCRqc2NvbXAkMS5zdGF0dXMgIT09IENMT1NFRCAmJlxuICAgICAgICAxMyAhPT0gcmVxdWVzdCRqc2NvbXAkMS5zdGF0dXNcbiAgICAgICkge1xuICAgICAgICB2YXIgcHJldkNvbnRleHQgPSBjdXJyZW50QWN0aXZlU25hcHNob3QsXG4gICAgICAgICAgcHJldkRpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5IO1xuICAgICAgICBSZWFjdFNoYXJlZEludGVybmFscy5IID0gSG9va3NEaXNwYXRjaGVyO1xuICAgICAgICB2YXIgcHJldkFzeW5jRGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkEgPSBEZWZhdWx0QXN5bmNEaXNwYXRjaGVyO1xuICAgICAgICB2YXIgcHJldlJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdDtcbiAgICAgICAgY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0JGpzY29tcCQxO1xuICAgICAgICB2YXIgcHJldkdldEN1cnJlbnRTdGFja0ltcGwgPSBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2s7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjayA9IGdldEN1cnJlbnRTdGFja0luREVWO1xuICAgICAgICB2YXIgcHJldlJlc3VtYWJsZVN0YXRlID0gY3VycmVudFJlc3VtYWJsZVN0YXRlO1xuICAgICAgICBjdXJyZW50UmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0JGpzY29tcCQxLnJlc3VtYWJsZVN0YXRlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBwaW5nZWRUYXNrcyA9IHJlcXVlc3QkanNjb21wJDEucGluZ2VkVGFza3MsXG4gICAgICAgICAgICBpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaW5nZWRUYXNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSByZXF1ZXN0JGpzY29tcCQxLFxuICAgICAgICAgICAgICB0YXNrID0gcGluZ2VkVGFza3NbaV0sXG4gICAgICAgICAgICAgIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICAgICAgICAgICAgaWYgKG51bGwgPT09IHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZUYXNrSW5ERVYgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCA9IHJlcXVlc3Q7XG4gICAgICAgICAgICAgIHJlcXVlc3QgPSB0YXNrO1xuICAgICAgICAgICAgICBpZiAoMCAhPT0gcmVxdWVzdC5yZXBsYXkucGVuZGluZ1Rhc2tzKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoQ29udGV4dChyZXF1ZXN0LmNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHByZXZUYXNrSW5ERVYgPSBjdXJyZW50VGFza0luREVWO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrSW5ERVYgPSByZXF1ZXN0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgcmVxdWVzdC5yZXBsYXkuc2xvdHNcbiAgICAgICAgICAgICAgICAgICAgPyByZXN1bWVOb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnJlcGxheS5zbG90cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY2hpbGRJbmRleFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiByZXRyeU5vZGUocmVxdWVzdCRqc2NvbXAkMCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIDEgPT09IHJlcXVlc3QucmVwbGF5LnBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAwIDwgcmVxdWVzdC5yZXBsYXkubm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZmluZCBhbGwgcmVzdW1hYmxlIHNsb3RzIGJ5IGtleS9pbmRleCBkdXJpbmcgcmVwbGF5aW5nLiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZXBsYXkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LmFib3J0U2V0LmRlbGV0ZShyZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICAgIGZpbmlzaGVkVGFzayhyZXF1ZXN0JGpzY29tcCQwLCByZXF1ZXN0LmJsb2NrZWRCb3VuZGFyeSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAodGhyb3duVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0SG9va3NTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgdmFyIHggPVxuICAgICAgICAgICAgICAgICAgICB0aHJvd25WYWx1ZSA9PT0gU3VzcGVuc2VFeGNlcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IGdldFN1c3BlbmRlZFRoZW5hYmxlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IHRocm93blZhbHVlO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgeCAmJlxuICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlblxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwaW5nID0gcmVxdWVzdC5waW5nO1xuICAgICAgICAgICAgICAgICAgICB4LnRoZW4ocGluZywgcGluZyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudGhlbmFibGVTdGF0ZSA9IGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFib3J0U2V0LmRlbGV0ZShyZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ySW5mbyA9IGdldFRocm93bkluZm8ocmVxdWVzdC5jb21wb25lbnRTdGFjayk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yZWRSZXBsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAxMiA9PT0gcmVxdWVzdCRqc2NvbXAkMC5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVxdWVzdCRqc2NvbXAkMC5mYXRhbEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHgsXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3JJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5Lm5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5LnNsb3RzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAucGVuZGluZ1Jvb3RUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAwID09PSByZXF1ZXN0JGpzY29tcCQwLnBlbmRpbmdSb290VGFza3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVNoZWxsKHJlcXVlc3QkanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0JGpzY29tcCQwLmFsbFBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAwID09PSByZXF1ZXN0JGpzY29tcCQwLmFsbFBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlQWxsKHJlcXVlc3QkanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGFza0luREVWID0gcHJldlRhc2tJbkRFVjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAgPSBwcmV2VGFza0luREVWID0gdm9pZCAwO1xuICAgICAgICAgICAgICB2YXIgdGFzayRqc2NvbXAkMCA9IHRhc2ssXG4gICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMCA9IHNlZ21lbnQ7XG4gICAgICAgICAgICAgIGlmIChzZWdtZW50JGpzY29tcCQwLnN0YXR1cyA9PT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDAuc3RhdHVzID0gNjtcbiAgICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHRhc2skanNjb21wJDAuY29udGV4dCk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCA9IGN1cnJlbnRUYXNrSW5ERVY7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhc2tJbkRFViA9IHRhc2skanNjb21wJDA7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gc2VnbWVudCRqc2NvbXAkMC5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICBjaHVua0xlbmd0aCA9IHNlZ21lbnQkanNjb21wJDAuY2h1bmtzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgcmV0cnlOb2RlKHJlcXVlc3QsIHRhc2skanNjb21wJDApLFxuICAgICAgICAgICAgICAgICAgICBwdXNoU2VnbWVudEZpbmFsZShcbiAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLmNodW5rcyxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDAubGFzdFB1c2hlZFRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMC50ZXh0RW1iZWRkZWRcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgdGFzayRqc2NvbXAkMC5hYm9ydFNldC5kZWxldGUodGFzayRqc2NvbXAkMCksXG4gICAgICAgICAgICAgICAgICAgIChzZWdtZW50JGpzY29tcCQwLnN0YXR1cyA9IENPTVBMRVRFRCksXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkVGFzayhcbiAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHRhc2skanNjb21wJDAuYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRIb29rc1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLmNoaWxkcmVuLmxlbmd0aCA9IGNoaWxkcmVuTGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMC5jaHVua3MubGVuZ3RoID0gY2h1bmtMZW5ndGg7XG4gICAgICAgICAgICAgICAgICB2YXIgeCRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgICAgIHRocm93blZhbHVlID09PSBTdXNwZW5zZUV4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gZ2V0U3VzcGVuZGVkVGhlbmFibGUoKVxuICAgICAgICAgICAgICAgICAgICAgIDogMTIgPT09IHJlcXVlc3Quc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlcXVlc3QuZmF0YWxFcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aHJvd25WYWx1ZTtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHgkanNjb21wJDAgJiZcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0geCRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB4JGpzY29tcCQwLnRoZW5cbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLnN0YXR1cyA9IFBFTkRJTkc7XG4gICAgICAgICAgICAgICAgICAgIHRhc2skanNjb21wJDAudGhlbmFibGVTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGluZyRqc2NvbXAkMCA9IHRhc2skanNjb21wJDAucGluZztcbiAgICAgICAgICAgICAgICAgICAgeCRqc2NvbXAkMC50aGVuKHBpbmckanNjb21wJDAsIHBpbmckanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ySW5mbyRqc2NvbXAkMCA9IGdldFRocm93bkluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgdGFzayRqc2NvbXAkMC5jb21wb25lbnRTdGFja1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0YXNrJGpzY29tcCQwLmFib3J0U2V0LmRlbGV0ZSh0YXNrJGpzY29tcCQwKTtcbiAgICAgICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMC5zdGF0dXMgPSA0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgYm91bmRhcnkgPSB0YXNrJGpzY29tcCQwLmJsb2NrZWRCb3VuZGFyeTtcbiAgICAgICAgICAgICAgICAgICAgcHJldlRhc2tJbkRFViA9IGxvZ1JlY292ZXJhYmxlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICB4JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIGVycm9ySW5mbyRqc2NvbXAkMFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBudWxsID09PSBib3VuZGFyeVxuICAgICAgICAgICAgICAgICAgICAgID8gZmF0YWxFcnJvcihyZXF1ZXN0LCB4JGpzY29tcCQwKVxuICAgICAgICAgICAgICAgICAgICAgIDogKGJvdW5kYXJ5LnBlbmRpbmdUYXNrcy0tLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkuc3RhdHVzICE9PSBDTElFTlRfUkVOREVSRUQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChib3VuZGFyeS5zdGF0dXMgPSBDTElFTlRfUkVOREVSRUQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZUYXNrSW5ERVYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckluZm8kanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja0JvdW5kYXJ5KHJlcXVlc3QsIGJvdW5kYXJ5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgICAgICAgICAgIDAgPT09IHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzICYmIGNvbXBsZXRlQWxsKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGFza0luREVWID0gcmVxdWVzdCRqc2NvbXAkMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGluZ2VkVGFza3Muc3BsaWNlKDAsIGkpO1xuICAgICAgICAgIG51bGwgIT09IHJlcXVlc3QkanNjb21wJDEuZGVzdGluYXRpb24gJiZcbiAgICAgICAgICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKFxuICAgICAgICAgICAgICByZXF1ZXN0JGpzY29tcCQxLFxuICAgICAgICAgICAgICByZXF1ZXN0JGpzY29tcCQxLmRlc3RpbmF0aW9uXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCRqc2NvbXAkMSwgZXJyb3IsIHt9KSxcbiAgICAgICAgICAgIGZhdGFsRXJyb3IocmVxdWVzdCRqc2NvbXAkMSwgZXJyb3IpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIChjdXJyZW50UmVzdW1hYmxlU3RhdGUgPSBwcmV2UmVzdW1hYmxlU3RhdGUpLFxuICAgICAgICAgICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLkggPSBwcmV2RGlzcGF0Y2hlciksXG4gICAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuQSA9IHByZXZBc3luY0Rpc3BhdGNoZXIpLFxuICAgICAgICAgICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjayA9IHByZXZHZXRDdXJyZW50U3RhY2tJbXBsKSxcbiAgICAgICAgICAgIHByZXZEaXNwYXRjaGVyID09PSBIb29rc0Rpc3BhdGNoZXIgJiYgc3dpdGNoQ29udGV4dChwcmV2Q29udGV4dCksXG4gICAgICAgICAgICAoY3VycmVudFJlcXVlc3QgPSBwcmV2UmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSkge1xuICAgICAgc2VnbWVudC5wYXJlbnRGbHVzaGVkID0gITA7XG4gICAgICBzd2l0Y2ggKHNlZ21lbnQuc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgUEVORElORzpcbiAgICAgICAgICBzZWdtZW50LmlkID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKys7XG4gICAgICAgIGNhc2UgUE9TVFBPTkVEOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoaG9pc3RhYmxlU3RhdGUgPSBzZWdtZW50LmlkKSxcbiAgICAgICAgICAgIChzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITEpLFxuICAgICAgICAgICAgKHNlZ21lbnQudGV4dEVtYmVkZGVkID0gITEpLFxuICAgICAgICAgICAgKHJlcXVlc3QgPSByZXF1ZXN0LnJlbmRlclN0YXRlKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocGxhY2Vob2xkZXIxKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVxdWVzdC5wbGFjZWhvbGRlclByZWZpeCksXG4gICAgICAgICAgICAocmVxdWVzdCA9IGhvaXN0YWJsZVN0YXRlLnRvU3RyaW5nKDE2KSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlcXVlc3QpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChwbGFjZWhvbGRlcjIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBDT01QTEVURUQ6XG4gICAgICAgICAgc2VnbWVudC5zdGF0dXMgPSBGTFVTSEVEO1xuICAgICAgICAgIHZhciByID0gITAsXG4gICAgICAgICAgICBjaHVua3MgPSBzZWdtZW50LmNodW5rcyxcbiAgICAgICAgICAgIGNodW5rSWR4ID0gMDtcbiAgICAgICAgICBzZWdtZW50ID0gc2VnbWVudC5jaGlsZHJlbjtcbiAgICAgICAgICBmb3IgKHZhciBjaGlsZElkeCA9IDA7IGNoaWxkSWR4IDwgc2VnbWVudC5sZW5ndGg7IGNoaWxkSWR4KyspIHtcbiAgICAgICAgICAgIGZvciAociA9IHNlZ21lbnRbY2hpbGRJZHhdOyBjaHVua0lkeCA8IHIuaW5kZXg7IGNodW5rSWR4KyspXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY2h1bmtzW2NodW5rSWR4XSk7XG4gICAgICAgICAgICByID0gZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCByLCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAoOyBjaHVua0lkeCA8IGNodW5rcy5sZW5ndGggLSAxOyBjaHVua0lkeCsrKVxuICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChjaHVua3NbY2h1bmtJZHhdKTtcbiAgICAgICAgICBjaHVua0lkeCA8IGNodW5rcy5sZW5ndGggJiYgKHIgPSBkZXN0aW5hdGlvbi5wdXNoKGNodW5rc1tjaHVua0lkeF0pKTtcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiQWJvcnRlZCwgZXJyb3JlZCBvciBhbHJlYWR5IGZsdXNoZWQgYm91bmRhcmllcyBzaG91bGQgbm90IGJlIGZsdXNoZWQgYWdhaW4uIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmbHVzaFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKSB7XG4gICAgICB2YXIgYm91bmRhcnkgPSBzZWdtZW50LmJvdW5kYXJ5O1xuICAgICAgaWYgKG51bGwgPT09IGJvdW5kYXJ5KVxuICAgICAgICByZXR1cm4gZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkID0gITA7XG4gICAgICBpZiAoYm91bmRhcnkuc3RhdHVzID09PSBDTElFTlRfUkVOREVSRUQpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0LnJlbmRlclN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwKSB7XG4gICAgICAgICAgdmFyIGVycm9yRGlnZXN0ID0gYm91bmRhcnkuZXJyb3JEaWdlc3QsXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBib3VuZGFyeS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBlcnJvclN0YWNrID0gYm91bmRhcnkuZXJyb3JTdGFjaztcbiAgICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJ5LmVycm9yQ29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgZGVzdGluYXRpb24ucHVzaChzdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSk7XG4gICAgICAgICAgZGVzdGluYXRpb24ucHVzaChjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjEpO1xuICAgICAgICAgIGVycm9yRGlnZXN0ICYmXG4gICAgICAgICAgICAoZGVzdGluYXRpb24ucHVzaChjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFBKSxcbiAgICAgICAgICAgIChlcnJvckRpZ2VzdCA9IGVzY2FwZVRleHRGb3JCcm93c2VyKGVycm9yRGlnZXN0KSksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGVycm9yRGlnZXN0KSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goXG4gICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yQXR0ckludGVyc3RpdGlhbFxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICAoZGVzdGluYXRpb24ucHVzaChjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFCKSxcbiAgICAgICAgICAgIChlcnJvck1lc3NhZ2UgPSBlc2NhcGVUZXh0Rm9yQnJvd3NlcihlcnJvck1lc3NhZ2UpKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goZXJyb3JNZXNzYWdlKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goXG4gICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yQXR0ckludGVyc3RpdGlhbFxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgZXJyb3JTdGFjayAmJlxuICAgICAgICAgICAgKGRlc3RpbmF0aW9uLnB1c2goY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3IxQyksXG4gICAgICAgICAgICAoZXJyb3JTdGFjayA9IGVzY2FwZVRleHRGb3JCcm93c2VyKGVycm9yU3RhY2spKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goZXJyb3JTdGFjayksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKFxuICAgICAgICAgICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvckF0dHJJbnRlcnN0aXRpYWxcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIGJvdW5kYXJ5ICYmXG4gICAgICAgICAgICAoZGVzdGluYXRpb24ucHVzaChjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFEKSxcbiAgICAgICAgICAgIChlcnJvclN0YWNrID0gZXNjYXBlVGV4dEZvckJyb3dzZXIoYm91bmRhcnkpKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goZXJyb3JTdGFjayksXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKFxuICAgICAgICAgICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvckF0dHJJbnRlcnN0aXRpYWxcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3IyKTtcbiAgICAgICAgfVxuICAgICAgICBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKTtcbiAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3QucmVuZGVyU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXBcbiAgICAgICAgICA/ICEwXG4gICAgICAgICAgOiBkZXN0aW5hdGlvbi5wdXNoKGVuZFN1c3BlbnNlQm91bmRhcnkpO1xuICAgICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICAgIH1cbiAgICAgIGlmIChib3VuZGFyeS5zdGF0dXMgIT09IENPTVBMRVRFRClcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBib3VuZGFyeS5zdGF0dXMgPT09IFBFTkRJTkcgJiZcbiAgICAgICAgICAgIChib3VuZGFyeS5yb290U2VnbWVudElEID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKyspLFxuICAgICAgICAgIDAgPCBib3VuZGFyeS5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGggJiZcbiAgICAgICAgICAgIHJlcXVlc3QucGFydGlhbEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSksXG4gICAgICAgICAgd3JpdGVTdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KFxuICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgICAgYm91bmRhcnkucm9vdFNlZ21lbnRJRFxuICAgICAgICAgICksXG4gICAgICAgICAgaG9pc3RhYmxlU3RhdGUgJiZcbiAgICAgICAgICAgICgoZXJyb3JTdGFjayA9IGJvdW5kYXJ5LmZhbGxiYWNrU3RhdGUpLFxuICAgICAgICAgICAgZXJyb3JTdGFjay5zdHlsZXMuZm9yRWFjaChcbiAgICAgICAgICAgICAgaG9pc3RTdHlsZVF1ZXVlRGVwZW5kZW5jeSxcbiAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBlcnJvclN0YWNrLnN0eWxlc2hlZXRzLmZvckVhY2goXG4gICAgICAgICAgICAgIGhvaXN0U3R5bGVzaGVldERlcGVuZGVuY3ksXG4gICAgICAgICAgICAgIGhvaXN0YWJsZVN0YXRlXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKSxcbiAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGVuZFN1c3BlbnNlQm91bmRhcnkpXG4gICAgICAgICk7XG4gICAgICBpZiAoYm91bmRhcnkuYnl0ZVNpemUgPiByZXF1ZXN0LnByb2dyZXNzaXZlQ2h1bmtTaXplKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChib3VuZGFyeS5yb290U2VnbWVudElEID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKyspLFxuICAgICAgICAgIHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KSxcbiAgICAgICAgICB3cml0ZVN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoXG4gICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHJlcXVlc3QucmVuZGVyU3RhdGUsXG4gICAgICAgICAgICBib3VuZGFyeS5yb290U2VnbWVudElEXG4gICAgICAgICAgKSxcbiAgICAgICAgICBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKSxcbiAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGVuZFN1c3BlbnNlQm91bmRhcnkpXG4gICAgICAgICk7XG4gICAgICBob2lzdGFibGVTdGF0ZSAmJlxuICAgICAgICAoKHNlZ21lbnQgPSBib3VuZGFyeS5jb250ZW50U3RhdGUpLFxuICAgICAgICBzZWdtZW50LnN0eWxlcy5mb3JFYWNoKGhvaXN0U3R5bGVRdWV1ZURlcGVuZGVuY3ksIGhvaXN0YWJsZVN0YXRlKSxcbiAgICAgICAgc2VnbWVudC5zdHlsZXNoZWV0cy5mb3JFYWNoKGhvaXN0U3R5bGVzaGVldERlcGVuZGVuY3ksIGhvaXN0YWJsZVN0YXRlKSk7XG4gICAgICByZXF1ZXN0LnJlbmRlclN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwIHx8XG4gICAgICAgIGRlc3RpbmF0aW9uLnB1c2goc3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5KTtcbiAgICAgIHNlZ21lbnQgPSBib3VuZGFyeS5jb21wbGV0ZWRTZWdtZW50cztcbiAgICAgIGlmICgxICE9PSBzZWdtZW50Lmxlbmd0aClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJBIHByZXZpb3VzbHkgdW52aXNpdGVkIGJvdW5kYXJ5IG11c3QgaGF2ZSBleGFjdGx5IG9uZSByb290IHNlZ21lbnQuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgKTtcbiAgICAgIGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudFswXSwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QucmVuZGVyU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXBcbiAgICAgICAgPyAhMFxuICAgICAgICA6IGRlc3RpbmF0aW9uLnB1c2goZW5kU3VzcGVuc2VCb3VuZGFyeSk7XG4gICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTZWdtZW50Q29udGFpbmVyKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgc2VnbWVudCxcbiAgICAgIGhvaXN0YWJsZVN0YXRlXG4gICAgKSB7XG4gICAgICB3cml0ZVN0YXJ0U2VnbWVudChcbiAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgIHJlcXVlc3QucmVuZGVyU3RhdGUsXG4gICAgICAgIHNlZ21lbnQucGFyZW50Rm9ybWF0Q29udGV4dCxcbiAgICAgICAgc2VnbWVudC5pZFxuICAgICAgKTtcbiAgICAgIGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgcmV0dXJuIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgc2VnbWVudC5wYXJlbnRGb3JtYXRDb250ZXh0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpIHtcbiAgICAgIGZvciAoXG4gICAgICAgIHZhciBjb21wbGV0ZWRTZWdtZW50cyA9IGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzLCBpID0gMDtcbiAgICAgICAgaSA8IGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aDtcbiAgICAgICAgaSsrXG4gICAgICApXG4gICAgICAgIGZsdXNoUGFydGlhbGx5Q29tcGxldGVkU2VnbWVudChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgIGNvbXBsZXRlZFNlZ21lbnRzW2ldXG4gICAgICAgICk7XG4gICAgICBjb21wbGV0ZWRTZWdtZW50cy5sZW5ndGggPSAwO1xuICAgICAgd3JpdGVIb2lzdGFibGVzRm9yQm91bmRhcnkoXG4gICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICBib3VuZGFyeS5jb250ZW50U3RhdGUsXG4gICAgICAgIHJlcXVlc3QucmVuZGVyU3RhdGVcbiAgICAgICk7XG4gICAgICBjb21wbGV0ZWRTZWdtZW50cyA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGU7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgIGkgPSBib3VuZGFyeS5yb290U2VnbWVudElEO1xuICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS5jb250ZW50U3RhdGU7XG4gICAgICB2YXIgcmVxdWlyZXNTdHlsZUluc2VydGlvbiA9IHJlcXVlc3Quc3R5bGVzVG9Ib2lzdDtcbiAgICAgIHJlcXVlc3Quc3R5bGVzVG9Ib2lzdCA9ICExO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChyZXF1ZXN0LnN0YXJ0SW5saW5lU2NyaXB0KTtcbiAgICAgIHJlcXVpcmVzU3R5bGVJbnNlcnRpb25cbiAgICAgICAgPyAoY29tcGxldGVkU2VnbWVudHMuaW5zdHJ1Y3Rpb25zICYgU2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbikgPT09XG4gICAgICAgICAgTm90aGluZ1NlbnRcbiAgICAgICAgICA/ICgoY29tcGxldGVkU2VnbWVudHMuaW5zdHJ1Y3Rpb25zID1cbiAgICAgICAgICAgICAgY29tcGxldGVkU2VnbWVudHMuaW5zdHJ1Y3Rpb25zIHxcbiAgICAgICAgICAgICAgU2VudFN0eWxlSW5zZXJ0aW9uRnVuY3Rpb24gfFxuICAgICAgICAgICAgICBTZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVCb3VuZGFyeVdpdGhTdHlsZXNTY3JpcHQxRnVsbEJvdGgpKVxuICAgICAgICAgIDogKGNvbXBsZXRlZFNlZ21lbnRzLmluc3RydWN0aW9ucyAmIFNlbnRTdHlsZUluc2VydGlvbkZ1bmN0aW9uKSA9PT1cbiAgICAgICAgICAgICAgTm90aGluZ1NlbnRcbiAgICAgICAgICAgID8gKChjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgfD0gU2VudFN0eWxlSW5zZXJ0aW9uRnVuY3Rpb24pLFxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGNvbXBsZXRlQm91bmRhcnlXaXRoU3R5bGVzU2NyaXB0MUZ1bGxQYXJ0aWFsKSlcbiAgICAgICAgICAgIDogZGVzdGluYXRpb24ucHVzaChjb21wbGV0ZUJvdW5kYXJ5V2l0aFN0eWxlc1NjcmlwdDFQYXJ0aWFsKVxuICAgICAgICA6IChjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgJiBTZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uKSA9PT1cbiAgICAgICAgICAgIE5vdGhpbmdTZW50XG4gICAgICAgICAgPyAoKGNvbXBsZXRlZFNlZ21lbnRzLmluc3RydWN0aW9ucyB8PSBTZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVCb3VuZGFyeVNjcmlwdDFGdWxsKSlcbiAgICAgICAgICA6IGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVCb3VuZGFyeVNjcmlwdDFQYXJ0aWFsKTtcbiAgICAgIGNvbXBsZXRlZFNlZ21lbnRzID0gaS50b1N0cmluZygxNik7XG4gICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlcXVlc3QuYm91bmRhcnlQcmVmaXgpO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChjb21wbGV0ZWRTZWdtZW50cyk7XG4gICAgICBkZXN0aW5hdGlvbi5wdXNoKGNvbXBsZXRlQm91bmRhcnlTY3JpcHQyKTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVxdWVzdC5zZWdtZW50UHJlZml4KTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVkU2VnbWVudHMpO1xuICAgICAgcmVxdWlyZXNTdHlsZUluc2VydGlvblxuICAgICAgICA/IChkZXN0aW5hdGlvbi5wdXNoKGNvbXBsZXRlQm91bmRhcnlTY3JpcHQzYSksXG4gICAgICAgICAgd3JpdGVTdHlsZVJlc291cmNlRGVwZW5kZW5jaWVzSW5KUyhkZXN0aW5hdGlvbiwgYm91bmRhcnkpKVxuICAgICAgICA6IGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVCb3VuZGFyeVNjcmlwdDNiKTtcbiAgICAgIGJvdW5kYXJ5ID0gZGVzdGluYXRpb24ucHVzaChjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0RW5kKTtcbiAgICAgIHJldHVybiB3cml0ZUJvb3RzdHJhcChkZXN0aW5hdGlvbiwgcmVxdWVzdCkgJiYgYm91bmRhcnk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoUGFydGlhbGx5Q29tcGxldGVkU2VnbWVudChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIGJvdW5kYXJ5LFxuICAgICAgc2VnbWVudFxuICAgICkge1xuICAgICAgaWYgKHNlZ21lbnQuc3RhdHVzID09PSBGTFVTSEVEKSByZXR1cm4gITA7XG4gICAgICB2YXIgaG9pc3RhYmxlU3RhdGUgPSBib3VuZGFyeS5jb250ZW50U3RhdGUsXG4gICAgICAgIHNlZ21lbnRJRCA9IHNlZ21lbnQuaWQ7XG4gICAgICBpZiAoLTEgPT09IHNlZ21lbnRJRCkge1xuICAgICAgICBpZiAoLTEgPT09IChzZWdtZW50LmlkID0gYm91bmRhcnkucm9vdFNlZ21lbnRJRCkpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkEgcm9vdCBzZWdtZW50IElEIG11c3QgaGF2ZSBiZWVuIGFzc2lnbmVkIGJ5IG5vdy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBmbHVzaFNlZ21lbnRDb250YWluZXIoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgIGhvaXN0YWJsZVN0YXRlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc2VnbWVudElEID09PSBib3VuZGFyeS5yb290U2VnbWVudElEKVxuICAgICAgICByZXR1cm4gZmx1c2hTZWdtZW50Q29udGFpbmVyKFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgc2VnbWVudCxcbiAgICAgICAgICBob2lzdGFibGVTdGF0ZVxuICAgICAgICApO1xuICAgICAgZmx1c2hTZWdtZW50Q29udGFpbmVyKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICBib3VuZGFyeSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGU7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2gocmVxdWVzdC5zdGFydElubGluZVNjcmlwdCk7XG4gICAgICAoYm91bmRhcnkuaW5zdHJ1Y3Rpb25zICYgU2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uKSA9PT0gTm90aGluZ1NlbnRcbiAgICAgICAgPyAoKGJvdW5kYXJ5Lmluc3RydWN0aW9ucyB8PSBTZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24pLFxuICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVTZWdtZW50U2NyaXB0MUZ1bGwpKVxuICAgICAgICA6IGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVTZWdtZW50U2NyaXB0MVBhcnRpYWwpO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChyZXF1ZXN0LnNlZ21lbnRQcmVmaXgpO1xuICAgICAgc2VnbWVudElEID0gc2VnbWVudElELnRvU3RyaW5nKDE2KTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goc2VnbWVudElEKTtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goY29tcGxldGVTZWdtZW50U2NyaXB0Mik7XG4gICAgICBkZXN0aW5hdGlvbi5wdXNoKHJlcXVlc3QucGxhY2Vob2xkZXJQcmVmaXgpO1xuICAgICAgZGVzdGluYXRpb24ucHVzaChzZWdtZW50SUQpO1xuICAgICAgZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbi5wdXNoKGNvbXBsZXRlU2VnbWVudFNjcmlwdEVuZCk7XG4gICAgICByZXR1cm4gZGVzdGluYXRpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoISgwIDwgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzKSkge1xuICAgICAgICAgIHZhciBpLFxuICAgICAgICAgICAgY29tcGxldGVkUm9vdFNlZ21lbnQgPSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50O1xuICAgICAgICAgIGlmIChudWxsICE9PSBjb21wbGV0ZWRSb290U2VnbWVudCkge1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZFJvb3RTZWdtZW50LnN0YXR1cyA9PT0gUE9TVFBPTkVEKSByZXR1cm47XG4gICAgICAgICAgICB2YXIgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgICAgICBodG1sQ2h1bmtzID0gcmVuZGVyU3RhdGUuaHRtbENodW5rcyxcbiAgICAgICAgICAgICAgaGVhZENodW5rcyA9IHJlbmRlclN0YXRlLmhlYWRDaHVua3MsXG4gICAgICAgICAgICAgIGkkanNjb21wJDA7XG4gICAgICAgICAgICBpZiAoaHRtbENodW5rcykge1xuICAgICAgICAgICAgICBmb3IgKGkkanNjb21wJDAgPSAwOyBpJGpzY29tcCQwIDwgaHRtbENodW5rcy5sZW5ndGg7IGkkanNjb21wJDArKylcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGh0bWxDaHVua3NbaSRqc2NvbXAkMF0pO1xuICAgICAgICAgICAgICBpZiAoaGVhZENodW5rcylcbiAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgaSRqc2NvbXAkMCA9IDA7XG4gICAgICAgICAgICAgICAgICBpJGpzY29tcCQwIDwgaGVhZENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICBpJGpzY29tcCQwKytcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGhlYWRDaHVua3NbaSRqc2NvbXAkMF0pO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgY2h1bmsgPSBzdGFydENodW5rRm9yVGFnKFwiaGVhZFwiKTtcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGNodW5rKTtcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhlYWRDaHVua3MpXG4gICAgICAgICAgICAgIGZvciAoaSRqc2NvbXAkMCA9IDA7IGkkanNjb21wJDAgPCBoZWFkQ2h1bmtzLmxlbmd0aDsgaSRqc2NvbXAkMCsrKVxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goaGVhZENodW5rc1tpJGpzY29tcCQwXSk7XG4gICAgICAgICAgICB2YXIgY2hhcnNldENodW5rcyA9IHJlbmRlclN0YXRlLmNoYXJzZXRDaHVua3M7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBpJGpzY29tcCQwID0gMDtcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCA8IGNoYXJzZXRDaHVua3MubGVuZ3RoO1xuICAgICAgICAgICAgICBpJGpzY29tcCQwKytcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZGVzdGluYXRpb24ucHVzaChjaGFyc2V0Q2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgIGNoYXJzZXRDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWNvbm5lY3RzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUucHJlY29ubmVjdHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHZhciB2aWV3cG9ydENodW5rcyA9IHJlbmRlclN0YXRlLnZpZXdwb3J0Q2h1bmtzO1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCA9IDA7XG4gICAgICAgICAgICAgIGkkanNjb21wJDAgPCB2aWV3cG9ydENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHZpZXdwb3J0Q2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgIHZpZXdwb3J0Q2h1bmtzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5mb250UHJlbG9hZHMuZm9yRWFjaChmbHVzaFJlc291cmNlLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5mb250UHJlbG9hZHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLnN0eWxlcy5mb3JFYWNoKGZsdXNoU3R5bGVzSW5QcmVhbWJsZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgdmFyIGltcG9ydE1hcENodW5rcyA9IHJlbmRlclN0YXRlLmltcG9ydE1hcENodW5rcztcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGkkanNjb21wJDAgPSAwO1xuICAgICAgICAgICAgICBpJGpzY29tcCQwIDwgaW1wb3J0TWFwQ2h1bmtzLmxlbmd0aDtcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCsrXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2goaW1wb3J0TWFwQ2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgIGltcG9ydE1hcENodW5rcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuYm9vdHN0cmFwU2NyaXB0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLnNjcmlwdHMuZm9yRWFjaChmbHVzaFJlc291cmNlLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5zY3JpcHRzLmNsZWFyKCk7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuZm9yRWFjaChmbHVzaFJlc291cmNlLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHZhciBob2lzdGFibGVDaHVua3MgPSByZW5kZXJTdGF0ZS5ob2lzdGFibGVDaHVua3M7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBpJGpzY29tcCQwID0gMDtcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCA8IGhvaXN0YWJsZUNodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGhvaXN0YWJsZUNodW5rc1tpJGpzY29tcCQwXSk7XG4gICAgICAgICAgICBob2lzdGFibGVDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGlmIChodG1sQ2h1bmtzICYmIG51bGwgPT09IGhlYWRDaHVua3MpIHtcbiAgICAgICAgICAgICAgdmFyIGNodW5rJGpzY29tcCQwID0gZW5kQ2h1bmtGb3JUYWcoXCJoZWFkXCIpO1xuICAgICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGNodW5rJGpzY29tcCQwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgY29tcGxldGVkUm9vdFNlZ21lbnQsIG51bGwpO1xuICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0ZWRSb290U2VnbWVudCA9IG51bGw7XG4gICAgICAgICAgICB3cml0ZUJvb3RzdHJhcChkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZW5kZXJTdGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciByZW5kZXJTdGF0ZSRqc2NvbXAkMCA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgY29tcGxldGVkUm9vdFNlZ21lbnQgPSAwO1xuICAgICAgICAgIHZhciB2aWV3cG9ydENodW5rcyRqc2NvbXAkMCA9IHJlbmRlclN0YXRlJGpzY29tcCQwLnZpZXdwb3J0Q2h1bmtzO1xuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICBjb21wbGV0ZWRSb290U2VnbWVudCA9IDA7XG4gICAgICAgICAgICBjb21wbGV0ZWRSb290U2VnbWVudCA8IHZpZXdwb3J0Q2h1bmtzJGpzY29tcCQwLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50KytcbiAgICAgICAgICApXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKHZpZXdwb3J0Q2h1bmtzJGpzY29tcCQwW2NvbXBsZXRlZFJvb3RTZWdtZW50XSk7XG4gICAgICAgICAgdmlld3BvcnRDaHVua3MkanNjb21wJDAubGVuZ3RoID0gMDtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wcmVjb25uZWN0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wcmVjb25uZWN0cy5jbGVhcigpO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLmZvbnRQcmVsb2Fkcy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5mb250UHJlbG9hZHMuY2xlYXIoKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5oaWdoSW1hZ2VQcmVsb2Fkcy5mb3JFYWNoKFxuICAgICAgICAgICAgZmx1c2hSZXNvdXJjZSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5oaWdoSW1hZ2VQcmVsb2Fkcy5jbGVhcigpO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnN0eWxlcy5mb3JFYWNoKHByZWxvYWRMYXRlU3R5bGVzLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAuc2NyaXB0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5zY3JpcHRzLmNsZWFyKCk7XG4gICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAuYnVsa1ByZWxvYWRzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLmJ1bGtQcmVsb2Fkcy5jbGVhcigpO1xuICAgICAgICAgIHZhciBob2lzdGFibGVDaHVua3MkanNjb21wJDAgPSByZW5kZXJTdGF0ZSRqc2NvbXAkMC5ob2lzdGFibGVDaHVua3M7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50ID0gMDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50IDwgaG9pc3RhYmxlQ2h1bmtzJGpzY29tcCQwLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50KytcbiAgICAgICAgICApXG4gICAgICAgICAgICBkZXN0aW5hdGlvbi5wdXNoKGhvaXN0YWJsZUNodW5rcyRqc2NvbXAkMFtjb21wbGV0ZWRSb290U2VnbWVudF0pO1xuICAgICAgICAgIGhvaXN0YWJsZUNodW5rcyRqc2NvbXAkMC5sZW5ndGggPSAwO1xuICAgICAgICAgIHZhciBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMgPSByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcztcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYm91bmRhcnkgPSBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXNbaV07XG4gICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMCA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDEgPSByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgICAgICBpZCA9IGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQsXG4gICAgICAgICAgICAgIGVycm9yRGlnZXN0ID0gYm91bmRhcnkuZXJyb3JEaWdlc3QsXG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGJvdW5kYXJ5LmVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgZXJyb3JTdGFjayA9IGJvdW5kYXJ5LmVycm9yU3RhY2ssXG4gICAgICAgICAgICAgIGVycm9yQ29tcG9uZW50U3RhY2sgPSBib3VuZGFyeS5lcnJvckNvbXBvbmVudFN0YWNrO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAucHVzaChyZW5kZXJTdGF0ZSRqc2NvbXAkMS5zdGFydElubGluZVNjcmlwdCk7XG4gICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUuaW5zdHJ1Y3Rpb25zICYgU2VudENsaWVudFJlbmRlckZ1bmN0aW9uKSA9PT1cbiAgICAgICAgICAgIE5vdGhpbmdTZW50XG4gICAgICAgICAgICAgID8gKChyZXN1bWFibGVTdGF0ZS5pbnN0cnVjdGlvbnMgfD0gU2VudENsaWVudFJlbmRlckZ1bmN0aW9uKSxcbiAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKGNsaWVudFJlbmRlclNjcmlwdDFGdWxsKSlcbiAgICAgICAgICAgICAgOiByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKGNsaWVudFJlbmRlclNjcmlwdDFQYXJ0aWFsKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnB1c2gocmVuZGVyU3RhdGUkanNjb21wJDEuYm91bmRhcnlQcmVmaXgpO1xuICAgICAgICAgICAgdmFyIGNodW5rJGpzY29tcCQxID0gaWQudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAucHVzaChjaHVuayRqc2NvbXAkMSk7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKGNsaWVudFJlbmRlclNjcmlwdDFBKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZXJyb3JEaWdlc3QgfHxcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlIHx8XG4gICAgICAgICAgICAgIGVycm9yU3RhY2sgfHxcbiAgICAgICAgICAgICAgZXJyb3JDb21wb25lbnRTdGFja1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnB1c2goY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWwpO1xuICAgICAgICAgICAgICB2YXIgY2h1bmskanNjb21wJDIgPSBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoXG4gICAgICAgICAgICAgICAgZXJyb3JEaWdlc3QgfHwgXCJcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKGNodW5rJGpzY29tcCQyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UgfHwgZXJyb3JTdGFjayB8fCBlcnJvckNvbXBvbmVudFN0YWNrKSB7XG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnB1c2goY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWwpO1xuICAgICAgICAgICAgICB2YXIgY2h1bmskanNjb21wJDMgPSBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlIHx8IFwiXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAucHVzaChjaHVuayRqc2NvbXAkMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JTdGFjayB8fCBlcnJvckNvbXBvbmVudFN0YWNrKSB7XG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnB1c2goY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWwpO1xuICAgICAgICAgICAgICB2YXIgY2h1bmskanNjb21wJDQgPSBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoXG4gICAgICAgICAgICAgICAgZXJyb3JTdGFjayB8fCBcIlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnB1c2goY2h1bmskanNjb21wJDQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yQ29tcG9uZW50U3RhY2spIHtcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAucHVzaChjbGllbnRSZW5kZXJFcnJvclNjcmlwdEFyZ0ludGVyc3RpdGlhbCk7XG4gICAgICAgICAgICAgIHZhciBjaHVuayRqc2NvbXAkNSA9XG4gICAgICAgICAgICAgICAgZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKGVycm9yQ29tcG9uZW50U3RhY2spO1xuICAgICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKGNodW5rJGpzY29tcCQ1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICBjbGllbnRSZW5kZXJTY3JpcHRFbmRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIUpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCkge1xuICAgICAgICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgdmFyIGNvbXBsZXRlZEJvdW5kYXJpZXMgPSByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXM7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFmbHVzaENvbXBsZXRlZEJvdW5kYXJ5KFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgY29tcGxldGVkQm91bmRhcmllc1tpXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgY29tcGxldGVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBjb21wbGV0ZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgICB2YXIgcGFydGlhbEJvdW5kYXJpZXMgPSByZXF1ZXN0LnBhcnRpYWxCb3VuZGFyaWVzO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXJ0aWFsQm91bmRhcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMgPSByZXF1ZXN0O1xuICAgICAgICAgICAgICBib3VuZGFyeSA9IGRlc3RpbmF0aW9uO1xuICAgICAgICAgICAgICB2YXIgYm91bmRhcnkkanNjb21wJDAgPSBwYXJ0aWFsQm91bmRhcmllc1tpXSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50cyA9IGJvdW5kYXJ5JGpzY29tcCQwLmNvbXBsZXRlZFNlZ21lbnRzO1xuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IDA7XG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0IDwgY29tcGxldGVkU2VnbWVudHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCsrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhZmx1c2hQYXJ0aWFsbHlDb21wbGV0ZWRTZWdtZW50KFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkU2VnbWVudHNbSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0Kys7XG4gICAgICAgICAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50cy5zcGxpY2UoMCwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSAhMTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50cy5zcGxpY2UoMCwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gd3JpdGVIb2lzdGFibGVzRm9yQm91bmRhcnkoXG4gICAgICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICAgICAgYm91bmRhcnkkanNjb21wJDAuY29udGVudFN0YXRlLFxuICAgICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5yZW5kZXJTdGF0ZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDApIHtcbiAgICAgICAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgcGFydGlhbEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhcnRpYWxCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgICB2YXIgbGFyZ2VCb3VuZGFyaWVzID0gcmVxdWVzdC5jb21wbGV0ZWRCb3VuZGFyaWVzO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXJnZUJvdW5kYXJpZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFmbHVzaENvbXBsZXRlZEJvdW5kYXJ5KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBsYXJnZUJvdW5kYXJpZXNbaV0pXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgbGFyZ2VCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGxhcmdlQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIDAgPT09IHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzICYmXG4gICAgICAgICAgMCA9PT0gcmVxdWVzdC5waW5nZWRUYXNrcy5sZW5ndGggJiZcbiAgICAgICAgICAwID09PSByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGggJiZcbiAgICAgICAgICAwID09PSByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoICYmXG4gICAgICAgICAgKChyZXF1ZXN0LmZsdXNoU2NoZWR1bGVkID0gITEpLFxuICAgICAgICAgIChpID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSksXG4gICAgICAgICAgaS5oYXNCb2R5ICYmXG4gICAgICAgICAgICAoKHBhcnRpYWxCb3VuZGFyaWVzID0gZW5kQ2h1bmtGb3JUYWcoXCJib2R5XCIpKSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gocGFydGlhbEJvdW5kYXJpZXMpKSxcbiAgICAgICAgICBpLmhhc0h0bWwgJiYgKChpID0gZW5kQ2h1bmtGb3JUYWcoXCJodG1sXCIpKSwgZGVzdGluYXRpb24ucHVzaChpKSksXG4gICAgICAgICAgMCAhPT0gcmVxdWVzdC5hYm9ydGFibGVUYXNrcy5zaXplICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlRoZXJlIHdhcyBzdGlsbCBhYm9ydGFibGUgdGFzayBhdCB0aGUgcm9vdCB3aGVuIHdlIGNsb3NlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAocmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQpLFxuICAgICAgICAgIGRlc3RpbmF0aW9uLnB1c2gobnVsbCksXG4gICAgICAgICAgKHJlcXVlc3QuZGVzdGluYXRpb24gPSBudWxsKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0YXJ0V29yayhyZXF1ZXN0KSB7XG4gICAgICByZXF1ZXN0LmZsdXNoU2NoZWR1bGVkID0gbnVsbCAhPT0gcmVxdWVzdC5kZXN0aW5hdGlvbjtcbiAgICAgIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICAgICAgMTAgPT09IHJlcXVlc3Quc3RhdHVzICYmIChyZXF1ZXN0LnN0YXR1cyA9IDExKTtcbiAgICAgIG51bGwgPT09IHJlcXVlc3QudHJhY2tlZFBvc3Rwb25lcyAmJlxuICAgICAgICBzYWZlbHlFbWl0RWFybHlQcmVsb2FkcyhyZXF1ZXN0LCAwID09PSByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbnF1ZXVlRmx1c2gocmVxdWVzdCkge1xuICAgICAgaWYgKFxuICAgICAgICAhMSA9PT0gcmVxdWVzdC5mbHVzaFNjaGVkdWxlZCAmJlxuICAgICAgICAwID09PSByZXF1ZXN0LnBpbmdlZFRhc2tzLmxlbmd0aCAmJlxuICAgICAgICBudWxsICE9PSByZXF1ZXN0LmRlc3RpbmF0aW9uXG4gICAgICApIHtcbiAgICAgICAgcmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9ICEwO1xuICAgICAgICB2YXIgZGVzdGluYXRpb24gPSByZXF1ZXN0LmRlc3RpbmF0aW9uO1xuICAgICAgICBkZXN0aW5hdGlvblxuICAgICAgICAgID8gZmx1c2hDb21wbGV0ZWRRdWV1ZXMocmVxdWVzdCwgZGVzdGluYXRpb24pXG4gICAgICAgICAgOiAocmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9ICExKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRGbG93aW5nKHJlcXVlc3QsIGRlc3RpbmF0aW9uKSB7XG4gICAgICBpZiAoMTMgPT09IHJlcXVlc3Quc3RhdHVzKVxuICAgICAgICAocmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQpLCBkZXN0aW5hdGlvbi5kZXN0cm95KHJlcXVlc3QuZmF0YWxFcnJvcik7XG4gICAgICBlbHNlIGlmIChyZXF1ZXN0LnN0YXR1cyAhPT0gQ0xPU0VEICYmIG51bGwgPT09IHJlcXVlc3QuZGVzdGluYXRpb24pIHtcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IGRlc3RpbmF0aW9uO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCB7fSksIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFib3J0KHJlcXVlc3QsIHJlYXNvbikge1xuICAgICAgaWYgKDExID09PSByZXF1ZXN0LnN0YXR1cyB8fCAxMCA9PT0gcmVxdWVzdC5zdGF0dXMpIHJlcXVlc3Quc3RhdHVzID0gMTI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgYWJvcnRhYmxlVGFza3MgPSByZXF1ZXN0LmFib3J0YWJsZVRhc2tzO1xuICAgICAgICBpZiAoMCA8IGFib3J0YWJsZVRhc2tzLnNpemUpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPVxuICAgICAgICAgICAgdm9pZCAwID09PSByZWFzb25cbiAgICAgICAgICAgICAgPyBFcnJvcihcIlRoZSByZW5kZXIgd2FzIGFib3J0ZWQgYnkgdGhlIHNlcnZlciB3aXRob3V0IGEgcmVhc29uLlwiKVxuICAgICAgICAgICAgICA6IFwib2JqZWN0XCIgPT09IHR5cGVvZiByZWFzb24gJiZcbiAgICAgICAgICAgICAgICAgIG51bGwgIT09IHJlYXNvbiAmJlxuICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVhc29uLnRoZW5cbiAgICAgICAgICAgICAgICA/IEVycm9yKFwiVGhlIHJlbmRlciB3YXMgYWJvcnRlZCBieSB0aGUgc2VydmVyIHdpdGggYSBwcm9taXNlLlwiKVxuICAgICAgICAgICAgICAgIDogcmVhc29uO1xuICAgICAgICAgIHJlcXVlc3QuZmF0YWxFcnJvciA9IGVycm9yO1xuICAgICAgICAgIGFib3J0YWJsZVRhc2tzLmZvckVhY2goZnVuY3Rpb24gKHRhc2spIHtcbiAgICAgICAgICAgIHJldHVybiBhYm9ydFRhc2sodGFzaywgcmVxdWVzdCwgZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFib3J0YWJsZVRhc2tzLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgbnVsbCAhPT0gcmVxdWVzdC5kZXN0aW5hdGlvbiAmJlxuICAgICAgICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIHJlcXVlc3QuZGVzdGluYXRpb24pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IkNCkge1xuICAgICAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yJDQsIHt9KSwgZmF0YWxFcnJvcihyZXF1ZXN0LCBlcnJvciQ0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gb25FcnJvcigpIHt9XG4gICAgZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmdJbXBsKFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBvcHRpb25zLFxuICAgICAgZ2VuZXJhdGVTdGF0aWNNYXJrdXAsXG4gICAgICBhYm9ydFJlYXNvblxuICAgICkge1xuICAgICAgdmFyIGRpZEZhdGFsID0gITEsXG4gICAgICAgIGZhdGFsRXJyb3IgPSBudWxsLFxuICAgICAgICByZXN1bHQgPSBcIlwiLFxuICAgICAgICByZWFkeVRvU3RyZWFtID0gITE7XG4gICAgICBvcHRpb25zID0gY3JlYXRlUmVzdW1hYmxlU3RhdGUoXG4gICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLmlkZW50aWZpZXJQcmVmaXggOiB2b2lkIDBcbiAgICAgICk7XG4gICAgICBjaGlsZHJlbiA9IGNyZWF0ZVJlcXVlc3QoXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjcmVhdGVSZW5kZXJTdGF0ZShvcHRpb25zLCBnZW5lcmF0ZVN0YXRpY01hcmt1cCksXG4gICAgICAgIGNyZWF0ZUZvcm1hdENvbnRleHQoUk9PVF9IVE1MX01PREUsIG51bGwsIDApLFxuICAgICAgICBJbmZpbml0eSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmVhZHlUb1N0cmVhbSA9ICEwO1xuICAgICAgICB9LFxuICAgICAgICB2b2lkIDAsXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgdm9pZCAwXG4gICAgICApO1xuICAgICAgc3RhcnRXb3JrKGNoaWxkcmVuKTtcbiAgICAgIGFib3J0KGNoaWxkcmVuLCBhYm9ydFJlYXNvbik7XG4gICAgICBzdGFydEZsb3dpbmcoY2hpbGRyZW4sIHtcbiAgICAgICAgcHVzaDogZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICAgICAgbnVsbCAhPT0gY2h1bmsgJiYgKHJlc3VsdCArPSBjaHVuayk7XG4gICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICB9LFxuICAgICAgICBkZXN0cm95OiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBkaWRGYXRhbCA9ICEwO1xuICAgICAgICAgIGZhdGFsRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoZGlkRmF0YWwgJiYgZmF0YWxFcnJvciAhPT0gYWJvcnRSZWFzb24pIHRocm93IGZhdGFsRXJyb3I7XG4gICAgICBpZiAoIXJlYWR5VG9TdHJlYW0pXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiQSBjb21wb25lbnQgc3VzcGVuZGVkIHdoaWxlIHJlc3BvbmRpbmcgdG8gc3luY2hyb25vdXMgaW5wdXQuIFRoaXMgd2lsbCBjYXVzZSB0aGUgVUkgdG8gYmUgcmVwbGFjZWQgd2l0aCBhIGxvYWRpbmcgaW5kaWNhdG9yLiBUbyBmaXgsIHVwZGF0ZXMgdGhhdCBzdXNwZW5kIHNob3VsZCBiZSB3cmFwcGVkIHdpdGggc3RhcnRUcmFuc2l0aW9uLlwiXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIiksXG4gICAgICBSZWFjdERPTSA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIiksXG4gICAgICBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIiksXG4gICAgICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksXG4gICAgICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICAgICAgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxcbiAgICAgIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksXG4gICAgICBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLFxuICAgICAgUkVBQ1RfQ09OU1VNRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxcbiAgICAgIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLFxuICAgICAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxcbiAgICAgIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFxuICAgICAgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksXG4gICAgICBSRUFDVF9TQ09QRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpLFxuICAgICAgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKSxcbiAgICAgIFJFQUNUX09GRlNDUkVFTl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKSxcbiAgICAgIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpLFxuICAgICAgUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTCA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpLFxuICAgICAgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yLFxuICAgICAgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5LFxuICAgICAganN4UHJvcHNQYXJlbnRzID0gbmV3IFdlYWtNYXAoKSxcbiAgICAgIGpzeENoaWxkcmVuUGFyZW50cyA9IG5ldyBXZWFrTWFwKCksXG4gICAgICBDTElFTlRfUkVGRVJFTkNFX1RBRyA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgYXNzaWduID0gT2JqZWN0LmFzc2lnbixcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgIFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYID0gUmVnRXhwKFxuICAgICAgICBcIl5bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRF1bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFxcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQwXSokXCJcbiAgICAgICksXG4gICAgICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge30sXG4gICAgICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fSxcbiAgICAgIHVuaXRsZXNzTnVtYmVycyA9IG5ldyBTZXQoXG4gICAgICAgIFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgYXNwZWN0UmF0aW8gYm9yZGVySW1hZ2VPdXRzZXQgYm9yZGVySW1hZ2VTbGljZSBib3JkZXJJbWFnZVdpZHRoIGJveEZsZXggYm94RmxleEdyb3VwIGJveE9yZGluYWxHcm91cCBjb2x1bW5Db3VudCBjb2x1bW5zIGZsZXggZmxleEdyb3cgZmxleFBvc2l0aXZlIGZsZXhTaHJpbmsgZmxleE5lZ2F0aXZlIGZsZXhPcmRlciBncmlkQXJlYSBncmlkUm93IGdyaWRSb3dFbmQgZ3JpZFJvd1NwYW4gZ3JpZFJvd1N0YXJ0IGdyaWRDb2x1bW4gZ3JpZENvbHVtbkVuZCBncmlkQ29sdW1uU3BhbiBncmlkQ29sdW1uU3RhcnQgZm9udFdlaWdodCBsaW5lQ2xhbXAgbGluZUhlaWdodCBvcGFjaXR5IG9yZGVyIG9ycGhhbnMgc2NhbGUgdGFiU2l6ZSB3aWRvd3MgekluZGV4IHpvb20gZmlsbE9wYWNpdHkgZmxvb2RPcGFjaXR5IHN0b3BPcGFjaXR5IHN0cm9rZURhc2hhcnJheSBzdHJva2VEYXNob2Zmc2V0IHN0cm9rZU1pdGVybGltaXQgc3Ryb2tlT3BhY2l0eSBzdHJva2VXaWR0aCBNb3pBbmltYXRpb25JdGVyYXRpb25Db3VudCBNb3pCb3hGbGV4IE1vekJveEZsZXhHcm91cCBNb3pMaW5lQ2xhbXAgbXNBbmltYXRpb25JdGVyYXRpb25Db3VudCBtc0ZsZXggbXNab29tIG1zRmxleEdyb3cgbXNGbGV4TmVnYXRpdmUgbXNGbGV4T3JkZXIgbXNGbGV4UG9zaXRpdmUgbXNGbGV4U2hyaW5rIG1zR3JpZENvbHVtbiBtc0dyaWRDb2x1bW5TcGFuIG1zR3JpZFJvdyBtc0dyaWRSb3dTcGFuIFdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IFdlYmtpdEJveEZsZXggV2ViS2l0Qm94RmxleEdyb3VwIFdlYmtpdEJveE9yZGluYWxHcm91cCBXZWJraXRDb2x1bW5Db3VudCBXZWJraXRDb2x1bW5zIFdlYmtpdEZsZXggV2Via2l0RmxleEdyb3cgV2Via2l0RmxleFBvc2l0aXZlIFdlYmtpdEZsZXhTaHJpbmsgV2Via2l0TGluZUNsYW1wXCIuc3BsaXQoXG4gICAgICAgICAgXCIgXCJcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIGFsaWFzZXMgPSBuZXcgTWFwKFtcbiAgICAgICAgW1wiYWNjZXB0Q2hhcnNldFwiLCBcImFjY2VwdC1jaGFyc2V0XCJdLFxuICAgICAgICBbXCJodG1sRm9yXCIsIFwiZm9yXCJdLFxuICAgICAgICBbXCJodHRwRXF1aXZcIiwgXCJodHRwLWVxdWl2XCJdLFxuICAgICAgICBbXCJjcm9zc09yaWdpblwiLCBcImNyb3Nzb3JpZ2luXCJdLFxuICAgICAgICBbXCJhY2NlbnRIZWlnaHRcIiwgXCJhY2NlbnQtaGVpZ2h0XCJdLFxuICAgICAgICBbXCJhbGlnbm1lbnRCYXNlbGluZVwiLCBcImFsaWdubWVudC1iYXNlbGluZVwiXSxcbiAgICAgICAgW1wiYXJhYmljRm9ybVwiLCBcImFyYWJpYy1mb3JtXCJdLFxuICAgICAgICBbXCJiYXNlbGluZVNoaWZ0XCIsIFwiYmFzZWxpbmUtc2hpZnRcIl0sXG4gICAgICAgIFtcImNhcEhlaWdodFwiLCBcImNhcC1oZWlnaHRcIl0sXG4gICAgICAgIFtcImNsaXBQYXRoXCIsIFwiY2xpcC1wYXRoXCJdLFxuICAgICAgICBbXCJjbGlwUnVsZVwiLCBcImNsaXAtcnVsZVwiXSxcbiAgICAgICAgW1wiY29sb3JJbnRlcnBvbGF0aW9uXCIsIFwiY29sb3ItaW50ZXJwb2xhdGlvblwiXSxcbiAgICAgICAgW1wiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc1wiLCBcImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyc1wiXSxcbiAgICAgICAgW1wiY29sb3JQcm9maWxlXCIsIFwiY29sb3ItcHJvZmlsZVwiXSxcbiAgICAgICAgW1wiY29sb3JSZW5kZXJpbmdcIiwgXCJjb2xvci1yZW5kZXJpbmdcIl0sXG4gICAgICAgIFtcImRvbWluYW50QmFzZWxpbmVcIiwgXCJkb21pbmFudC1iYXNlbGluZVwiXSxcbiAgICAgICAgW1wiZW5hYmxlQmFja2dyb3VuZFwiLCBcImVuYWJsZS1iYWNrZ3JvdW5kXCJdLFxuICAgICAgICBbXCJmaWxsT3BhY2l0eVwiLCBcImZpbGwtb3BhY2l0eVwiXSxcbiAgICAgICAgW1wiZmlsbFJ1bGVcIiwgXCJmaWxsLXJ1bGVcIl0sXG4gICAgICAgIFtcImZsb29kQ29sb3JcIiwgXCJmbG9vZC1jb2xvclwiXSxcbiAgICAgICAgW1wiZmxvb2RPcGFjaXR5XCIsIFwiZmxvb2Qtb3BhY2l0eVwiXSxcbiAgICAgICAgW1wiZm9udEZhbWlseVwiLCBcImZvbnQtZmFtaWx5XCJdLFxuICAgICAgICBbXCJmb250U2l6ZVwiLCBcImZvbnQtc2l6ZVwiXSxcbiAgICAgICAgW1wiZm9udFNpemVBZGp1c3RcIiwgXCJmb250LXNpemUtYWRqdXN0XCJdLFxuICAgICAgICBbXCJmb250U3RyZXRjaFwiLCBcImZvbnQtc3RyZXRjaFwiXSxcbiAgICAgICAgW1wiZm9udFN0eWxlXCIsIFwiZm9udC1zdHlsZVwiXSxcbiAgICAgICAgW1wiZm9udFZhcmlhbnRcIiwgXCJmb250LXZhcmlhbnRcIl0sXG4gICAgICAgIFtcImZvbnRXZWlnaHRcIiwgXCJmb250LXdlaWdodFwiXSxcbiAgICAgICAgW1wiZ2x5cGhOYW1lXCIsIFwiZ2x5cGgtbmFtZVwiXSxcbiAgICAgICAgW1wiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxcIiwgXCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsXCJdLFxuICAgICAgICBbXCJnbHlwaE9yaWVudGF0aW9uVmVydGljYWxcIiwgXCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbFwiXSxcbiAgICAgICAgW1wiaG9yaXpBZHZYXCIsIFwiaG9yaXotYWR2LXhcIl0sXG4gICAgICAgIFtcImhvcml6T3JpZ2luWFwiLCBcImhvcml6LW9yaWdpbi14XCJdLFxuICAgICAgICBbXCJpbWFnZVJlbmRlcmluZ1wiLCBcImltYWdlLXJlbmRlcmluZ1wiXSxcbiAgICAgICAgW1wibGV0dGVyU3BhY2luZ1wiLCBcImxldHRlci1zcGFjaW5nXCJdLFxuICAgICAgICBbXCJsaWdodGluZ0NvbG9yXCIsIFwibGlnaHRpbmctY29sb3JcIl0sXG4gICAgICAgIFtcIm1hcmtlckVuZFwiLCBcIm1hcmtlci1lbmRcIl0sXG4gICAgICAgIFtcIm1hcmtlck1pZFwiLCBcIm1hcmtlci1taWRcIl0sXG4gICAgICAgIFtcIm1hcmtlclN0YXJ0XCIsIFwibWFya2VyLXN0YXJ0XCJdLFxuICAgICAgICBbXCJvdmVybGluZVBvc2l0aW9uXCIsIFwib3ZlcmxpbmUtcG9zaXRpb25cIl0sXG4gICAgICAgIFtcIm92ZXJsaW5lVGhpY2tuZXNzXCIsIFwib3ZlcmxpbmUtdGhpY2tuZXNzXCJdLFxuICAgICAgICBbXCJwYWludE9yZGVyXCIsIFwicGFpbnQtb3JkZXJcIl0sXG4gICAgICAgIFtcInBhbm9zZS0xXCIsIFwicGFub3NlLTFcIl0sXG4gICAgICAgIFtcInBvaW50ZXJFdmVudHNcIiwgXCJwb2ludGVyLWV2ZW50c1wiXSxcbiAgICAgICAgW1wicmVuZGVyaW5nSW50ZW50XCIsIFwicmVuZGVyaW5nLWludGVudFwiXSxcbiAgICAgICAgW1wic2hhcGVSZW5kZXJpbmdcIiwgXCJzaGFwZS1yZW5kZXJpbmdcIl0sXG4gICAgICAgIFtcInN0b3BDb2xvclwiLCBcInN0b3AtY29sb3JcIl0sXG4gICAgICAgIFtcInN0b3BPcGFjaXR5XCIsIFwic3RvcC1vcGFjaXR5XCJdLFxuICAgICAgICBbXCJzdHJpa2V0aHJvdWdoUG9zaXRpb25cIiwgXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCJdLFxuICAgICAgICBbXCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzXCIsIFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIl0sXG4gICAgICAgIFtcInN0cm9rZURhc2hhcnJheVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIl0sXG4gICAgICAgIFtcInN0cm9rZURhc2hvZmZzZXRcIiwgXCJzdHJva2UtZGFzaG9mZnNldFwiXSxcbiAgICAgICAgW1wic3Ryb2tlTGluZWNhcFwiLCBcInN0cm9rZS1saW5lY2FwXCJdLFxuICAgICAgICBbXCJzdHJva2VMaW5lam9pblwiLCBcInN0cm9rZS1saW5lam9pblwiXSxcbiAgICAgICAgW1wic3Ryb2tlTWl0ZXJsaW1pdFwiLCBcInN0cm9rZS1taXRlcmxpbWl0XCJdLFxuICAgICAgICBbXCJzdHJva2VPcGFjaXR5XCIsIFwic3Ryb2tlLW9wYWNpdHlcIl0sXG4gICAgICAgIFtcInN0cm9rZVdpZHRoXCIsIFwic3Ryb2tlLXdpZHRoXCJdLFxuICAgICAgICBbXCJ0ZXh0QW5jaG9yXCIsIFwidGV4dC1hbmNob3JcIl0sXG4gICAgICAgIFtcInRleHREZWNvcmF0aW9uXCIsIFwidGV4dC1kZWNvcmF0aW9uXCJdLFxuICAgICAgICBbXCJ0ZXh0UmVuZGVyaW5nXCIsIFwidGV4dC1yZW5kZXJpbmdcIl0sXG4gICAgICAgIFtcInRyYW5zZm9ybU9yaWdpblwiLCBcInRyYW5zZm9ybS1vcmlnaW5cIl0sXG4gICAgICAgIFtcInVuZGVybGluZVBvc2l0aW9uXCIsIFwidW5kZXJsaW5lLXBvc2l0aW9uXCJdLFxuICAgICAgICBbXCJ1bmRlcmxpbmVUaGlja25lc3NcIiwgXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJdLFxuICAgICAgICBbXCJ1bmljb2RlQmlkaVwiLCBcInVuaWNvZGUtYmlkaVwiXSxcbiAgICAgICAgW1widW5pY29kZVJhbmdlXCIsIFwidW5pY29kZS1yYW5nZVwiXSxcbiAgICAgICAgW1widW5pdHNQZXJFbVwiLCBcInVuaXRzLXBlci1lbVwiXSxcbiAgICAgICAgW1widkFscGhhYmV0aWNcIiwgXCJ2LWFscGhhYmV0aWNcIl0sXG4gICAgICAgIFtcInZIYW5naW5nXCIsIFwidi1oYW5naW5nXCJdLFxuICAgICAgICBbXCJ2SWRlb2dyYXBoaWNcIiwgXCJ2LWlkZW9ncmFwaGljXCJdLFxuICAgICAgICBbXCJ2TWF0aGVtYXRpY2FsXCIsIFwidi1tYXRoZW1hdGljYWxcIl0sXG4gICAgICAgIFtcInZlY3RvckVmZmVjdFwiLCBcInZlY3Rvci1lZmZlY3RcIl0sXG4gICAgICAgIFtcInZlcnRBZHZZXCIsIFwidmVydC1hZHYteVwiXSxcbiAgICAgICAgW1widmVydE9yaWdpblhcIiwgXCJ2ZXJ0LW9yaWdpbi14XCJdLFxuICAgICAgICBbXCJ2ZXJ0T3JpZ2luWVwiLCBcInZlcnQtb3JpZ2luLXlcIl0sXG4gICAgICAgIFtcIndvcmRTcGFjaW5nXCIsIFwid29yZC1zcGFjaW5nXCJdLFxuICAgICAgICBbXCJ3cml0aW5nTW9kZVwiLCBcIndyaXRpbmctbW9kZVwiXSxcbiAgICAgICAgW1wieG1sbnNYbGlua1wiLCBcInhtbG5zOnhsaW5rXCJdLFxuICAgICAgICBbXCJ4SGVpZ2h0XCIsIFwieC1oZWlnaHRcIl1cbiAgICAgIF0pLFxuICAgICAgaGFzUmVhZE9ubHlWYWx1ZSA9IHtcbiAgICAgICAgYnV0dG9uOiAhMCxcbiAgICAgICAgY2hlY2tib3g6ICEwLFxuICAgICAgICBpbWFnZTogITAsXG4gICAgICAgIGhpZGRlbjogITAsXG4gICAgICAgIHJhZGlvOiAhMCxcbiAgICAgICAgcmVzZXQ6ICEwLFxuICAgICAgICBzdWJtaXQ6ICEwXG4gICAgICB9LFxuICAgICAgYXJpYVByb3BlcnRpZXMgPSB7XG4gICAgICAgIFwiYXJpYS1jdXJyZW50XCI6IDAsXG4gICAgICAgIFwiYXJpYS1kZXNjcmlwdGlvblwiOiAwLFxuICAgICAgICBcImFyaWEtZGV0YWlsc1wiOiAwLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogMCxcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiAwLFxuICAgICAgICBcImFyaWEtaW52YWxpZFwiOiAwLFxuICAgICAgICBcImFyaWEta2V5c2hvcnRjdXRzXCI6IDAsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiAwLFxuICAgICAgICBcImFyaWEtcm9sZWRlc2NyaXB0aW9uXCI6IDAsXG4gICAgICAgIFwiYXJpYS1hdXRvY29tcGxldGVcIjogMCxcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogMCxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiAwLFxuICAgICAgICBcImFyaWEtbGV2ZWxcIjogMCxcbiAgICAgICAgXCJhcmlhLW1vZGFsXCI6IDAsXG4gICAgICAgIFwiYXJpYS1tdWx0aWxpbmVcIjogMCxcbiAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiAwLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogMCxcbiAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IDAsXG4gICAgICAgIFwiYXJpYS1wcmVzc2VkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1yZWFkb25seVwiOiAwLFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjogMCxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1zb3J0XCI6IDAsXG4gICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiAwLFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IDAsXG4gICAgICAgIFwiYXJpYS12YWx1ZXRleHRcIjogMCxcbiAgICAgICAgXCJhcmlhLWF0b21pY1wiOiAwLFxuICAgICAgICBcImFyaWEtYnVzeVwiOiAwLFxuICAgICAgICBcImFyaWEtbGl2ZVwiOiAwLFxuICAgICAgICBcImFyaWEtcmVsZXZhbnRcIjogMCxcbiAgICAgICAgXCJhcmlhLWRyb3BlZmZlY3RcIjogMCxcbiAgICAgICAgXCJhcmlhLWdyYWJiZWRcIjogMCxcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjogMCxcbiAgICAgICAgXCJhcmlhLWNvbGNvdW50XCI6IDAsXG4gICAgICAgIFwiYXJpYS1jb2xpbmRleFwiOiAwLFxuICAgICAgICBcImFyaWEtY29sc3BhblwiOiAwLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogMCxcbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IDAsXG4gICAgICAgIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIjogMCxcbiAgICAgICAgXCJhcmlhLWZsb3d0b1wiOiAwLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiAwLFxuICAgICAgICBcImFyaWEtb3duc1wiOiAwLFxuICAgICAgICBcImFyaWEtcG9zaW5zZXRcIjogMCxcbiAgICAgICAgXCJhcmlhLXJvd2NvdW50XCI6IDAsXG4gICAgICAgIFwiYXJpYS1yb3dpbmRleFwiOiAwLFxuICAgICAgICBcImFyaWEtcm93c3BhblwiOiAwLFxuICAgICAgICBcImFyaWEtc2V0c2l6ZVwiOiAwXG4gICAgICB9LFxuICAgICAgd2FybmVkUHJvcGVydGllcyQxID0ge30sXG4gICAgICByQVJJQSQxID0gUmVnRXhwKFxuICAgICAgICBcIl4oYXJpYSktWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MF0qJFwiXG4gICAgICApLFxuICAgICAgckFSSUFDYW1lbCQxID0gUmVnRXhwKFxuICAgICAgICBcIl4oYXJpYSlbQS1aXVs6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBdKiRcIlxuICAgICAgKSxcbiAgICAgIGRpZFdhcm5WYWx1ZU51bGwgPSAhMSxcbiAgICAgIHBvc3NpYmxlU3RhbmRhcmROYW1lcyA9IHtcbiAgICAgICAgYWNjZXB0OiBcImFjY2VwdFwiLFxuICAgICAgICBhY2NlcHRjaGFyc2V0OiBcImFjY2VwdENoYXJzZXRcIixcbiAgICAgICAgXCJhY2NlcHQtY2hhcnNldFwiOiBcImFjY2VwdENoYXJzZXRcIixcbiAgICAgICAgYWNjZXNza2V5OiBcImFjY2Vzc0tleVwiLFxuICAgICAgICBhY3Rpb246IFwiYWN0aW9uXCIsXG4gICAgICAgIGFsbG93ZnVsbHNjcmVlbjogXCJhbGxvd0Z1bGxTY3JlZW5cIixcbiAgICAgICAgYWx0OiBcImFsdFwiLFxuICAgICAgICBhczogXCJhc1wiLFxuICAgICAgICBhc3luYzogXCJhc3luY1wiLFxuICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJhdXRvQ2FwaXRhbGl6ZVwiLFxuICAgICAgICBhdXRvY29tcGxldGU6IFwiYXV0b0NvbXBsZXRlXCIsXG4gICAgICAgIGF1dG9jb3JyZWN0OiBcImF1dG9Db3JyZWN0XCIsXG4gICAgICAgIGF1dG9mb2N1czogXCJhdXRvRm9jdXNcIixcbiAgICAgICAgYXV0b3BsYXk6IFwiYXV0b1BsYXlcIixcbiAgICAgICAgYXV0b3NhdmU6IFwiYXV0b1NhdmVcIixcbiAgICAgICAgY2FwdHVyZTogXCJjYXB0dXJlXCIsXG4gICAgICAgIGNlbGxwYWRkaW5nOiBcImNlbGxQYWRkaW5nXCIsXG4gICAgICAgIGNlbGxzcGFjaW5nOiBcImNlbGxTcGFjaW5nXCIsXG4gICAgICAgIGNoYWxsZW5nZTogXCJjaGFsbGVuZ2VcIixcbiAgICAgICAgY2hhcnNldDogXCJjaGFyU2V0XCIsXG4gICAgICAgIGNoZWNrZWQ6IFwiY2hlY2tlZFwiLFxuICAgICAgICBjaGlsZHJlbjogXCJjaGlsZHJlblwiLFxuICAgICAgICBjaXRlOiBcImNpdGVcIixcbiAgICAgICAgY2xhc3M6IFwiY2xhc3NOYW1lXCIsXG4gICAgICAgIGNsYXNzaWQ6IFwiY2xhc3NJRFwiLFxuICAgICAgICBjbGFzc25hbWU6IFwiY2xhc3NOYW1lXCIsXG4gICAgICAgIGNvbHM6IFwiY29sc1wiLFxuICAgICAgICBjb2xzcGFuOiBcImNvbFNwYW5cIixcbiAgICAgICAgY29udGVudDogXCJjb250ZW50XCIsXG4gICAgICAgIGNvbnRlbnRlZGl0YWJsZTogXCJjb250ZW50RWRpdGFibGVcIixcbiAgICAgICAgY29udGV4dG1lbnU6IFwiY29udGV4dE1lbnVcIixcbiAgICAgICAgY29udHJvbHM6IFwiY29udHJvbHNcIixcbiAgICAgICAgY29udHJvbHNsaXN0OiBcImNvbnRyb2xzTGlzdFwiLFxuICAgICAgICBjb29yZHM6IFwiY29vcmRzXCIsXG4gICAgICAgIGNyb3Nzb3JpZ2luOiBcImNyb3NzT3JpZ2luXCIsXG4gICAgICAgIGRhbmdlcm91c2x5c2V0aW5uZXJodG1sOiBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIsXG4gICAgICAgIGRhdGE6IFwiZGF0YVwiLFxuICAgICAgICBkYXRldGltZTogXCJkYXRlVGltZVwiLFxuICAgICAgICBkZWZhdWx0OiBcImRlZmF1bHRcIixcbiAgICAgICAgZGVmYXVsdGNoZWNrZWQ6IFwiZGVmYXVsdENoZWNrZWRcIixcbiAgICAgICAgZGVmYXVsdHZhbHVlOiBcImRlZmF1bHRWYWx1ZVwiLFxuICAgICAgICBkZWZlcjogXCJkZWZlclwiLFxuICAgICAgICBkaXI6IFwiZGlyXCIsXG4gICAgICAgIGRpc2FibGVkOiBcImRpc2FibGVkXCIsXG4gICAgICAgIGRpc2FibGVwaWN0dXJlaW5waWN0dXJlOiBcImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlXCIsXG4gICAgICAgIGRpc2FibGVyZW1vdGVwbGF5YmFjazogXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIixcbiAgICAgICAgZG93bmxvYWQ6IFwiZG93bmxvYWRcIixcbiAgICAgICAgZHJhZ2dhYmxlOiBcImRyYWdnYWJsZVwiLFxuICAgICAgICBlbmN0eXBlOiBcImVuY1R5cGVcIixcbiAgICAgICAgZW50ZXJrZXloaW50OiBcImVudGVyS2V5SGludFwiLFxuICAgICAgICBmZXRjaHByaW9yaXR5OiBcImZldGNoUHJpb3JpdHlcIixcbiAgICAgICAgZm9yOiBcImh0bWxGb3JcIixcbiAgICAgICAgZm9ybTogXCJmb3JtXCIsXG4gICAgICAgIGZvcm1tZXRob2Q6IFwiZm9ybU1ldGhvZFwiLFxuICAgICAgICBmb3JtYWN0aW9uOiBcImZvcm1BY3Rpb25cIixcbiAgICAgICAgZm9ybWVuY3R5cGU6IFwiZm9ybUVuY1R5cGVcIixcbiAgICAgICAgZm9ybW5vdmFsaWRhdGU6IFwiZm9ybU5vVmFsaWRhdGVcIixcbiAgICAgICAgZm9ybXRhcmdldDogXCJmb3JtVGFyZ2V0XCIsXG4gICAgICAgIGZyYW1lYm9yZGVyOiBcImZyYW1lQm9yZGVyXCIsXG4gICAgICAgIGhlYWRlcnM6IFwiaGVhZGVyc1wiLFxuICAgICAgICBoZWlnaHQ6IFwiaGVpZ2h0XCIsXG4gICAgICAgIGhpZGRlbjogXCJoaWRkZW5cIixcbiAgICAgICAgaGlnaDogXCJoaWdoXCIsXG4gICAgICAgIGhyZWY6IFwiaHJlZlwiLFxuICAgICAgICBocmVmbGFuZzogXCJocmVmTGFuZ1wiLFxuICAgICAgICBodG1sZm9yOiBcImh0bWxGb3JcIixcbiAgICAgICAgaHR0cGVxdWl2OiBcImh0dHBFcXVpdlwiLFxuICAgICAgICBcImh0dHAtZXF1aXZcIjogXCJodHRwRXF1aXZcIixcbiAgICAgICAgaWNvbjogXCJpY29uXCIsXG4gICAgICAgIGlkOiBcImlkXCIsXG4gICAgICAgIGltYWdlc2l6ZXM6IFwiaW1hZ2VTaXplc1wiLFxuICAgICAgICBpbWFnZXNyY3NldDogXCJpbWFnZVNyY1NldFwiLFxuICAgICAgICBpbmVydDogXCJpbmVydFwiLFxuICAgICAgICBpbm5lcmh0bWw6IFwiaW5uZXJIVE1MXCIsXG4gICAgICAgIGlucHV0bW9kZTogXCJpbnB1dE1vZGVcIixcbiAgICAgICAgaW50ZWdyaXR5OiBcImludGVncml0eVwiLFxuICAgICAgICBpczogXCJpc1wiLFxuICAgICAgICBpdGVtaWQ6IFwiaXRlbUlEXCIsXG4gICAgICAgIGl0ZW1wcm9wOiBcIml0ZW1Qcm9wXCIsXG4gICAgICAgIGl0ZW1yZWY6IFwiaXRlbVJlZlwiLFxuICAgICAgICBpdGVtc2NvcGU6IFwiaXRlbVNjb3BlXCIsXG4gICAgICAgIGl0ZW10eXBlOiBcIml0ZW1UeXBlXCIsXG4gICAgICAgIGtleXBhcmFtczogXCJrZXlQYXJhbXNcIixcbiAgICAgICAga2V5dHlwZTogXCJrZXlUeXBlXCIsXG4gICAgICAgIGtpbmQ6IFwia2luZFwiLFxuICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICBsYW5nOiBcImxhbmdcIixcbiAgICAgICAgbGlzdDogXCJsaXN0XCIsXG4gICAgICAgIGxvb3A6IFwibG9vcFwiLFxuICAgICAgICBsb3c6IFwibG93XCIsXG4gICAgICAgIG1hbmlmZXN0OiBcIm1hbmlmZXN0XCIsXG4gICAgICAgIG1hcmdpbndpZHRoOiBcIm1hcmdpbldpZHRoXCIsXG4gICAgICAgIG1hcmdpbmhlaWdodDogXCJtYXJnaW5IZWlnaHRcIixcbiAgICAgICAgbWF4OiBcIm1heFwiLFxuICAgICAgICBtYXhsZW5ndGg6IFwibWF4TGVuZ3RoXCIsXG4gICAgICAgIG1lZGlhOiBcIm1lZGlhXCIsXG4gICAgICAgIG1lZGlhZ3JvdXA6IFwibWVkaWFHcm91cFwiLFxuICAgICAgICBtZXRob2Q6IFwibWV0aG9kXCIsXG4gICAgICAgIG1pbjogXCJtaW5cIixcbiAgICAgICAgbWlubGVuZ3RoOiBcIm1pbkxlbmd0aFwiLFxuICAgICAgICBtdWx0aXBsZTogXCJtdWx0aXBsZVwiLFxuICAgICAgICBtdXRlZDogXCJtdXRlZFwiLFxuICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgbm9tb2R1bGU6IFwibm9Nb2R1bGVcIixcbiAgICAgICAgbm9uY2U6IFwibm9uY2VcIixcbiAgICAgICAgbm92YWxpZGF0ZTogXCJub1ZhbGlkYXRlXCIsXG4gICAgICAgIG9wZW46IFwib3BlblwiLFxuICAgICAgICBvcHRpbXVtOiBcIm9wdGltdW1cIixcbiAgICAgICAgcGF0dGVybjogXCJwYXR0ZXJuXCIsXG4gICAgICAgIHBsYWNlaG9sZGVyOiBcInBsYWNlaG9sZGVyXCIsXG4gICAgICAgIHBsYXlzaW5saW5lOiBcInBsYXlzSW5saW5lXCIsXG4gICAgICAgIHBvc3RlcjogXCJwb3N0ZXJcIixcbiAgICAgICAgcHJlbG9hZDogXCJwcmVsb2FkXCIsXG4gICAgICAgIHByb2ZpbGU6IFwicHJvZmlsZVwiLFxuICAgICAgICByYWRpb2dyb3VwOiBcInJhZGlvR3JvdXBcIixcbiAgICAgICAgcmVhZG9ubHk6IFwicmVhZE9ubHlcIixcbiAgICAgICAgcmVmZXJyZXJwb2xpY3k6IFwicmVmZXJyZXJQb2xpY3lcIixcbiAgICAgICAgcmVsOiBcInJlbFwiLFxuICAgICAgICByZXF1aXJlZDogXCJyZXF1aXJlZFwiLFxuICAgICAgICByZXZlcnNlZDogXCJyZXZlcnNlZFwiLFxuICAgICAgICByb2xlOiBcInJvbGVcIixcbiAgICAgICAgcm93czogXCJyb3dzXCIsXG4gICAgICAgIHJvd3NwYW46IFwicm93U3BhblwiLFxuICAgICAgICBzYW5kYm94OiBcInNhbmRib3hcIixcbiAgICAgICAgc2NvcGU6IFwic2NvcGVcIixcbiAgICAgICAgc2NvcGVkOiBcInNjb3BlZFwiLFxuICAgICAgICBzY3JvbGxpbmc6IFwic2Nyb2xsaW5nXCIsXG4gICAgICAgIHNlYW1sZXNzOiBcInNlYW1sZXNzXCIsXG4gICAgICAgIHNlbGVjdGVkOiBcInNlbGVjdGVkXCIsXG4gICAgICAgIHNoYXBlOiBcInNoYXBlXCIsXG4gICAgICAgIHNpemU6IFwic2l6ZVwiLFxuICAgICAgICBzaXplczogXCJzaXplc1wiLFxuICAgICAgICBzcGFuOiBcInNwYW5cIixcbiAgICAgICAgc3BlbGxjaGVjazogXCJzcGVsbENoZWNrXCIsXG4gICAgICAgIHNyYzogXCJzcmNcIixcbiAgICAgICAgc3JjZG9jOiBcInNyY0RvY1wiLFxuICAgICAgICBzcmNsYW5nOiBcInNyY0xhbmdcIixcbiAgICAgICAgc3Jjc2V0OiBcInNyY1NldFwiLFxuICAgICAgICBzdGFydDogXCJzdGFydFwiLFxuICAgICAgICBzdGVwOiBcInN0ZXBcIixcbiAgICAgICAgc3R5bGU6IFwic3R5bGVcIixcbiAgICAgICAgc3VtbWFyeTogXCJzdW1tYXJ5XCIsXG4gICAgICAgIHRhYmluZGV4OiBcInRhYkluZGV4XCIsXG4gICAgICAgIHRhcmdldDogXCJ0YXJnZXRcIixcbiAgICAgICAgdGl0bGU6IFwidGl0bGVcIixcbiAgICAgICAgdHlwZTogXCJ0eXBlXCIsXG4gICAgICAgIHVzZW1hcDogXCJ1c2VNYXBcIixcbiAgICAgICAgdmFsdWU6IFwidmFsdWVcIixcbiAgICAgICAgd2lkdGg6IFwid2lkdGhcIixcbiAgICAgICAgd21vZGU6IFwid21vZGVcIixcbiAgICAgICAgd3JhcDogXCJ3cmFwXCIsXG4gICAgICAgIGFib3V0OiBcImFib3V0XCIsXG4gICAgICAgIGFjY2VudGhlaWdodDogXCJhY2NlbnRIZWlnaHRcIixcbiAgICAgICAgXCJhY2NlbnQtaGVpZ2h0XCI6IFwiYWNjZW50SGVpZ2h0XCIsXG4gICAgICAgIGFjY3VtdWxhdGU6IFwiYWNjdW11bGF0ZVwiLFxuICAgICAgICBhZGRpdGl2ZTogXCJhZGRpdGl2ZVwiLFxuICAgICAgICBhbGlnbm1lbnRiYXNlbGluZTogXCJhbGlnbm1lbnRCYXNlbGluZVwiLFxuICAgICAgICBcImFsaWdubWVudC1iYXNlbGluZVwiOiBcImFsaWdubWVudEJhc2VsaW5lXCIsXG4gICAgICAgIGFsbG93cmVvcmRlcjogXCJhbGxvd1Jlb3JkZXJcIixcbiAgICAgICAgYWxwaGFiZXRpYzogXCJhbHBoYWJldGljXCIsXG4gICAgICAgIGFtcGxpdHVkZTogXCJhbXBsaXR1ZGVcIixcbiAgICAgICAgYXJhYmljZm9ybTogXCJhcmFiaWNGb3JtXCIsXG4gICAgICAgIFwiYXJhYmljLWZvcm1cIjogXCJhcmFiaWNGb3JtXCIsXG4gICAgICAgIGFzY2VudDogXCJhc2NlbnRcIixcbiAgICAgICAgYXR0cmlidXRlbmFtZTogXCJhdHRyaWJ1dGVOYW1lXCIsXG4gICAgICAgIGF0dHJpYnV0ZXR5cGU6IFwiYXR0cmlidXRlVHlwZVwiLFxuICAgICAgICBhdXRvcmV2ZXJzZTogXCJhdXRvUmV2ZXJzZVwiLFxuICAgICAgICBhemltdXRoOiBcImF6aW11dGhcIixcbiAgICAgICAgYmFzZWZyZXF1ZW5jeTogXCJiYXNlRnJlcXVlbmN5XCIsXG4gICAgICAgIGJhc2VsaW5lc2hpZnQ6IFwiYmFzZWxpbmVTaGlmdFwiLFxuICAgICAgICBcImJhc2VsaW5lLXNoaWZ0XCI6IFwiYmFzZWxpbmVTaGlmdFwiLFxuICAgICAgICBiYXNlcHJvZmlsZTogXCJiYXNlUHJvZmlsZVwiLFxuICAgICAgICBiYm94OiBcImJib3hcIixcbiAgICAgICAgYmVnaW46IFwiYmVnaW5cIixcbiAgICAgICAgYmlhczogXCJiaWFzXCIsXG4gICAgICAgIGJ5OiBcImJ5XCIsXG4gICAgICAgIGNhbGNtb2RlOiBcImNhbGNNb2RlXCIsXG4gICAgICAgIGNhcGhlaWdodDogXCJjYXBIZWlnaHRcIixcbiAgICAgICAgXCJjYXAtaGVpZ2h0XCI6IFwiY2FwSGVpZ2h0XCIsXG4gICAgICAgIGNsaXA6IFwiY2xpcFwiLFxuICAgICAgICBjbGlwcGF0aDogXCJjbGlwUGF0aFwiLFxuICAgICAgICBcImNsaXAtcGF0aFwiOiBcImNsaXBQYXRoXCIsXG4gICAgICAgIGNsaXBwYXRodW5pdHM6IFwiY2xpcFBhdGhVbml0c1wiLFxuICAgICAgICBjbGlwcnVsZTogXCJjbGlwUnVsZVwiLFxuICAgICAgICBcImNsaXAtcnVsZVwiOiBcImNsaXBSdWxlXCIsXG4gICAgICAgIGNvbG9yOiBcImNvbG9yXCIsXG4gICAgICAgIGNvbG9yaW50ZXJwb2xhdGlvbjogXCJjb2xvckludGVycG9sYXRpb25cIixcbiAgICAgICAgXCJjb2xvci1pbnRlcnBvbGF0aW9uXCI6IFwiY29sb3JJbnRlcnBvbGF0aW9uXCIsXG4gICAgICAgIGNvbG9yaW50ZXJwb2xhdGlvbmZpbHRlcnM6IFwiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc1wiLFxuICAgICAgICBcImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyc1wiOiBcImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNcIixcbiAgICAgICAgY29sb3Jwcm9maWxlOiBcImNvbG9yUHJvZmlsZVwiLFxuICAgICAgICBcImNvbG9yLXByb2ZpbGVcIjogXCJjb2xvclByb2ZpbGVcIixcbiAgICAgICAgY29sb3JyZW5kZXJpbmc6IFwiY29sb3JSZW5kZXJpbmdcIixcbiAgICAgICAgXCJjb2xvci1yZW5kZXJpbmdcIjogXCJjb2xvclJlbmRlcmluZ1wiLFxuICAgICAgICBjb250ZW50c2NyaXB0dHlwZTogXCJjb250ZW50U2NyaXB0VHlwZVwiLFxuICAgICAgICBjb250ZW50c3R5bGV0eXBlOiBcImNvbnRlbnRTdHlsZVR5cGVcIixcbiAgICAgICAgY3Vyc29yOiBcImN1cnNvclwiLFxuICAgICAgICBjeDogXCJjeFwiLFxuICAgICAgICBjeTogXCJjeVwiLFxuICAgICAgICBkOiBcImRcIixcbiAgICAgICAgZGF0YXR5cGU6IFwiZGF0YXR5cGVcIixcbiAgICAgICAgZGVjZWxlcmF0ZTogXCJkZWNlbGVyYXRlXCIsXG4gICAgICAgIGRlc2NlbnQ6IFwiZGVzY2VudFwiLFxuICAgICAgICBkaWZmdXNlY29uc3RhbnQ6IFwiZGlmZnVzZUNvbnN0YW50XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJkaXJlY3Rpb25cIixcbiAgICAgICAgZGlzcGxheTogXCJkaXNwbGF5XCIsXG4gICAgICAgIGRpdmlzb3I6IFwiZGl2aXNvclwiLFxuICAgICAgICBkb21pbmFudGJhc2VsaW5lOiBcImRvbWluYW50QmFzZWxpbmVcIixcbiAgICAgICAgXCJkb21pbmFudC1iYXNlbGluZVwiOiBcImRvbWluYW50QmFzZWxpbmVcIixcbiAgICAgICAgZHVyOiBcImR1clwiLFxuICAgICAgICBkeDogXCJkeFwiLFxuICAgICAgICBkeTogXCJkeVwiLFxuICAgICAgICBlZGdlbW9kZTogXCJlZGdlTW9kZVwiLFxuICAgICAgICBlbGV2YXRpb246IFwiZWxldmF0aW9uXCIsXG4gICAgICAgIGVuYWJsZWJhY2tncm91bmQ6IFwiZW5hYmxlQmFja2dyb3VuZFwiLFxuICAgICAgICBcImVuYWJsZS1iYWNrZ3JvdW5kXCI6IFwiZW5hYmxlQmFja2dyb3VuZFwiLFxuICAgICAgICBlbmQ6IFwiZW5kXCIsXG4gICAgICAgIGV4cG9uZW50OiBcImV4cG9uZW50XCIsXG4gICAgICAgIGV4dGVybmFscmVzb3VyY2VzcmVxdWlyZWQ6IFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFxuICAgICAgICBmaWxsOiBcImZpbGxcIixcbiAgICAgICAgZmlsbG9wYWNpdHk6IFwiZmlsbE9wYWNpdHlcIixcbiAgICAgICAgXCJmaWxsLW9wYWNpdHlcIjogXCJmaWxsT3BhY2l0eVwiLFxuICAgICAgICBmaWxscnVsZTogXCJmaWxsUnVsZVwiLFxuICAgICAgICBcImZpbGwtcnVsZVwiOiBcImZpbGxSdWxlXCIsXG4gICAgICAgIGZpbHRlcjogXCJmaWx0ZXJcIixcbiAgICAgICAgZmlsdGVycmVzOiBcImZpbHRlclJlc1wiLFxuICAgICAgICBmaWx0ZXJ1bml0czogXCJmaWx0ZXJVbml0c1wiLFxuICAgICAgICBmbG9vZG9wYWNpdHk6IFwiZmxvb2RPcGFjaXR5XCIsXG4gICAgICAgIFwiZmxvb2Qtb3BhY2l0eVwiOiBcImZsb29kT3BhY2l0eVwiLFxuICAgICAgICBmbG9vZGNvbG9yOiBcImZsb29kQ29sb3JcIixcbiAgICAgICAgXCJmbG9vZC1jb2xvclwiOiBcImZsb29kQ29sb3JcIixcbiAgICAgICAgZm9jdXNhYmxlOiBcImZvY3VzYWJsZVwiLFxuICAgICAgICBmb250ZmFtaWx5OiBcImZvbnRGYW1pbHlcIixcbiAgICAgICAgXCJmb250LWZhbWlseVwiOiBcImZvbnRGYW1pbHlcIixcbiAgICAgICAgZm9udHNpemU6IFwiZm9udFNpemVcIixcbiAgICAgICAgXCJmb250LXNpemVcIjogXCJmb250U2l6ZVwiLFxuICAgICAgICBmb250c2l6ZWFkanVzdDogXCJmb250U2l6ZUFkanVzdFwiLFxuICAgICAgICBcImZvbnQtc2l6ZS1hZGp1c3RcIjogXCJmb250U2l6ZUFkanVzdFwiLFxuICAgICAgICBmb250c3RyZXRjaDogXCJmb250U3RyZXRjaFwiLFxuICAgICAgICBcImZvbnQtc3RyZXRjaFwiOiBcImZvbnRTdHJldGNoXCIsXG4gICAgICAgIGZvbnRzdHlsZTogXCJmb250U3R5bGVcIixcbiAgICAgICAgXCJmb250LXN0eWxlXCI6IFwiZm9udFN0eWxlXCIsXG4gICAgICAgIGZvbnR2YXJpYW50OiBcImZvbnRWYXJpYW50XCIsXG4gICAgICAgIFwiZm9udC12YXJpYW50XCI6IFwiZm9udFZhcmlhbnRcIixcbiAgICAgICAgZm9udHdlaWdodDogXCJmb250V2VpZ2h0XCIsXG4gICAgICAgIFwiZm9udC13ZWlnaHRcIjogXCJmb250V2VpZ2h0XCIsXG4gICAgICAgIGZvcm1hdDogXCJmb3JtYXRcIixcbiAgICAgICAgZnJvbTogXCJmcm9tXCIsXG4gICAgICAgIGZ4OiBcImZ4XCIsXG4gICAgICAgIGZ5OiBcImZ5XCIsXG4gICAgICAgIGcxOiBcImcxXCIsXG4gICAgICAgIGcyOiBcImcyXCIsXG4gICAgICAgIGdseXBobmFtZTogXCJnbHlwaE5hbWVcIixcbiAgICAgICAgXCJnbHlwaC1uYW1lXCI6IFwiZ2x5cGhOYW1lXCIsXG4gICAgICAgIGdseXBob3JpZW50YXRpb25ob3Jpem9udGFsOiBcImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsXCIsXG4gICAgICAgIFwiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbFwiOiBcImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsXCIsXG4gICAgICAgIGdseXBob3JpZW50YXRpb252ZXJ0aWNhbDogXCJnbHlwaE9yaWVudGF0aW9uVmVydGljYWxcIixcbiAgICAgICAgXCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbFwiOiBcImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbFwiLFxuICAgICAgICBnbHlwaHJlZjogXCJnbHlwaFJlZlwiLFxuICAgICAgICBncmFkaWVudHRyYW5zZm9ybTogXCJncmFkaWVudFRyYW5zZm9ybVwiLFxuICAgICAgICBncmFkaWVudHVuaXRzOiBcImdyYWRpZW50VW5pdHNcIixcbiAgICAgICAgaGFuZ2luZzogXCJoYW5naW5nXCIsXG4gICAgICAgIGhvcml6YWR2eDogXCJob3JpekFkdlhcIixcbiAgICAgICAgXCJob3Jpei1hZHYteFwiOiBcImhvcml6QWR2WFwiLFxuICAgICAgICBob3Jpem9yaWdpbng6IFwiaG9yaXpPcmlnaW5YXCIsXG4gICAgICAgIFwiaG9yaXotb3JpZ2luLXhcIjogXCJob3Jpek9yaWdpblhcIixcbiAgICAgICAgaWRlb2dyYXBoaWM6IFwiaWRlb2dyYXBoaWNcIixcbiAgICAgICAgaW1hZ2VyZW5kZXJpbmc6IFwiaW1hZ2VSZW5kZXJpbmdcIixcbiAgICAgICAgXCJpbWFnZS1yZW5kZXJpbmdcIjogXCJpbWFnZVJlbmRlcmluZ1wiLFxuICAgICAgICBpbjI6IFwiaW4yXCIsXG4gICAgICAgIGluOiBcImluXCIsXG4gICAgICAgIGlubGlzdDogXCJpbmxpc3RcIixcbiAgICAgICAgaW50ZXJjZXB0OiBcImludGVyY2VwdFwiLFxuICAgICAgICBrMTogXCJrMVwiLFxuICAgICAgICBrMjogXCJrMlwiLFxuICAgICAgICBrMzogXCJrM1wiLFxuICAgICAgICBrNDogXCJrNFwiLFxuICAgICAgICBrOiBcImtcIixcbiAgICAgICAga2VybmVsbWF0cml4OiBcImtlcm5lbE1hdHJpeFwiLFxuICAgICAgICBrZXJuZWx1bml0bGVuZ3RoOiBcImtlcm5lbFVuaXRMZW5ndGhcIixcbiAgICAgICAga2VybmluZzogXCJrZXJuaW5nXCIsXG4gICAgICAgIGtleXBvaW50czogXCJrZXlQb2ludHNcIixcbiAgICAgICAga2V5c3BsaW5lczogXCJrZXlTcGxpbmVzXCIsXG4gICAgICAgIGtleXRpbWVzOiBcImtleVRpbWVzXCIsXG4gICAgICAgIGxlbmd0aGFkanVzdDogXCJsZW5ndGhBZGp1c3RcIixcbiAgICAgICAgbGV0dGVyc3BhY2luZzogXCJsZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgIFwibGV0dGVyLXNwYWNpbmdcIjogXCJsZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgIGxpZ2h0aW5nY29sb3I6IFwibGlnaHRpbmdDb2xvclwiLFxuICAgICAgICBcImxpZ2h0aW5nLWNvbG9yXCI6IFwibGlnaHRpbmdDb2xvclwiLFxuICAgICAgICBsaW1pdGluZ2NvbmVhbmdsZTogXCJsaW1pdGluZ0NvbmVBbmdsZVwiLFxuICAgICAgICBsb2NhbDogXCJsb2NhbFwiLFxuICAgICAgICBtYXJrZXJlbmQ6IFwibWFya2VyRW5kXCIsXG4gICAgICAgIFwibWFya2VyLWVuZFwiOiBcIm1hcmtlckVuZFwiLFxuICAgICAgICBtYXJrZXJoZWlnaHQ6IFwibWFya2VySGVpZ2h0XCIsXG4gICAgICAgIG1hcmtlcm1pZDogXCJtYXJrZXJNaWRcIixcbiAgICAgICAgXCJtYXJrZXItbWlkXCI6IFwibWFya2VyTWlkXCIsXG4gICAgICAgIG1hcmtlcnN0YXJ0OiBcIm1hcmtlclN0YXJ0XCIsXG4gICAgICAgIFwibWFya2VyLXN0YXJ0XCI6IFwibWFya2VyU3RhcnRcIixcbiAgICAgICAgbWFya2VydW5pdHM6IFwibWFya2VyVW5pdHNcIixcbiAgICAgICAgbWFya2Vyd2lkdGg6IFwibWFya2VyV2lkdGhcIixcbiAgICAgICAgbWFzazogXCJtYXNrXCIsXG4gICAgICAgIG1hc2tjb250ZW50dW5pdHM6IFwibWFza0NvbnRlbnRVbml0c1wiLFxuICAgICAgICBtYXNrdW5pdHM6IFwibWFza1VuaXRzXCIsXG4gICAgICAgIG1hdGhlbWF0aWNhbDogXCJtYXRoZW1hdGljYWxcIixcbiAgICAgICAgbW9kZTogXCJtb2RlXCIsXG4gICAgICAgIG51bW9jdGF2ZXM6IFwibnVtT2N0YXZlc1wiLFxuICAgICAgICBvZmZzZXQ6IFwib2Zmc2V0XCIsXG4gICAgICAgIG9wYWNpdHk6IFwib3BhY2l0eVwiLFxuICAgICAgICBvcGVyYXRvcjogXCJvcGVyYXRvclwiLFxuICAgICAgICBvcmRlcjogXCJvcmRlclwiLFxuICAgICAgICBvcmllbnQ6IFwib3JpZW50XCIsXG4gICAgICAgIG9yaWVudGF0aW9uOiBcIm9yaWVudGF0aW9uXCIsXG4gICAgICAgIG9yaWdpbjogXCJvcmlnaW5cIixcbiAgICAgICAgb3ZlcmZsb3c6IFwib3ZlcmZsb3dcIixcbiAgICAgICAgb3ZlcmxpbmVwb3NpdGlvbjogXCJvdmVybGluZVBvc2l0aW9uXCIsXG4gICAgICAgIFwib3ZlcmxpbmUtcG9zaXRpb25cIjogXCJvdmVybGluZVBvc2l0aW9uXCIsXG4gICAgICAgIG92ZXJsaW5ldGhpY2tuZXNzOiBcIm92ZXJsaW5lVGhpY2tuZXNzXCIsXG4gICAgICAgIFwib3ZlcmxpbmUtdGhpY2tuZXNzXCI6IFwib3ZlcmxpbmVUaGlja25lc3NcIixcbiAgICAgICAgcGFpbnRvcmRlcjogXCJwYWludE9yZGVyXCIsXG4gICAgICAgIFwicGFpbnQtb3JkZXJcIjogXCJwYWludE9yZGVyXCIsXG4gICAgICAgIHBhbm9zZTE6IFwicGFub3NlMVwiLFxuICAgICAgICBcInBhbm9zZS0xXCI6IFwicGFub3NlMVwiLFxuICAgICAgICBwYXRobGVuZ3RoOiBcInBhdGhMZW5ndGhcIixcbiAgICAgICAgcGF0dGVybmNvbnRlbnR1bml0czogXCJwYXR0ZXJuQ29udGVudFVuaXRzXCIsXG4gICAgICAgIHBhdHRlcm50cmFuc2Zvcm06IFwicGF0dGVyblRyYW5zZm9ybVwiLFxuICAgICAgICBwYXR0ZXJudW5pdHM6IFwicGF0dGVyblVuaXRzXCIsXG4gICAgICAgIHBvaW50ZXJldmVudHM6IFwicG9pbnRlckV2ZW50c1wiLFxuICAgICAgICBcInBvaW50ZXItZXZlbnRzXCI6IFwicG9pbnRlckV2ZW50c1wiLFxuICAgICAgICBwb2ludHM6IFwicG9pbnRzXCIsXG4gICAgICAgIHBvaW50c2F0eDogXCJwb2ludHNBdFhcIixcbiAgICAgICAgcG9pbnRzYXR5OiBcInBvaW50c0F0WVwiLFxuICAgICAgICBwb2ludHNhdHo6IFwicG9pbnRzQXRaXCIsXG4gICAgICAgIHBvcG92ZXI6IFwicG9wb3ZlclwiLFxuICAgICAgICBwb3BvdmVydGFyZ2V0OiBcInBvcG92ZXJUYXJnZXRcIixcbiAgICAgICAgcG9wb3ZlcnRhcmdldGFjdGlvbjogXCJwb3BvdmVyVGFyZ2V0QWN0aW9uXCIsXG4gICAgICAgIHByZWZpeDogXCJwcmVmaXhcIixcbiAgICAgICAgcHJlc2VydmVhbHBoYTogXCJwcmVzZXJ2ZUFscGhhXCIsXG4gICAgICAgIHByZXNlcnZlYXNwZWN0cmF0aW86IFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLFxuICAgICAgICBwcmltaXRpdmV1bml0czogXCJwcmltaXRpdmVVbml0c1wiLFxuICAgICAgICBwcm9wZXJ0eTogXCJwcm9wZXJ0eVwiLFxuICAgICAgICByOiBcInJcIixcbiAgICAgICAgcmFkaXVzOiBcInJhZGl1c1wiLFxuICAgICAgICByZWZ4OiBcInJlZlhcIixcbiAgICAgICAgcmVmeTogXCJyZWZZXCIsXG4gICAgICAgIHJlbmRlcmluZ2ludGVudDogXCJyZW5kZXJpbmdJbnRlbnRcIixcbiAgICAgICAgXCJyZW5kZXJpbmctaW50ZW50XCI6IFwicmVuZGVyaW5nSW50ZW50XCIsXG4gICAgICAgIHJlcGVhdGNvdW50OiBcInJlcGVhdENvdW50XCIsXG4gICAgICAgIHJlcGVhdGR1cjogXCJyZXBlYXREdXJcIixcbiAgICAgICAgcmVxdWlyZWRleHRlbnNpb25zOiBcInJlcXVpcmVkRXh0ZW5zaW9uc1wiLFxuICAgICAgICByZXF1aXJlZGZlYXR1cmVzOiBcInJlcXVpcmVkRmVhdHVyZXNcIixcbiAgICAgICAgcmVzb3VyY2U6IFwicmVzb3VyY2VcIixcbiAgICAgICAgcmVzdGFydDogXCJyZXN0YXJ0XCIsXG4gICAgICAgIHJlc3VsdDogXCJyZXN1bHRcIixcbiAgICAgICAgcmVzdWx0czogXCJyZXN1bHRzXCIsXG4gICAgICAgIHJvdGF0ZTogXCJyb3RhdGVcIixcbiAgICAgICAgcng6IFwicnhcIixcbiAgICAgICAgcnk6IFwicnlcIixcbiAgICAgICAgc2NhbGU6IFwic2NhbGVcIixcbiAgICAgICAgc2VjdXJpdHk6IFwic2VjdXJpdHlcIixcbiAgICAgICAgc2VlZDogXCJzZWVkXCIsXG4gICAgICAgIHNoYXBlcmVuZGVyaW5nOiBcInNoYXBlUmVuZGVyaW5nXCIsXG4gICAgICAgIFwic2hhcGUtcmVuZGVyaW5nXCI6IFwic2hhcGVSZW5kZXJpbmdcIixcbiAgICAgICAgc2xvcGU6IFwic2xvcGVcIixcbiAgICAgICAgc3BhY2luZzogXCJzcGFjaW5nXCIsXG4gICAgICAgIHNwZWN1bGFyY29uc3RhbnQ6IFwic3BlY3VsYXJDb25zdGFudFwiLFxuICAgICAgICBzcGVjdWxhcmV4cG9uZW50OiBcInNwZWN1bGFyRXhwb25lbnRcIixcbiAgICAgICAgc3BlZWQ6IFwic3BlZWRcIixcbiAgICAgICAgc3ByZWFkbWV0aG9kOiBcInNwcmVhZE1ldGhvZFwiLFxuICAgICAgICBzdGFydG9mZnNldDogXCJzdGFydE9mZnNldFwiLFxuICAgICAgICBzdGRkZXZpYXRpb246IFwic3RkRGV2aWF0aW9uXCIsXG4gICAgICAgIHN0ZW1oOiBcInN0ZW1oXCIsXG4gICAgICAgIHN0ZW12OiBcInN0ZW12XCIsXG4gICAgICAgIHN0aXRjaHRpbGVzOiBcInN0aXRjaFRpbGVzXCIsXG4gICAgICAgIHN0b3Bjb2xvcjogXCJzdG9wQ29sb3JcIixcbiAgICAgICAgXCJzdG9wLWNvbG9yXCI6IFwic3RvcENvbG9yXCIsXG4gICAgICAgIHN0b3BvcGFjaXR5OiBcInN0b3BPcGFjaXR5XCIsXG4gICAgICAgIFwic3RvcC1vcGFjaXR5XCI6IFwic3RvcE9wYWNpdHlcIixcbiAgICAgICAgc3RyaWtldGhyb3VnaHBvc2l0aW9uOiBcInN0cmlrZXRocm91Z2hQb3NpdGlvblwiLFxuICAgICAgICBcInN0cmlrZXRocm91Z2gtcG9zaXRpb25cIjogXCJzdHJpa2V0aHJvdWdoUG9zaXRpb25cIixcbiAgICAgICAgc3RyaWtldGhyb3VnaHRoaWNrbmVzczogXCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzXCIsXG4gICAgICAgIFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIjogXCJzdHJpa2V0aHJvdWdoVGhpY2tuZXNzXCIsXG4gICAgICAgIHN0cmluZzogXCJzdHJpbmdcIixcbiAgICAgICAgc3Ryb2tlOiBcInN0cm9rZVwiLFxuICAgICAgICBzdHJva2VkYXNoYXJyYXk6IFwic3Ryb2tlRGFzaGFycmF5XCIsXG4gICAgICAgIFwic3Ryb2tlLWRhc2hhcnJheVwiOiBcInN0cm9rZURhc2hhcnJheVwiLFxuICAgICAgICBzdHJva2VkYXNob2Zmc2V0OiBcInN0cm9rZURhc2hvZmZzZXRcIixcbiAgICAgICAgXCJzdHJva2UtZGFzaG9mZnNldFwiOiBcInN0cm9rZURhc2hvZmZzZXRcIixcbiAgICAgICAgc3Ryb2tlbGluZWNhcDogXCJzdHJva2VMaW5lY2FwXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJzdHJva2VMaW5lY2FwXCIsXG4gICAgICAgIHN0cm9rZWxpbmVqb2luOiBcInN0cm9rZUxpbmVqb2luXCIsXG4gICAgICAgIFwic3Ryb2tlLWxpbmVqb2luXCI6IFwic3Ryb2tlTGluZWpvaW5cIixcbiAgICAgICAgc3Ryb2tlbWl0ZXJsaW1pdDogXCJzdHJva2VNaXRlcmxpbWl0XCIsXG4gICAgICAgIFwic3Ryb2tlLW1pdGVybGltaXRcIjogXCJzdHJva2VNaXRlcmxpbWl0XCIsXG4gICAgICAgIHN0cm9rZXdpZHRoOiBcInN0cm9rZVdpZHRoXCIsXG4gICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwic3Ryb2tlV2lkdGhcIixcbiAgICAgICAgc3Ryb2tlb3BhY2l0eTogXCJzdHJva2VPcGFjaXR5XCIsXG4gICAgICAgIFwic3Ryb2tlLW9wYWNpdHlcIjogXCJzdHJva2VPcGFjaXR5XCIsXG4gICAgICAgIHN1cHByZXNzY29udGVudGVkaXRhYmxld2FybmluZzogXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIixcbiAgICAgICAgc3VwcHJlc3NoeWRyYXRpb253YXJuaW5nOiBcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiLFxuICAgICAgICBzdXJmYWNlc2NhbGU6IFwic3VyZmFjZVNjYWxlXCIsXG4gICAgICAgIHN5c3RlbWxhbmd1YWdlOiBcInN5c3RlbUxhbmd1YWdlXCIsXG4gICAgICAgIHRhYmxldmFsdWVzOiBcInRhYmxlVmFsdWVzXCIsXG4gICAgICAgIHRhcmdldHg6IFwidGFyZ2V0WFwiLFxuICAgICAgICB0YXJnZXR5OiBcInRhcmdldFlcIixcbiAgICAgICAgdGV4dGFuY2hvcjogXCJ0ZXh0QW5jaG9yXCIsXG4gICAgICAgIFwidGV4dC1hbmNob3JcIjogXCJ0ZXh0QW5jaG9yXCIsXG4gICAgICAgIHRleHRkZWNvcmF0aW9uOiBcInRleHREZWNvcmF0aW9uXCIsXG4gICAgICAgIFwidGV4dC1kZWNvcmF0aW9uXCI6IFwidGV4dERlY29yYXRpb25cIixcbiAgICAgICAgdGV4dGxlbmd0aDogXCJ0ZXh0TGVuZ3RoXCIsXG4gICAgICAgIHRleHRyZW5kZXJpbmc6IFwidGV4dFJlbmRlcmluZ1wiLFxuICAgICAgICBcInRleHQtcmVuZGVyaW5nXCI6IFwidGV4dFJlbmRlcmluZ1wiLFxuICAgICAgICB0bzogXCJ0b1wiLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybW9yaWdpbjogXCJ0cmFuc2Zvcm1PcmlnaW5cIixcbiAgICAgICAgXCJ0cmFuc2Zvcm0tb3JpZ2luXCI6IFwidHJhbnNmb3JtT3JpZ2luXCIsXG4gICAgICAgIHR5cGVvZjogXCJ0eXBlb2ZcIixcbiAgICAgICAgdTE6IFwidTFcIixcbiAgICAgICAgdTI6IFwidTJcIixcbiAgICAgICAgdW5kZXJsaW5lcG9zaXRpb246IFwidW5kZXJsaW5lUG9zaXRpb25cIixcbiAgICAgICAgXCJ1bmRlcmxpbmUtcG9zaXRpb25cIjogXCJ1bmRlcmxpbmVQb3NpdGlvblwiLFxuICAgICAgICB1bmRlcmxpbmV0aGlja25lc3M6IFwidW5kZXJsaW5lVGhpY2tuZXNzXCIsXG4gICAgICAgIFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiOiBcInVuZGVybGluZVRoaWNrbmVzc1wiLFxuICAgICAgICB1bmljb2RlOiBcInVuaWNvZGVcIixcbiAgICAgICAgdW5pY29kZWJpZGk6IFwidW5pY29kZUJpZGlcIixcbiAgICAgICAgXCJ1bmljb2RlLWJpZGlcIjogXCJ1bmljb2RlQmlkaVwiLFxuICAgICAgICB1bmljb2RlcmFuZ2U6IFwidW5pY29kZVJhbmdlXCIsXG4gICAgICAgIFwidW5pY29kZS1yYW5nZVwiOiBcInVuaWNvZGVSYW5nZVwiLFxuICAgICAgICB1bml0c3BlcmVtOiBcInVuaXRzUGVyRW1cIixcbiAgICAgICAgXCJ1bml0cy1wZXItZW1cIjogXCJ1bml0c1BlckVtXCIsXG4gICAgICAgIHVuc2VsZWN0YWJsZTogXCJ1bnNlbGVjdGFibGVcIixcbiAgICAgICAgdmFscGhhYmV0aWM6IFwidkFscGhhYmV0aWNcIixcbiAgICAgICAgXCJ2LWFscGhhYmV0aWNcIjogXCJ2QWxwaGFiZXRpY1wiLFxuICAgICAgICB2YWx1ZXM6IFwidmFsdWVzXCIsXG4gICAgICAgIHZlY3RvcmVmZmVjdDogXCJ2ZWN0b3JFZmZlY3RcIixcbiAgICAgICAgXCJ2ZWN0b3ItZWZmZWN0XCI6IFwidmVjdG9yRWZmZWN0XCIsXG4gICAgICAgIHZlcnNpb246IFwidmVyc2lvblwiLFxuICAgICAgICB2ZXJ0YWR2eTogXCJ2ZXJ0QWR2WVwiLFxuICAgICAgICBcInZlcnQtYWR2LXlcIjogXCJ2ZXJ0QWR2WVwiLFxuICAgICAgICB2ZXJ0b3JpZ2lueDogXCJ2ZXJ0T3JpZ2luWFwiLFxuICAgICAgICBcInZlcnQtb3JpZ2luLXhcIjogXCJ2ZXJ0T3JpZ2luWFwiLFxuICAgICAgICB2ZXJ0b3JpZ2lueTogXCJ2ZXJ0T3JpZ2luWVwiLFxuICAgICAgICBcInZlcnQtb3JpZ2luLXlcIjogXCJ2ZXJ0T3JpZ2luWVwiLFxuICAgICAgICB2aGFuZ2luZzogXCJ2SGFuZ2luZ1wiLFxuICAgICAgICBcInYtaGFuZ2luZ1wiOiBcInZIYW5naW5nXCIsXG4gICAgICAgIHZpZGVvZ3JhcGhpYzogXCJ2SWRlb2dyYXBoaWNcIixcbiAgICAgICAgXCJ2LWlkZW9ncmFwaGljXCI6IFwidklkZW9ncmFwaGljXCIsXG4gICAgICAgIHZpZXdib3g6IFwidmlld0JveFwiLFxuICAgICAgICB2aWV3dGFyZ2V0OiBcInZpZXdUYXJnZXRcIixcbiAgICAgICAgdmlzaWJpbGl0eTogXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgIHZtYXRoZW1hdGljYWw6IFwidk1hdGhlbWF0aWNhbFwiLFxuICAgICAgICBcInYtbWF0aGVtYXRpY2FsXCI6IFwidk1hdGhlbWF0aWNhbFwiLFxuICAgICAgICB2b2NhYjogXCJ2b2NhYlwiLFxuICAgICAgICB3aWR0aHM6IFwid2lkdGhzXCIsXG4gICAgICAgIHdvcmRzcGFjaW5nOiBcIndvcmRTcGFjaW5nXCIsXG4gICAgICAgIFwid29yZC1zcGFjaW5nXCI6IFwid29yZFNwYWNpbmdcIixcbiAgICAgICAgd3JpdGluZ21vZGU6IFwid3JpdGluZ01vZGVcIixcbiAgICAgICAgXCJ3cml0aW5nLW1vZGVcIjogXCJ3cml0aW5nTW9kZVwiLFxuICAgICAgICB4MTogXCJ4MVwiLFxuICAgICAgICB4MjogXCJ4MlwiLFxuICAgICAgICB4OiBcInhcIixcbiAgICAgICAgeGNoYW5uZWxzZWxlY3RvcjogXCJ4Q2hhbm5lbFNlbGVjdG9yXCIsXG4gICAgICAgIHhoZWlnaHQ6IFwieEhlaWdodFwiLFxuICAgICAgICBcIngtaGVpZ2h0XCI6IFwieEhlaWdodFwiLFxuICAgICAgICB4bGlua2FjdHVhdGU6IFwieGxpbmtBY3R1YXRlXCIsXG4gICAgICAgIFwieGxpbms6YWN0dWF0ZVwiOiBcInhsaW5rQWN0dWF0ZVwiLFxuICAgICAgICB4bGlua2FyY3JvbGU6IFwieGxpbmtBcmNyb2xlXCIsXG4gICAgICAgIFwieGxpbms6YXJjcm9sZVwiOiBcInhsaW5rQXJjcm9sZVwiLFxuICAgICAgICB4bGlua2hyZWY6IFwieGxpbmtIcmVmXCIsXG4gICAgICAgIFwieGxpbms6aHJlZlwiOiBcInhsaW5rSHJlZlwiLFxuICAgICAgICB4bGlua3JvbGU6IFwieGxpbmtSb2xlXCIsXG4gICAgICAgIFwieGxpbms6cm9sZVwiOiBcInhsaW5rUm9sZVwiLFxuICAgICAgICB4bGlua3Nob3c6IFwieGxpbmtTaG93XCIsXG4gICAgICAgIFwieGxpbms6c2hvd1wiOiBcInhsaW5rU2hvd1wiLFxuICAgICAgICB4bGlua3RpdGxlOiBcInhsaW5rVGl0bGVcIixcbiAgICAgICAgXCJ4bGluazp0aXRsZVwiOiBcInhsaW5rVGl0bGVcIixcbiAgICAgICAgeGxpbmt0eXBlOiBcInhsaW5rVHlwZVwiLFxuICAgICAgICBcInhsaW5rOnR5cGVcIjogXCJ4bGlua1R5cGVcIixcbiAgICAgICAgeG1sYmFzZTogXCJ4bWxCYXNlXCIsXG4gICAgICAgIFwieG1sOmJhc2VcIjogXCJ4bWxCYXNlXCIsXG4gICAgICAgIHhtbGxhbmc6IFwieG1sTGFuZ1wiLFxuICAgICAgICBcInhtbDpsYW5nXCI6IFwieG1sTGFuZ1wiLFxuICAgICAgICB4bWxuczogXCJ4bWxuc1wiLFxuICAgICAgICBcInhtbDpzcGFjZVwiOiBcInhtbFNwYWNlXCIsXG4gICAgICAgIHhtbG5zeGxpbms6IFwieG1sbnNYbGlua1wiLFxuICAgICAgICBcInhtbG5zOnhsaW5rXCI6IFwieG1sbnNYbGlua1wiLFxuICAgICAgICB4bWxzcGFjZTogXCJ4bWxTcGFjZVwiLFxuICAgICAgICB5MTogXCJ5MVwiLFxuICAgICAgICB5MjogXCJ5MlwiLFxuICAgICAgICB5OiBcInlcIixcbiAgICAgICAgeWNoYW5uZWxzZWxlY3RvcjogXCJ5Q2hhbm5lbFNlbGVjdG9yXCIsXG4gICAgICAgIHo6IFwielwiLFxuICAgICAgICB6b29tYW5kcGFuOiBcInpvb21BbmRQYW5cIlxuICAgICAgfSxcbiAgICAgIHdhcm5lZFByb3BlcnRpZXMgPSB7fSxcbiAgICAgIEVWRU5UX05BTUVfUkVHRVggPSAvXm9uLi8sXG4gICAgICBJTlZBTElEX0VWRU5UX05BTUVfUkVHRVggPSAvXm9uW15BLVpdLyxcbiAgICAgIHJBUklBID0gUmVnRXhwKFxuICAgICAgICBcIl4oYXJpYSktWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MF0qJFwiXG4gICAgICApLFxuICAgICAgckFSSUFDYW1lbCA9IFJlZ0V4cChcbiAgICAgICAgXCJeKGFyaWEpW0EtWl1bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFxcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQwXSokXCJcbiAgICAgICksXG4gICAgICBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS8sXG4gICAgICBtc1BhdHRlcm4kMSA9IC9eLW1zLS8sXG4gICAgICBoeXBoZW5QYXR0ZXJuID0gLy0oLikvZyxcbiAgICAgIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiA9IC87XFxzKiQvLFxuICAgICAgd2FybmVkU3R5bGVOYW1lcyA9IHt9LFxuICAgICAgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fSxcbiAgICAgIHdhcm5lZEZvck5hTlZhbHVlID0gITEsXG4gICAgICB3YXJuZWRGb3JJbmZpbml0eVZhbHVlID0gITEsXG4gICAgICBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vLFxuICAgICAgdXBwZXJjYXNlUGF0dGVybiA9IC8oW0EtWl0pL2csXG4gICAgICBtc1BhdHRlcm4gPSAvXm1zLS8sXG4gICAgICBpc0phdmFTY3JpcHRQcm90b2NvbCA9XG4gICAgICAgIC9eW1xcdTAwMDAtXFx1MDAxRiBdKmpbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qdltcXHJcXG5cXHRdKmFbXFxyXFxuXFx0XSpzW1xcclxcblxcdF0qY1tcXHJcXG5cXHRdKnJbXFxyXFxuXFx0XSppW1xcclxcblxcdF0qcFtcXHJcXG5cXHRdKnRbXFxyXFxuXFx0XSo6L2ksXG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzID1cbiAgICAgICAgUmVhY3RET00uX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLFxuICAgICAgTm90UGVuZGluZyA9IE9iamVjdC5mcmVlemUoe1xuICAgICAgICBwZW5kaW5nOiAhMSxcbiAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgbWV0aG9kOiBudWxsLFxuICAgICAgICBhY3Rpb246IG51bGxcbiAgICAgIH0pLFxuICAgICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RET01TaGFyZWRJbnRlcm5hbHMuZDtcbiAgICBSZWFjdERPTVNoYXJlZEludGVybmFscy5kID0ge1xuICAgICAgZjogcHJldmlvdXNEaXNwYXRjaGVyLmYsXG4gICAgICByOiBwcmV2aW91c0Rpc3BhdGNoZXIucixcbiAgICAgIEQ6IGZ1bmN0aW9uIChocmVmKSB7XG4gICAgICAgIHZhciByZXF1ZXN0ID0gY3VycmVudFJlcXVlc3QgPyBjdXJyZW50UmVxdWVzdCA6IG51bGw7XG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiYgaHJlZikge1xuICAgICAgICAgICAgaWYgKCFyZXN1bWFibGVTdGF0ZS5kbnNSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZikpIHtcbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuZG5zUmVzb3VyY2VzW2hyZWZdID0gRVhJU1RTO1xuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSA9IHJlbmRlclN0YXRlLmhlYWRlcnM7XG4gICAgICAgICAgICAgIHZhciBoZWFkZXIsIEpTQ29tcGlsZXJfdGVtcDtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX3RlbXAgPVxuICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUgJiYgMCA8IHJlc3VtYWJsZVN0YXRlLnJlbWFpbmluZ0NhcGFjaXR5KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wID1cbiAgICAgICAgICAgICAgICAgICgoaGVhZGVyID1cbiAgICAgICAgICAgICAgICAgICAgXCI8XCIgK1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGVIcmVmRm9yTGlua0hlYWRlclVSTENvbnRleHQoaHJlZikgK1xuICAgICAgICAgICAgICAgICAgICBcIj47IHJlbD1kbnMtcHJlZmV0Y2hcIiksXG4gICAgICAgICAgICAgICAgICAwIDw9IChyZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSAtPSBoZWFkZXIubGVuZ3RoICsgMikpO1xuICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXBcbiAgICAgICAgICAgICAgICA/ICgocmVuZGVyU3RhdGUucmVzZXRzLmRuc1tocmVmXSA9IEVYSVNUUyksXG4gICAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5wcmVjb25uZWN0cyAmJlxuICAgICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUucHJlY29ubmVjdHMgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5wcmVjb25uZWN0cyArPSBoZWFkZXIpKVxuICAgICAgICAgICAgICAgIDogKChoZWFkZXIgPSBbXSksXG4gICAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwoaGVhZGVyLCB7IGhyZWY6IGhyZWYsIHJlbDogXCJkbnMtcHJlZmV0Y2hcIiB9KSxcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWNvbm5lY3RzLmFkZChoZWFkZXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcmV2aW91c0Rpc3BhdGNoZXIuRChocmVmKTtcbiAgICAgIH0sXG4gICAgICBDOiBmdW5jdGlvbiAoaHJlZiwgY3Jvc3NPcmlnaW4pIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdCA/IGN1cnJlbnRSZXF1ZXN0IDogbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlO1xuICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJiBocmVmKSB7XG4gICAgICAgICAgICB2YXIgYnVja2V0ID1cbiAgICAgICAgICAgICAgXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gY3Jvc3NPcmlnaW5cbiAgICAgICAgICAgICAgICA/IFwiY3JlZGVudGlhbHNcIlxuICAgICAgICAgICAgICAgIDogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICA/IFwiYW5vbnltb3VzXCJcbiAgICAgICAgICAgICAgICAgIDogXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICBpZiAoIXJlc3VtYWJsZVN0YXRlLmNvbm5lY3RSZXNvdXJjZXNbYnVja2V0XS5oYXNPd25Qcm9wZXJ0eShocmVmKSkge1xuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5jb25uZWN0UmVzb3VyY2VzW2J1Y2tldF1baHJlZl0gPSBFWElTVFM7XG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlID0gcmVuZGVyU3RhdGUuaGVhZGVycztcbiAgICAgICAgICAgICAgdmFyIGhlYWRlciwgSlNDb21waWxlcl90ZW1wO1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSAmJiAwIDwgcmVzdW1hYmxlU3RhdGUucmVtYWluaW5nQ2FwYWNpdHkpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICAgICAgICAgICAgICBcIjxcIiArXG4gICAgICAgICAgICAgICAgICBlc2NhcGVIcmVmRm9yTGlua0hlYWRlclVSTENvbnRleHQoaHJlZikgK1xuICAgICAgICAgICAgICAgICAgXCI+OyByZWw9cHJlY29ubmVjdFwiO1xuICAgICAgICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgY3Jvc3NPcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkQ3Jvc3NPcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVTdHJpbmdGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgXCJjcm9zc09yaWdpblwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAgKz1cbiAgICAgICAgICAgICAgICAgICAgJzsgY3Jvc3NvcmlnaW49XCInICsgZXNjYXBlZENyb3NzT3JpZ2luICsgJ1wiJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wID1cbiAgICAgICAgICAgICAgICAgICgoaGVhZGVyID0gSlNDb21waWxlcl90ZW1wKSxcbiAgICAgICAgICAgICAgICAgIDAgPD0gKHJlc3VtYWJsZVN0YXRlLnJlbWFpbmluZ0NhcGFjaXR5IC09IGhlYWRlci5sZW5ndGggKyAyKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wXG4gICAgICAgICAgICAgICAgPyAoKHJlbmRlclN0YXRlLnJlc2V0cy5jb25uZWN0W2J1Y2tldF1baHJlZl0gPSBFWElTVFMpLFxuICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUucHJlY29ubmVjdHMgJiZcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLnByZWNvbm5lY3RzICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUucHJlY29ubmVjdHMgKz0gaGVhZGVyKSlcbiAgICAgICAgICAgICAgICA6ICgoYnVja2V0ID0gW10pLFxuICAgICAgICAgICAgICAgICAgcHVzaExpbmtJbXBsKGJ1Y2tldCwge1xuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlY29ubmVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW5cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUucHJlY29ubmVjdHMuYWRkKGJ1Y2tldCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5xdWV1ZUZsdXNoKHJlcXVlc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHByZXZpb3VzRGlzcGF0Y2hlci5DKGhyZWYsIGNyb3NzT3JpZ2luKTtcbiAgICAgIH0sXG4gICAgICBMOiBmdW5jdGlvbiAoaHJlZiwgYXMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdCA/IGN1cnJlbnRSZXF1ZXN0IDogbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlO1xuICAgICAgICAgIGlmIChhcyAmJiBocmVmKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGFzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgaW1hZ2VTcmNTZXQgPSBvcHRpb25zLmltYWdlU3JjU2V0O1xuICAgICAgICAgICAgICAgICAgdmFyIGltYWdlU2l6ZXMgPSBvcHRpb25zLmltYWdlU2l6ZXM7XG4gICAgICAgICAgICAgICAgICB2YXIgZmV0Y2hQcmlvcml0eSA9IG9wdGlvbnMuZmV0Y2hQcmlvcml0eTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IGltYWdlU3JjU2V0XG4gICAgICAgICAgICAgICAgICA/IGltYWdlU3JjU2V0ICsgXCJcXG5cIiArIChpbWFnZVNpemVzIHx8IFwiXCIpXG4gICAgICAgICAgICAgICAgICA6IGhyZWY7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VtYWJsZVN0YXRlLmltYWdlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGtleSkpIHJldHVybjtcbiAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5pbWFnZVJlc291cmNlc1trZXldID0gUFJFTE9BRF9OT19DUkVEUztcbiAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSA9IHJlbmRlclN0YXRlLmhlYWRlcnM7XG4gICAgICAgICAgICAgICAgdmFyIGhlYWRlcjtcbiAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSAmJlxuICAgICAgICAgICAgICAgIDAgPCByZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSAmJlxuICAgICAgICAgICAgICAgIFwiaGlnaFwiID09PSBmZXRjaFByaW9yaXR5ICYmXG4gICAgICAgICAgICAgICAgKChoZWFkZXIgPSBnZXRQcmVsb2FkQXNIZWFkZXIoaHJlZiwgYXMsIG9wdGlvbnMpKSxcbiAgICAgICAgICAgICAgICAwIDw9IChyZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSAtPSBoZWFkZXIubGVuZ3RoICsgMikpXG4gICAgICAgICAgICAgICAgICA/ICgocmVuZGVyU3RhdGUucmVzZXRzLmltYWdlW2tleV0gPSBQUkVMT0FEX05PX0NSRURTKSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzICs9IGhlYWRlcikpXG4gICAgICAgICAgICAgICAgICA6ICgocmVzdW1hYmxlU3RhdGUgPSBbXSksXG4gICAgICAgICAgICAgICAgICAgIHB1c2hMaW5rSW1wbChcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY6IGltYWdlU3JjU2V0ID8gdm9pZCAwIDogaHJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IGFzXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXCJoaWdoXCIgPT09IGZldGNoUHJpb3JpdHlcbiAgICAgICAgICAgICAgICAgICAgICA/IHJlbmRlclN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzLmFkZChyZXN1bWFibGVTdGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICA6IChyZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuYWRkKHJlc3VtYWJsZVN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWxvYWRzLmltYWdlcy5zZXQoa2V5LCByZXN1bWFibGVTdGF0ZSkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQgPSBbXTtcbiAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldCxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbih7IHJlbDogXCJwcmVsb2FkXCIsIGhyZWY6IGhyZWYsIGFzOiBhcyB9LCBvcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl0gPVxuICAgICAgICAgICAgICAgICAgIW9wdGlvbnMgfHxcbiAgICAgICAgICAgICAgICAgIChcInN0cmluZ1wiICE9PSB0eXBlb2Ygb3B0aW9ucy5jcm9zc09yaWdpbiAmJlxuICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkpXG4gICAgICAgICAgICAgICAgICAgID8gUFJFTE9BRF9OT19DUkVEU1xuICAgICAgICAgICAgICAgICAgICA6IFtvcHRpb25zLmNyb3NzT3JpZ2luLCBvcHRpb25zLmludGVncml0eV07XG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUucHJlbG9hZHMuc3R5bGVzaGVldHMuc2V0KGhyZWYsIGltYWdlU3JjU2V0KTtcbiAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuYWRkKGltYWdlU3JjU2V0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcInNjcmlwdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS5zY3JpcHRSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZikpIHJldHVybjtcbiAgICAgICAgICAgICAgICBpbWFnZVNyY1NldCA9IFtdO1xuICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWxvYWRzLnNjcmlwdHMuc2V0KGhyZWYsIGltYWdlU3JjU2V0KTtcbiAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuYWRkKGltYWdlU3JjU2V0KTtcbiAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldCxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbih7IHJlbDogXCJwcmVsb2FkXCIsIGhyZWY6IGhyZWYsIGFzOiBhcyB9LCBvcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzW2hyZWZdID1cbiAgICAgICAgICAgICAgICAgICFvcHRpb25zIHx8XG4gICAgICAgICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuY3Jvc3NPcmlnaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5KVxuICAgICAgICAgICAgICAgICAgICA/IFBSRUxPQURfTk9fQ1JFRFNcbiAgICAgICAgICAgICAgICAgICAgOiBbb3B0aW9ucy5jcm9zc09yaWdpbiwgb3B0aW9ucy5pbnRlZ3JpdHldO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS51bmtub3duUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGFzKSkge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoKGltYWdlU3JjU2V0ID0gcmVzdW1hYmxlU3RhdGUudW5rbm93blJlc291cmNlc1thc10pLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldC5oYXNPd25Qcm9wZXJ0eShocmVmKSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgKGltYWdlU3JjU2V0ID0ge30pLFxuICAgICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUudW5rbm93blJlc291cmNlc1thc10gPSBpbWFnZVNyY1NldCk7XG4gICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXRbaHJlZl0gPSBQUkVMT0FEX05PX0NSRURTO1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZSA9IHJlbmRlclN0YXRlLmhlYWRlcnMpICYmXG4gICAgICAgICAgICAgICAgICAwIDwgcmVzdW1hYmxlU3RhdGUucmVtYWluaW5nQ2FwYWNpdHkgJiZcbiAgICAgICAgICAgICAgICAgIFwiZm9udFwiID09PSBhcyAmJlxuICAgICAgICAgICAgICAgICAgKChrZXkgPSBnZXRQcmVsb2FkQXNIZWFkZXIoaHJlZiwgYXMsIG9wdGlvbnMpKSxcbiAgICAgICAgICAgICAgICAgIDAgPD0gKHJlc3VtYWJsZVN0YXRlLnJlbWFpbmluZ0NhcGFjaXR5IC09IGtleS5sZW5ndGggKyAyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUucmVzZXRzLmZvbnRbaHJlZl0gPSBQUkVMT0FEX05PX0NSRURTKSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuZm9udFByZWxvYWRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLmZvbnRQcmVsb2FkcyArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUuZm9udFByZWxvYWRzICs9IGtleSk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgICAgKChyZXN1bWFibGVTdGF0ZSA9IFtdKSxcbiAgICAgICAgICAgICAgICAgICAgKGhyZWYgPSBhc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgeyByZWw6IFwicHJlbG9hZFwiLCBocmVmOiBocmVmLCBhczogYXMgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwocmVzdW1hYmxlU3RhdGUsIGhyZWYpLFxuICAgICAgICAgICAgICAgICAgICBhcylcbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZm9udFwiOlxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLmZvbnRQcmVsb2Fkcy5hZGQocmVzdW1hYmxlU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLmJ1bGtQcmVsb2Fkcy5hZGQocmVzdW1hYmxlU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5xdWV1ZUZsdXNoKHJlcXVlc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHByZXZpb3VzRGlzcGF0Y2hlci5MKGhyZWYsIGFzLCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICBtOiBmdW5jdGlvbiAoaHJlZiwgb3B0aW9ucykge1xuICAgICAgICB2YXIgcmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0ID8gY3VycmVudFJlcXVlc3QgOiBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgaWYgKGhyZWYpIHtcbiAgICAgICAgICAgIHZhciBhcyA9XG4gICAgICAgICAgICAgIG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXMgPyBvcHRpb25zLmFzIDogXCJzY3JpcHRcIjtcbiAgICAgICAgICAgIHN3aXRjaCAoYXMpIHtcbiAgICAgICAgICAgICAgY2FzZSBcInNjcmlwdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZikpXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgYXMgPSBbXTtcbiAgICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXNbaHJlZl0gPVxuICAgICAgICAgICAgICAgICAgIW9wdGlvbnMgfHxcbiAgICAgICAgICAgICAgICAgIChcInN0cmluZ1wiICE9PSB0eXBlb2Ygb3B0aW9ucy5jcm9zc09yaWdpbiAmJlxuICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkpXG4gICAgICAgICAgICAgICAgICAgID8gUFJFTE9BRF9OT19DUkVEU1xuICAgICAgICAgICAgICAgICAgICA6IFtvcHRpb25zLmNyb3NzT3JpZ2luLCBvcHRpb25zLmludGVncml0eV07XG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUucHJlbG9hZHMubW9kdWxlU2NyaXB0cy5zZXQoaHJlZiwgYXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS5tb2R1bGVVbmtub3duUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGFzKSkge1xuICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlcyA9IHJlc3VtYWJsZVN0YXRlLnVua25vd25SZXNvdXJjZXNbYXNdO1xuICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShocmVmKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgKHJlc291cmNlcyA9IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLm1vZHVsZVVua25vd25SZXNvdXJjZXNbYXNdID0gcmVzb3VyY2VzKTtcbiAgICAgICAgICAgICAgICBhcyA9IFtdO1xuICAgICAgICAgICAgICAgIHJlc291cmNlc1tocmVmXSA9IFBSRUxPQURfTk9fQ1JFRFM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgIGFzLFxuICAgICAgICAgICAgICBhc3NpZ24oeyByZWw6IFwibW9kdWxlcHJlbG9hZFwiLCBocmVmOiBocmVmIH0sIG9wdGlvbnMpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuYnVsa1ByZWxvYWRzLmFkZChhcyk7XG4gICAgICAgICAgICBlbnF1ZXVlRmx1c2gocmVxdWVzdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgcHJldmlvdXNEaXNwYXRjaGVyLm0oaHJlZiwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgWDogZnVuY3Rpb24gKHNyYywgb3B0aW9ucykge1xuICAgICAgICB2YXIgcmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0ID8gY3VycmVudFJlcXVlc3QgOiBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgaWYgKHNyYykge1xuICAgICAgICAgICAgdmFyIHJlc291cmNlU3RhdGUgPSByZXN1bWFibGVTdGF0ZS5zY3JpcHRSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoXG4gICAgICAgICAgICAgIHNyY1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA/IHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlc1tzcmNdXG4gICAgICAgICAgICAgIDogdm9pZCAwO1xuICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSAhPT0gRVhJU1RTICYmXG4gICAgICAgICAgICAgICgocmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzW3NyY10gPSBFWElTVFMpLFxuICAgICAgICAgICAgICAob3B0aW9ucyA9IGFzc2lnbih7IHNyYzogc3JjLCBhc3luYzogITAgfSwgb3B0aW9ucykpLFxuICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlICYmXG4gICAgICAgICAgICAgICAgKDIgPT09IHJlc291cmNlU3RhdGUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICBhZG9wdFByZWxvYWRDcmVkZW50aWFscyhvcHRpb25zLCByZXNvdXJjZVN0YXRlKSxcbiAgICAgICAgICAgICAgICAoc3JjID0gcmVuZGVyU3RhdGUucHJlbG9hZHMuc2NyaXB0cy5nZXQoc3JjKSkpICYmXG4gICAgICAgICAgICAgICAgKHNyYy5sZW5ndGggPSAwKSxcbiAgICAgICAgICAgICAgKHNyYyA9IFtdKSxcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuc2NyaXB0cy5hZGQoc3JjKSxcbiAgICAgICAgICAgICAgcHVzaFNjcmlwdEltcGwoc3JjLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgZW5xdWV1ZUZsdXNoKHJlcXVlc3QpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcmV2aW91c0Rpc3BhdGNoZXIuWChzcmMsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIFM6IGZ1bmN0aW9uIChocmVmLCBwcmVjZWRlbmNlLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciByZXF1ZXN0ID0gY3VycmVudFJlcXVlc3QgPyBjdXJyZW50UmVxdWVzdCA6IG51bGw7XG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgICAgICBpZiAoaHJlZikge1xuICAgICAgICAgICAgcHJlY2VkZW5jZSA9IHByZWNlZGVuY2UgfHwgXCJkZWZhdWx0XCI7XG4gICAgICAgICAgICB2YXIgc3R5bGVRdWV1ZSA9IHJlbmRlclN0YXRlLnN0eWxlcy5nZXQocHJlY2VkZW5jZSksXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUgPSByZXN1bWFibGVTdGF0ZS5zdHlsZVJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShocmVmKVxuICAgICAgICAgICAgICAgID8gcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl1cbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIHJlc291cmNlU3RhdGUgIT09IEVYSVNUUyAmJlxuICAgICAgICAgICAgICAoKHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzW2hyZWZdID0gRVhJU1RTKSxcbiAgICAgICAgICAgICAgc3R5bGVRdWV1ZSB8fFxuICAgICAgICAgICAgICAgICgoc3R5bGVRdWV1ZSA9IHtcbiAgICAgICAgICAgICAgICAgIHByZWNlZGVuY2U6IGVzY2FwZVRleHRGb3JCcm93c2VyKHByZWNlZGVuY2UpLFxuICAgICAgICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgaHJlZnM6IFtdLFxuICAgICAgICAgICAgICAgICAgc2hlZXRzOiBuZXcgTWFwKClcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5zdHlsZXMuc2V0KHByZWNlZGVuY2UsIHN0eWxlUXVldWUpKSxcbiAgICAgICAgICAgICAgKHByZWNlZGVuY2UgPSB7XG4gICAgICAgICAgICAgICAgc3RhdGU6IFBFTkRJTkckMSxcbiAgICAgICAgICAgICAgICBwcm9wczogYXNzaWduKFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZWw6IFwic3R5bGVzaGVldFwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBcImRhdGEtcHJlY2VkZW5jZVwiOiBwcmVjZWRlbmNlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUgJiZcbiAgICAgICAgICAgICAgICAoMiA9PT0gcmVzb3VyY2VTdGF0ZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGFkb3B0UHJlbG9hZENyZWRlbnRpYWxzKHByZWNlZGVuY2UucHJvcHMsIHJlc291cmNlU3RhdGUpLFxuICAgICAgICAgICAgICAgIChyZW5kZXJTdGF0ZSA9IHJlbmRlclN0YXRlLnByZWxvYWRzLnN0eWxlc2hlZXRzLmdldChocmVmKSkgJiZcbiAgICAgICAgICAgICAgICAwIDwgcmVuZGVyU3RhdGUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IChyZW5kZXJTdGF0ZS5sZW5ndGggPSAwKVxuICAgICAgICAgICAgICAgICAgOiAocHJlY2VkZW5jZS5zdGF0ZSA9IFBSRUxPQURFRCkpLFxuICAgICAgICAgICAgICBzdHlsZVF1ZXVlLnNoZWV0cy5zZXQoaHJlZiwgcHJlY2VkZW5jZSksXG4gICAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgcHJldmlvdXNEaXNwYXRjaGVyLlMoaHJlZiwgcHJlY2VkZW5jZSwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgTTogZnVuY3Rpb24gKHNyYywgb3B0aW9ucykge1xuICAgICAgICB2YXIgcmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0ID8gY3VycmVudFJlcXVlc3QgOiBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgaWYgKHNyYykge1xuICAgICAgICAgICAgdmFyIHJlc291cmNlU3RhdGUgPVxuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoc3JjKVxuICAgICAgICAgICAgICAgID8gcmVzdW1hYmxlU3RhdGUubW9kdWxlU2NyaXB0UmVzb3VyY2VzW3NyY11cbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIHJlc291cmNlU3RhdGUgIT09IEVYSVNUUyAmJlxuICAgICAgICAgICAgICAoKHJlc3VtYWJsZVN0YXRlLm1vZHVsZVNjcmlwdFJlc291cmNlc1tzcmNdID0gRVhJU1RTKSxcbiAgICAgICAgICAgICAgKG9wdGlvbnMgPSBhc3NpZ24oXG4gICAgICAgICAgICAgICAgeyBzcmM6IHNyYywgdHlwZTogXCJtb2R1bGVcIiwgYXN5bmM6ICEwIH0sXG4gICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSAmJlxuICAgICAgICAgICAgICAgICgyID09PSByZXNvdXJjZVN0YXRlLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgYWRvcHRQcmVsb2FkQ3JlZGVudGlhbHMob3B0aW9ucywgcmVzb3VyY2VTdGF0ZSksXG4gICAgICAgICAgICAgICAgKHNyYyA9IHJlbmRlclN0YXRlLnByZWxvYWRzLm1vZHVsZVNjcmlwdHMuZ2V0KHNyYykpKSAmJlxuICAgICAgICAgICAgICAgIChzcmMubGVuZ3RoID0gMCksXG4gICAgICAgICAgICAgIChzcmMgPSBbXSksXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlLnNjcmlwdHMuYWRkKHNyYyksXG4gICAgICAgICAgICAgIHB1c2hTY3JpcHRJbXBsKHNyYywgb3B0aW9ucyksXG4gICAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgcHJldmlvdXNEaXNwYXRjaGVyLk0oc3JjLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHZhciBOb3RoaW5nU2VudCA9IDAsXG4gICAgICBTZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24gPSAxLFxuICAgICAgU2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbiA9IDIsXG4gICAgICBTZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24gPSA0LFxuICAgICAgU2VudFN0eWxlSW5zZXJ0aW9uRnVuY3Rpb24gPSA4LFxuICAgICAgRVhJU1RTID0gbnVsbCxcbiAgICAgIFBSRUxPQURfTk9fQ1JFRFMgPSBbXTtcbiAgICBPYmplY3QuZnJlZXplKFBSRUxPQURfTk9fQ1JFRFMpO1xuICAgIHZhciBzY3JpcHRSZWdleCA9IC8oPFxcL3w8KShzKShjcmlwdCkvZ2k7XG4gICAgdmFyIGRpZFdhcm5Gb3JOZXdCb29sZWFuUHJvcHNXaXRoRW1wdHlWYWx1ZSA9IHt9O1xuICAgIHZhciBST09UX0hUTUxfTU9ERSA9IDAsXG4gICAgICBIVE1MX0hUTUxfTU9ERSA9IDEsXG4gICAgICBIVE1MX01PREUgPSAyLFxuICAgICAgU1ZHX01PREUgPSAzLFxuICAgICAgTUFUSE1MX01PREUgPSA0LFxuICAgICAgSFRNTF9UQUJMRV9NT0RFID0gNSxcbiAgICAgIEhUTUxfVEFCTEVfQk9EWV9NT0RFID0gNixcbiAgICAgIEhUTUxfVEFCTEVfUk9XX01PREUgPSA3LFxuICAgICAgSFRNTF9DT0xHUk9VUF9NT0RFID0gOCxcbiAgICAgIHN0eWxlTmFtZUNhY2hlID0gbmV3IE1hcCgpLFxuICAgICAgc3R5bGVBdHRyaWJ1dGVTdGFydCA9ICcgc3R5bGU9XCInLFxuICAgICAgc3R5bGVBc3NpZ24gPSBcIjpcIixcbiAgICAgIHN0eWxlU2VwYXJhdG9yID0gXCI7XCIsXG4gICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IgPSBcIiBcIixcbiAgICAgIGF0dHJpYnV0ZUFzc2lnbiA9ICc9XCInLFxuICAgICAgYXR0cmlidXRlRW5kID0gJ1wiJyxcbiAgICAgIGF0dHJpYnV0ZUVtcHR5U3RyaW5nID0gJz1cIlwiJyxcbiAgICAgIGFjdGlvbkphdmFTY3JpcHRVUkwgPSBlc2NhcGVUZXh0Rm9yQnJvd3NlcihcbiAgICAgICAgXCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignUmVhY3QgZm9ybSB1bmV4cGVjdGVkbHkgc3VibWl0dGVkLicpXCJcbiAgICAgICksXG4gICAgICBlbmRPZlN0YXJ0VGFnID0gXCI+XCIsXG4gICAgICBlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcgPSBcIi8+XCIsXG4gICAgICBkaWRXYXJuRGVmYXVsdElucHV0VmFsdWUgPSAhMSxcbiAgICAgIGRpZFdhcm5EZWZhdWx0Q2hlY2tlZCA9ICExLFxuICAgICAgZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSA9ICExLFxuICAgICAgZGlkV2FybkRlZmF1bHRUZXh0YXJlYVZhbHVlID0gITEsXG4gICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gITEsXG4gICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbklubmVySFRNTCA9ICExLFxuICAgICAgZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24gPSAhMSxcbiAgICAgIGRpZFdhcm5Gb3JtQWN0aW9uVHlwZSA9ICExLFxuICAgICAgZGlkV2FybkZvcm1BY3Rpb25OYW1lID0gITEsXG4gICAgICBkaWRXYXJuRm9ybUFjdGlvblRhcmdldCA9ICExLFxuICAgICAgZGlkV2FybkZvcm1BY3Rpb25NZXRob2QgPSAhMSxcbiAgICAgIGZvcm1SZXBsYXlpbmdSdW50aW1lU2NyaXB0ID1cbiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIixmdW5jdGlvbihhKXtpZighYS5kZWZhdWx0UHJldmVudGVkKXt2YXIgYz1hLnRhcmdldCxkPWEuc3VibWl0dGVyLGU9Yy5hY3Rpb24sYj1kO2lmKGQpe3ZhciBmPWQuZ2V0QXR0cmlidXRlKFwiZm9ybUFjdGlvblwiKTtudWxsIT1mJiYoZT1mLGI9bnVsbCl9XCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcihcXCdSZWFjdCBmb3JtIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuXFwnKVwiPT09ZSYmKGEucHJldmVudERlZmF1bHQoKSxiPyhhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKSxhLm5hbWU9Yi5uYW1lLGEudmFsdWU9Yi52YWx1ZSxiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYiksYj1uZXcgRm9ybURhdGEoYyksYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpKTpiPW5ldyBGb3JtRGF0YShjKSxhPWMub3duZXJEb2N1bWVudHx8YywoYS4kJHJlYWN0Rm9ybVJlcGxheT1hLiQkcmVhY3RGb3JtUmVwbGF5fHxbXSkucHVzaChjLGQsYikpfX0pOycsXG4gICAgICBzdHlsZVJlZ2V4ID0gLyg8XFwvfDwpKHMpKHR5bGUpL2dpLFxuICAgICAgbGVhZGluZ05ld2xpbmUgPSBcIlxcblwiLFxuICAgICAgVkFMSURfVEFHX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC8sXG4gICAgICB2YWxpZGF0ZWRUYWdDYWNoZSA9IG5ldyBNYXAoKSxcbiAgICAgIGVuZFRhZ0NhY2hlID0gbmV3IE1hcCgpLFxuICAgICAgcGxhY2Vob2xkZXIxID0gJzx0ZW1wbGF0ZSBpZD1cIicsXG4gICAgICBwbGFjZWhvbGRlcjIgPSAnXCI+PC90ZW1wbGF0ZT4nLFxuICAgICAgc3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5ID0gXCJcXHgzYyEtLSQtLVxceDNlXCIsXG4gICAgICBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5MSA9ICdcXHgzYyEtLSQ/LS1cXHgzZTx0ZW1wbGF0ZSBpZD1cIicsXG4gICAgICBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5MiA9ICdcIj48L3RlbXBsYXRlPicsXG4gICAgICBzdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSA9IFwiXFx4M2MhLS0kIS0tXFx4M2VcIixcbiAgICAgIGVuZFN1c3BlbnNlQm91bmRhcnkgPSBcIlxceDNjIS0tLyQtLVxceDNlXCIsXG4gICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjEgPSBcIjx0ZW1wbGF0ZVwiLFxuICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3JBdHRySW50ZXJzdGl0aWFsID0gJ1wiJyxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMUEgPSAnIGRhdGEtZGdzdD1cIicsXG4gICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFCID0gJyBkYXRhLW1zZz1cIicsXG4gICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFDID0gJyBkYXRhLXN0Y2s9XCInLFxuICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3IxRCA9ICcgZGF0YS1jc3Rjaz1cIicsXG4gICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjIgPSBcIj48L3RlbXBsYXRlPlwiLFxuICAgICAgc3RhcnRTZWdtZW50SFRNTCA9ICc8ZGl2IGhpZGRlbiBpZD1cIicsXG4gICAgICBzdGFydFNlZ21lbnRIVE1MMiA9ICdcIj4nLFxuICAgICAgZW5kU2VnbWVudEhUTUwgPSBcIjwvZGl2PlwiLFxuICAgICAgc3RhcnRTZWdtZW50U1ZHID0gJzxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiBpZD1cIicsXG4gICAgICBzdGFydFNlZ21lbnRTVkcyID0gJ1wiPicsXG4gICAgICBlbmRTZWdtZW50U1ZHID0gXCI8L3N2Zz5cIixcbiAgICAgIHN0YXJ0U2VnbWVudE1hdGhNTCA9ICc8bWF0aCBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPVwiJyxcbiAgICAgIHN0YXJ0U2VnbWVudE1hdGhNTDIgPSAnXCI+JyxcbiAgICAgIGVuZFNlZ21lbnRNYXRoTUwgPSBcIjwvbWF0aD5cIixcbiAgICAgIHN0YXJ0U2VnbWVudFRhYmxlID0gJzx0YWJsZSBoaWRkZW4gaWQ9XCInLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGUyID0gJ1wiPicsXG4gICAgICBlbmRTZWdtZW50VGFibGUgPSBcIjwvdGFibGU+XCIsXG4gICAgICBzdGFydFNlZ21lbnRUYWJsZUJvZHkgPSAnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9XCInLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVCb2R5MiA9ICdcIj4nLFxuICAgICAgZW5kU2VnbWVudFRhYmxlQm9keSA9IFwiPC90Ym9keT48L3RhYmxlPlwiLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVSb3cgPSAnPHRhYmxlIGhpZGRlbj48dHIgaWQ9XCInLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVSb3cyID0gJ1wiPicsXG4gICAgICBlbmRTZWdtZW50VGFibGVSb3cgPSBcIjwvdHI+PC90YWJsZT5cIixcbiAgICAgIHN0YXJ0U2VnbWVudENvbEdyb3VwID0gJzx0YWJsZSBoaWRkZW4+PGNvbGdyb3VwIGlkPVwiJyxcbiAgICAgIHN0YXJ0U2VnbWVudENvbEdyb3VwMiA9ICdcIj4nLFxuICAgICAgZW5kU2VnbWVudENvbEdyb3VwID0gXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIsXG4gICAgICBjb21wbGV0ZVNlZ21lbnRTY3JpcHQxRnVsbCA9XG4gICAgICAgICckUlM9ZnVuY3Rpb24oYSxiKXthPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2I9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Zm9yKGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTthLmZpcnN0Q2hpbGQ7KWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYS5maXJzdENoaWxkLGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX07JFJTKFwiJyxcbiAgICAgIGNvbXBsZXRlU2VnbWVudFNjcmlwdDFQYXJ0aWFsID0gJyRSUyhcIicsXG4gICAgICBjb21wbGV0ZVNlZ21lbnRTY3JpcHQyID0gJ1wiLFwiJyxcbiAgICAgIGNvbXBsZXRlU2VnbWVudFNjcmlwdEVuZCA9ICdcIilcXHgzYy9zY3JpcHQ+JyxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQxRnVsbCA9XG4gICAgICAgICckUkM9ZnVuY3Rpb24oYixjLGUpe2M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYyk7Yy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2lmKGEpe2I9YS5wcmV2aW91c1NpYmxpbmc7aWYoZSliLmRhdGE9XCIkIVwiLGEuc2V0QXR0cmlidXRlKFwiZGF0YS1kZ3N0XCIsZSk7ZWxzZXtlPWIucGFyZW50Tm9kZTthPWIubmV4dFNpYmxpbmc7dmFyIGY9MDtkb3tpZihhJiY4PT09YS5ub2RlVHlwZSl7dmFyIGQ9YS5kYXRhO2lmKFwiLyRcIj09PWQpaWYoMD09PWYpYnJlYWs7ZWxzZSBmLS07ZWxzZVwiJFwiIT09ZCYmXCIkP1wiIT09ZCYmXCIkIVwiIT09ZHx8ZisrfWQ9YS5uZXh0U2libGluZztlLnJlbW92ZUNoaWxkKGEpO2E9ZH13aGlsZShhKTtmb3IoO2MuZmlyc3RDaGlsZDspZS5pbnNlcnRCZWZvcmUoYy5maXJzdENoaWxkLGEpO2IuZGF0YT1cIiRcIn1iLl9yZWFjdFJldHJ5JiZiLl9yZWFjdFJldHJ5KCl9fTskUkMoXCInLFxuICAgICAgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFQYXJ0aWFsID0gJyRSQyhcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5V2l0aFN0eWxlc1NjcmlwdDFGdWxsQm90aCA9XG4gICAgICAgICckUkM9ZnVuY3Rpb24oYixjLGUpe2M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYyk7Yy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2lmKGEpe2I9YS5wcmV2aW91c1NpYmxpbmc7aWYoZSliLmRhdGE9XCIkIVwiLGEuc2V0QXR0cmlidXRlKFwiZGF0YS1kZ3N0XCIsZSk7ZWxzZXtlPWIucGFyZW50Tm9kZTthPWIubmV4dFNpYmxpbmc7dmFyIGY9MDtkb3tpZihhJiY4PT09YS5ub2RlVHlwZSl7dmFyIGQ9YS5kYXRhO2lmKFwiLyRcIj09PWQpaWYoMD09PWYpYnJlYWs7ZWxzZSBmLS07ZWxzZVwiJFwiIT09ZCYmXCIkP1wiIT09ZCYmXCIkIVwiIT09ZHx8ZisrfWQ9YS5uZXh0U2libGluZztlLnJlbW92ZUNoaWxkKGEpO2E9ZH13aGlsZShhKTtmb3IoO2MuZmlyc3RDaGlsZDspZS5pbnNlcnRCZWZvcmUoYy5maXJzdENoaWxkLGEpO2IuZGF0YT1cIiRcIn1iLl9yZWFjdFJldHJ5JiZiLl9yZWFjdFJldHJ5KCl9fTskUk09bmV3IE1hcDtcXG4kUlI9ZnVuY3Rpb24odCx1LHkpe2Z1bmN0aW9uIHYobil7dGhpcy5fcD1udWxsO24oKX1mb3IodmFyIHc9JFJDLHA9JFJNLHE9bmV3IE1hcCxyPWRvY3VtZW50LGcsYixoPXIucXVlcnlTZWxlY3RvckFsbChcImxpbmtbZGF0YS1wcmVjZWRlbmNlXSxzdHlsZVtkYXRhLXByZWNlZGVuY2VdXCIpLHg9W10saz0wO2I9aFtrKytdOylcIm5vdCBhbGxcIj09PWIuZ2V0QXR0cmlidXRlKFwibWVkaWFcIik/eC5wdXNoKGIpOihcIkxJTktcIj09PWIudGFnTmFtZSYmcC5zZXQoYi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLGIpLHEuc2V0KGIuZGF0YXNldC5wcmVjZWRlbmNlLGc9YikpO2I9MDtoPVtdO3ZhciBsLGE7Zm9yKGs9ITA7Oyl7aWYoayl7dmFyIGU9eVtiKytdO2lmKCFlKXtrPSExO2I9MDtjb250aW51ZX12YXIgYz0hMSxtPTA7dmFyIGQ9ZVttKytdO2lmKGE9cC5nZXQoZCkpe3ZhciBmPWEuX3A7Yz0hMH1lbHNle2E9ci5jcmVhdGVFbGVtZW50KFwibGlua1wiKTthLmhyZWY9XFxuZDthLnJlbD1cInN0eWxlc2hlZXRcIjtmb3IoYS5kYXRhc2V0LnByZWNlZGVuY2U9bD1lW20rK107Zj1lW20rK107KWEuc2V0QXR0cmlidXRlKGYsZVttKytdKTtmPWEuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24obix6KXthLm9ubG9hZD12LmJpbmQoYSxuKTthLm9uZXJyb3I9di5iaW5kKGEseil9KTtwLnNldChkLGEpfWQ9YS5nZXRBdHRyaWJ1dGUoXCJtZWRpYVwiKTshZnx8ZCYmIW1hdGNoTWVkaWEoZCkubWF0Y2hlc3x8aC5wdXNoKGYpO2lmKGMpY29udGludWV9ZWxzZXthPXhbYisrXTtpZighYSlicmVhaztsPWEuZ2V0QXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpO2EucmVtb3ZlQXR0cmlidXRlKFwibWVkaWFcIil9Yz1xLmdldChsKXx8ZztjPT09ZyYmKGc9YSk7cS5zZXQobCxhKTtjP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxjLm5leHRTaWJsaW5nKTooYz1yLmhlYWQsYy5pbnNlcnRCZWZvcmUoYSxjLmZpcnN0Q2hpbGQpKX1Qcm9taXNlLmFsbChoKS50aGVuKHcuYmluZChudWxsLFxcbnQsdSxcIlwiKSx3LmJpbmQobnVsbCx0LHUsXCJSZXNvdXJjZSBmYWlsZWQgdG8gbG9hZFwiKSl9OyRSUihcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5V2l0aFN0eWxlc1NjcmlwdDFGdWxsUGFydGlhbCA9XG4gICAgICAgICckUk09bmV3IE1hcDtcXG4kUlI9ZnVuY3Rpb24odCx1LHkpe2Z1bmN0aW9uIHYobil7dGhpcy5fcD1udWxsO24oKX1mb3IodmFyIHc9JFJDLHA9JFJNLHE9bmV3IE1hcCxyPWRvY3VtZW50LGcsYixoPXIucXVlcnlTZWxlY3RvckFsbChcImxpbmtbZGF0YS1wcmVjZWRlbmNlXSxzdHlsZVtkYXRhLXByZWNlZGVuY2VdXCIpLHg9W10saz0wO2I9aFtrKytdOylcIm5vdCBhbGxcIj09PWIuZ2V0QXR0cmlidXRlKFwibWVkaWFcIik/eC5wdXNoKGIpOihcIkxJTktcIj09PWIudGFnTmFtZSYmcC5zZXQoYi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLGIpLHEuc2V0KGIuZGF0YXNldC5wcmVjZWRlbmNlLGc9YikpO2I9MDtoPVtdO3ZhciBsLGE7Zm9yKGs9ITA7Oyl7aWYoayl7dmFyIGU9eVtiKytdO2lmKCFlKXtrPSExO2I9MDtjb250aW51ZX12YXIgYz0hMSxtPTA7dmFyIGQ9ZVttKytdO2lmKGE9cC5nZXQoZCkpe3ZhciBmPWEuX3A7Yz0hMH1lbHNle2E9ci5jcmVhdGVFbGVtZW50KFwibGlua1wiKTthLmhyZWY9XFxuZDthLnJlbD1cInN0eWxlc2hlZXRcIjtmb3IoYS5kYXRhc2V0LnByZWNlZGVuY2U9bD1lW20rK107Zj1lW20rK107KWEuc2V0QXR0cmlidXRlKGYsZVttKytdKTtmPWEuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24obix6KXthLm9ubG9hZD12LmJpbmQoYSxuKTthLm9uZXJyb3I9di5iaW5kKGEseil9KTtwLnNldChkLGEpfWQ9YS5nZXRBdHRyaWJ1dGUoXCJtZWRpYVwiKTshZnx8ZCYmIW1hdGNoTWVkaWEoZCkubWF0Y2hlc3x8aC5wdXNoKGYpO2lmKGMpY29udGludWV9ZWxzZXthPXhbYisrXTtpZighYSlicmVhaztsPWEuZ2V0QXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpO2EucmVtb3ZlQXR0cmlidXRlKFwibWVkaWFcIil9Yz1xLmdldChsKXx8ZztjPT09ZyYmKGc9YSk7cS5zZXQobCxhKTtjP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxjLm5leHRTaWJsaW5nKTooYz1yLmhlYWQsYy5pbnNlcnRCZWZvcmUoYSxjLmZpcnN0Q2hpbGQpKX1Qcm9taXNlLmFsbChoKS50aGVuKHcuYmluZChudWxsLFxcbnQsdSxcIlwiKSx3LmJpbmQobnVsbCx0LHUsXCJSZXNvdXJjZSBmYWlsZWQgdG8gbG9hZFwiKSl9OyRSUihcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5V2l0aFN0eWxlc1NjcmlwdDFQYXJ0aWFsID0gJyRSUihcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MiA9ICdcIixcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0M2EgPSAnXCIsJyxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQzYiA9ICdcIicsXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0RW5kID0gXCIpXFx4M2Mvc2NyaXB0PlwiLFxuICAgICAgY2xpZW50UmVuZGVyU2NyaXB0MUZ1bGwgPVxuICAgICAgICAnJFJYPWZ1bmN0aW9uKGIsYyxkLGUsZil7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7YSYmKGI9YS5wcmV2aW91c1NpYmxpbmcsYi5kYXRhPVwiJCFcIixhPWEuZGF0YXNldCxjJiYoYS5kZ3N0PWMpLGQmJihhLm1zZz1kKSxlJiYoYS5zdGNrPWUpLGYmJihhLmNzdGNrPWYpLGIuX3JlYWN0UmV0cnkmJmIuX3JlYWN0UmV0cnkoKSl9OzskUlgoXCInLFxuICAgICAgY2xpZW50UmVuZGVyU2NyaXB0MVBhcnRpYWwgPSAnJFJYKFwiJyxcbiAgICAgIGNsaWVudFJlbmRlclNjcmlwdDFBID0gJ1wiJyxcbiAgICAgIGNsaWVudFJlbmRlckVycm9yU2NyaXB0QXJnSW50ZXJzdGl0aWFsID0gXCIsXCIsXG4gICAgICBjbGllbnRSZW5kZXJTY3JpcHRFbmQgPSBcIilcXHgzYy9zY3JpcHQ+XCIsXG4gICAgICByZWdleEZvckpTU3RyaW5nc0luSW5zdHJ1Y3Rpb25TY3JpcHRzID0gL1s8XFx1MjAyOFxcdTIwMjldL2csXG4gICAgICByZWdleEZvckpTU3RyaW5nc0luU2NyaXB0cyA9IC9bJj48XFx1MjAyOFxcdTIwMjldL2csXG4gICAgICBsYXRlU3R5bGVUYWdSZXNvdXJjZU9wZW4xID0gJzxzdHlsZSBtZWRpYT1cIm5vdCBhbGxcIiBkYXRhLXByZWNlZGVuY2U9XCInLFxuICAgICAgbGF0ZVN0eWxlVGFnUmVzb3VyY2VPcGVuMiA9ICdcIiBkYXRhLWhyZWY9XCInLFxuICAgICAgbGF0ZVN0eWxlVGFnUmVzb3VyY2VPcGVuMyA9ICdcIj4nLFxuICAgICAgbGF0ZVN0eWxlVGFnVGVtcGxhdGVDbG9zZSA9IFwiPC9zdHlsZT5cIixcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0JvdW5kYXJ5SGFzU3R5bGVzVG9Ib2lzdCA9ICExLFxuICAgICAgZGVzdGluYXRpb25IYXNDYXBhY2l0eSA9ICEwLFxuICAgICAgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUgPSBbXSxcbiAgICAgIHN0eWxlVGFnUmVzb3VyY2VPcGVuMSA9ICc8c3R5bGUgZGF0YS1wcmVjZWRlbmNlPVwiJyxcbiAgICAgIHN0eWxlVGFnUmVzb3VyY2VPcGVuMiA9ICdcIiBkYXRhLWhyZWY9XCInLFxuICAgICAgc3BhY2VTZXBhcmF0b3IgPSBcIiBcIixcbiAgICAgIHN0eWxlVGFnUmVzb3VyY2VPcGVuMyA9ICdcIj4nLFxuICAgICAgc3R5bGVUYWdSZXNvdXJjZUNsb3NlID0gXCI8L3N0eWxlPlwiLFxuICAgICAgYXJyYXlGaXJzdE9wZW5CcmFja2V0ID0gXCJbXCIsXG4gICAgICBhcnJheVN1YnNlcXVlbnRPcGVuQnJhY2tldCA9IFwiLFtcIixcbiAgICAgIGFycmF5SW50ZXJzdGl0aWFsID0gXCIsXCIsXG4gICAgICBhcnJheUNsb3NlQnJhY2tldCA9IFwiXVwiLFxuICAgICAgUEVORElORyQxID0gMCxcbiAgICAgIFBSRUxPQURFRCA9IDEsXG4gICAgICBQUkVBTUJMRSA9IDIsXG4gICAgICBMQVRFID0gMyxcbiAgICAgIHJlZ2V4Rm9ySHJlZkluTGlua0hlYWRlclVSTENvbnRleHQgPSAvWzw+XFxyXFxuXS9nLFxuICAgICAgcmVnZXhGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHQgPSAvW1wiJzssXFxyXFxuXS9nLFxuICAgICAgZG9jdHlwZUNodW5rID0gXCJcIixcbiAgICAgIGJpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCxcbiAgICAgIFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxcbiAgICAgIGVtcHR5Q29udGV4dE9iamVjdCA9IHt9O1xuICAgIE9iamVjdC5mcmVlemUoZW1wdHlDb250ZXh0T2JqZWN0KTtcbiAgICB2YXIgcmVuZGVyZXJTaWdpbCA9IHt9O1xuICAgIHZhciBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBudWxsLFxuICAgICAgZGlkV2FybkFib3V0Tm9vcFVwZGF0ZUZvckNvbXBvbmVudCA9IHt9LFxuICAgICAgZGlkV2FybkFib3V0RGVwcmVjYXRlZFdpbGxNb3VudCA9IHt9O1xuICAgIHZhciBkaWRXYXJuQWJvdXRVbmluaXRpYWxpemVkU3RhdGUgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0TGVnYWN5TGlmZWN5Y2xlc0FuZERlcml2ZWRTdGF0ZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0RGlyZWN0bHlBc3NpZ25pbmdQcm9wc1RvU3RhdGUgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGRpZFdhcm5BYm91dFVuZGVmaW5lZERlcml2ZWRTdGF0ZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0Q29udGV4dFR5cGVzJDEgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGRpZFdhcm5BYm91dENoaWxkQ29udGV4dFR5cGVzID0gbmV3IFNldCgpO1xuICAgIHZhciBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGUgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGRpZFdhcm5PbkludmFsaWRDYWxsYmFjayA9IG5ldyBTZXQoKTtcbiAgICB2YXIgY2xhc3NDb21wb25lbnRVcGRhdGVyID0ge1xuICAgICAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgIH0sXG4gICAgICAgIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKGluc3QsIHBheWxvYWQsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgdmFyIGludGVybmFscyA9IGluc3QuX3JlYWN0SW50ZXJuYWxzO1xuICAgICAgICAgIG51bGwgPT09IGludGVybmFscy5xdWV1ZVxuICAgICAgICAgICAgPyB3YXJuTm9vcChpbnN0LCBcInNldFN0YXRlXCIpXG4gICAgICAgICAgICA6IChpbnRlcm5hbHMucXVldWUucHVzaChwYXlsb2FkKSxcbiAgICAgICAgICAgICAgdm9pZCAwICE9PSBjYWxsYmFjayAmJlxuICAgICAgICAgICAgICAgIG51bGwgIT09IGNhbGxiYWNrICYmXG4gICAgICAgICAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0aW9uIChpbnN0LCBwYXlsb2FkLCBjYWxsYmFjaykge1xuICAgICAgICAgIGluc3QgPSBpbnN0Ll9yZWFjdEludGVybmFscztcbiAgICAgICAgICBpbnN0LnJlcGxhY2UgPSAhMDtcbiAgICAgICAgICBpbnN0LnF1ZXVlID0gW3BheWxvYWRdO1xuICAgICAgICAgIHZvaWQgMCAhPT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAgIG51bGwgIT09IGNhbGxiYWNrICYmXG4gICAgICAgICAgICB3YXJuT25JbnZhbGlkQ2FsbGJhY2soY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChpbnN0LCBjYWxsYmFjaykge1xuICAgICAgICAgIG51bGwgPT09IGluc3QuX3JlYWN0SW50ZXJuYWxzLnF1ZXVlXG4gICAgICAgICAgICA/IHdhcm5Ob29wKGluc3QsIFwiZm9yY2VVcGRhdGVcIilcbiAgICAgICAgICAgIDogdm9pZCAwICE9PSBjYWxsYmFjayAmJlxuICAgICAgICAgICAgICBudWxsICE9PSBjYWxsYmFjayAmJlxuICAgICAgICAgICAgICB3YXJuT25JbnZhbGlkQ2FsbGJhY2soY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZW1wdHlUcmVlQ29udGV4dCA9IHsgaWQ6IDEsIG92ZXJmbG93OiBcIlwiIH0sXG4gICAgICBjbHozMiA9IE1hdGguY2x6MzIgPyBNYXRoLmNsejMyIDogY2x6MzJGYWxsYmFjayxcbiAgICAgIGxvZyA9IE1hdGgubG9nLFxuICAgICAgTE4yID0gTWF0aC5MTjIsXG4gICAgICBTdXNwZW5zZUV4Y2VwdGlvbiA9IEVycm9yKFxuICAgICAgICBcIlN1c3BlbnNlIEV4Y2VwdGlvbjogVGhpcyBpcyBub3QgYSByZWFsIGVycm9yISBJdCdzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiBgdXNlYCB0byBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgcmVuZGVyLiBZb3UgbXVzdCBlaXRoZXIgcmV0aHJvdyBpdCBpbW1lZGlhdGVseSwgb3IgbW92ZSB0aGUgYHVzZWAgY2FsbCBvdXRzaWRlIG9mIHRoZSBgdHJ5L2NhdGNoYCBibG9jay4gQ2FwdHVyaW5nIHdpdGhvdXQgcmV0aHJvd2luZyB3aWxsIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvci5cXG5cXG5UbyBoYW5kbGUgYXN5bmMgZXJyb3JzLCB3cmFwIHlvdXIgY29tcG9uZW50IGluIGFuIGVycm9yIGJvdW5kYXJ5LCBvciBjYWxsIHRoZSBwcm9taXNlJ3MgYC5jYXRjaGAgbWV0aG9kIGFuZCBwYXNzIHRoZSByZXN1bHQgdG8gYHVzZWBcIlxuICAgICAgKSxcbiAgICAgIHN1c3BlbmRlZFRoZW5hYmxlID0gbnVsbCxcbiAgICAgIG9iamVjdElzID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgT2JqZWN0LmlzID8gT2JqZWN0LmlzIDogaXMsXG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQgPSBudWxsLFxuICAgICAgY3VycmVudGx5UmVuZGVyaW5nVGFzayA9IG51bGwsXG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdSZXF1ZXN0ID0gbnVsbCxcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0tleVBhdGggPSBudWxsLFxuICAgICAgZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsLFxuICAgICAgd29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbCxcbiAgICAgIGlzUmVSZW5kZXIgPSAhMSxcbiAgICAgIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSAhMSxcbiAgICAgIGxvY2FsSWRDb3VudGVyID0gMCxcbiAgICAgIGFjdGlvblN0YXRlQ291bnRlciA9IDAsXG4gICAgICBhY3Rpb25TdGF0ZU1hdGNoaW5nSW5kZXggPSAtMSxcbiAgICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyID0gMCxcbiAgICAgIHRoZW5hYmxlU3RhdGUgPSBudWxsLFxuICAgICAgcmVuZGVyUGhhc2VVcGRhdGVzID0gbnVsbCxcbiAgICAgIG51bWJlck9mUmVSZW5kZXJzID0gMCxcbiAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9ICExLFxuICAgICAgY3VycmVudEhvb2tOYW1lSW5EZXYsXG4gICAgICBIb29rc0Rpc3BhdGNoZXIgPSB7XG4gICAgICAgIHJlYWRDb250ZXh0OiByZWFkQ29udGV4dCxcbiAgICAgICAgdXNlOiBmdW5jdGlvbiAodXNhYmxlKSB7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHVzYWJsZSAmJiBcIm9iamVjdFwiID09PSB0eXBlb2YgdXNhYmxlKSB7XG4gICAgICAgICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdXNhYmxlLnRoZW4pXG4gICAgICAgICAgICAgIHJldHVybiB1bndyYXBUaGVuYWJsZSh1c2FibGUpO1xuICAgICAgICAgICAgaWYgKHVzYWJsZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFKVxuICAgICAgICAgICAgICByZXR1cm4gcmVhZENvbnRleHQodXNhYmxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkFuIHVuc3VwcG9ydGVkIHR5cGUgd2FzIHBhc3NlZCB0byB1c2UoKTogXCIgKyBTdHJpbmcodXNhYmxlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUNvbnRleHQ6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgICAgY3VycmVudEhvb2tOYW1lSW5EZXYgPSBcInVzZUNvbnRleHRcIjtcbiAgICAgICAgICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgcmV0dXJuIGNvbnRleHQuX2N1cnJlbnRWYWx1ZTI7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZU1lbW86IHVzZU1lbW8sXG4gICAgICAgIHVzZVJlZHVjZXI6IHVzZVJlZHVjZXIsXG4gICAgICAgIHVzZVJlZjogZnVuY3Rpb24gKGluaXRpYWxWYWx1ZSkge1xuICAgICAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgICAgICAgICB2YXIgcHJldmlvdXNSZWYgPSB3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgICByZXR1cm4gbnVsbCA9PT0gcHJldmlvdXNSZWZcbiAgICAgICAgICAgID8gKChpbml0aWFsVmFsdWUgPSB7IGN1cnJlbnQ6IGluaXRpYWxWYWx1ZSB9KSxcbiAgICAgICAgICAgICAgT2JqZWN0LnNlYWwoaW5pdGlhbFZhbHVlKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gaW5pdGlhbFZhbHVlKSlcbiAgICAgICAgICAgIDogcHJldmlvdXNSZWY7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZVN0YXRlOiBmdW5jdGlvbiAoaW5pdGlhbFN0YXRlKSB7XG4gICAgICAgICAgY3VycmVudEhvb2tOYW1lSW5EZXYgPSBcInVzZVN0YXRlXCI7XG4gICAgICAgICAgcmV0dXJuIHVzZVJlZHVjZXIoYmFzaWNTdGF0ZVJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUluc2VydGlvbkVmZmVjdDogbm9vcCQxLFxuICAgICAgICB1c2VMYXlvdXRFZmZlY3Q6IG5vb3AkMSxcbiAgICAgICAgdXNlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjYWxsYmFjaywgZGVwcykge1xuICAgICAgICAgIHJldHVybiB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaztcbiAgICAgICAgICB9LCBkZXBzKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogbm9vcCQxLFxuICAgICAgICB1c2VFZmZlY3Q6IG5vb3AkMSxcbiAgICAgICAgdXNlRGVidWdWYWx1ZTogbm9vcCQxLFxuICAgICAgICB1c2VEZWZlcnJlZFZhbHVlOiBmdW5jdGlvbiAodmFsdWUsIGluaXRpYWxWYWx1ZSkge1xuICAgICAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgICAgICByZXR1cm4gdm9pZCAwICE9PSBpbml0aWFsVmFsdWUgPyBpbml0aWFsVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlVHJhbnNpdGlvbjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgICAgICByZXR1cm4gWyExLCB1bnN1cHBvcnRlZFN0YXJ0VHJhbnNpdGlvbl07XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHRyZWVJZCA9IGN1cnJlbnRseVJlbmRlcmluZ1Rhc2sudHJlZUNvbnRleHQ7XG4gICAgICAgICAgdmFyIG92ZXJmbG93ID0gdHJlZUlkLm92ZXJmbG93O1xuICAgICAgICAgIHRyZWVJZCA9IHRyZWVJZC5pZDtcbiAgICAgICAgICB0cmVlSWQgPVxuICAgICAgICAgICAgKHRyZWVJZCAmIH4oMSA8PCAoMzIgLSBjbHozMih0cmVlSWQpIC0gMSkpKS50b1N0cmluZygzMikgKyBvdmVyZmxvdztcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSBjdXJyZW50UmVzdW1hYmxlU3RhdGU7XG4gICAgICAgICAgaWYgKG51bGwgPT09IHJlc3VtYWJsZVN0YXRlKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgb3ZlcmZsb3cgPSBsb2NhbElkQ291bnRlcisrO1xuICAgICAgICAgIHRyZWVJZCA9IFwiOlwiICsgcmVzdW1hYmxlU3RhdGUuaWRQcmVmaXggKyBcIlJcIiArIHRyZWVJZDtcbiAgICAgICAgICAwIDwgb3ZlcmZsb3cgJiYgKHRyZWVJZCArPSBcIkhcIiArIG92ZXJmbG93LnRvU3RyaW5nKDMyKSk7XG4gICAgICAgICAgcmV0dXJuIHRyZWVJZCArIFwiOlwiO1xuICAgICAgICB9LFxuICAgICAgICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogZnVuY3Rpb24gKFxuICAgICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgICBnZXRTbmFwc2hvdCxcbiAgICAgICAgICBnZXRTZXJ2ZXJTbmFwc2hvdFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAodm9pZCAwID09PSBnZXRTZXJ2ZXJTbmFwc2hvdClcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICBcIk1pc3NpbmcgZ2V0U2VydmVyU25hcHNob3QsIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBzZXJ2ZXItcmVuZGVyZWQgY29udGVudC4gV2lsbCByZXZlcnQgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZ2V0U2VydmVyU25hcHNob3QoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlQ2FjaGVSZWZyZXNoOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHVuc3VwcG9ydGVkUmVmcmVzaDtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlTWVtb0NhY2hlOiBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICAgIGZvciAodmFyIGRhdGEgPSBBcnJheShzaXplKSwgaSA9IDA7IGkgPCBzaXplOyBpKyspXG4gICAgICAgICAgICBkYXRhW2ldID0gUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTDtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgcmV0dXJuIE5vdFBlbmRpbmc7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZU9wdGltaXN0aWM6IGZ1bmN0aW9uIChwYXNzdGhyb3VnaCkge1xuICAgICAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgICAgICByZXR1cm4gW3Bhc3N0aHJvdWdoLCB1bnN1cHBvcnRlZFNldE9wdGltaXN0aWNTdGF0ZV07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgSG9va3NEaXNwYXRjaGVyLnVzZUZvcm1TdGF0ZSA9IHVzZUFjdGlvblN0YXRlO1xuICAgIEhvb2tzRGlzcGF0Y2hlci51c2VBY3Rpb25TdGF0ZSA9IHVzZUFjdGlvblN0YXRlO1xuICAgIHZhciBjdXJyZW50UmVzdW1hYmxlU3RhdGUgPSBudWxsLFxuICAgICAgY3VycmVudFRhc2tJbkRFViA9IG51bGwsXG4gICAgICBEZWZhdWx0QXN5bmNEaXNwYXRjaGVyID0ge1xuICAgICAgICBnZXRDYWNoZUZvclR5cGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgICAgIH0sXG4gICAgICAgIGdldE93bmVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGwgPT09IGN1cnJlbnRUYXNrSW5ERVZcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiBjdXJyZW50VGFza0luREVWLmNvbXBvbmVudFN0YWNrO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZGlzYWJsZWREZXB0aCA9IDAsXG4gICAgICBwcmV2TG9nLFxuICAgICAgcHJldkluZm8sXG4gICAgICBwcmV2V2FybixcbiAgICAgIHByZXZFcnJvcixcbiAgICAgIHByZXZHcm91cCxcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCxcbiAgICAgIHByZXZHcm91cEVuZDtcbiAgICBkaXNhYmxlZExvZy5fX3JlYWN0RGlzYWJsZWRMb2cgPSAhMDtcbiAgICB2YXIgcHJlZml4LFxuICAgICAgc3VmZml4LFxuICAgICAgcmVlbnRyeSA9ICExO1xuICAgIHZhciBjb21wb25lbnRGcmFtZUNhY2hlID0gbmV3IChcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFdlYWtNYXAgPyBXZWFrTWFwIDogTWFwXG4gICAgKSgpO1xuICAgIHZhciBjYWxsQ29tcG9uZW50ID0ge1xuICAgICAgICBcInJlYWN0LXN0YWNrLWJvdHRvbS1mcmFtZVwiOiBmdW5jdGlvbiAoQ29tcG9uZW50LCBwcm9wcywgc2Vjb25kQXJnKSB7XG4gICAgICAgICAgcmV0dXJuIENvbXBvbmVudChwcm9wcywgc2Vjb25kQXJnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNhbGxDb21wb25lbnRJbkRFViA9XG4gICAgICAgIGNhbGxDb21wb25lbnRbXCJyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVcIl0uYmluZChjYWxsQ29tcG9uZW50KSxcbiAgICAgIGNhbGxSZW5kZXIgPSB7XG4gICAgICAgIFwicmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lXCI6IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNhbGxSZW5kZXJJbkRFViA9IGNhbGxSZW5kZXJbXCJyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVcIl0uYmluZChjYWxsUmVuZGVyKSxcbiAgICAgIGNhbGxMYXp5SW5pdCA9IHtcbiAgICAgICAgXCJyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVcIjogZnVuY3Rpb24gKGxhenkpIHtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenkuX2luaXQ7XG4gICAgICAgICAgcmV0dXJuIGluaXQobGF6eS5fcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjYWxsTGF6eUluaXRJbkRFViA9XG4gICAgICAgIGNhbGxMYXp5SW5pdFtcInJlYWN0LXN0YWNrLWJvdHRvbS1mcmFtZVwiXS5iaW5kKGNhbGxMYXp5SW5pdCksXG4gICAgICBDTElFTlRfUkVOREVSRUQgPSA0LFxuICAgICAgUEVORElORyA9IDAsXG4gICAgICBDT01QTEVURUQgPSAxLFxuICAgICAgRkxVU0hFRCA9IDIsXG4gICAgICBQT1NUUE9ORUQgPSA1LFxuICAgICAgQ0xPU0VEID0gMTQsXG4gICAgICBjdXJyZW50UmVxdWVzdCA9IG51bGwsXG4gICAgICBkaWRXYXJuQWJvdXRCYWRDbGFzcyA9IHt9LFxuICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVzID0ge30sXG4gICAgICBkaWRXYXJuQWJvdXRDb250ZXh0VHlwZU9uRnVuY3Rpb25Db21wb25lbnQgPSB7fSxcbiAgICAgIGRpZFdhcm5BYm91dEdldERlcml2ZWRTdGF0ZU9uRnVuY3Rpb25Db21wb25lbnQgPSB7fSxcbiAgICAgIGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSAhMSxcbiAgICAgIGRpZFdhcm5BYm91dEdlbmVyYXRvcnMgPSAhMSxcbiAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSAhMTtcbiAgICBleHBvcnRzLnJlbmRlclRvU3RhdGljTWFya3VwID0gZnVuY3Rpb24gKGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gcmVuZGVyVG9TdHJpbmdJbXBsKFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgITAsXG4gICAgICAgICdUaGUgc2VydmVyIHVzZWQgXCJyZW5kZXJUb1N0YXRpY01hcmt1cFwiIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgU3VzcGVuc2UuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byBcInJlbmRlclRvUmVhZGFibGVTdHJlYW1cIiB3aGljaCBzdXBwb3J0cyBTdXNwZW5zZSBvbiB0aGUgc2VydmVyJ1xuICAgICAgKTtcbiAgICB9O1xuICAgIGV4cG9ydHMucmVuZGVyVG9TdHJpbmcgPSBmdW5jdGlvbiAoY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiByZW5kZXJUb1N0cmluZ0ltcGwoXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICAhMSxcbiAgICAgICAgJ1RoZSBzZXJ2ZXIgdXNlZCBcInJlbmRlclRvU3RyaW5nXCIgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBTdXNwZW5zZS4gSWYgeW91IGludGVuZGVkIGZvciB0aGlzIFN1c3BlbnNlIGJvdW5kYXJ5IHRvIHJlbmRlciB0aGUgZmFsbGJhY2sgY29udGVudCBvbiB0aGUgc2VydmVyIGNvbnNpZGVyIHRocm93aW5nIGFuIEVycm9yIHNvbWV3aGVyZSB3aXRoaW4gdGhlIFN1c3BlbnNlIGJvdW5kYXJ5LiBJZiB5b3UgaW50ZW5kZWQgdG8gaGF2ZSB0aGUgc2VydmVyIHdhaXQgZm9yIHRoZSBzdXNwZW5kZWQgY29tcG9uZW50IHBsZWFzZSBzd2l0Y2ggdG8gXCJyZW5kZXJUb1JlYWRhYmxlU3RyZWFtXCIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcidcbiAgICAgICk7XG4gICAgfTtcbiAgICBleHBvcnRzLnZlcnNpb24gPSBcIjE5LjAuMFwiO1xuICB9KSgpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js\n"));
/***/ }),
/***/ "./node_modules/react-dom/cjs/react-dom-server.browser.development.js":
/*!****************************************************************************!*\
!*** ./node_modules/react-dom/cjs/react-dom-server.browser.development.js ***!
\****************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-dom-server.browser.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n\n\n JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n\n Copyright (c) 2011 Gary Court\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\n true &&\n (function () {\n function styleReplacer(match, prefix, s, suffix) {\n return \"\" + prefix + (\"s\" === s ? \"\\\\73 \" : \"\\\\53 \") + suffix;\n }\n function scriptReplacer(match, prefix, s, suffix) {\n return \"\" + prefix + (\"s\" === s ? \"\\\\u0073\" : \"\\\\u0053\") + suffix;\n }\n function objectName(object) {\n return Object.prototype.toString\n .call(object)\n .replace(/^\\[object (.*)\\]$/, function (m, p0) {\n return p0;\n });\n }\n function describeKeyForErrorMessage(key) {\n var encodedKey = JSON.stringify(key);\n return '\"' + key + '\"' === encodedKey ? key : encodedKey;\n }\n function describeValueForErrorMessage(value) {\n switch (typeof value) {\n case \"string\":\n return JSON.stringify(\n 10 >= value.length ? value : value.slice(0, 10) + \"...\"\n );\n case \"object\":\n if (isArrayImpl(value)) return \"[...]\";\n if (null !== value && value.$$typeof === CLIENT_REFERENCE_TAG)\n return \"client\";\n value = objectName(value);\n return \"Object\" === value ? \"{...}\" : value;\n case \"function\":\n return value.$$typeof === CLIENT_REFERENCE_TAG\n ? \"client\"\n : (value = value.displayName || value.name)\n ? \"function \" + value\n : \"function\";\n default:\n return String(value);\n }\n }\n function describeElementType(type) {\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeElementType(type.render);\n case REACT_MEMO_TYPE:\n return describeElementType(type.type);\n case REACT_LAZY_TYPE:\n var payload = type._payload;\n type = type._init;\n try {\n return describeElementType(type(payload));\n } catch (x) {}\n }\n return \"\";\n }\n function describeObjectForErrorMessage(objectOrArray, expandedName) {\n var objKind = objectName(objectOrArray);\n if (\"Object\" !== objKind && \"Array\" !== objKind) return objKind;\n var start = -1,\n length = 0;\n if (isArrayImpl(objectOrArray))\n if (jsxChildrenParents.has(objectOrArray)) {\n var type = jsxChildrenParents.get(objectOrArray);\n objKind = \"<\" + describeElementType(type) + \">\";\n for (var i = 0; i < objectOrArray.length; i++) {\n var value = objectOrArray[i];\n value =\n \"string\" === typeof value\n ? value\n : \"object\" === typeof value && null !== value\n ? \"{\" + describeObjectForErrorMessage(value) + \"}\"\n : \"{\" + describeValueForErrorMessage(value) + \"}\";\n \"\" + i === expandedName\n ? ((start = objKind.length),\n (length = value.length),\n (objKind += value))\n : (objKind =\n 15 > value.length && 40 > objKind.length + value.length\n ? objKind + value\n : objKind + \"{...}\");\n }\n objKind += \"</\" + describeElementType(type) + \">\";\n } else {\n objKind = \"[\";\n for (type = 0; type < objectOrArray.length; type++)\n 0 < type && (objKind += \", \"),\n (i = objectOrArray[type]),\n (i =\n \"object\" === typeof i && null !== i\n ? describeObjectForErrorMessage(i)\n : describeValueForErrorMessage(i)),\n \"\" + type === expandedName\n ? ((start = objKind.length),\n (length = i.length),\n (objKind += i))\n : (objKind =\n 10 > i.length && 40 > objKind.length + i.length\n ? objKind + i\n : objKind + \"...\");\n objKind += \"]\";\n }\n else if (objectOrArray.$$typeof === REACT_ELEMENT_TYPE)\n objKind = \"<\" + describeElementType(objectOrArray.type) + \"/>\";\n else {\n if (objectOrArray.$$typeof === CLIENT_REFERENCE_TAG) return \"client\";\n if (jsxPropsParents.has(objectOrArray)) {\n objKind = jsxPropsParents.get(objectOrArray);\n objKind = \"<\" + (describeElementType(objKind) || \"...\");\n type = Object.keys(objectOrArray);\n for (i = 0; i < type.length; i++) {\n objKind += \" \";\n value = type[i];\n objKind += describeKeyForErrorMessage(value) + \"=\";\n var _value2 = objectOrArray[value];\n var _substr2 =\n value === expandedName &&\n \"object\" === typeof _value2 &&\n null !== _value2\n ? describeObjectForErrorMessage(_value2)\n : describeValueForErrorMessage(_value2);\n \"string\" !== typeof _value2 && (_substr2 = \"{\" + _substr2 + \"}\");\n value === expandedName\n ? ((start = objKind.length),\n (length = _substr2.length),\n (objKind += _substr2))\n : (objKind =\n 10 > _substr2.length && 40 > objKind.length + _substr2.length\n ? objKind + _substr2\n : objKind + \"...\");\n }\n objKind += \">\";\n } else {\n objKind = \"{\";\n type = Object.keys(objectOrArray);\n for (i = 0; i < type.length; i++)\n 0 < i && (objKind += \", \"),\n (value = type[i]),\n (objKind += describeKeyForErrorMessage(value) + \": \"),\n (_value2 = objectOrArray[value]),\n (_value2 =\n \"object\" === typeof _value2 && null !== _value2\n ? describeObjectForErrorMessage(_value2)\n : describeValueForErrorMessage(_value2)),\n value === expandedName\n ? ((start = objKind.length),\n (length = _value2.length),\n (objKind += _value2))\n : (objKind =\n 10 > _value2.length && 40 > objKind.length + _value2.length\n ? objKind + _value2\n : objKind + \"...\");\n objKind += \"}\";\n }\n }\n return void 0 === expandedName\n ? objKind\n : -1 < start && 0 < length\n ? ((objectOrArray = \" \".repeat(start) + \"^\".repeat(length)),\n \"\\n \" + objKind + \"\\n \" + objectOrArray)\n : \"\\n \" + objKind;\n }\n function murmurhash3_32_gc(key, seed) {\n var remainder = key.length & 3;\n var bytes = key.length - remainder;\n var h1 = seed;\n for (seed = 0; seed < bytes; ) {\n var k1 =\n (key.charCodeAt(seed) & 255) |\n ((key.charCodeAt(++seed) & 255) << 8) |\n ((key.charCodeAt(++seed) & 255) << 16) |\n ((key.charCodeAt(++seed) & 255) << 24);\n ++seed;\n k1 =\n (3432918353 * (k1 & 65535) +\n (((3432918353 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 =\n (461845907 * (k1 & 65535) +\n (((461845907 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 =\n (5 * (h1 & 65535) + (((5 * (h1 >>> 16)) & 65535) << 16)) & 4294967295;\n h1 = (h1 & 65535) + 27492 + ((((h1 >>> 16) + 58964) & 65535) << 16);\n }\n k1 = 0;\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(seed + 2) & 255) << 16;\n case 2:\n k1 ^= (key.charCodeAt(seed + 1) & 255) << 8;\n case 1:\n (k1 ^= key.charCodeAt(seed) & 255),\n (k1 =\n (3432918353 * (k1 & 65535) +\n (((3432918353 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295),\n (k1 = (k1 << 15) | (k1 >>> 17)),\n (h1 ^=\n (461845907 * (k1 & 65535) +\n (((461845907 * (k1 >>> 16)) & 65535) << 16)) &\n 4294967295);\n }\n h1 ^= key.length;\n h1 ^= h1 >>> 16;\n h1 =\n (2246822507 * (h1 & 65535) +\n (((2246822507 * (h1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n h1 ^= h1 >>> 13;\n h1 =\n (3266489909 * (h1 & 65535) +\n (((3266489909 * (h1 >>> 16)) & 65535) << 16)) &\n 4294967295;\n return (h1 ^ (h1 >>> 16)) >>> 0;\n }\n function scheduleWork(callback) {\n taskQueue.push(callback);\n channel.port2.postMessage(null);\n }\n function handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n }\n function writeChunk(destination, chunk) {\n if (0 !== chunk.byteLength)\n if (2048 < chunk.byteLength)\n 0 < writtenBytes &&\n (destination.enqueue(\n new Uint8Array(currentView.buffer, 0, writtenBytes)\n ),\n (currentView = new Uint8Array(2048)),\n (writtenBytes = 0)),\n destination.enqueue(chunk);\n else {\n var allowableBytes = currentView.length - writtenBytes;\n allowableBytes < chunk.byteLength &&\n (0 === allowableBytes\n ? destination.enqueue(currentView)\n : (currentView.set(\n chunk.subarray(0, allowableBytes),\n writtenBytes\n ),\n destination.enqueue(currentView),\n (chunk = chunk.subarray(allowableBytes))),\n (currentView = new Uint8Array(2048)),\n (writtenBytes = 0));\n currentView.set(chunk, writtenBytes);\n writtenBytes += chunk.byteLength;\n }\n }\n function writeChunkAndReturn(destination, chunk) {\n writeChunk(destination, chunk);\n return !0;\n }\n function completeWriting(destination) {\n currentView &&\n 0 < writtenBytes &&\n (destination.enqueue(\n new Uint8Array(currentView.buffer, 0, writtenBytes)\n ),\n (currentView = null),\n (writtenBytes = 0));\n }\n function stringToChunk(content) {\n return textEncoder.encode(content);\n }\n function stringToPrecomputedChunk(content) {\n content = textEncoder.encode(content);\n 2048 < content.byteLength &&\n console.error(\n \"precomputed chunks must be smaller than the view size configured for this host. This is a bug in React.\"\n );\n return content;\n }\n function closeWithError(destination, error) {\n \"function\" === typeof destination.error\n ? destination.error(error)\n : destination.close();\n }\n function typeName(value) {\n return (\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\"\n );\n }\n function willCoercionThrow(value) {\n try {\n return testStringCoercion(value), !1;\n } catch (e) {\n return !0;\n }\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkAttributeStringCoercion(value, attributeName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.\",\n attributeName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkCSSPropertyStringCoercion(value, propName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.\",\n propName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkHtmlStringCoercion(value) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before using it here.\",\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName))\n return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n console.error(\"Invalid attribute name: `%s`\", attributeName);\n return !1;\n }\n function checkControlledValueProps(tagName, props) {\n hasReadOnlyValue[props.type] ||\n props.onChange ||\n props.onInput ||\n props.readOnly ||\n props.disabled ||\n null == props.value ||\n (\"select\" === tagName\n ? console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.\"\n )\n : console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.\"\n ));\n props.onChange ||\n props.readOnly ||\n props.disabled ||\n null == props.checked ||\n console.error(\n \"You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.\"\n );\n }\n function validateProperty$1(tagName, name) {\n if (\n hasOwnProperty.call(warnedProperties$1, name) &&\n warnedProperties$1[name]\n )\n return !0;\n if (rARIACamel$1.test(name)) {\n tagName = \"aria-\" + name.slice(4).toLowerCase();\n tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;\n if (null == tagName)\n return (\n console.error(\n \"Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.\",\n name\n ),\n (warnedProperties$1[name] = !0)\n );\n if (name !== tagName)\n return (\n console.error(\n \"Invalid ARIA attribute `%s`. Did you mean `%s`?\",\n name,\n tagName\n ),\n (warnedProperties$1[name] = !0)\n );\n }\n if (rARIA$1.test(name)) {\n tagName = name.toLowerCase();\n tagName = ariaProperties.hasOwnProperty(tagName) ? tagName : null;\n if (null == tagName) return (warnedProperties$1[name] = !0), !1;\n name !== tagName &&\n (console.error(\n \"Unknown ARIA attribute `%s`. Did you mean `%s`?\",\n name,\n tagName\n ),\n (warnedProperties$1[name] = !0));\n }\n return !0;\n }\n function validateProperties$2(type, props) {\n var invalidProps = [],\n key;\n for (key in props)\n validateProperty$1(type, key) || invalidProps.push(key);\n props = invalidProps\n .map(function (prop) {\n return \"`\" + prop + \"`\";\n })\n .join(\", \");\n 1 === invalidProps.length\n ? console.error(\n \"Invalid aria prop %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props\",\n props,\n type\n )\n : 1 < invalidProps.length &&\n console.error(\n \"Invalid aria props %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props\",\n props,\n type\n );\n }\n function validateProperty(tagName, name, value, eventRegistry) {\n if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name])\n return !0;\n var lowerCasedName = name.toLowerCase();\n if (\"onfocusin\" === lowerCasedName || \"onfocusout\" === lowerCasedName)\n return (\n console.error(\n \"React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\n \"function\" === typeof value &&\n ((\"form\" === tagName && \"action\" === name) ||\n (\"input\" === tagName && \"formAction\" === name) ||\n (\"button\" === tagName && \"formAction\" === name))\n )\n return !0;\n if (null != eventRegistry) {\n tagName = eventRegistry.possibleRegistrationNames;\n if (eventRegistry.registrationNameDependencies.hasOwnProperty(name))\n return !0;\n eventRegistry = tagName.hasOwnProperty(lowerCasedName)\n ? tagName[lowerCasedName]\n : null;\n if (null != eventRegistry)\n return (\n console.error(\n \"Invalid event handler property `%s`. Did you mean `%s`?\",\n name,\n eventRegistry\n ),\n (warnedProperties[name] = !0)\n );\n if (EVENT_NAME_REGEX.test(name))\n return (\n console.error(\n \"Unknown event handler property `%s`. It will be ignored.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n } else if (EVENT_NAME_REGEX.test(name))\n return (\n INVALID_EVENT_NAME_REGEX.test(name) &&\n console.error(\n \"Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n if (rARIA.test(name) || rARIACamel.test(name)) return !0;\n if (\"innerhtml\" === lowerCasedName)\n return (\n console.error(\n \"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\"aria\" === lowerCasedName)\n return (\n console.error(\n \"The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead.\"\n ),\n (warnedProperties[name] = !0)\n );\n if (\n \"is\" === lowerCasedName &&\n null !== value &&\n void 0 !== value &&\n \"string\" !== typeof value\n )\n return (\n console.error(\n \"Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.\",\n typeof value\n ),\n (warnedProperties[name] = !0)\n );\n if (\"number\" === typeof value && isNaN(value))\n return (\n console.error(\n \"Received NaN for the `%s` attribute. If this is expected, cast the value to a string.\",\n name\n ),\n (warnedProperties[name] = !0)\n );\n if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n if (\n ((lowerCasedName = possibleStandardNames[lowerCasedName]),\n lowerCasedName !== name)\n )\n return (\n console.error(\n \"Invalid DOM property `%s`. Did you mean `%s`?\",\n name,\n lowerCasedName\n ),\n (warnedProperties[name] = !0)\n );\n } else if (name !== lowerCasedName)\n return (\n console.error(\n \"React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.\",\n name,\n lowerCasedName\n ),\n (warnedProperties[name] = !0)\n );\n switch (name) {\n case \"dangerouslySetInnerHTML\":\n case \"children\":\n case \"style\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n return !0;\n case \"innerText\":\n case \"textContent\":\n return !0;\n }\n switch (typeof value) {\n case \"boolean\":\n switch (name) {\n case \"autoFocus\":\n case \"checked\":\n case \"multiple\":\n case \"muted\":\n case \"selected\":\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n case \"capture\":\n case \"download\":\n case \"inert\":\n return !0;\n default:\n lowerCasedName = name.toLowerCase().slice(0, 5);\n if (\"data-\" === lowerCasedName || \"aria-\" === lowerCasedName)\n return !0;\n value\n ? console.error(\n 'Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.',\n value,\n name,\n name,\n value,\n name\n )\n : console.error(\n 'Received `%s` for a non-boolean attribute `%s`.\\n\\nIf you want to write it to the DOM, pass a string instead: %s=\"%s\" or %s={value.toString()}.\\n\\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.',\n value,\n name,\n name,\n value,\n name,\n name,\n name\n );\n return (warnedProperties[name] = !0);\n }\n case \"function\":\n case \"symbol\":\n return (warnedProperties[name] = !0), !1;\n case \"string\":\n if (\"false\" === value || \"true\" === value) {\n switch (name) {\n case \"checked\":\n case \"selected\":\n case \"multiple\":\n case \"muted\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n case \"inert\":\n break;\n default:\n return !0;\n }\n console.error(\n \"Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?\",\n value,\n name,\n \"false\" === value\n ? \"The browser will interpret it as a truthy value.\"\n : 'Although this works, it will not work as expected if you pass the string \"false\".',\n name,\n value\n );\n warnedProperties[name] = !0;\n }\n }\n return !0;\n }\n function warnUnknownProperties(type, props, eventRegistry) {\n var unknownProps = [],\n key;\n for (key in props)\n validateProperty(type, key, props[key], eventRegistry) ||\n unknownProps.push(key);\n props = unknownProps\n .map(function (prop) {\n return \"`\" + prop + \"`\";\n })\n .join(\", \");\n 1 === unknownProps.length\n ? console.error(\n \"Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://react.dev/link/attribute-behavior \",\n props,\n type\n )\n : 1 < unknownProps.length &&\n console.error(\n \"Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://react.dev/link/attribute-behavior \",\n props,\n type\n );\n }\n function camelize(string) {\n return string.replace(hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n }\n function escapeTextForBrowser(text) {\n if (\n \"boolean\" === typeof text ||\n \"number\" === typeof text ||\n \"bigint\" === typeof text\n )\n return \"\" + text;\n checkHtmlStringCoercion(text);\n text = \"\" + text;\n var match = matchHtmlRegExp.exec(text);\n if (match) {\n var html = \"\",\n index,\n lastIndex = 0;\n for (index = match.index; index < text.length; index++) {\n switch (text.charCodeAt(index)) {\n case 34:\n match = \"&quot;\";\n break;\n case 38:\n match = \"&amp;\";\n break;\n case 39:\n match = \"&#x27;\";\n break;\n case 60:\n match = \"&lt;\";\n break;\n case 62:\n match = \"&gt;\";\n break;\n default:\n continue;\n }\n lastIndex !== index && (html += text.slice(lastIndex, index));\n lastIndex = index + 1;\n html += match;\n }\n text = lastIndex !== index ? html + text.slice(lastIndex, index) : html;\n }\n return text;\n }\n function sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n }\n function escapeEntireInlineScriptContent(scriptText) {\n checkHtmlStringCoercion(scriptText);\n return (\"\" + scriptText).replace(scriptRegex, scriptReplacer);\n }\n function createRenderState(\n resumableState,\n nonce,\n externalRuntimeConfig,\n importMap,\n onHeaders,\n maxHeadersLength\n ) {\n var inlineScriptWithNonce =\n void 0 === nonce\n ? startInlineScript\n : stringToPrecomputedChunk(\n '<script nonce=\"' + escapeTextForBrowser(nonce) + '\">'\n ),\n idPrefix = resumableState.idPrefix;\n externalRuntimeConfig = [];\n var bootstrapScriptContent = resumableState.bootstrapScriptContent,\n bootstrapScripts = resumableState.bootstrapScripts,\n bootstrapModules = resumableState.bootstrapModules;\n void 0 !== bootstrapScriptContent &&\n externalRuntimeConfig.push(\n inlineScriptWithNonce,\n stringToChunk(\n escapeEntireInlineScriptContent(bootstrapScriptContent)\n ),\n endInlineScript\n );\n bootstrapScriptContent = [];\n void 0 !== importMap &&\n (bootstrapScriptContent.push(importMapScriptStart),\n bootstrapScriptContent.push(\n stringToChunk(\n escapeEntireInlineScriptContent(JSON.stringify(importMap))\n )\n ),\n bootstrapScriptContent.push(importMapScriptEnd));\n onHeaders &&\n \"number\" === typeof maxHeadersLength &&\n 0 >= maxHeadersLength &&\n console.error(\n \"React expected a positive non-zero `maxHeadersLength` option but found %s instead. When using the `onHeaders` option you may supply an optional `maxHeadersLength` option as well however, when setting this value to zero or less no headers will be captured.\",\n 0 === maxHeadersLength ? \"zero\" : maxHeadersLength\n );\n importMap = onHeaders\n ? {\n preconnects: \"\",\n fontPreloads: \"\",\n highImagePreloads: \"\",\n remainingCapacity:\n 2 +\n (\"number\" === typeof maxHeadersLength ? maxHeadersLength : 2e3)\n }\n : null;\n onHeaders = {\n placeholderPrefix: stringToPrecomputedChunk(idPrefix + \"P:\"),\n segmentPrefix: stringToPrecomputedChunk(idPrefix + \"S:\"),\n boundaryPrefix: stringToPrecomputedChunk(idPrefix + \"B:\"),\n startInlineScript: inlineScriptWithNonce,\n htmlChunks: null,\n headChunks: null,\n externalRuntimeScript: null,\n bootstrapChunks: externalRuntimeConfig,\n importMapChunks: bootstrapScriptContent,\n onHeaders: onHeaders,\n headers: importMap,\n resets: {\n font: {},\n dns: {},\n connect: { default: {}, anonymous: {}, credentials: {} },\n image: {},\n style: {}\n },\n charsetChunks: [],\n viewportChunks: [],\n hoistableChunks: [],\n preconnects: new Set(),\n fontPreloads: new Set(),\n highImagePreloads: new Set(),\n styles: new Map(),\n bootstrapScripts: new Set(),\n scripts: new Set(),\n bulkPreloads: new Set(),\n preloads: {\n images: new Map(),\n stylesheets: new Map(),\n scripts: new Map(),\n moduleScripts: new Map()\n },\n nonce: nonce,\n hoistableState: null,\n stylesToHoist: !1\n };\n if (void 0 !== bootstrapScripts)\n for (importMap = 0; importMap < bootstrapScripts.length; importMap++) {\n maxHeadersLength = bootstrapScripts[importMap];\n bootstrapScriptContent = idPrefix = void 0;\n var props = {\n rel: \"preload\",\n as: \"script\",\n fetchPriority: \"low\",\n nonce: nonce\n };\n \"string\" === typeof maxHeadersLength\n ? (props.href = inlineScriptWithNonce = maxHeadersLength)\n : ((props.href = inlineScriptWithNonce = maxHeadersLength.src),\n (props.integrity = bootstrapScriptContent =\n \"string\" === typeof maxHeadersLength.integrity\n ? maxHeadersLength.integrity\n : void 0),\n (props.crossOrigin = idPrefix =\n \"string\" === typeof maxHeadersLength ||\n null == maxHeadersLength.crossOrigin\n ? void 0\n : \"use-credentials\" === maxHeadersLength.crossOrigin\n ? \"use-credentials\"\n : \"\"));\n preloadBootstrapScriptOrModule(\n resumableState,\n onHeaders,\n inlineScriptWithNonce,\n props\n );\n externalRuntimeConfig.push(\n startScriptSrc,\n stringToChunk(escapeTextForBrowser(inlineScriptWithNonce))\n );\n nonce &&\n externalRuntimeConfig.push(\n scriptNonce,\n stringToChunk(escapeTextForBrowser(nonce))\n );\n \"string\" === typeof bootstrapScriptContent &&\n externalRuntimeConfig.push(\n scriptIntegirty,\n stringToChunk(escapeTextForBrowser(bootstrapScriptContent))\n );\n \"string\" === typeof idPrefix &&\n externalRuntimeConfig.push(\n scriptCrossOrigin,\n stringToChunk(escapeTextForBrowser(idPrefix))\n );\n externalRuntimeConfig.push(endAsyncScript);\n }\n if (void 0 !== bootstrapModules)\n for (\n bootstrapScripts = 0;\n bootstrapScripts < bootstrapModules.length;\n bootstrapScripts++\n )\n (importMap = bootstrapModules[bootstrapScripts]),\n (idPrefix = inlineScriptWithNonce = void 0),\n (bootstrapScriptContent = {\n rel: \"modulepreload\",\n fetchPriority: \"low\",\n nonce: nonce\n }),\n \"string\" === typeof importMap\n ? (bootstrapScriptContent.href = maxHeadersLength = importMap)\n : ((bootstrapScriptContent.href = maxHeadersLength =\n importMap.src),\n (bootstrapScriptContent.integrity = idPrefix =\n \"string\" === typeof importMap.integrity\n ? importMap.integrity\n : void 0),\n (bootstrapScriptContent.crossOrigin = inlineScriptWithNonce =\n \"string\" === typeof importMap || null == importMap.crossOrigin\n ? void 0\n : \"use-credentials\" === importMap.crossOrigin\n ? \"use-credentials\"\n : \"\")),\n preloadBootstrapScriptOrModule(\n resumableState,\n onHeaders,\n maxHeadersLength,\n bootstrapScriptContent\n ),\n externalRuntimeConfig.push(\n startModuleSrc,\n stringToChunk(escapeTextForBrowser(maxHeadersLength))\n ),\n nonce &&\n externalRuntimeConfig.push(\n scriptNonce,\n stringToChunk(escapeTextForBrowser(nonce))\n ),\n \"string\" === typeof idPrefix &&\n externalRuntimeConfig.push(\n scriptIntegirty,\n stringToChunk(escapeTextForBrowser(idPrefix))\n ),\n \"string\" === typeof inlineScriptWithNonce &&\n externalRuntimeConfig.push(\n scriptCrossOrigin,\n stringToChunk(escapeTextForBrowser(inlineScriptWithNonce))\n ),\n externalRuntimeConfig.push(endAsyncScript);\n return onHeaders;\n }\n function createResumableState(\n identifierPrefix,\n externalRuntimeConfig,\n bootstrapScriptContent,\n bootstrapScripts,\n bootstrapModules\n ) {\n return {\n idPrefix: void 0 === identifierPrefix ? \"\" : identifierPrefix,\n nextFormID: 0,\n streamingFormat: 0,\n bootstrapScriptContent: bootstrapScriptContent,\n bootstrapScripts: bootstrapScripts,\n bootstrapModules: bootstrapModules,\n instructions: NothingSent,\n hasBody: !1,\n hasHtml: !1,\n unknownResources: {},\n dnsResources: {},\n connectResources: { default: {}, anonymous: {}, credentials: {} },\n imageResources: {},\n styleResources: {},\n scriptResources: {},\n moduleUnknownResources: {},\n moduleScriptResources: {}\n };\n }\n function createFormatContext(insertionMode, selectedValue, tagScope) {\n return {\n insertionMode: insertionMode,\n selectedValue: selectedValue,\n tagScope: tagScope\n };\n }\n function createRootFormatContext(namespaceURI) {\n return createFormatContext(\n \"http://www.w3.org/2000/svg\" === namespaceURI\n ? SVG_MODE\n : \"http://www.w3.org/1998/Math/MathML\" === namespaceURI\n ? MATHML_MODE\n : ROOT_HTML_MODE,\n null,\n 0\n );\n }\n function getChildFormatContext(parentContext, type, props) {\n switch (type) {\n case \"noscript\":\n return createFormatContext(\n HTML_MODE,\n null,\n parentContext.tagScope | 1\n );\n case \"select\":\n return createFormatContext(\n HTML_MODE,\n null != props.value ? props.value : props.defaultValue,\n parentContext.tagScope\n );\n case \"svg\":\n return createFormatContext(SVG_MODE, null, parentContext.tagScope);\n case \"picture\":\n return createFormatContext(\n HTML_MODE,\n null,\n parentContext.tagScope | 2\n );\n case \"math\":\n return createFormatContext(MATHML_MODE, null, parentContext.tagScope);\n case \"foreignObject\":\n return createFormatContext(HTML_MODE, null, parentContext.tagScope);\n case \"table\":\n return createFormatContext(\n HTML_TABLE_MODE,\n null,\n parentContext.tagScope\n );\n case \"thead\":\n case \"tbody\":\n case \"tfoot\":\n return createFormatContext(\n HTML_TABLE_BODY_MODE,\n null,\n parentContext.tagScope\n );\n case \"colgroup\":\n return createFormatContext(\n HTML_COLGROUP_MODE,\n null,\n parentContext.tagScope\n );\n case \"tr\":\n return createFormatContext(\n HTML_TABLE_ROW_MODE,\n null,\n parentContext.tagScope\n );\n }\n return parentContext.insertionMode >= HTML_TABLE_MODE\n ? createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext.insertionMode === ROOT_HTML_MODE\n ? \"html\" === type\n ? createFormatContext(HTML_HTML_MODE, null, parentContext.tagScope)\n : createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext.insertionMode === HTML_HTML_MODE\n ? createFormatContext(HTML_MODE, null, parentContext.tagScope)\n : parentContext;\n }\n function pushTextInstance(target, text, renderState, textEmbedded) {\n if (\"\" === text) return textEmbedded;\n textEmbedded && target.push(textSeparator);\n target.push(stringToChunk(escapeTextForBrowser(text)));\n return !0;\n }\n function pushStyleAttribute(target, style) {\n if (\"object\" !== typeof style)\n throw Error(\n \"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.\"\n );\n var isFirst = !0,\n styleName;\n for (styleName in style)\n if (hasOwnProperty.call(style, styleName)) {\n var styleValue = style[styleName];\n if (\n null != styleValue &&\n \"boolean\" !== typeof styleValue &&\n \"\" !== styleValue\n ) {\n if (0 === styleName.indexOf(\"--\")) {\n var nameChunk = stringToChunk(escapeTextForBrowser(styleName));\n checkCSSPropertyStringCoercion(styleValue, styleName);\n styleValue = stringToChunk(\n escapeTextForBrowser((\"\" + styleValue).trim())\n );\n } else {\n nameChunk = styleName;\n var value = styleValue;\n if (-1 < nameChunk.indexOf(\"-\")) {\n var name = nameChunk;\n (warnedStyleNames.hasOwnProperty(name) &&\n warnedStyleNames[name]) ||\n ((warnedStyleNames[name] = !0),\n console.error(\n \"Unsupported style property %s. Did you mean %s?\",\n name,\n camelize(name.replace(msPattern$1, \"ms-\"))\n ));\n } else if (badVendoredStyleNamePattern.test(nameChunk))\n (name = nameChunk),\n (warnedStyleNames.hasOwnProperty(name) &&\n warnedStyleNames[name]) ||\n ((warnedStyleNames[name] = !0),\n console.error(\n \"Unsupported vendor-prefixed style property %s. Did you mean %s?\",\n name,\n name.charAt(0).toUpperCase() + name.slice(1)\n ));\n else if (badStyleValueWithSemicolonPattern.test(value)) {\n name = nameChunk;\n var value$jscomp$0 = value;\n (warnedStyleValues.hasOwnProperty(value$jscomp$0) &&\n warnedStyleValues[value$jscomp$0]) ||\n ((warnedStyleValues[value$jscomp$0] = !0),\n console.error(\n 'Style property values shouldn\\'t contain a semicolon. Try \"%s: %s\" instead.',\n name,\n value$jscomp$0.replace(\n badStyleValueWithSemicolonPattern,\n \"\"\n )\n ));\n }\n \"number\" === typeof value &&\n (isNaN(value)\n ? warnedForNaNValue ||\n ((warnedForNaNValue = !0),\n console.error(\n \"`NaN` is an invalid value for the `%s` css style property.\",\n nameChunk\n ))\n : isFinite(value) ||\n warnedForInfinityValue ||\n ((warnedForInfinityValue = !0),\n console.error(\n \"`Infinity` is an invalid value for the `%s` css style property.\",\n nameChunk\n )));\n nameChunk = styleName;\n value = styleNameCache.get(nameChunk);\n void 0 !== value\n ? (nameChunk = value)\n : ((value = stringToPrecomputedChunk(\n escapeTextForBrowser(\n nameChunk\n .replace(uppercasePattern, \"-$1\")\n .toLowerCase()\n .replace(msPattern, \"-ms-\")\n )\n )),\n styleNameCache.set(nameChunk, value),\n (nameChunk = value));\n \"number\" === typeof styleValue\n ? (styleValue =\n 0 === styleValue || unitlessNumbers.has(styleName)\n ? stringToChunk(\"\" + styleValue)\n : stringToChunk(styleValue + \"px\"))\n : (checkCSSPropertyStringCoercion(styleValue, styleName),\n (styleValue = stringToChunk(\n escapeTextForBrowser((\"\" + styleValue).trim())\n )));\n }\n isFirst\n ? ((isFirst = !1),\n target.push(\n styleAttributeStart,\n nameChunk,\n styleAssign,\n styleValue\n ))\n : target.push(styleSeparator, nameChunk, styleAssign, styleValue);\n }\n }\n isFirst || target.push(attributeEnd);\n }\n function pushBooleanAttribute(target, name, value) {\n value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeEmptyString\n );\n }\n function pushStringAttribute(target, name, value) {\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n \"boolean\" !== typeof value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n }\n function pushAdditionalFormField(value, key) {\n this.push(startHiddenInputChunk);\n validateAdditionalFormField(value);\n pushStringAttribute(this, \"name\", key);\n pushStringAttribute(this, \"value\", value);\n this.push(endOfStartTagSelfClosing);\n }\n function validateAdditionalFormField(value) {\n if (\"string\" !== typeof value)\n throw Error(\n \"File/Blob fields are not yet supported in progressive forms. Will fallback to client hydration.\"\n );\n }\n function getCustomFormFields(resumableState, formAction) {\n if (\"function\" === typeof formAction.$$FORM_ACTION) {\n var id = resumableState.nextFormID++;\n resumableState = resumableState.idPrefix + id;\n try {\n var customFields = formAction.$$FORM_ACTION(resumableState);\n if (customFields) {\n var formData = customFields.data;\n null != formData && formData.forEach(validateAdditionalFormField);\n }\n return customFields;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n \"function\" === typeof x.then\n )\n throw x;\n console.error(\n \"Failed to serialize an action for progressive enhancement:\\n%s\",\n x\n );\n }\n }\n return null;\n }\n function pushFormActionAttribute(\n target,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n ) {\n var formData = null;\n if (\"function\" === typeof formAction) {\n null === name ||\n didWarnFormActionName ||\n ((didWarnFormActionName = !0),\n console.error(\n 'Cannot specify a \"name\" prop for a button that specifies a function as a formAction. React needs it to encode which action should be invoked. It will get overridden.'\n ));\n (null === formEncType && null === formMethod) ||\n didWarnFormActionMethod ||\n ((didWarnFormActionMethod = !0),\n console.error(\n \"Cannot specify a formEncType or formMethod for a button that specifies a function as a formAction. React provides those automatically. They will get overridden.\"\n ));\n null === formTarget ||\n didWarnFormActionTarget ||\n ((didWarnFormActionTarget = !0),\n console.error(\n \"Cannot specify a formTarget for a button that specifies a function as a formAction. The function will always be executed in the same window.\"\n ));\n var customFields = getCustomFormFields(resumableState, formAction);\n null !== customFields\n ? ((name = customFields.name),\n (formAction = customFields.action || \"\"),\n (formEncType = customFields.encType),\n (formMethod = customFields.method),\n (formTarget = customFields.target),\n (formData = customFields.data))\n : (target.push(\n attributeSeparator,\n stringToChunk(\"formAction\"),\n attributeAssign,\n actionJavaScriptURL,\n attributeEnd\n ),\n (formTarget = formMethod = formEncType = formAction = name = null),\n injectFormReplayingRuntime(resumableState, renderState));\n }\n null != name && pushAttribute(target, \"name\", name);\n null != formAction && pushAttribute(target, \"formAction\", formAction);\n null != formEncType && pushAttribute(target, \"formEncType\", formEncType);\n null != formMethod && pushAttribute(target, \"formMethod\", formMethod);\n null != formTarget && pushAttribute(target, \"formTarget\", formTarget);\n return formData;\n }\n function pushAttribute(target, name, value) {\n switch (name) {\n case \"className\":\n pushStringAttribute(target, \"class\", value);\n break;\n case \"tabIndex\":\n pushStringAttribute(target, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n pushStringAttribute(target, name, value);\n break;\n case \"style\":\n pushStyleAttribute(target, value);\n break;\n case \"src\":\n case \"href\":\n if (\"\" === value) {\n \"src\" === name\n ? console.error(\n 'An empty string (\"\") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n name,\n name\n )\n : console.error(\n 'An empty string (\"\") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n name,\n name\n );\n break;\n }\n case \"action\":\n case \"formAction\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n )\n break;\n checkAttributeStringCoercion(value, name);\n value = sanitizeURL(\"\" + value);\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"autoFocus\":\n case \"multiple\":\n case \"muted\":\n pushBooleanAttribute(target, name.toLowerCase(), value);\n break;\n case \"xlinkHref\":\n if (\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n )\n break;\n checkAttributeStringCoercion(value, name);\n value = sanitizeURL(\"\" + value);\n target.push(\n attributeSeparator,\n stringToChunk(\"xlink:href\"),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"inert\":\n \"\" !== value ||\n didWarnForNewBooleanPropsWithEmptyValue[name] ||\n ((didWarnForNewBooleanPropsWithEmptyValue[name] = !0),\n console.error(\n \"Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.\",\n name\n ));\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeEmptyString\n );\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeEmptyString\n )\n : !1 !== value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value &&\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"rowSpan\":\n case \"start\":\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value) ||\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n break;\n case \"xlinkActuate\":\n pushStringAttribute(target, \"xlink:actuate\", value);\n break;\n case \"xlinkArcrole\":\n pushStringAttribute(target, \"xlink:arcrole\", value);\n break;\n case \"xlinkRole\":\n pushStringAttribute(target, \"xlink:role\", value);\n break;\n case \"xlinkShow\":\n pushStringAttribute(target, \"xlink:show\", value);\n break;\n case \"xlinkTitle\":\n pushStringAttribute(target, \"xlink:title\", value);\n break;\n case \"xlinkType\":\n pushStringAttribute(target, \"xlink:type\", value);\n break;\n case \"xmlBase\":\n pushStringAttribute(target, \"xml:base\", value);\n break;\n case \"xmlLang\":\n pushStringAttribute(target, \"xml:lang\", value);\n break;\n case \"xmlSpace\":\n pushStringAttribute(target, \"xml:space\", value);\n break;\n default:\n if (\n !(2 < name.length) ||\n (\"o\" !== name[0] && \"O\" !== name[0]) ||\n (\"n\" !== name[1] && \"N\" !== name[1])\n )\n if (\n ((name = aliases.get(name) || name), isAttributeNameSafe(name))\n ) {\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n case \"boolean\":\n var prefix = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix && \"aria-\" !== prefix) return;\n }\n target.push(\n attributeSeparator,\n stringToChunk(name),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(value)),\n attributeEnd\n );\n }\n }\n }\n function pushInnerHTML(target, innerHTML, children) {\n if (null != innerHTML) {\n if (null != children)\n throw Error(\n \"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\"\n );\n if (\"object\" !== typeof innerHTML || !(\"__html\" in innerHTML))\n throw Error(\n \"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.\"\n );\n innerHTML = innerHTML.__html;\n null !== innerHTML &&\n void 0 !== innerHTML &&\n (checkHtmlStringCoercion(innerHTML),\n target.push(stringToChunk(\"\" + innerHTML)));\n }\n }\n function checkSelectProp(props, propName) {\n var value = props[propName];\n null != value &&\n ((value = isArrayImpl(value)),\n props.multiple && !value\n ? console.error(\n \"The `%s` prop supplied to <select> must be an array if `multiple` is true.\",\n propName\n )\n : !props.multiple &&\n value &&\n console.error(\n \"The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.\",\n propName\n ));\n }\n function flattenOptionChildren(children) {\n var content = \"\";\n React.Children.forEach(children, function (child) {\n null != child &&\n ((content += child),\n didWarnInvalidOptionChildren ||\n \"string\" === typeof child ||\n \"number\" === typeof child ||\n \"bigint\" === typeof child ||\n ((didWarnInvalidOptionChildren = !0),\n console.error(\n \"Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>.\"\n )));\n });\n return content;\n }\n function injectFormReplayingRuntime(resumableState, renderState) {\n (resumableState.instructions & 16) === NothingSent &&\n ((resumableState.instructions |= 16),\n renderState.bootstrapChunks.unshift(\n renderState.startInlineScript,\n formReplayingRuntimeScript,\n endInlineScript\n ));\n }\n function pushLinkImpl(target, props) {\n target.push(startChunkForTag(\"link\"));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"link is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTagSelfClosing);\n return null;\n }\n function escapeStyleTextContent(styleText) {\n checkHtmlStringCoercion(styleText);\n return (\"\" + styleText).replace(styleRegex, styleReplacer);\n }\n function pushSelfClosing(target, props, tag) {\n target.push(startChunkForTag(tag));\n for (var propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n tag +\n \" is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTagSelfClosing);\n return null;\n }\n function pushTitleImpl(target, props) {\n target.push(startChunkForTag(\"title\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n props = Array.isArray(children)\n ? 2 > children.length\n ? children[0]\n : null\n : children;\n \"function\" !== typeof props &&\n \"symbol\" !== typeof props &&\n null !== props &&\n void 0 !== props &&\n target.push(stringToChunk(escapeTextForBrowser(\"\" + props)));\n pushInnerHTML(target, innerHTML, children);\n target.push(endChunkForTag(\"title\"));\n return null;\n }\n function pushScriptImpl(target, props) {\n target.push(startChunkForTag(\"script\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n null != children &&\n \"string\" !== typeof children &&\n ((props =\n \"number\" === typeof children\n ? \"a number for children\"\n : Array.isArray(children)\n ? \"an array for children\"\n : \"something unexpected for children\"),\n console.error(\n \"A script element was rendered with %s. If script element has children it must be a single string. Consider using dangerouslySetInnerHTML or passing a plain string as children.\",\n props\n ));\n pushInnerHTML(target, innerHTML, children);\n \"string\" === typeof children &&\n target.push(stringToChunk(escapeEntireInlineScriptContent(children)));\n target.push(endChunkForTag(\"script\"));\n return null;\n }\n function pushStartGenericElement(target, props, tag) {\n target.push(startChunkForTag(tag));\n var innerHTML = (tag = null),\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n tag = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n default:\n pushAttribute(target, propKey, propValue);\n }\n }\n target.push(endOfStartTag);\n pushInnerHTML(target, innerHTML, tag);\n return \"string\" === typeof tag\n ? (target.push(stringToChunk(escapeTextForBrowser(tag))), null)\n : tag;\n }\n function startChunkForTag(tag) {\n var tagStartChunk = validatedTagCache.get(tag);\n if (void 0 === tagStartChunk) {\n if (!VALID_TAG_REGEX.test(tag)) throw Error(\"Invalid tag: \" + tag);\n tagStartChunk = stringToPrecomputedChunk(\"<\" + tag);\n validatedTagCache.set(tag, tagStartChunk);\n }\n return tagStartChunk;\n }\n function pushStartInstance(\n target$jscomp$0,\n type,\n props,\n resumableState,\n renderState,\n hoistableState,\n formatContext,\n textEmbedded,\n isFallback\n ) {\n validateProperties$2(type, props);\n (\"input\" !== type && \"textarea\" !== type && \"select\" !== type) ||\n null == props ||\n null !== props.value ||\n didWarnValueNull ||\n ((didWarnValueNull = !0),\n \"select\" === type && props.multiple\n ? console.error(\n \"`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.\",\n type\n )\n : console.error(\n \"`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.\",\n type\n ));\n b: if (-1 === type.indexOf(\"-\")) var JSCompiler_inline_result = !1;\n else\n switch (type) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n JSCompiler_inline_result = !1;\n break b;\n default:\n JSCompiler_inline_result = !0;\n }\n JSCompiler_inline_result ||\n \"string\" === typeof props.is ||\n warnUnknownProperties(type, props, null);\n !props.suppressContentEditableWarning &&\n props.contentEditable &&\n null != props.children &&\n console.error(\n \"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional.\"\n );\n formatContext.insertionMode !== SVG_MODE &&\n formatContext.insertionMode !== MATHML_MODE &&\n -1 === type.indexOf(\"-\") &&\n type.toLowerCase() !== type &&\n console.error(\n \"<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.\",\n type\n );\n switch (type) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n break;\n case \"a\":\n target$jscomp$0.push(startChunkForTag(\"a\"));\n var children = null,\n innerHTML = null,\n propKey;\n for (propKey in props)\n if (hasOwnProperty.call(props, propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"children\":\n children = propValue;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML = propValue;\n break;\n case \"href\":\n \"\" === propValue\n ? pushStringAttribute(target$jscomp$0, \"href\", \"\")\n : pushAttribute(target$jscomp$0, propKey, propValue);\n break;\n default:\n pushAttribute(target$jscomp$0, propKey, propValue);\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML, children);\n if (\"string\" === typeof children) {\n target$jscomp$0.push(stringToChunk(escapeTextForBrowser(children)));\n var JSCompiler_inline_result$jscomp$0 = null;\n } else JSCompiler_inline_result$jscomp$0 = children;\n return JSCompiler_inline_result$jscomp$0;\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"select\":\n checkControlledValueProps(\"select\", props);\n checkSelectProp(props, \"value\");\n checkSelectProp(props, \"defaultValue\");\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnDefaultSelectValue ||\n (console.error(\n \"Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://react.dev/link/controlled-components\"\n ),\n (didWarnDefaultSelectValue = !0));\n target$jscomp$0.push(startChunkForTag(\"select\"));\n var children$jscomp$0 = null,\n innerHTML$jscomp$0 = null,\n propKey$jscomp$0;\n for (propKey$jscomp$0 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$0)) {\n var propValue$jscomp$0 = props[propKey$jscomp$0];\n if (null != propValue$jscomp$0)\n switch (propKey$jscomp$0) {\n case \"children\":\n children$jscomp$0 = propValue$jscomp$0;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$0 = propValue$jscomp$0;\n break;\n case \"defaultValue\":\n case \"value\":\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$0,\n propValue$jscomp$0\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$0, children$jscomp$0);\n return children$jscomp$0;\n case \"option\":\n var selectedValue = formatContext.selectedValue;\n target$jscomp$0.push(startChunkForTag(\"option\"));\n var children$jscomp$1 = null,\n value = null,\n selected = null,\n innerHTML$jscomp$1 = null,\n propKey$jscomp$1;\n for (propKey$jscomp$1 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$1)) {\n var propValue$jscomp$1 = props[propKey$jscomp$1];\n if (null != propValue$jscomp$1)\n switch (propKey$jscomp$1) {\n case \"children\":\n children$jscomp$1 = propValue$jscomp$1;\n break;\n case \"selected\":\n selected = propValue$jscomp$1;\n didWarnSelectedSetOnOption ||\n (console.error(\n \"Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.\"\n ),\n (didWarnSelectedSetOnOption = !0));\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$1 = propValue$jscomp$1;\n break;\n case \"value\":\n value = propValue$jscomp$1;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$1,\n propValue$jscomp$1\n );\n }\n }\n if (null != selectedValue) {\n if (null !== value) {\n checkAttributeStringCoercion(value, \"value\");\n var stringValue = \"\" + value;\n } else\n null === innerHTML$jscomp$1 ||\n didWarnInvalidOptionInnerHTML ||\n ((didWarnInvalidOptionInnerHTML = !0),\n console.error(\n \"Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.\"\n )),\n (stringValue = flattenOptionChildren(children$jscomp$1));\n if (isArrayImpl(selectedValue))\n for (var i = 0; i < selectedValue.length; i++) {\n if (\n (checkAttributeStringCoercion(selectedValue[i], \"value\"),\n \"\" + selectedValue[i] === stringValue)\n ) {\n target$jscomp$0.push(selectedMarkerAttribute);\n break;\n }\n }\n else\n checkAttributeStringCoercion(selectedValue, \"select.value\"),\n \"\" + selectedValue === stringValue &&\n target$jscomp$0.push(selectedMarkerAttribute);\n } else selected && target$jscomp$0.push(selectedMarkerAttribute);\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$1, children$jscomp$1);\n return children$jscomp$1;\n case \"textarea\":\n checkControlledValueProps(\"textarea\", props);\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnDefaultTextareaValue ||\n (console.error(\n \"Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://react.dev/link/controlled-components\"\n ),\n (didWarnDefaultTextareaValue = !0));\n target$jscomp$0.push(startChunkForTag(\"textarea\"));\n var value$jscomp$0 = null,\n defaultValue = null,\n children$jscomp$2 = null,\n propKey$jscomp$2;\n for (propKey$jscomp$2 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$2)) {\n var propValue$jscomp$2 = props[propKey$jscomp$2];\n if (null != propValue$jscomp$2)\n switch (propKey$jscomp$2) {\n case \"children\":\n children$jscomp$2 = propValue$jscomp$2;\n break;\n case \"value\":\n value$jscomp$0 = propValue$jscomp$2;\n break;\n case \"defaultValue\":\n defaultValue = propValue$jscomp$2;\n break;\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"`dangerouslySetInnerHTML` does not make sense on <textarea>.\"\n );\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$2,\n propValue$jscomp$2\n );\n }\n }\n null === value$jscomp$0 &&\n null !== defaultValue &&\n (value$jscomp$0 = defaultValue);\n target$jscomp$0.push(endOfStartTag);\n if (null != children$jscomp$2) {\n console.error(\n \"Use the `defaultValue` or `value` props instead of setting children on <textarea>.\"\n );\n if (null != value$jscomp$0)\n throw Error(\n \"If you supply `defaultValue` on a <textarea>, do not pass children.\"\n );\n if (isArrayImpl(children$jscomp$2)) {\n if (1 < children$jscomp$2.length)\n throw Error(\"<textarea> can only have at most one child.\");\n checkHtmlStringCoercion(children$jscomp$2[0]);\n value$jscomp$0 = \"\" + children$jscomp$2[0];\n }\n checkHtmlStringCoercion(children$jscomp$2);\n value$jscomp$0 = \"\" + children$jscomp$2;\n }\n \"string\" === typeof value$jscomp$0 &&\n \"\\n\" === value$jscomp$0[0] &&\n target$jscomp$0.push(leadingNewline);\n null !== value$jscomp$0 &&\n (checkAttributeStringCoercion(value$jscomp$0, \"value\"),\n target$jscomp$0.push(\n stringToChunk(escapeTextForBrowser(\"\" + value$jscomp$0))\n ));\n return null;\n case \"input\":\n checkControlledValueProps(\"input\", props);\n target$jscomp$0.push(startChunkForTag(\"input\"));\n var name = null,\n formAction = null,\n formEncType = null,\n formMethod = null,\n formTarget = null,\n value$jscomp$1 = null,\n defaultValue$jscomp$0 = null,\n checked = null,\n defaultChecked = null,\n propKey$jscomp$3;\n for (propKey$jscomp$3 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$3)) {\n var propValue$jscomp$3 = props[propKey$jscomp$3];\n if (null != propValue$jscomp$3)\n switch (propKey$jscomp$3) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"input is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n case \"name\":\n name = propValue$jscomp$3;\n break;\n case \"formAction\":\n formAction = propValue$jscomp$3;\n break;\n case \"formEncType\":\n formEncType = propValue$jscomp$3;\n break;\n case \"formMethod\":\n formMethod = propValue$jscomp$3;\n break;\n case \"formTarget\":\n formTarget = propValue$jscomp$3;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$jscomp$3;\n break;\n case \"defaultValue\":\n defaultValue$jscomp$0 = propValue$jscomp$3;\n break;\n case \"checked\":\n checked = propValue$jscomp$3;\n break;\n case \"value\":\n value$jscomp$1 = propValue$jscomp$3;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$3,\n propValue$jscomp$3\n );\n }\n }\n null === formAction ||\n \"image\" === props.type ||\n \"submit\" === props.type ||\n didWarnFormActionType ||\n ((didWarnFormActionType = !0),\n console.error(\n 'An input can only specify a formAction along with type=\"submit\" or type=\"image\".'\n ));\n var formData = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction,\n formEncType,\n formMethod,\n formTarget,\n name\n );\n null === checked ||\n null === defaultChecked ||\n didWarnDefaultChecked ||\n (console.error(\n \"%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n \"A component\",\n props.type\n ),\n (didWarnDefaultChecked = !0));\n null === value$jscomp$1 ||\n null === defaultValue$jscomp$0 ||\n didWarnDefaultInputValue ||\n (console.error(\n \"%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n \"A component\",\n props.type\n ),\n (didWarnDefaultInputValue = !0));\n null !== checked\n ? pushBooleanAttribute(target$jscomp$0, \"checked\", checked)\n : null !== defaultChecked &&\n pushBooleanAttribute(target$jscomp$0, \"checked\", defaultChecked);\n null !== value$jscomp$1\n ? pushAttribute(target$jscomp$0, \"value\", value$jscomp$1)\n : null !== defaultValue$jscomp$0 &&\n pushAttribute(target$jscomp$0, \"value\", defaultValue$jscomp$0);\n target$jscomp$0.push(endOfStartTagSelfClosing);\n null != formData &&\n formData.forEach(pushAdditionalFormField, target$jscomp$0);\n return null;\n case \"button\":\n target$jscomp$0.push(startChunkForTag(\"button\"));\n var children$jscomp$3 = null,\n innerHTML$jscomp$2 = null,\n name$jscomp$0 = null,\n formAction$jscomp$0 = null,\n formEncType$jscomp$0 = null,\n formMethod$jscomp$0 = null,\n formTarget$jscomp$0 = null,\n propKey$jscomp$4;\n for (propKey$jscomp$4 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$4)) {\n var propValue$jscomp$4 = props[propKey$jscomp$4];\n if (null != propValue$jscomp$4)\n switch (propKey$jscomp$4) {\n case \"children\":\n children$jscomp$3 = propValue$jscomp$4;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$2 = propValue$jscomp$4;\n break;\n case \"name\":\n name$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formAction\":\n formAction$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formEncType\":\n formEncType$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formMethod\":\n formMethod$jscomp$0 = propValue$jscomp$4;\n break;\n case \"formTarget\":\n formTarget$jscomp$0 = propValue$jscomp$4;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$4,\n propValue$jscomp$4\n );\n }\n }\n null === formAction$jscomp$0 ||\n null == props.type ||\n \"submit\" === props.type ||\n didWarnFormActionType ||\n ((didWarnFormActionType = !0),\n console.error(\n 'A button can only specify a formAction along with type=\"submit\" or no type.'\n ));\n var formData$jscomp$0 = pushFormActionAttribute(\n target$jscomp$0,\n resumableState,\n renderState,\n formAction$jscomp$0,\n formEncType$jscomp$0,\n formMethod$jscomp$0,\n formTarget$jscomp$0,\n name$jscomp$0\n );\n target$jscomp$0.push(endOfStartTag);\n null != formData$jscomp$0 &&\n formData$jscomp$0.forEach(pushAdditionalFormField, target$jscomp$0);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$2, children$jscomp$3);\n if (\"string\" === typeof children$jscomp$3) {\n target$jscomp$0.push(\n stringToChunk(escapeTextForBrowser(children$jscomp$3))\n );\n var JSCompiler_inline_result$jscomp$1 = null;\n } else JSCompiler_inline_result$jscomp$1 = children$jscomp$3;\n return JSCompiler_inline_result$jscomp$1;\n case \"form\":\n target$jscomp$0.push(startChunkForTag(\"form\"));\n var children$jscomp$4 = null,\n innerHTML$jscomp$3 = null,\n formAction$jscomp$1 = null,\n formEncType$jscomp$1 = null,\n formMethod$jscomp$1 = null,\n formTarget$jscomp$1 = null,\n propKey$jscomp$5;\n for (propKey$jscomp$5 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$5)) {\n var propValue$jscomp$5 = props[propKey$jscomp$5];\n if (null != propValue$jscomp$5)\n switch (propKey$jscomp$5) {\n case \"children\":\n children$jscomp$4 = propValue$jscomp$5;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$3 = propValue$jscomp$5;\n break;\n case \"action\":\n formAction$jscomp$1 = propValue$jscomp$5;\n break;\n case \"encType\":\n formEncType$jscomp$1 = propValue$jscomp$5;\n break;\n case \"method\":\n formMethod$jscomp$1 = propValue$jscomp$5;\n break;\n case \"target\":\n formTarget$jscomp$1 = propValue$jscomp$5;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$5,\n propValue$jscomp$5\n );\n }\n }\n var formData$jscomp$1 = null,\n formActionName = null;\n if (\"function\" === typeof formAction$jscomp$1) {\n (null === formEncType$jscomp$1 && null === formMethod$jscomp$1) ||\n didWarnFormActionMethod ||\n ((didWarnFormActionMethod = !0),\n console.error(\n \"Cannot specify a encType or method for a form that specifies a function as the action. React provides those automatically. They will get overridden.\"\n ));\n null === formTarget$jscomp$1 ||\n didWarnFormActionTarget ||\n ((didWarnFormActionTarget = !0),\n console.error(\n \"Cannot specify a target for a form that specifies a function as the action. The function will always be executed in the same window.\"\n ));\n var customFields = getCustomFormFields(\n resumableState,\n formAction$jscomp$1\n );\n null !== customFields\n ? ((formAction$jscomp$1 = customFields.action || \"\"),\n (formEncType$jscomp$1 = customFields.encType),\n (formMethod$jscomp$1 = customFields.method),\n (formTarget$jscomp$1 = customFields.target),\n (formData$jscomp$1 = customFields.data),\n (formActionName = customFields.name))\n : (target$jscomp$0.push(\n attributeSeparator,\n stringToChunk(\"action\"),\n attributeAssign,\n actionJavaScriptURL,\n attributeEnd\n ),\n (formTarget$jscomp$1 =\n formMethod$jscomp$1 =\n formEncType$jscomp$1 =\n formAction$jscomp$1 =\n null),\n injectFormReplayingRuntime(resumableState, renderState));\n }\n null != formAction$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"action\", formAction$jscomp$1);\n null != formEncType$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"encType\", formEncType$jscomp$1);\n null != formMethod$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"method\", formMethod$jscomp$1);\n null != formTarget$jscomp$1 &&\n pushAttribute(target$jscomp$0, \"target\", formTarget$jscomp$1);\n target$jscomp$0.push(endOfStartTag);\n null !== formActionName &&\n (target$jscomp$0.push(startHiddenInputChunk),\n pushStringAttribute(target$jscomp$0, \"name\", formActionName),\n target$jscomp$0.push(endOfStartTagSelfClosing),\n null != formData$jscomp$1 &&\n formData$jscomp$1.forEach(\n pushAdditionalFormField,\n target$jscomp$0\n ));\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$3, children$jscomp$4);\n if (\"string\" === typeof children$jscomp$4) {\n target$jscomp$0.push(\n stringToChunk(escapeTextForBrowser(children$jscomp$4))\n );\n var JSCompiler_inline_result$jscomp$2 = null;\n } else JSCompiler_inline_result$jscomp$2 = children$jscomp$4;\n return JSCompiler_inline_result$jscomp$2;\n case \"menuitem\":\n target$jscomp$0.push(startChunkForTag(\"menuitem\"));\n for (var propKey$jscomp$6 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$6)) {\n var propValue$jscomp$6 = props[propKey$jscomp$6];\n if (null != propValue$jscomp$6)\n switch (propKey$jscomp$6) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"menuitems cannot have `children` nor `dangerouslySetInnerHTML`.\"\n );\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$6,\n propValue$jscomp$6\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n return null;\n case \"object\":\n target$jscomp$0.push(startChunkForTag(\"object\"));\n var children$jscomp$5 = null,\n innerHTML$jscomp$4 = null,\n propKey$jscomp$7;\n for (propKey$jscomp$7 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$7)) {\n var propValue$jscomp$7 = props[propKey$jscomp$7];\n if (null != propValue$jscomp$7)\n switch (propKey$jscomp$7) {\n case \"children\":\n children$jscomp$5 = propValue$jscomp$7;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$4 = propValue$jscomp$7;\n break;\n case \"data\":\n checkAttributeStringCoercion(propValue$jscomp$7, \"data\");\n var sanitizedValue = sanitizeURL(\"\" + propValue$jscomp$7);\n if (\"\" === sanitizedValue) {\n console.error(\n 'An empty string (\"\") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',\n propKey$jscomp$7,\n propKey$jscomp$7\n );\n break;\n }\n target$jscomp$0.push(\n attributeSeparator,\n stringToChunk(\"data\"),\n attributeAssign,\n stringToChunk(escapeTextForBrowser(sanitizedValue)),\n attributeEnd\n );\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$7,\n propValue$jscomp$7\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(target$jscomp$0, innerHTML$jscomp$4, children$jscomp$5);\n if (\"string\" === typeof children$jscomp$5) {\n target$jscomp$0.push(\n stringToChunk(escapeTextForBrowser(children$jscomp$5))\n );\n var JSCompiler_inline_result$jscomp$3 = null;\n } else JSCompiler_inline_result$jscomp$3 = children$jscomp$5;\n return JSCompiler_inline_result$jscomp$3;\n case \"title\":\n var insertionMode = formatContext.insertionMode,\n noscriptTagInScope = !!(formatContext.tagScope & 1);\n if (hasOwnProperty.call(props, \"children\")) {\n var children$jscomp$6 = props.children,\n child = Array.isArray(children$jscomp$6)\n ? 2 > children$jscomp$6.length\n ? children$jscomp$6[0]\n : null\n : children$jscomp$6;\n Array.isArray(children$jscomp$6) && 1 < children$jscomp$6.length\n ? console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an Array with length %s instead. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert `children` of <title> tags to a single string value which is why Arrays of length greater than 1 are not supported. When using JSX it can be commong to combine text nodes and value nodes. For example: <title>hello {nameOfUser}</title>. While not immediately apparent, `children` in this case is an Array with length 2. If your `children` prop is using this form try rewriting it using a template string: <title>{`hello ${nameOfUser}`}</title>.\",\n children$jscomp$6.length\n )\n : \"function\" === typeof child || \"symbol\" === typeof child\n ? console.error(\n \"React expect children of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found %s instead. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value.\",\n \"function\" === typeof child ? \"a Function\" : \"a Sybmol\"\n )\n : child &&\n child.toString === {}.toString &&\n (null != child.$$typeof\n ? console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an object that appears to be a React element which never implements a suitable `toString` method. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value which is why rendering React elements is not supported. If the `children` of <title> is a React Component try moving the <title> tag into that component. If the `children` of <title> is some HTML markup change it to be Text only to be valid HTML.\"\n )\n : console.error(\n \"React expects the `children` prop of <title> tags to be a string, number, bigint, or object with a novel `toString` method but found an object that does not implement a suitable `toString` method. Browsers treat all child Nodes of <title> tags as Text content and React expects to be able to convert children of <title> tags to a single string value. Using the default `toString` method available on every object is almost certainly an error. Consider whether the `children` of this <title> is an object in error and change it to a string or number value if so. Otherwise implement a `toString` method that React can use to produce a valid <title>.\"\n ));\n }\n if (\n insertionMode === SVG_MODE ||\n noscriptTagInScope ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$4 = pushTitleImpl(\n target$jscomp$0,\n props\n );\n else\n isFallback\n ? (JSCompiler_inline_result$jscomp$4 = null)\n : (pushTitleImpl(renderState.hoistableChunks, props),\n (JSCompiler_inline_result$jscomp$4 = void 0));\n return JSCompiler_inline_result$jscomp$4;\n case \"link\":\n var rel = props.rel,\n href = props.href,\n precedence = props.precedence;\n if (\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp ||\n \"string\" !== typeof rel ||\n \"string\" !== typeof href ||\n \"\" === href\n ) {\n \"stylesheet\" === rel &&\n \"string\" === typeof props.precedence &&\n ((\"string\" === typeof href && href) ||\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and expected the `href` prop to be a non-empty string but ecountered %s instead. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop ensure there is a non-empty string `href` prop as well, otherwise remove the `precedence` prop.',\n null === href\n ? \"`null`\"\n : void 0 === href\n ? \"`undefined`\"\n : \"\" === href\n ? \"an empty string\"\n : 'something with type \"' + typeof href + '\"'\n ));\n pushLinkImpl(target$jscomp$0, props);\n var JSCompiler_inline_result$jscomp$5 = null;\n } else if (\"stylesheet\" === props.rel)\n if (\n \"string\" !== typeof precedence ||\n null != props.disabled ||\n props.onLoad ||\n props.onError\n ) {\n if (\"string\" === typeof precedence)\n if (null != props.disabled)\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and a `disabled` prop. The presence of the `disabled` prop indicates an intent to manage the stylesheet active state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the `disabled` prop, otherwise remove the `precedence` prop.'\n );\n else if (props.onLoad || props.onError) {\n var propDescription =\n props.onLoad && props.onError\n ? \"`onLoad` and `onError` props\"\n : props.onLoad\n ? \"`onLoad` prop\"\n : \"`onError` prop\";\n console.error(\n 'React encountered a `<link rel=\"stylesheet\" .../>` with a `precedence` prop and %s. The presence of loading and error handlers indicates an intent to manage the stylesheet loading state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the %s, otherwise remove the `precedence` prop.',\n propDescription,\n propDescription\n );\n }\n JSCompiler_inline_result$jscomp$5 = pushLinkImpl(\n target$jscomp$0,\n props\n );\n } else {\n var styleQueue = renderState.styles.get(precedence),\n resourceState = resumableState.styleResources.hasOwnProperty(\n href\n )\n ? resumableState.styleResources[href]\n : void 0;\n if (resourceState !== EXISTS) {\n resumableState.styleResources[href] = EXISTS;\n styleQueue ||\n ((styleQueue = {\n precedence: stringToChunk(escapeTextForBrowser(precedence)),\n rules: [],\n hrefs: [],\n sheets: new Map()\n }),\n renderState.styles.set(precedence, styleQueue));\n var resource = {\n state: PENDING$1,\n props: assign({}, props, {\n \"data-precedence\": props.precedence,\n precedence: null\n })\n };\n if (resourceState) {\n 2 === resourceState.length &&\n adoptPreloadCredentials(resource.props, resourceState);\n var preloadResource =\n renderState.preloads.stylesheets.get(href);\n preloadResource && 0 < preloadResource.length\n ? (preloadResource.length = 0)\n : (resource.state = PRELOADED);\n }\n styleQueue.sheets.set(href, resource);\n hoistableState && hoistableState.stylesheets.add(resource);\n } else if (styleQueue) {\n var _resource = styleQueue.sheets.get(href);\n _resource &&\n hoistableState &&\n hoistableState.stylesheets.add(_resource);\n }\n textEmbedded && target$jscomp$0.push(textSeparator);\n JSCompiler_inline_result$jscomp$5 = null;\n }\n else\n props.onLoad || props.onError\n ? (JSCompiler_inline_result$jscomp$5 = pushLinkImpl(\n target$jscomp$0,\n props\n ))\n : (textEmbedded && target$jscomp$0.push(textSeparator),\n (JSCompiler_inline_result$jscomp$5 = isFallback\n ? null\n : pushLinkImpl(renderState.hoistableChunks, props)));\n return JSCompiler_inline_result$jscomp$5;\n case \"script\":\n var asyncProp = props.async;\n if (\n \"string\" !== typeof props.src ||\n !props.src ||\n !asyncProp ||\n \"function\" === typeof asyncProp ||\n \"symbol\" === typeof asyncProp ||\n props.onLoad ||\n props.onError ||\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$6 = pushScriptImpl(\n target$jscomp$0,\n props\n );\n else {\n var key = props.src;\n if (\"module\" === props.type) {\n var resources = resumableState.moduleScriptResources;\n var preloads = renderState.preloads.moduleScripts;\n } else\n (resources = resumableState.scriptResources),\n (preloads = renderState.preloads.scripts);\n var resourceState$jscomp$0 = resources.hasOwnProperty(key)\n ? resources[key]\n : void 0;\n if (resourceState$jscomp$0 !== EXISTS) {\n resources[key] = EXISTS;\n var scriptProps = props;\n if (resourceState$jscomp$0) {\n 2 === resourceState$jscomp$0.length &&\n ((scriptProps = assign({}, props)),\n adoptPreloadCredentials(scriptProps, resourceState$jscomp$0));\n var preloadResource$jscomp$0 = preloads.get(key);\n preloadResource$jscomp$0 &&\n (preloadResource$jscomp$0.length = 0);\n }\n var resource$jscomp$0 = [];\n renderState.scripts.add(resource$jscomp$0);\n pushScriptImpl(resource$jscomp$0, scriptProps);\n }\n textEmbedded && target$jscomp$0.push(textSeparator);\n JSCompiler_inline_result$jscomp$6 = null;\n }\n return JSCompiler_inline_result$jscomp$6;\n case \"style\":\n var insertionMode$jscomp$0 = formatContext.insertionMode,\n noscriptTagInScope$jscomp$0 = !!(formatContext.tagScope & 1);\n if (hasOwnProperty.call(props, \"children\")) {\n var children$jscomp$7 = props.children,\n child$jscomp$0 = Array.isArray(children$jscomp$7)\n ? 2 > children$jscomp$7.length\n ? children$jscomp$7[0]\n : null\n : children$jscomp$7;\n (\"function\" === typeof child$jscomp$0 ||\n \"symbol\" === typeof child$jscomp$0 ||\n Array.isArray(child$jscomp$0)) &&\n console.error(\n \"React expect children of <style> tags to be a string, number, or object with a `toString` method but found %s instead. In browsers style Elements can only have `Text` Nodes as children.\",\n \"function\" === typeof child$jscomp$0\n ? \"a Function\"\n : \"symbol\" === typeof child$jscomp$0\n ? \"a Sybmol\"\n : \"an Array\"\n );\n }\n var precedence$jscomp$0 = props.precedence,\n href$jscomp$0 = props.href;\n if (\n insertionMode$jscomp$0 === SVG_MODE ||\n noscriptTagInScope$jscomp$0 ||\n null != props.itemProp ||\n \"string\" !== typeof precedence$jscomp$0 ||\n \"string\" !== typeof href$jscomp$0 ||\n \"\" === href$jscomp$0\n ) {\n target$jscomp$0.push(startChunkForTag(\"style\"));\n var children$jscomp$8 = null,\n innerHTML$jscomp$5 = null,\n propKey$jscomp$8;\n for (propKey$jscomp$8 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$8)) {\n var propValue$jscomp$8 = props[propKey$jscomp$8];\n if (null != propValue$jscomp$8)\n switch (propKey$jscomp$8) {\n case \"children\":\n children$jscomp$8 = propValue$jscomp$8;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$5 = propValue$jscomp$8;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$8,\n propValue$jscomp$8\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n var child$jscomp$1 = Array.isArray(children$jscomp$8)\n ? 2 > children$jscomp$8.length\n ? children$jscomp$8[0]\n : null\n : children$jscomp$8;\n \"function\" !== typeof child$jscomp$1 &&\n \"symbol\" !== typeof child$jscomp$1 &&\n null !== child$jscomp$1 &&\n void 0 !== child$jscomp$1 &&\n target$jscomp$0.push(\n stringToChunk(escapeStyleTextContent(child$jscomp$1))\n );\n pushInnerHTML(\n target$jscomp$0,\n innerHTML$jscomp$5,\n children$jscomp$8\n );\n target$jscomp$0.push(endChunkForTag(\"style\"));\n var JSCompiler_inline_result$jscomp$7 = null;\n } else {\n href$jscomp$0.includes(\" \") &&\n console.error(\n 'React expected the `href` prop for a <style> tag opting into hoisting semantics using the `precedence` prop to not have any spaces but ecountered spaces instead. using spaces in this prop will cause hydration of this style to fail on the client. The href for the <style> where this ocurred is \"%s\".',\n href$jscomp$0\n );\n var styleQueue$jscomp$0 =\n renderState.styles.get(precedence$jscomp$0),\n resourceState$jscomp$1 =\n resumableState.styleResources.hasOwnProperty(href$jscomp$0)\n ? resumableState.styleResources[href$jscomp$0]\n : void 0;\n if (resourceState$jscomp$1 !== EXISTS) {\n resumableState.styleResources[href$jscomp$0] = EXISTS;\n resourceState$jscomp$1 &&\n console.error(\n 'React encountered a hoistable style tag for the same href as a preload: \"%s\". When using a style tag to inline styles you should not also preload it as a stylsheet.',\n href$jscomp$0\n );\n styleQueue$jscomp$0\n ? styleQueue$jscomp$0.hrefs.push(\n stringToChunk(escapeTextForBrowser(href$jscomp$0))\n )\n : ((styleQueue$jscomp$0 = {\n precedence: stringToChunk(\n escapeTextForBrowser(precedence$jscomp$0)\n ),\n rules: [],\n hrefs: [stringToChunk(escapeTextForBrowser(href$jscomp$0))],\n sheets: new Map()\n }),\n renderState.styles.set(\n precedence$jscomp$0,\n styleQueue$jscomp$0\n ));\n var target = styleQueue$jscomp$0.rules,\n children$jscomp$9 = null,\n innerHTML$jscomp$6 = null,\n propKey$jscomp$9;\n for (propKey$jscomp$9 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$9)) {\n var propValue$jscomp$9 = props[propKey$jscomp$9];\n if (null != propValue$jscomp$9)\n switch (propKey$jscomp$9) {\n case \"children\":\n children$jscomp$9 = propValue$jscomp$9;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$6 = propValue$jscomp$9;\n }\n }\n var child$jscomp$2 = Array.isArray(children$jscomp$9)\n ? 2 > children$jscomp$9.length\n ? children$jscomp$9[0]\n : null\n : children$jscomp$9;\n \"function\" !== typeof child$jscomp$2 &&\n \"symbol\" !== typeof child$jscomp$2 &&\n null !== child$jscomp$2 &&\n void 0 !== child$jscomp$2 &&\n target.push(\n stringToChunk(escapeStyleTextContent(child$jscomp$2))\n );\n pushInnerHTML(target, innerHTML$jscomp$6, children$jscomp$9);\n }\n styleQueue$jscomp$0 &&\n hoistableState &&\n hoistableState.styles.add(styleQueue$jscomp$0);\n textEmbedded && target$jscomp$0.push(textSeparator);\n JSCompiler_inline_result$jscomp$7 = void 0;\n }\n return JSCompiler_inline_result$jscomp$7;\n case \"meta\":\n if (\n formatContext.insertionMode === SVG_MODE ||\n formatContext.tagScope & 1 ||\n null != props.itemProp\n )\n var JSCompiler_inline_result$jscomp$8 = pushSelfClosing(\n target$jscomp$0,\n props,\n \"meta\"\n );\n else\n textEmbedded && target$jscomp$0.push(textSeparator),\n (JSCompiler_inline_result$jscomp$8 = isFallback\n ? null\n : \"string\" === typeof props.charSet\n ? pushSelfClosing(renderState.charsetChunks, props, \"meta\")\n : \"viewport\" === props.name\n ? pushSelfClosing(renderState.viewportChunks, props, \"meta\")\n : pushSelfClosing(\n renderState.hoistableChunks,\n props,\n \"meta\"\n ));\n return JSCompiler_inline_result$jscomp$8;\n case \"listing\":\n case \"pre\":\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$10 = null,\n innerHTML$jscomp$7 = null,\n propKey$jscomp$10;\n for (propKey$jscomp$10 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$10)) {\n var propValue$jscomp$10 = props[propKey$jscomp$10];\n if (null != propValue$jscomp$10)\n switch (propKey$jscomp$10) {\n case \"children\":\n children$jscomp$10 = propValue$jscomp$10;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$7 = propValue$jscomp$10;\n break;\n default:\n pushAttribute(\n target$jscomp$0,\n propKey$jscomp$10,\n propValue$jscomp$10\n );\n }\n }\n target$jscomp$0.push(endOfStartTag);\n if (null != innerHTML$jscomp$7) {\n if (null != children$jscomp$10)\n throw Error(\n \"Can only set one of `children` or `props.dangerouslySetInnerHTML`.\"\n );\n if (\n \"object\" !== typeof innerHTML$jscomp$7 ||\n !(\"__html\" in innerHTML$jscomp$7)\n )\n throw Error(\n \"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.\"\n );\n var html = innerHTML$jscomp$7.__html;\n null !== html &&\n void 0 !== html &&\n (\"string\" === typeof html && 0 < html.length && \"\\n\" === html[0]\n ? target$jscomp$0.push(leadingNewline, stringToChunk(html))\n : (checkHtmlStringCoercion(html),\n target$jscomp$0.push(stringToChunk(\"\" + html))));\n }\n \"string\" === typeof children$jscomp$10 &&\n \"\\n\" === children$jscomp$10[0] &&\n target$jscomp$0.push(leadingNewline);\n return children$jscomp$10;\n case \"img\":\n var src = props.src,\n srcSet = props.srcSet;\n if (\n !(\n \"lazy\" === props.loading ||\n (!src && !srcSet) ||\n (\"string\" !== typeof src && null != src) ||\n (\"string\" !== typeof srcSet && null != srcSet)\n ) &&\n \"low\" !== props.fetchPriority &&\n !1 === !!(formatContext.tagScope & 3) &&\n (\"string\" !== typeof src ||\n \":\" !== src[4] ||\n (\"d\" !== src[0] && \"D\" !== src[0]) ||\n (\"a\" !== src[1] && \"A\" !== src[1]) ||\n (\"t\" !== src[2] && \"T\" !== src[2]) ||\n (\"a\" !== src[3] && \"A\" !== src[3])) &&\n (\"string\" !== typeof srcSet ||\n \":\" !== srcSet[4] ||\n (\"d\" !== srcSet[0] && \"D\" !== srcSet[0]) ||\n (\"a\" !== srcSet[1] && \"A\" !== srcSet[1]) ||\n (\"t\" !== srcSet[2] && \"T\" !== srcSet[2]) ||\n (\"a\" !== srcSet[3] && \"A\" !== srcSet[3]))\n ) {\n var sizes = \"string\" === typeof props.sizes ? props.sizes : void 0,\n key$jscomp$0 = srcSet ? srcSet + \"\\n\" + (sizes || \"\") : src,\n promotablePreloads = renderState.preloads.images,\n resource$jscomp$1 = promotablePreloads.get(key$jscomp$0);\n if (resource$jscomp$1) {\n if (\n \"high\" === props.fetchPriority ||\n 10 > renderState.highImagePreloads.size\n )\n promotablePreloads.delete(key$jscomp$0),\n renderState.highImagePreloads.add(resource$jscomp$1);\n } else if (\n !resumableState.imageResources.hasOwnProperty(key$jscomp$0)\n ) {\n resumableState.imageResources[key$jscomp$0] = PRELOAD_NO_CREDS;\n var input = props.crossOrigin;\n var crossOrigin =\n \"string\" === typeof input\n ? \"use-credentials\" === input\n ? input\n : \"\"\n : void 0;\n var headers = renderState.headers,\n header;\n headers &&\n 0 < headers.remainingCapacity &&\n (\"high\" === props.fetchPriority ||\n 500 > headers.highImagePreloads.length) &&\n ((header = getPreloadAsHeader(src, \"image\", {\n imageSrcSet: props.srcSet,\n imageSizes: props.sizes,\n crossOrigin: crossOrigin,\n integrity: props.integrity,\n nonce: props.nonce,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.refererPolicy\n })),\n 0 <= (headers.remainingCapacity -= header.length + 2))\n ? ((renderState.resets.image[key$jscomp$0] = PRELOAD_NO_CREDS),\n headers.highImagePreloads &&\n (headers.highImagePreloads += \", \"),\n (headers.highImagePreloads += header))\n : ((resource$jscomp$1 = []),\n pushLinkImpl(resource$jscomp$1, {\n rel: \"preload\",\n as: \"image\",\n href: srcSet ? void 0 : src,\n imageSrcSet: srcSet,\n imageSizes: sizes,\n crossOrigin: crossOrigin,\n integrity: props.integrity,\n type: props.type,\n fetchPriority: props.fetchPriority,\n referrerPolicy: props.referrerPolicy\n }),\n \"high\" === props.fetchPriority ||\n 10 > renderState.highImagePreloads.size\n ? renderState.highImagePreloads.add(resource$jscomp$1)\n : (renderState.bulkPreloads.add(resource$jscomp$1),\n promotablePreloads.set(key$jscomp$0, resource$jscomp$1)));\n }\n }\n return pushSelfClosing(target$jscomp$0, props, \"img\");\n case \"base\":\n case \"area\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n return pushSelfClosing(target$jscomp$0, props, type);\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n break;\n case \"head\":\n if (\n formatContext.insertionMode < HTML_MODE &&\n null === renderState.headChunks\n ) {\n renderState.headChunks = [];\n var JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n renderState.headChunks,\n props,\n \"head\"\n );\n } else\n JSCompiler_inline_result$jscomp$9 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"head\"\n );\n return JSCompiler_inline_result$jscomp$9;\n case \"html\":\n if (\n formatContext.insertionMode === ROOT_HTML_MODE &&\n null === renderState.htmlChunks\n ) {\n renderState.htmlChunks = [doctypeChunk];\n var JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n renderState.htmlChunks,\n props,\n \"html\"\n );\n } else\n JSCompiler_inline_result$jscomp$10 = pushStartGenericElement(\n target$jscomp$0,\n props,\n \"html\"\n );\n return JSCompiler_inline_result$jscomp$10;\n default:\n if (-1 !== type.indexOf(\"-\")) {\n target$jscomp$0.push(startChunkForTag(type));\n var children$jscomp$11 = null,\n innerHTML$jscomp$8 = null,\n propKey$jscomp$11;\n for (propKey$jscomp$11 in props)\n if (hasOwnProperty.call(props, propKey$jscomp$11)) {\n var propValue$jscomp$11 = props[propKey$jscomp$11];\n if (null != propValue$jscomp$11) {\n var attributeName = propKey$jscomp$11;\n switch (propKey$jscomp$11) {\n case \"children\":\n children$jscomp$11 = propValue$jscomp$11;\n break;\n case \"dangerouslySetInnerHTML\":\n innerHTML$jscomp$8 = propValue$jscomp$11;\n break;\n case \"style\":\n pushStyleAttribute(target$jscomp$0, propValue$jscomp$11);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"ref\":\n break;\n case \"className\":\n attributeName = \"class\";\n default:\n if (\n isAttributeNameSafe(propKey$jscomp$11) &&\n \"function\" !== typeof propValue$jscomp$11 &&\n \"symbol\" !== typeof propValue$jscomp$11 &&\n !1 !== propValue$jscomp$11\n ) {\n if (!0 === propValue$jscomp$11)\n propValue$jscomp$11 = \"\";\n else if (\"object\" === typeof propValue$jscomp$11)\n continue;\n target$jscomp$0.push(\n attributeSeparator,\n stringToChunk(attributeName),\n attributeAssign,\n stringToChunk(\n escapeTextForBrowser(propValue$jscomp$11)\n ),\n attributeEnd\n );\n }\n }\n }\n }\n target$jscomp$0.push(endOfStartTag);\n pushInnerHTML(\n target$jscomp$0,\n innerHTML$jscomp$8,\n children$jscomp$11\n );\n return children$jscomp$11;\n }\n }\n return pushStartGenericElement(target$jscomp$0, props, type);\n }\n function endChunkForTag(tag) {\n var chunk = endTagCache.get(tag);\n void 0 === chunk &&\n ((chunk = stringToPrecomputedChunk(\"</\" + tag + \">\")),\n endTagCache.set(tag, chunk));\n return chunk;\n }\n function writeBootstrap(destination, renderState) {\n renderState = renderState.bootstrapChunks;\n for (var i = 0; i < renderState.length - 1; i++)\n writeChunk(destination, renderState[i]);\n return i < renderState.length\n ? ((i = renderState[i]),\n (renderState.length = 0),\n writeChunkAndReturn(destination, i))\n : !0;\n }\n function writeStartPendingSuspenseBoundary(destination, renderState, id) {\n writeChunk(destination, startPendingSuspenseBoundary1);\n if (null === id)\n throw Error(\n \"An ID must have been assigned before we can complete the boundary.\"\n );\n writeChunk(destination, renderState.boundaryPrefix);\n writeChunk(destination, stringToChunk(id.toString(16)));\n return writeChunkAndReturn(destination, startPendingSuspenseBoundary2);\n }\n function writeStartSegment(destination, renderState, formatContext, id) {\n switch (formatContext.insertionMode) {\n case ROOT_HTML_MODE:\n case HTML_HTML_MODE:\n case HTML_MODE:\n return (\n writeChunk(destination, startSegmentHTML),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentHTML2)\n );\n case SVG_MODE:\n return (\n writeChunk(destination, startSegmentSVG),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentSVG2)\n );\n case MATHML_MODE:\n return (\n writeChunk(destination, startSegmentMathML),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentMathML2)\n );\n case HTML_TABLE_MODE:\n return (\n writeChunk(destination, startSegmentTable),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentTable2)\n );\n case HTML_TABLE_BODY_MODE:\n return (\n writeChunk(destination, startSegmentTableBody),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentTableBody2)\n );\n case HTML_TABLE_ROW_MODE:\n return (\n writeChunk(destination, startSegmentTableRow),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentTableRow2)\n );\n case HTML_COLGROUP_MODE:\n return (\n writeChunk(destination, startSegmentColGroup),\n writeChunk(destination, renderState.segmentPrefix),\n writeChunk(destination, stringToChunk(id.toString(16))),\n writeChunkAndReturn(destination, startSegmentColGroup2)\n );\n default:\n throw Error(\"Unknown insertion mode. This is a bug in React.\");\n }\n }\n function writeEndSegment(destination, formatContext) {\n switch (formatContext.insertionMode) {\n case ROOT_HTML_MODE:\n case HTML_HTML_MODE:\n case HTML_MODE:\n return writeChunkAndReturn(destination, endSegmentHTML);\n case SVG_MODE:\n return writeChunkAndReturn(destination, endSegmentSVG);\n case MATHML_MODE:\n return writeChunkAndReturn(destination, endSegmentMathML);\n case HTML_TABLE_MODE:\n return writeChunkAndReturn(destination, endSegmentTable);\n case HTML_TABLE_BODY_MODE:\n return writeChunkAndReturn(destination, endSegmentTableBody);\n case HTML_TABLE_ROW_MODE:\n return writeChunkAndReturn(destination, endSegmentTableRow);\n case HTML_COLGROUP_MODE:\n return writeChunkAndReturn(destination, endSegmentColGroup);\n default:\n throw Error(\"Unknown insertion mode. This is a bug in React.\");\n }\n }\n function escapeJSStringsForInstructionScripts(input) {\n return JSON.stringify(input).replace(\n regexForJSStringsInInstructionScripts,\n function (match) {\n switch (match) {\n case \"<\":\n return \"\\\\u003c\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n throw Error(\n \"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n );\n }\n function escapeJSObjectForInstructionScripts(input) {\n return JSON.stringify(input).replace(\n regexForJSStringsInScripts,\n function (match) {\n switch (match) {\n case \"&\":\n return \"\\\\u0026\";\n case \">\":\n return \"\\\\u003e\";\n case \"<\":\n return \"\\\\u003c\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n throw Error(\n \"escapeJSObjectForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n );\n }\n function flushStyleTagsLateForBoundary(styleQueue) {\n var rules = styleQueue.rules,\n hrefs = styleQueue.hrefs;\n 0 < rules.length &&\n 0 === hrefs.length &&\n console.error(\n \"React expected to have at least one href for an a hoistable style but found none. This is a bug in React.\"\n );\n var i = 0;\n if (hrefs.length) {\n writeChunk(this, lateStyleTagResourceOpen1);\n writeChunk(this, styleQueue.precedence);\n for (\n writeChunk(this, lateStyleTagResourceOpen2);\n i < hrefs.length - 1;\n i++\n )\n writeChunk(this, hrefs[i]), writeChunk(this, spaceSeparator);\n writeChunk(this, hrefs[i]);\n writeChunk(this, lateStyleTagResourceOpen3);\n for (i = 0; i < rules.length; i++) writeChunk(this, rules[i]);\n destinationHasCapacity = writeChunkAndReturn(\n this,\n lateStyleTagTemplateClose\n );\n currentlyRenderingBoundaryHasStylesToHoist = !0;\n rules.length = 0;\n hrefs.length = 0;\n }\n }\n function hasStylesToHoist(stylesheet) {\n return stylesheet.state !== PREAMBLE\n ? (currentlyRenderingBoundaryHasStylesToHoist = !0)\n : !1;\n }\n function writeHoistablesForBoundary(\n destination,\n hoistableState,\n renderState\n ) {\n currentlyRenderingBoundaryHasStylesToHoist = !1;\n destinationHasCapacity = !0;\n hoistableState.styles.forEach(flushStyleTagsLateForBoundary, destination);\n hoistableState.stylesheets.forEach(hasStylesToHoist);\n currentlyRenderingBoundaryHasStylesToHoist &&\n (renderState.stylesToHoist = !0);\n return destinationHasCapacity;\n }\n function flushResource(resource) {\n for (var i = 0; i < resource.length; i++) writeChunk(this, resource[i]);\n resource.length = 0;\n }\n function flushStyleInPreamble(stylesheet) {\n pushLinkImpl(stylesheetFlushingQueue, stylesheet.props);\n for (var i = 0; i < stylesheetFlushingQueue.length; i++)\n writeChunk(this, stylesheetFlushingQueue[i]);\n stylesheetFlushingQueue.length = 0;\n stylesheet.state = PREAMBLE;\n }\n function flushStylesInPreamble(styleQueue) {\n var hasStylesheets = 0 < styleQueue.sheets.size;\n styleQueue.sheets.forEach(flushStyleInPreamble, this);\n styleQueue.sheets.clear();\n var rules = styleQueue.rules,\n hrefs = styleQueue.hrefs;\n if (!hasStylesheets || hrefs.length) {\n writeChunk(this, styleTagResourceOpen1);\n writeChunk(this, styleQueue.precedence);\n styleQueue = 0;\n if (hrefs.length) {\n for (\n writeChunk(this, styleTagResourceOpen2);\n styleQueue < hrefs.length - 1;\n styleQueue++\n )\n writeChunk(this, hrefs[styleQueue]),\n writeChunk(this, spaceSeparator);\n writeChunk(this, hrefs[styleQueue]);\n }\n writeChunk(this, styleTagResourceOpen3);\n for (styleQueue = 0; styleQueue < rules.length; styleQueue++)\n writeChunk(this, rules[styleQueue]);\n writeChunk(this, styleTagResourceClose);\n rules.length = 0;\n hrefs.length = 0;\n }\n }\n function preloadLateStyle(stylesheet) {\n if (stylesheet.state === PENDING$1) {\n stylesheet.state = PRELOADED;\n var props = stylesheet.props;\n pushLinkImpl(stylesheetFlushingQueue, {\n rel: \"preload\",\n as: \"style\",\n href: stylesheet.props.href,\n crossOrigin: props.crossOrigin,\n fetchPriority: props.fetchPriority,\n integrity: props.integrity,\n media: props.media,\n hrefLang: props.hrefLang,\n referrerPolicy: props.referrerPolicy\n });\n for (\n stylesheet = 0;\n stylesheet < stylesheetFlushingQueue.length;\n stylesheet++\n )\n writeChunk(this, stylesheetFlushingQueue[stylesheet]);\n stylesheetFlushingQueue.length = 0;\n }\n }\n function preloadLateStyles(styleQueue) {\n styleQueue.sheets.forEach(preloadLateStyle, this);\n styleQueue.sheets.clear();\n }\n function writeStyleResourceDependenciesInJS(destination, hoistableState) {\n writeChunk(destination, arrayFirstOpenBracket);\n var nextArrayOpenBrackChunk = arrayFirstOpenBracket;\n hoistableState.stylesheets.forEach(function (resource) {\n if (resource.state !== PREAMBLE)\n if (resource.state === LATE)\n writeChunk(destination, nextArrayOpenBrackChunk),\n (resource = resource.props.href),\n checkAttributeStringCoercion(resource, \"href\"),\n writeChunk(\n destination,\n stringToChunk(\n escapeJSObjectForInstructionScripts(\"\" + resource)\n )\n ),\n writeChunk(destination, arrayCloseBracket),\n (nextArrayOpenBrackChunk = arraySubsequentOpenBracket);\n else {\n writeChunk(destination, nextArrayOpenBrackChunk);\n var precedence = resource.props[\"data-precedence\"],\n props = resource.props,\n coercedHref = sanitizeURL(\"\" + resource.props.href);\n writeChunk(\n destination,\n stringToChunk(escapeJSObjectForInstructionScripts(coercedHref))\n );\n checkAttributeStringCoercion(precedence, \"precedence\");\n precedence = \"\" + precedence;\n writeChunk(destination, arrayInterstitial);\n writeChunk(\n destination,\n stringToChunk(escapeJSObjectForInstructionScripts(precedence))\n );\n for (var propKey in props)\n if (\n hasOwnProperty.call(props, propKey) &&\n ((precedence = props[propKey]), null != precedence)\n )\n switch (propKey) {\n case \"href\":\n case \"rel\":\n case \"precedence\":\n case \"data-precedence\":\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(\n \"link is a self-closing tag and must neither have `children` nor use `dangerouslySetInnerHTML`.\"\n );\n default:\n writeStyleResourceAttributeInJS(\n destination,\n propKey,\n precedence\n );\n }\n writeChunk(destination, arrayCloseBracket);\n nextArrayOpenBrackChunk = arraySubsequentOpenBracket;\n resource.state = LATE;\n }\n });\n writeChunk(destination, arrayCloseBracket);\n }\n function writeStyleResourceAttributeInJS(destination, name, value) {\n var attributeName = name.toLowerCase();\n switch (typeof value) {\n case \"function\":\n case \"symbol\":\n return;\n }\n switch (name) {\n case \"innerHTML\":\n case \"dangerouslySetInnerHTML\":\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"style\":\n case \"ref\":\n return;\n case \"className\":\n attributeName = \"class\";\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n break;\n case \"hidden\":\n if (!1 === value) return;\n name = \"\";\n break;\n case \"src\":\n case \"href\":\n value = sanitizeURL(value);\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n break;\n default:\n if (\n (2 < name.length &&\n (\"o\" === name[0] || \"O\" === name[0]) &&\n (\"n\" === name[1] || \"N\" === name[1])) ||\n !isAttributeNameSafe(name)\n )\n return;\n checkAttributeStringCoercion(value, attributeName);\n name = \"\" + value;\n }\n writeChunk(destination, arrayInterstitial);\n writeChunk(\n destination,\n stringToChunk(escapeJSObjectForInstructionScripts(attributeName))\n );\n writeChunk(destination, arrayInterstitial);\n writeChunk(\n destination,\n stringToChunk(escapeJSObjectForInstructionScripts(name))\n );\n }\n function createHoistableState() {\n return { styles: new Set(), stylesheets: new Set() };\n }\n function preloadBootstrapScriptOrModule(\n resumableState,\n renderState,\n href,\n props\n ) {\n (resumableState.scriptResources.hasOwnProperty(href) ||\n resumableState.moduleScriptResources.hasOwnProperty(href)) &&\n console.error(\n 'Internal React Error: React expected bootstrap script or module with src \"%s\" to not have been preloaded already. please file an issue',\n href\n );\n resumableState.scriptResources[href] = EXISTS;\n resumableState.moduleScriptResources[href] = EXISTS;\n resumableState = [];\n pushLinkImpl(resumableState, props);\n renderState.bootstrapScripts.add(resumableState);\n }\n function adoptPreloadCredentials(target, preloadState) {\n null == target.crossOrigin && (target.crossOrigin = preloadState[0]);\n null == target.integrity && (target.integrity = preloadState[1]);\n }\n function getPreloadAsHeader(href, as, params) {\n href = escapeHrefForLinkHeaderURLContext(href);\n as = escapeStringForLinkHeaderQuotedParamValueContext(as, \"as\");\n as = \"<\" + href + '>; rel=preload; as=\"' + as + '\"';\n for (var paramName in params)\n hasOwnProperty.call(params, paramName) &&\n ((href = params[paramName]),\n \"string\" === typeof href &&\n (as +=\n \"; \" +\n paramName.toLowerCase() +\n '=\"' +\n escapeStringForLinkHeaderQuotedParamValueContext(\n href,\n paramName\n ) +\n '\"'));\n return as;\n }\n function escapeHrefForLinkHeaderURLContext(hrefInput) {\n checkAttributeStringCoercion(hrefInput, \"href\");\n return (\"\" + hrefInput).replace(\n regexForHrefInLinkHeaderURLContext,\n escapeHrefForLinkHeaderURLContextReplacer\n );\n }\n function escapeHrefForLinkHeaderURLContextReplacer(match) {\n switch (match) {\n case \"<\":\n return \"%3C\";\n case \">\":\n return \"%3E\";\n case \"\\n\":\n return \"%0A\";\n case \"\\r\":\n return \"%0D\";\n default:\n throw Error(\n \"escapeLinkHrefForHeaderContextReplacer encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n function escapeStringForLinkHeaderQuotedParamValueContext(value, name) {\n willCoercionThrow(value) &&\n (console.error(\n \"The provided `%s` option is an unsupported type %s. This value must be coerced to a string before using it here.\",\n name,\n typeName(value)\n ),\n testStringCoercion(value));\n return (\"\" + value).replace(\n regexForLinkHeaderQuotedParamValueContext,\n escapeStringForLinkHeaderQuotedParamValueContextReplacer\n );\n }\n function escapeStringForLinkHeaderQuotedParamValueContextReplacer(match) {\n switch (match) {\n case '\"':\n return \"%22\";\n case \"'\":\n return \"%27\";\n case \";\":\n return \"%3B\";\n case \",\":\n return \"%2C\";\n case \"\\n\":\n return \"%0A\";\n case \"\\r\":\n return \"%0D\";\n default:\n throw Error(\n \"escapeStringForLinkHeaderQuotedParamValueContextReplacer encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\"\n );\n }\n }\n function hoistStyleQueueDependency(styleQueue) {\n this.styles.add(styleQueue);\n }\n function hoistStylesheetDependency(stylesheet) {\n this.stylesheets.add(stylesheet);\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function popToNearestCommonAncestor(prev, next) {\n if (prev !== next) {\n prev.context._currentValue = prev.parentValue;\n prev = prev.parent;\n var parentNext = next.parent;\n if (null === prev) {\n if (null !== parentNext)\n throw Error(\n \"The stacks must reach the root at the same time. This is a bug in React.\"\n );\n } else {\n if (null === parentNext)\n throw Error(\n \"The stacks must reach the root at the same time. This is a bug in React.\"\n );\n popToNearestCommonAncestor(prev, parentNext);\n }\n next.context._currentValue = next.value;\n }\n }\n function popAllPrevious(prev) {\n prev.context._currentValue = prev.parentValue;\n prev = prev.parent;\n null !== prev && popAllPrevious(prev);\n }\n function pushAllNext(next) {\n var parentNext = next.parent;\n null !== parentNext && pushAllNext(parentNext);\n next.context._currentValue = next.value;\n }\n function popPreviousToCommonLevel(prev, next) {\n prev.context._currentValue = prev.parentValue;\n prev = prev.parent;\n if (null === prev)\n throw Error(\n \"The depth must equal at least at zero before reaching the root. This is a bug in React.\"\n );\n prev.depth === next.depth\n ? popToNearestCommonAncestor(prev, next)\n : popPreviousToCommonLevel(prev, next);\n }\n function popNextToCommonLevel(prev, next) {\n var parentNext = next.parent;\n if (null === parentNext)\n throw Error(\n \"The depth must equal at least at zero before reaching the root. This is a bug in React.\"\n );\n prev.depth === parentNext.depth\n ? popToNearestCommonAncestor(prev, parentNext)\n : popNextToCommonLevel(prev, parentNext);\n next.context._currentValue = next.value;\n }\n function switchContext(newSnapshot) {\n var prev = currentActiveSnapshot;\n prev !== newSnapshot &&\n (null === prev\n ? pushAllNext(newSnapshot)\n : null === newSnapshot\n ? popAllPrevious(prev)\n : prev.depth === newSnapshot.depth\n ? popToNearestCommonAncestor(prev, newSnapshot)\n : prev.depth > newSnapshot.depth\n ? popPreviousToCommonLevel(prev, newSnapshot)\n : popNextToCommonLevel(prev, newSnapshot),\n (currentActiveSnapshot = newSnapshot));\n }\n function warnOnInvalidCallback(callback) {\n if (null !== callback && \"function\" !== typeof callback) {\n var key = String(callback);\n didWarnOnInvalidCallback.has(key) ||\n (didWarnOnInvalidCallback.add(key),\n console.error(\n \"Expected the last optional `callback` argument to be a function. Instead received: %s.\",\n callback\n ));\n }\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n getComponentNameFromType(publicInstance)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnAboutNoopUpdateForComponent[warningKey] ||\n (console.error(\n \"Can only update a mounting component. This usually means you called %s() outside componentWillMount() on the server. This is a no-op.\\n\\nPlease check the code for the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnAboutNoopUpdateForComponent[warningKey] = !0));\n }\n function pushTreeContext(baseContext, totalChildren, index) {\n var baseIdWithLeadingBit = baseContext.id;\n baseContext = baseContext.overflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n return {\n id:\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit,\n overflow: length + baseContext\n };\n }\n return {\n id: (1 << length) | (index << baseLength) | baseIdWithLeadingBit,\n overflow: baseContext\n };\n }\n function clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n }\n function noop$2() {}\n function trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable &&\n (thenable.then(noop$2, noop$2), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n \"string\" === typeof thenable.status\n ? thenable.then(noop$2, noop$2)\n : ((thenableState = thenable),\n (thenableState.status = \"pending\"),\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n ));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n }\n function getSuspendedThenable() {\n if (null === suspendedThenable)\n throw Error(\n \"Expected a suspended thenable. This is a bug in React. Please file an issue.\"\n );\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n }\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function resolveCurrentlyRenderingComponent() {\n if (null === currentlyRenderingComponent)\n throw Error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n isInHookUserCodeInDev &&\n console.error(\n \"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks\"\n );\n return currentlyRenderingComponent;\n }\n function createHook() {\n if (0 < numberOfReRenders)\n throw Error(\"Rendered more hooks than during the previous render\");\n return { memoizedState: null, queue: null, next: null };\n }\n function createWorkInProgressHook() {\n null === workInProgressHook\n ? null === firstWorkInProgressHook\n ? ((isReRender = !1),\n (firstWorkInProgressHook = workInProgressHook = createHook()))\n : ((isReRender = !0), (workInProgressHook = firstWorkInProgressHook))\n : null === workInProgressHook.next\n ? ((isReRender = !1),\n (workInProgressHook = workInProgressHook.next = createHook()))\n : ((isReRender = !0), (workInProgressHook = workInProgressHook.next));\n return workInProgressHook;\n }\n function getThenableStateAfterSuspending() {\n var state = thenableState;\n thenableState = null;\n return state;\n }\n function resetHooksState() {\n isInHookUserCodeInDev = !1;\n currentlyRenderingKeyPath =\n currentlyRenderingRequest =\n currentlyRenderingTask =\n currentlyRenderingComponent =\n null;\n didScheduleRenderPhaseUpdate = !1;\n firstWorkInProgressHook = null;\n numberOfReRenders = 0;\n workInProgressHook = renderPhaseUpdates = null;\n }\n function readContext(context) {\n isInHookUserCodeInDev &&\n console.error(\n \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n );\n return context._currentValue;\n }\n function basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n }\n function useReducer(reducer, initialArg, init) {\n reducer !== basicStateReducer && (currentHookNameInDev = \"useReducer\");\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n if (isReRender) {\n init = workInProgressHook.queue;\n initialArg = init.dispatch;\n if (null !== renderPhaseUpdates) {\n var firstRenderPhaseUpdate = renderPhaseUpdates.get(init);\n if (void 0 !== firstRenderPhaseUpdate) {\n renderPhaseUpdates.delete(init);\n init = workInProgressHook.memoizedState;\n do {\n var action = firstRenderPhaseUpdate.action;\n isInHookUserCodeInDev = !0;\n init = reducer(init, action);\n isInHookUserCodeInDev = !1;\n firstRenderPhaseUpdate = firstRenderPhaseUpdate.next;\n } while (null !== firstRenderPhaseUpdate);\n workInProgressHook.memoizedState = init;\n return [init, initialArg];\n }\n }\n return [workInProgressHook.memoizedState, initialArg];\n }\n isInHookUserCodeInDev = !0;\n reducer =\n reducer === basicStateReducer\n ? \"function\" === typeof initialArg\n ? initialArg()\n : initialArg\n : void 0 !== init\n ? init(initialArg)\n : initialArg;\n isInHookUserCodeInDev = !1;\n workInProgressHook.memoizedState = reducer;\n reducer = workInProgressHook.queue = { last: null, dispatch: null };\n reducer = reducer.dispatch = dispatchAction.bind(\n null,\n currentlyRenderingComponent,\n reducer\n );\n return [workInProgressHook.memoizedState, reducer];\n }\n function useMemo(nextCreate, deps) {\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n if (null !== workInProgressHook) {\n var prevState = workInProgressHook.memoizedState;\n if (null !== prevState && null !== deps) {\n a: {\n var JSCompiler_inline_result = prevState[1];\n if (null === JSCompiler_inline_result)\n console.error(\n \"%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.\",\n currentHookNameInDev\n ),\n (JSCompiler_inline_result = !1);\n else {\n deps.length !== JSCompiler_inline_result.length &&\n console.error(\n \"The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\\n\\nPrevious: %s\\nIncoming: %s\",\n currentHookNameInDev,\n \"[\" + deps.join(\", \") + \"]\",\n \"[\" + JSCompiler_inline_result.join(\", \") + \"]\"\n );\n for (\n var i = 0;\n i < JSCompiler_inline_result.length && i < deps.length;\n i++\n )\n if (!objectIs(deps[i], JSCompiler_inline_result[i])) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = !0;\n }\n }\n if (JSCompiler_inline_result) return prevState[0];\n }\n }\n isInHookUserCodeInDev = !0;\n nextCreate = nextCreate();\n isInHookUserCodeInDev = !1;\n workInProgressHook.memoizedState = [nextCreate, deps];\n return nextCreate;\n }\n function dispatchAction(componentIdentity, queue, action) {\n if (25 <= numberOfReRenders)\n throw Error(\n \"Too many re-renders. React limits the number of renders to prevent an infinite loop.\"\n );\n if (componentIdentity === currentlyRenderingComponent)\n if (\n ((didScheduleRenderPhaseUpdate = !0),\n (componentIdentity = { action: action, next: null }),\n null === renderPhaseUpdates && (renderPhaseUpdates = new Map()),\n (action = renderPhaseUpdates.get(queue)),\n void 0 === action)\n )\n renderPhaseUpdates.set(queue, componentIdentity);\n else {\n for (queue = action; null !== queue.next; ) queue = queue.next;\n queue.next = componentIdentity;\n }\n }\n function unsupportedStartTransition() {\n throw Error(\"startTransition cannot be called during server rendering.\");\n }\n function unsupportedSetOptimisticState() {\n throw Error(\"Cannot update optimistic state while rendering.\");\n }\n function useActionState(action, initialState, permalink) {\n resolveCurrentlyRenderingComponent();\n var actionStateHookIndex = actionStateCounter++,\n request = currentlyRenderingRequest;\n if (\"function\" === typeof action.$$FORM_ACTION) {\n var nextPostbackStateKey = null,\n componentKeyPath = currentlyRenderingKeyPath;\n request = request.formState;\n var isSignatureEqual = action.$$IS_SIGNATURE_EQUAL;\n if (null !== request && \"function\" === typeof isSignatureEqual) {\n var postbackKey = request[1];\n isSignatureEqual.call(action, request[2], request[3]) &&\n ((nextPostbackStateKey =\n void 0 !== permalink\n ? \"p\" + permalink\n : \"k\" +\n murmurhash3_32_gc(\n JSON.stringify([\n componentKeyPath,\n null,\n actionStateHookIndex\n ]),\n 0\n )),\n postbackKey === nextPostbackStateKey &&\n ((actionStateMatchingIndex = actionStateHookIndex),\n (initialState = request[0])));\n }\n var boundAction = action.bind(null, initialState);\n action = function (payload) {\n boundAction(payload);\n };\n \"function\" === typeof boundAction.$$FORM_ACTION &&\n (action.$$FORM_ACTION = function (prefix) {\n prefix = boundAction.$$FORM_ACTION(prefix);\n void 0 !== permalink &&\n (checkAttributeStringCoercion(permalink, \"target\"),\n (permalink += \"\"),\n (prefix.action = permalink));\n var formData = prefix.data;\n formData &&\n (null === nextPostbackStateKey &&\n (nextPostbackStateKey =\n void 0 !== permalink\n ? \"p\" + permalink\n : \"k\" +\n murmurhash3_32_gc(\n JSON.stringify([\n componentKeyPath,\n null,\n actionStateHookIndex\n ]),\n 0\n )),\n formData.append(\"$ACTION_KEY\", nextPostbackStateKey));\n return prefix;\n });\n return [initialState, action, !1];\n }\n var _boundAction = action.bind(null, initialState);\n return [\n initialState,\n function (payload) {\n _boundAction(payload);\n },\n !1\n ];\n }\n function unwrapThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n return trackUsedThenable(thenableState, thenable, index);\n }\n function unsupportedRefresh() {\n throw Error(\"Cache cannot be refreshed during server rendering.\");\n }\n function noop$1() {}\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"<anonymous>\") &&\n (_frame = _frame.replace(\"<anonymous>\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeComponentStackByType(type) {\n if (\"string\" === typeof type) return describeBuiltInComponentFrame(type);\n if (\"function\" === typeof type)\n return type.prototype && type.prototype.isReactComponent\n ? ((type = describeNativeComponentFrame(type, !0)), type)\n : describeNativeComponentFrame(type, !1);\n if (\"object\" === typeof type && null !== type) {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeNativeComponentFrame(type.render, !1);\n case REACT_MEMO_TYPE:\n return describeNativeComponentFrame(type.type, !1);\n case REACT_LAZY_TYPE:\n var lazyComponent = type,\n payload = lazyComponent._payload;\n lazyComponent = lazyComponent._init;\n try {\n type = lazyComponent(payload);\n } catch (x) {\n return describeBuiltInComponentFrame(\"Lazy\");\n }\n return describeComponentStackByType(type);\n }\n if (\"string\" === typeof type.name)\n return (\n (payload = type.env),\n describeBuiltInComponentFrame(\n type.name + (payload ? \" [\" + payload + \"]\" : \"\")\n )\n );\n }\n switch (type) {\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n }\n return \"\";\n }\n function getStackByComponentStackNode(componentStack) {\n try {\n var info = \"\";\n do\n (info += describeComponentStackByType(componentStack.type)),\n (componentStack = componentStack.parent);\n while (componentStack);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n }\n function defaultErrorHandler(error) {\n if (\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.environmentName\n ) {\n var JSCompiler_inline_result = error.environmentName;\n error = [error].slice(0);\n \"string\" === typeof error[0]\n ? error.splice(\n 0,\n 1,\n \"%c%s%c \" + error[0],\n \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\",\n \" \" + JSCompiler_inline_result + \" \",\n \"\"\n )\n : error.splice(\n 0,\n 0,\n \"%c%s%c \",\n \"background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px\",\n \" \" + JSCompiler_inline_result + \" \",\n \"\"\n );\n error.unshift(console);\n JSCompiler_inline_result = bind.apply(console.error, error);\n JSCompiler_inline_result();\n } else console.error(error);\n return null;\n }\n function noop() {}\n function RequestInstance(\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n ) {\n var abortSet = new Set();\n this.destination = null;\n this.flushScheduled = !1;\n this.resumableState = resumableState;\n this.renderState = renderState;\n this.rootFormatContext = rootFormatContext;\n this.progressiveChunkSize =\n void 0 === progressiveChunkSize ? 12800 : progressiveChunkSize;\n this.status = 10;\n this.fatalError = null;\n this.pendingRootTasks = this.allPendingTasks = this.nextSegmentId = 0;\n this.completedRootSegment = null;\n this.abortableTasks = abortSet;\n this.pingedTasks = [];\n this.clientRenderedBoundaries = [];\n this.completedBoundaries = [];\n this.partialBoundaries = [];\n this.trackedPostpones = null;\n this.onError = void 0 === onError ? defaultErrorHandler : onError;\n this.onPostpone = void 0 === onPostpone ? noop : onPostpone;\n this.onAllReady = void 0 === onAllReady ? noop : onAllReady;\n this.onShellReady = void 0 === onShellReady ? noop : onShellReady;\n this.onShellError = void 0 === onShellError ? noop : onShellError;\n this.onFatalError = void 0 === onFatalError ? noop : onFatalError;\n this.formState = void 0 === formState ? null : formState;\n this.didWarnForKey = null;\n }\n function createRequest(\n children,\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n ) {\n resumableState = new RequestInstance(\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n formState\n );\n renderState = createPendingSegment(\n resumableState,\n 0,\n null,\n rootFormatContext,\n !1,\n !1\n );\n renderState.parentFlushed = !0;\n children = createRenderTask(\n resumableState,\n null,\n children,\n -1,\n null,\n renderState,\n null,\n resumableState.abortableTasks,\n null,\n rootFormatContext,\n null,\n emptyTreeContext,\n null,\n !1\n );\n pushComponentStack(children);\n resumableState.pingedTasks.push(children);\n return resumableState;\n }\n function createPrerenderRequest(\n children,\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone\n ) {\n children = createRequest(\n children,\n resumableState,\n renderState,\n rootFormatContext,\n progressiveChunkSize,\n onError,\n onAllReady,\n onShellReady,\n onShellError,\n onFatalError,\n onPostpone,\n void 0\n );\n children.trackedPostpones = {\n workingMap: new Map(),\n rootNodes: [],\n rootSlots: null\n };\n return children;\n }\n function pingTask(request, task) {\n request.pingedTasks.push(task);\n 1 === request.pingedTasks.length &&\n ((request.flushScheduled = null !== request.destination),\n null !== request.trackedPostpones || 10 === request.status\n ? scheduleMicrotask(function () {\n return performWork(request);\n })\n : scheduleWork(function () {\n return performWork(request);\n }));\n }\n function createSuspenseBoundary(request, fallbackAbortableTasks) {\n return {\n status: PENDING,\n rootSegmentID: -1,\n parentFlushed: !1,\n pendingTasks: 0,\n completedSegments: [],\n byteSize: 0,\n fallbackAbortableTasks: fallbackAbortableTasks,\n errorDigest: null,\n contentState: createHoistableState(),\n fallbackState: createHoistableState(),\n trackedContentKeyPath: null,\n trackedFallbackNode: null,\n errorMessage: null,\n errorStack: null,\n errorComponentStack: null\n };\n }\n function createRenderTask(\n request,\n thenableState,\n node,\n childIndex,\n blockedBoundary,\n blockedSegment,\n hoistableState,\n abortSet,\n keyPath,\n formatContext,\n context,\n treeContext,\n componentStack,\n isFallback\n ) {\n request.allPendingTasks++;\n null === blockedBoundary\n ? request.pendingRootTasks++\n : blockedBoundary.pendingTasks++;\n var task = {\n replay: null,\n node: node,\n childIndex: childIndex,\n ping: function () {\n return pingTask(request, task);\n },\n blockedBoundary: blockedBoundary,\n blockedSegment: blockedSegment,\n hoistableState: hoistableState,\n abortSet: abortSet,\n keyPath: keyPath,\n formatContext: formatContext,\n context: context,\n treeContext: treeContext,\n componentStack: componentStack,\n thenableState: thenableState,\n isFallback: isFallback\n };\n abortSet.add(task);\n return task;\n }\n function createReplayTask(\n request,\n thenableState,\n replay,\n node,\n childIndex,\n blockedBoundary,\n hoistableState,\n abortSet,\n keyPath,\n formatContext,\n context,\n treeContext,\n componentStack,\n isFallback\n ) {\n request.allPendingTasks++;\n null === blockedBoundary\n ? request.pendingRootTasks++\n : blockedBoundary.pendingTasks++;\n replay.pendingTasks++;\n var task = {\n replay: replay,\n node: node,\n childIndex: childIndex,\n ping: function () {\n return pingTask(request, task);\n },\n blockedBoundary: blockedBoundary,\n blockedSegment: null,\n hoistableState: hoistableState,\n abortSet: abortSet,\n keyPath: keyPath,\n formatContext: formatContext,\n context: context,\n treeContext: treeContext,\n componentStack: componentStack,\n thenableState: thenableState,\n isFallback: isFallback\n };\n abortSet.add(task);\n return task;\n }\n function createPendingSegment(\n request,\n index,\n boundary,\n parentFormatContext,\n lastPushedText,\n textEmbedded\n ) {\n return {\n status: PENDING,\n id: -1,\n index: index,\n parentFlushed: !1,\n chunks: [],\n children: [],\n parentFormatContext: parentFormatContext,\n boundary: boundary,\n lastPushedText: lastPushedText,\n textEmbedded: textEmbedded\n };\n }\n function getCurrentStackInDEV() {\n return null === currentTaskInDEV ||\n null === currentTaskInDEV.componentStack\n ? \"\"\n : getStackByComponentStackNode(currentTaskInDEV.componentStack);\n }\n function pushServerComponentStack(task, debugInfo) {\n if (null != debugInfo)\n for (var i = 0; i < debugInfo.length; i++) {\n var componentInfo = debugInfo[i];\n \"string\" === typeof componentInfo.name &&\n (task.componentStack = {\n parent: task.componentStack,\n type: componentInfo,\n owner: componentInfo.owner,\n stack: null\n });\n }\n }\n function pushComponentStack(task) {\n var node = task.node;\n if (\"object\" === typeof node && null !== node)\n switch (node.$$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = node.type,\n owner = node._owner;\n pushServerComponentStack(task, node._debugInfo);\n task.componentStack = {\n parent: task.componentStack,\n type: type,\n owner: owner,\n stack: null\n };\n break;\n case REACT_LAZY_TYPE:\n pushServerComponentStack(task, node._debugInfo);\n break;\n default:\n \"function\" === typeof node.then &&\n pushServerComponentStack(task, node._debugInfo);\n }\n }\n function getThrownInfo(node) {\n var errorInfo = {};\n node &&\n Object.defineProperty(errorInfo, \"componentStack\", {\n configurable: !0,\n enumerable: !0,\n get: function () {\n var stack = getStackByComponentStackNode(node);\n Object.defineProperty(errorInfo, \"componentStack\", {\n value: stack\n });\n return stack;\n }\n });\n return errorInfo;\n }\n function encodeErrorForBoundary(\n boundary,\n digest,\n error,\n thrownInfo,\n wasAborted\n ) {\n boundary.errorDigest = digest;\n error instanceof Error\n ? ((digest = String(error.message)), (error = String(error.stack)))\n : ((digest =\n \"object\" === typeof error && null !== error\n ? describeObjectForErrorMessage(error)\n : String(error)),\n (error = null));\n wasAborted = wasAborted\n ? \"Switched to client rendering because the server rendering aborted due to:\\n\\n\"\n : \"Switched to client rendering because the server rendering errored:\\n\\n\";\n boundary.errorMessage = wasAborted + digest;\n boundary.errorStack = null !== error ? wasAborted + error : null;\n boundary.errorComponentStack = thrownInfo.componentStack;\n }\n function logRecoverableError(request, error, errorInfo) {\n request = request.onError;\n error = request(error, errorInfo);\n if (null != error && \"string\" !== typeof error)\n console.error(\n 'onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"%s\" instead',\n typeof error\n );\n else return error;\n }\n function fatalError(request, error) {\n var onShellError = request.onShellError,\n onFatalError = request.onFatalError;\n onShellError(error);\n onFatalError(error);\n null !== request.destination\n ? ((request.status = CLOSED),\n closeWithError(request.destination, error))\n : ((request.status = 13), (request.fatalError = error));\n }\n function renderWithHooks(\n request,\n task,\n keyPath,\n Component,\n props,\n secondArg\n ) {\n var prevThenableState = task.thenableState;\n task.thenableState = null;\n currentlyRenderingComponent = {};\n currentlyRenderingTask = task;\n currentlyRenderingRequest = request;\n currentlyRenderingKeyPath = keyPath;\n isInHookUserCodeInDev = !1;\n actionStateCounter = localIdCounter = 0;\n actionStateMatchingIndex = -1;\n thenableIndexCounter = 0;\n thenableState = prevThenableState;\n for (\n request = callComponentInDEV(Component, props, secondArg);\n didScheduleRenderPhaseUpdate;\n\n )\n (didScheduleRenderPhaseUpdate = !1),\n (actionStateCounter = localIdCounter = 0),\n (actionStateMatchingIndex = -1),\n (thenableIndexCounter = 0),\n (numberOfReRenders += 1),\n (workInProgressHook = null),\n (request = Component(props, secondArg));\n resetHooksState();\n return request;\n }\n function finishFunctionComponent(\n request,\n task,\n keyPath,\n children,\n hasId,\n actionStateCount,\n actionStateMatchingIndex\n ) {\n var didEmitActionStateMarkers = !1;\n if (0 !== actionStateCount && null !== request.formState) {\n var segment = task.blockedSegment;\n if (null !== segment) {\n didEmitActionStateMarkers = !0;\n segment = segment.chunks;\n for (var i = 0; i < actionStateCount; i++)\n i === actionStateMatchingIndex\n ? segment.push(formStateMarkerIsMatching)\n : segment.push(formStateMarkerIsNotMatching);\n }\n }\n actionStateCount = task.keyPath;\n task.keyPath = keyPath;\n hasId\n ? ((keyPath = task.treeContext),\n (task.treeContext = pushTreeContext(keyPath, 1, 0)),\n renderNode(request, task, children, -1),\n (task.treeContext = keyPath))\n : didEmitActionStateMarkers\n ? renderNode(request, task, children, -1)\n : renderNodeDestructive(request, task, children, -1);\n task.keyPath = actionStateCount;\n }\n function renderElement(request, task, keyPath, type, props, ref) {\n if (\"function\" === typeof type)\n if (type.prototype && type.prototype.isReactComponent) {\n var newProps = props;\n if (\"ref\" in props) {\n newProps = {};\n for (var propName in props)\n \"ref\" !== propName && (newProps[propName] = props[propName]);\n }\n var defaultProps = type.defaultProps;\n if (defaultProps) {\n newProps === props && (newProps = assign({}, newProps, props));\n for (var _propName in defaultProps)\n void 0 === newProps[_propName] &&\n (newProps[_propName] = defaultProps[_propName]);\n }\n var resolvedProps = newProps;\n var context = emptyContextObject,\n contextType = type.contextType;\n if (\n \"contextType\" in type &&\n null !== contextType &&\n (void 0 === contextType ||\n contextType.$$typeof !== REACT_CONTEXT_TYPE) &&\n !didWarnAboutInvalidateContextType.has(type)\n ) {\n didWarnAboutInvalidateContextType.add(type);\n var addendum =\n void 0 === contextType\n ? \" However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.\"\n : \"object\" !== typeof contextType\n ? \" However, it is set to a \" + typeof contextType + \".\"\n : contextType.$$typeof === REACT_CONSUMER_TYPE\n ? \" Did you accidentally pass the Context.Consumer instead?\"\n : \" However, it is set to an object with keys {\" +\n Object.keys(contextType).join(\", \") +\n \"}.\";\n console.error(\n \"%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s\",\n getComponentNameFromType(type) || \"Component\",\n addendum\n );\n }\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = contextType._currentValue);\n var instance = new type(resolvedProps, context);\n if (\n \"function\" === typeof type.getDerivedStateFromProps &&\n (null === instance.state || void 0 === instance.state)\n ) {\n var componentName = getComponentNameFromType(type) || \"Component\";\n didWarnAboutUninitializedState.has(componentName) ||\n (didWarnAboutUninitializedState.add(componentName),\n console.error(\n \"`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.\",\n componentName,\n null === instance.state ? \"null\" : \"undefined\",\n componentName\n ));\n }\n if (\n \"function\" === typeof type.getDerivedStateFromProps ||\n \"function\" === typeof instance.getSnapshotBeforeUpdate\n ) {\n var foundWillMountName = null,\n foundWillReceivePropsName = null,\n foundWillUpdateName = null;\n \"function\" === typeof instance.componentWillMount &&\n !0 !== instance.componentWillMount.__suppressDeprecationWarning\n ? (foundWillMountName = \"componentWillMount\")\n : \"function\" === typeof instance.UNSAFE_componentWillMount &&\n (foundWillMountName = \"UNSAFE_componentWillMount\");\n \"function\" === typeof instance.componentWillReceiveProps &&\n !0 !==\n instance.componentWillReceiveProps.__suppressDeprecationWarning\n ? (foundWillReceivePropsName = \"componentWillReceiveProps\")\n : \"function\" ===\n typeof instance.UNSAFE_componentWillReceiveProps &&\n (foundWillReceivePropsName =\n \"UNSAFE_componentWillReceiveProps\");\n \"function\" === typeof instance.componentWillUpdate &&\n !0 !== instance.componentWillUpdate.__suppressDeprecationWarning\n ? (foundWillUpdateName = \"componentWillUpdate\")\n : \"function\" === typeof instance.UNSAFE_componentWillUpdate &&\n (foundWillUpdateName = \"UNSAFE_componentWillUpdate\");\n if (\n null !== foundWillMountName ||\n null !== foundWillReceivePropsName ||\n null !== foundWillUpdateName\n ) {\n var _componentName =\n getComponentNameFromType(type) || \"Component\",\n newApiName =\n \"function\" === typeof type.getDerivedStateFromProps\n ? \"getDerivedStateFromProps()\"\n : \"getSnapshotBeforeUpdate()\";\n didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName) ||\n (didWarnAboutLegacyLifecyclesAndDerivedState.add(\n _componentName\n ),\n console.error(\n \"Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\nhttps://react.dev/link/unsafe-component-lifecycles\",\n _componentName,\n newApiName,\n null !== foundWillMountName\n ? \"\\n \" + foundWillMountName\n : \"\",\n null !== foundWillReceivePropsName\n ? \"\\n \" + foundWillReceivePropsName\n : \"\",\n null !== foundWillUpdateName\n ? \"\\n \" + foundWillUpdateName\n : \"\"\n ));\n }\n }\n var name = getComponentNameFromType(type) || \"Component\";\n instance.render ||\n (type.prototype && \"function\" === typeof type.prototype.render\n ? console.error(\n \"No `render` method found on the %s instance: did you accidentally return an object from the constructor?\",\n name\n )\n : console.error(\n \"No `render` method found on the %s instance: you may have forgotten to define `render`.\",\n name\n ));\n !instance.getInitialState ||\n instance.getInitialState.isReactClassApproved ||\n instance.state ||\n console.error(\n \"getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?\",\n name\n );\n instance.getDefaultProps &&\n !instance.getDefaultProps.isReactClassApproved &&\n console.error(\n \"getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.\",\n name\n );\n instance.contextType &&\n console.error(\n \"contextType was defined as an instance property on %s. Use a static property to define contextType instead.\",\n name\n );\n type.childContextTypes &&\n !didWarnAboutChildContextTypes.has(type) &&\n (didWarnAboutChildContextTypes.add(type),\n console.error(\n \"%s uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead. (https://react.dev/link/legacy-context)\",\n name\n ));\n type.contextTypes &&\n !didWarnAboutContextTypes$1.has(type) &&\n (didWarnAboutContextTypes$1.add(type),\n console.error(\n \"%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with static contextType instead. (https://react.dev/link/legacy-context)\",\n name\n ));\n \"function\" === typeof instance.componentShouldUpdate &&\n console.error(\n \"%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.\",\n name\n );\n type.prototype &&\n type.prototype.isPureReactComponent &&\n \"undefined\" !== typeof instance.shouldComponentUpdate &&\n console.error(\n \"%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.\",\n getComponentNameFromType(type) || \"A pure component\"\n );\n \"function\" === typeof instance.componentDidUnmount &&\n console.error(\n \"%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?\",\n name\n );\n \"function\" === typeof instance.componentDidReceiveProps &&\n console.error(\n \"%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().\",\n name\n );\n \"function\" === typeof instance.componentWillRecieveProps &&\n console.error(\n \"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?\",\n name\n );\n \"function\" === typeof instance.UNSAFE_componentWillRecieveProps &&\n console.error(\n \"%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?\",\n name\n );\n var hasMutatedProps = instance.props !== resolvedProps;\n void 0 !== instance.props &&\n hasMutatedProps &&\n console.error(\n \"When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.\",\n name\n );\n instance.defaultProps &&\n console.error(\n \"Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.\",\n name,\n name\n );\n \"function\" !== typeof instance.getSnapshotBeforeUpdate ||\n \"function\" === typeof instance.componentDidUpdate ||\n didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(type) ||\n (didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(type),\n console.error(\n \"%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.\",\n getComponentNameFromType(type)\n ));\n \"function\" === typeof instance.getDerivedStateFromProps &&\n console.error(\n \"%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.\",\n name\n );\n \"function\" === typeof instance.getDerivedStateFromError &&\n console.error(\n \"%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.\",\n name\n );\n \"function\" === typeof type.getSnapshotBeforeUpdate &&\n console.error(\n \"%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.\",\n name\n );\n var state = instance.state;\n state &&\n (\"object\" !== typeof state || isArrayImpl(state)) &&\n console.error(\"%s.state: must be set to an object or null\", name);\n \"function\" === typeof instance.getChildContext &&\n \"object\" !== typeof type.childContextTypes &&\n console.error(\n \"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().\",\n name\n );\n var initialState = void 0 !== instance.state ? instance.state : null;\n instance.updater = classComponentUpdater;\n instance.props = resolvedProps;\n instance.state = initialState;\n var internalInstance = { queue: [], replace: !1 };\n instance._reactInternals = internalInstance;\n var contextType$jscomp$0 = type.contextType;\n instance.context =\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0\n ? contextType$jscomp$0._currentValue\n : emptyContextObject;\n if (instance.state === resolvedProps) {\n var componentName$jscomp$0 =\n getComponentNameFromType(type) || \"Component\";\n didWarnAboutDirectlyAssigningPropsToState.has(\n componentName$jscomp$0\n ) ||\n (didWarnAboutDirectlyAssigningPropsToState.add(\n componentName$jscomp$0\n ),\n console.error(\n \"%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.\",\n componentName$jscomp$0\n ));\n }\n var getDerivedStateFromProps = type.getDerivedStateFromProps;\n if (\"function\" === typeof getDerivedStateFromProps) {\n var partialState = getDerivedStateFromProps(\n resolvedProps,\n initialState\n );\n if (void 0 === partialState) {\n var componentName$jscomp$1 =\n getComponentNameFromType(type) || \"Component\";\n didWarnAboutUndefinedDerivedState.has(componentName$jscomp$1) ||\n (didWarnAboutUndefinedDerivedState.add(componentName$jscomp$1),\n console.error(\n \"%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.\",\n componentName$jscomp$1\n ));\n }\n var JSCompiler_inline_result =\n null === partialState || void 0 === partialState\n ? initialState\n : assign({}, initialState, partialState);\n instance.state = JSCompiler_inline_result;\n }\n if (\n \"function\" !== typeof type.getDerivedStateFromProps &&\n \"function\" !== typeof instance.getSnapshotBeforeUpdate &&\n (\"function\" === typeof instance.UNSAFE_componentWillMount ||\n \"function\" === typeof instance.componentWillMount)\n ) {\n var oldState = instance.state;\n if (\"function\" === typeof instance.componentWillMount) {\n if (\n !0 !== instance.componentWillMount.__suppressDeprecationWarning\n ) {\n var componentName$jscomp$2 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutDeprecatedWillMount[componentName$jscomp$2] ||\n (console.warn(\n \"componentWillMount has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.\\n\\n* Move code from componentWillMount to componentDidMount (preferred in most cases) or the constructor.\\n\\nPlease update the following components: %s\",\n componentName$jscomp$2\n ),\n (didWarnAboutDeprecatedWillMount[componentName$jscomp$2] =\n !0));\n }\n instance.componentWillMount();\n }\n \"function\" === typeof instance.UNSAFE_componentWillMount &&\n instance.UNSAFE_componentWillMount();\n oldState !== instance.state &&\n (console.error(\n \"%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\",\n getComponentNameFromType(type) || \"Component\"\n ),\n classComponentUpdater.enqueueReplaceState(\n instance,\n instance.state,\n null\n ));\n if (\n null !== internalInstance.queue &&\n 0 < internalInstance.queue.length\n ) {\n var oldQueue = internalInstance.queue,\n oldReplace = internalInstance.replace;\n internalInstance.queue = null;\n internalInstance.replace = !1;\n if (oldReplace && 1 === oldQueue.length)\n instance.state = oldQueue[0];\n else {\n for (\n var nextState = oldReplace ? oldQueue[0] : instance.state,\n dontMutate = !0,\n i = oldReplace ? 1 : 0;\n i < oldQueue.length;\n i++\n ) {\n var partial = oldQueue[i],\n partialState$jscomp$0 =\n \"function\" === typeof partial\n ? partial.call(\n instance,\n nextState,\n resolvedProps,\n void 0\n )\n : partial;\n null != partialState$jscomp$0 &&\n (dontMutate\n ? ((dontMutate = !1),\n (nextState = assign(\n {},\n nextState,\n partialState$jscomp$0\n )))\n : assign(nextState, partialState$jscomp$0));\n }\n instance.state = nextState;\n }\n } else internalInstance.queue = null;\n }\n var nextChildren = callRenderInDEV(instance);\n if (12 === request.status) throw null;\n instance.props !== resolvedProps &&\n (didWarnAboutReassigningProps ||\n console.error(\n \"It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.\",\n getComponentNameFromType(type) || \"a component\"\n ),\n (didWarnAboutReassigningProps = !0));\n var prevKeyPath = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, nextChildren, -1);\n task.keyPath = prevKeyPath;\n } else {\n if (type.prototype && \"function\" === typeof type.prototype.render) {\n var componentName$jscomp$3 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutBadClass[componentName$jscomp$3] ||\n (console.error(\n \"The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.\",\n componentName$jscomp$3,\n componentName$jscomp$3\n ),\n (didWarnAboutBadClass[componentName$jscomp$3] = !0));\n }\n var value = renderWithHooks(\n request,\n task,\n keyPath,\n type,\n props,\n void 0\n );\n if (12 === request.status) throw null;\n var hasId = 0 !== localIdCounter,\n actionStateCount = actionStateCounter,\n actionStateMatchingIndex$jscomp$0 = actionStateMatchingIndex;\n if (type.contextTypes) {\n var _componentName$jscomp$0 =\n getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutContextTypes[_componentName$jscomp$0] ||\n ((didWarnAboutContextTypes[_componentName$jscomp$0] = !0),\n console.error(\n \"%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with React.useContext() instead. (https://react.dev/link/legacy-context)\",\n _componentName$jscomp$0\n ));\n }\n type &&\n type.childContextTypes &&\n console.error(\n \"childContextTypes cannot be defined on a function component.\\n %s.childContextTypes = ...\",\n type.displayName || type.name || \"Component\"\n );\n if (\"function\" === typeof type.getDerivedStateFromProps) {\n var _componentName2 = getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] ||\n (console.error(\n \"%s: Function components do not support getDerivedStateFromProps.\",\n _componentName2\n ),\n (didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] =\n !0));\n }\n if (\n \"object\" === typeof type.contextType &&\n null !== type.contextType\n ) {\n var _componentName3 = getComponentNameFromType(type) || \"Unknown\";\n didWarnAboutContextTypeOnFunctionComponent[_componentName3] ||\n (console.error(\n \"%s: Function components do not support contextType.\",\n _componentName3\n ),\n (didWarnAboutContextTypeOnFunctionComponent[_componentName3] =\n !0));\n }\n finishFunctionComponent(\n request,\n task,\n keyPath,\n value,\n hasId,\n actionStateCount,\n actionStateMatchingIndex$jscomp$0\n );\n }\n else if (\"string\" === typeof type) {\n var segment = task.blockedSegment;\n if (null === segment) {\n var children = props.children,\n prevContext = task.formatContext,\n prevKeyPath$jscomp$0 = task.keyPath;\n task.formatContext = getChildFormatContext(prevContext, type, props);\n task.keyPath = keyPath;\n renderNode(request, task, children, -1);\n task.formatContext = prevContext;\n task.keyPath = prevKeyPath$jscomp$0;\n } else {\n var _children = pushStartInstance(\n segment.chunks,\n type,\n props,\n request.resumableState,\n request.renderState,\n task.hoistableState,\n task.formatContext,\n segment.lastPushedText,\n task.isFallback\n );\n segment.lastPushedText = !1;\n var _prevContext = task.formatContext,\n _prevKeyPath2 = task.keyPath;\n task.formatContext = getChildFormatContext(_prevContext, type, props);\n task.keyPath = keyPath;\n renderNode(request, task, _children, -1);\n task.formatContext = _prevContext;\n task.keyPath = _prevKeyPath2;\n a: {\n var target = segment.chunks,\n resumableState = request.resumableState;\n switch (type) {\n case \"title\":\n case \"style\":\n case \"script\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"img\":\n case \"input\":\n case \"keygen\":\n case \"link\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n break a;\n case \"body\":\n if (_prevContext.insertionMode <= HTML_HTML_MODE) {\n resumableState.hasBody = !0;\n break a;\n }\n break;\n case \"html\":\n if (_prevContext.insertionMode === ROOT_HTML_MODE) {\n resumableState.hasHtml = !0;\n break a;\n }\n }\n target.push(endChunkForTag(type));\n }\n segment.lastPushedText = !1;\n }\n } else {\n switch (type) {\n case REACT_LEGACY_HIDDEN_TYPE:\n case REACT_DEBUG_TRACING_MODE_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_FRAGMENT_TYPE:\n var prevKeyPath$jscomp$1 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = prevKeyPath$jscomp$1;\n return;\n case REACT_OFFSCREEN_TYPE:\n if (\"hidden\" !== props.mode) {\n var prevKeyPath$jscomp$2 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = prevKeyPath$jscomp$2;\n }\n return;\n case REACT_SUSPENSE_LIST_TYPE:\n var _prevKeyPath3 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, props.children, -1);\n task.keyPath = _prevKeyPath3;\n return;\n case REACT_SCOPE_TYPE:\n throw Error(\n \"ReactDOMServer does not yet support scope components.\"\n );\n case REACT_SUSPENSE_TYPE:\n a: if (null !== task.replay) {\n var _prevKeyPath = task.keyPath;\n task.keyPath = keyPath;\n var _content = props.children;\n try {\n renderNode(request, task, _content, -1);\n } finally {\n task.keyPath = _prevKeyPath;\n }\n } else {\n var prevKeyPath$jscomp$3 = task.keyPath,\n parentBoundary = task.blockedBoundary,\n parentHoistableState = task.hoistableState,\n parentSegment = task.blockedSegment,\n fallback = props.fallback,\n content = props.children,\n fallbackAbortSet = new Set(),\n newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n null !== request.trackedPostpones &&\n (newBoundary.trackedContentKeyPath = keyPath);\n var boundarySegment = createPendingSegment(\n request,\n parentSegment.chunks.length,\n newBoundary,\n task.formatContext,\n !1,\n !1\n );\n parentSegment.children.push(boundarySegment);\n parentSegment.lastPushedText = !1;\n var contentRootSegment = createPendingSegment(\n request,\n 0,\n null,\n task.formatContext,\n !1,\n !1\n );\n contentRootSegment.parentFlushed = !0;\n if (null !== request.trackedPostpones) {\n var fallbackKeyPath = [\n keyPath[0],\n \"Suspense Fallback\",\n keyPath[2]\n ],\n fallbackReplayNode = [\n fallbackKeyPath[1],\n fallbackKeyPath[2],\n [],\n null\n ];\n request.trackedPostpones.workingMap.set(\n fallbackKeyPath,\n fallbackReplayNode\n );\n newBoundary.trackedFallbackNode = fallbackReplayNode;\n task.blockedSegment = boundarySegment;\n task.keyPath = fallbackKeyPath;\n boundarySegment.status = 6;\n try {\n renderNode(request, task, fallback, -1),\n boundarySegment.lastPushedText &&\n boundarySegment.textEmbedded &&\n boundarySegment.chunks.push(textSeparator),\n (boundarySegment.status = COMPLETED);\n } catch (thrownValue) {\n throw (\n ((boundarySegment.status = 12 === request.status ? 3 : 4),\n thrownValue)\n );\n } finally {\n (task.blockedSegment = parentSegment),\n (task.keyPath = prevKeyPath$jscomp$3);\n }\n var suspendedPrimaryTask = createRenderTask(\n request,\n null,\n content,\n -1,\n newBoundary,\n contentRootSegment,\n newBoundary.contentState,\n task.abortSet,\n keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n pushComponentStack(suspendedPrimaryTask);\n request.pingedTasks.push(suspendedPrimaryTask);\n } else {\n task.blockedBoundary = newBoundary;\n task.hoistableState = newBoundary.contentState;\n task.blockedSegment = contentRootSegment;\n task.keyPath = keyPath;\n contentRootSegment.status = 6;\n try {\n if (\n (renderNode(request, task, content, -1),\n contentRootSegment.lastPushedText &&\n contentRootSegment.textEmbedded &&\n contentRootSegment.chunks.push(textSeparator),\n (contentRootSegment.status = COMPLETED),\n queueCompletedSegment(newBoundary, contentRootSegment),\n 0 === newBoundary.pendingTasks &&\n newBoundary.status === PENDING)\n ) {\n newBoundary.status = COMPLETED;\n break a;\n }\n } catch (thrownValue$2) {\n newBoundary.status = CLIENT_RENDERED;\n if (12 === request.status) {\n contentRootSegment.status = 3;\n var error = request.fatalError;\n } else\n (contentRootSegment.status = 4), (error = thrownValue$2);\n var thrownInfo = getThrownInfo(task.componentStack);\n var errorDigest = logRecoverableError(\n request,\n error,\n thrownInfo\n );\n encodeErrorForBoundary(\n newBoundary,\n errorDigest,\n error,\n thrownInfo,\n !1\n );\n untrackBoundary(request, newBoundary);\n } finally {\n (task.blockedBoundary = parentBoundary),\n (task.hoistableState = parentHoistableState),\n (task.blockedSegment = parentSegment),\n (task.keyPath = prevKeyPath$jscomp$3);\n }\n var suspendedFallbackTask = createRenderTask(\n request,\n null,\n fallback,\n -1,\n parentBoundary,\n boundarySegment,\n newBoundary.fallbackState,\n fallbackAbortSet,\n [keyPath[0], \"Suspense Fallback\", keyPath[2]],\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n !0\n );\n pushComponentStack(suspendedFallbackTask);\n request.pingedTasks.push(suspendedFallbackTask);\n }\n }\n return;\n }\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n if (\"ref\" in props) {\n var propsWithoutRef = {};\n for (var key in props)\n \"ref\" !== key && (propsWithoutRef[key] = props[key]);\n } else propsWithoutRef = props;\n var children$jscomp$0 = renderWithHooks(\n request,\n task,\n keyPath,\n type.render,\n propsWithoutRef,\n ref\n );\n finishFunctionComponent(\n request,\n task,\n keyPath,\n children$jscomp$0,\n 0 !== localIdCounter,\n actionStateCounter,\n actionStateMatchingIndex\n );\n return;\n case REACT_MEMO_TYPE:\n renderElement(request, task, keyPath, type.type, props, ref);\n return;\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n var value$jscomp$0 = props.value,\n children$jscomp$1 = props.children;\n var prevSnapshot = task.context;\n var prevKeyPath$jscomp$4 = task.keyPath;\n var prevValue = type._currentValue;\n type._currentValue = value$jscomp$0;\n void 0 !== type._currentRenderer &&\n null !== type._currentRenderer &&\n type._currentRenderer !== rendererSigil &&\n console.error(\n \"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\"\n );\n type._currentRenderer = rendererSigil;\n var prevNode = currentActiveSnapshot,\n newNode = {\n parent: prevNode,\n depth: null === prevNode ? 0 : prevNode.depth + 1,\n context: type,\n parentValue: prevValue,\n value: value$jscomp$0\n };\n currentActiveSnapshot = newNode;\n task.context = newNode;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, children$jscomp$1, -1);\n var prevSnapshot$jscomp$0 = currentActiveSnapshot;\n if (null === prevSnapshot$jscomp$0)\n throw Error(\n \"Tried to pop a Context at the root of the app. This is a bug in React.\"\n );\n prevSnapshot$jscomp$0.context !== type &&\n console.error(\n \"The parent context is not the expected context. This is probably a bug in React.\"\n );\n prevSnapshot$jscomp$0.context._currentValue =\n prevSnapshot$jscomp$0.parentValue;\n void 0 !== type._currentRenderer &&\n null !== type._currentRenderer &&\n type._currentRenderer !== rendererSigil &&\n console.error(\n \"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\"\n );\n type._currentRenderer = rendererSigil;\n var JSCompiler_inline_result$jscomp$0 = (currentActiveSnapshot =\n prevSnapshot$jscomp$0.parent);\n task.context = JSCompiler_inline_result$jscomp$0;\n task.keyPath = prevKeyPath$jscomp$4;\n prevSnapshot !== task.context &&\n console.error(\n \"Popping the context provider did not return back to the original snapshot. This is a bug in React.\"\n );\n return;\n case REACT_CONSUMER_TYPE:\n var context$jscomp$0 = type._context,\n render = props.children;\n \"function\" !== typeof render &&\n console.error(\n \"A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it.\"\n );\n var newChildren = render(context$jscomp$0._currentValue),\n prevKeyPath$jscomp$5 = task.keyPath;\n task.keyPath = keyPath;\n renderNodeDestructive(request, task, newChildren, -1);\n task.keyPath = prevKeyPath$jscomp$5;\n return;\n case REACT_LAZY_TYPE:\n var Component = callLazyInitInDEV(type);\n if (12 === request.status) throw null;\n renderElement(request, task, keyPath, Component, props, ref);\n return;\n }\n var info = \"\";\n if (\n void 0 === type ||\n (\"object\" === typeof type &&\n null !== type &&\n 0 === Object.keys(type).length)\n )\n info +=\n \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n throw Error(\n \"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: \" +\n ((null == type ? type : typeof type) + \".\" + info)\n );\n }\n }\n function resumeNode(request, task, segmentId, node, childIndex) {\n var prevReplay = task.replay,\n blockedBoundary = task.blockedBoundary,\n resumedSegment = createPendingSegment(\n request,\n 0,\n null,\n task.formatContext,\n !1,\n !1\n );\n resumedSegment.id = segmentId;\n resumedSegment.parentFlushed = !0;\n try {\n (task.replay = null),\n (task.blockedSegment = resumedSegment),\n renderNode(request, task, node, childIndex),\n (resumedSegment.status = COMPLETED),\n null === blockedBoundary\n ? (request.completedRootSegment = resumedSegment)\n : (queueCompletedSegment(blockedBoundary, resumedSegment),\n blockedBoundary.parentFlushed &&\n request.partialBoundaries.push(blockedBoundary));\n } finally {\n (task.replay = prevReplay), (task.blockedSegment = null);\n }\n }\n function renderNodeDestructive(request, task, node, childIndex) {\n null !== task.replay && \"number\" === typeof task.replay.slots\n ? resumeNode(request, task, task.replay.slots, node, childIndex)\n : ((task.node = node),\n (task.childIndex = childIndex),\n (node = task.componentStack),\n pushComponentStack(task),\n retryNode(request, task),\n (task.componentStack = node));\n }\n function retryNode(request, task) {\n var node = task.node,\n childIndex = task.childIndex;\n if (null !== node) {\n if (\"object\" === typeof node) {\n switch (node.$$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = node.type,\n key = node.key,\n props = node.props;\n node = props.ref;\n var ref = void 0 !== node ? node : null,\n name = getComponentNameFromType(type),\n keyOrIndex =\n null == key ? (-1 === childIndex ? 0 : childIndex) : key,\n keyPath = [task.keyPath, name, keyOrIndex];\n if (null !== task.replay) {\n var replay = task.replay;\n childIndex = replay.nodes;\n for (node = 0; node < childIndex.length; node++)\n if (((key = childIndex[node]), keyOrIndex === key[1])) {\n if (4 === key.length) {\n if (null !== name && name !== key[0])\n throw Error(\n \"Expected the resume to render <\" +\n key[0] +\n \"> in this slot but instead it rendered <\" +\n name +\n \">. The tree doesn't match so React will fallback to client rendering.\"\n );\n var childNodes = key[2];\n key = key[3];\n name = task.node;\n task.replay = {\n nodes: childNodes,\n slots: key,\n pendingTasks: 1\n };\n try {\n renderElement(request, task, keyPath, type, props, ref);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n (x === SuspenseException ||\n \"function\" === typeof x.then)\n )\n throw (\n (task.node === name && (task.replay = replay), x)\n );\n task.replay.pendingTasks--;\n props = getThrownInfo(task.componentStack);\n erroredReplay(\n request,\n task.blockedBoundary,\n x,\n props,\n childNodes,\n key\n );\n }\n task.replay = replay;\n } else {\n if (type !== REACT_SUSPENSE_TYPE)\n throw Error(\n \"Expected the resume to render <Suspense> in this slot but instead it rendered <\" +\n (getComponentNameFromType(type) || \"Unknown\") +\n \">. The tree doesn't match so React will fallback to client rendering.\"\n );\n a: {\n type = void 0;\n ref = key[5];\n replay = key[2];\n name = key[3];\n keyOrIndex = null === key[4] ? [] : key[4][2];\n key = null === key[4] ? null : key[4][3];\n var prevKeyPath = task.keyPath,\n previousReplaySet = task.replay,\n parentBoundary = task.blockedBoundary,\n parentHoistableState = task.hoistableState,\n content = props.children;\n props = props.fallback;\n var fallbackAbortSet = new Set(),\n resumedBoundary = createSuspenseBoundary(\n request,\n fallbackAbortSet\n );\n resumedBoundary.parentFlushed = !0;\n resumedBoundary.rootSegmentID = ref;\n task.blockedBoundary = resumedBoundary;\n task.hoistableState = resumedBoundary.contentState;\n task.keyPath = keyPath;\n task.replay = {\n nodes: replay,\n slots: name,\n pendingTasks: 1\n };\n try {\n renderNode(request, task, content, -1);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n if (\n 0 === resumedBoundary.pendingTasks &&\n resumedBoundary.status === PENDING\n ) {\n resumedBoundary.status = COMPLETED;\n request.completedBoundaries.push(resumedBoundary);\n break a;\n }\n } catch (error) {\n (resumedBoundary.status = CLIENT_RENDERED),\n (childNodes = getThrownInfo(task.componentStack)),\n (type = logRecoverableError(\n request,\n error,\n childNodes\n )),\n encodeErrorForBoundary(\n resumedBoundary,\n type,\n error,\n childNodes,\n !1\n ),\n task.replay.pendingTasks--,\n request.clientRenderedBoundaries.push(\n resumedBoundary\n );\n } finally {\n (task.blockedBoundary = parentBoundary),\n (task.hoistableState = parentHoistableState),\n (task.replay = previousReplaySet),\n (task.keyPath = prevKeyPath);\n }\n childNodes = createReplayTask(\n request,\n null,\n { nodes: keyOrIndex, slots: key, pendingTasks: 0 },\n props,\n -1,\n parentBoundary,\n resumedBoundary.fallbackState,\n fallbackAbortSet,\n [keyPath[0], \"Suspense Fallback\", keyPath[2]],\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n !0\n );\n pushComponentStack(childNodes);\n request.pingedTasks.push(childNodes);\n }\n }\n childIndex.splice(node, 1);\n break;\n }\n } else renderElement(request, task, keyPath, type, props, ref);\n return;\n case REACT_PORTAL_TYPE:\n throw Error(\n \"Portals are not currently supported by the server renderer. Render them conditionally so that they only appear on the client render.\"\n );\n case REACT_LAZY_TYPE:\n node = callLazyInitInDEV(node);\n if (12 === request.status) throw null;\n renderNodeDestructive(request, task, node, childIndex);\n return;\n }\n if (isArrayImpl(node)) {\n renderChildrenArray(request, task, node, childIndex);\n return;\n }\n null === node || \"object\" !== typeof node\n ? (props = null)\n : ((childNodes =\n (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||\n node[\"@@iterator\"]),\n (props = \"function\" === typeof childNodes ? childNodes : null));\n if (props && (childNodes = props.call(node))) {\n if (childNodes === node) {\n if (\n -1 !== childIndex ||\n null === task.componentStack ||\n \"function\" !== typeof task.componentStack.type ||\n \"[object GeneratorFunction]\" !==\n Object.prototype.toString.call(task.componentStack.type) ||\n \"[object Generator]\" !==\n Object.prototype.toString.call(childNodes)\n )\n didWarnAboutGenerators ||\n console.error(\n \"Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items.\"\n ),\n (didWarnAboutGenerators = !0);\n } else\n node.entries !== props ||\n didWarnAboutMaps ||\n (console.error(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0));\n node = childNodes.next();\n if (!node.done) {\n props = [];\n do props.push(node.value), (node = childNodes.next());\n while (!node.done);\n renderChildrenArray(request, task, props, childIndex);\n }\n return;\n }\n if (\"function\" === typeof node.then)\n return (\n (task.thenableState = null),\n renderNodeDestructive(\n request,\n task,\n unwrapThenable(node),\n childIndex\n )\n );\n if (node.$$typeof === REACT_CONTEXT_TYPE)\n return renderNodeDestructive(\n request,\n task,\n node._currentValue,\n childIndex\n );\n childIndex = Object.prototype.toString.call(node);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === childIndex\n ? \"object with keys {\" + Object.keys(node).join(\", \") + \"}\"\n : childIndex) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n \"string\" === typeof node\n ? ((childIndex = task.blockedSegment),\n null !== childIndex &&\n (childIndex.lastPushedText = pushTextInstance(\n childIndex.chunks,\n node,\n request.renderState,\n childIndex.lastPushedText\n )))\n : \"number\" === typeof node || \"bigint\" === typeof node\n ? ((childIndex = task.blockedSegment),\n null !== childIndex &&\n (childIndex.lastPushedText = pushTextInstance(\n childIndex.chunks,\n \"\" + node,\n request.renderState,\n childIndex.lastPushedText\n )))\n : (\"function\" === typeof node &&\n ((childIndex = node.displayName || node.name || \"Component\"),\n console.error(\n \"Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.\",\n childIndex,\n childIndex\n )),\n \"symbol\" === typeof node &&\n console.error(\n \"Symbols are not valid as a React child.\\n %s\",\n String(node)\n ));\n }\n }\n function renderChildrenArray(request$jscomp$0, task, children, childIndex) {\n var prevKeyPath = task.keyPath,\n previousComponentStack = task.componentStack;\n pushServerComponentStack(task, task.node._debugInfo);\n if (\n -1 !== childIndex &&\n ((task.keyPath = [task.keyPath, \"Fragment\", childIndex]),\n null !== task.replay)\n ) {\n for (\n var replay = task.replay, replayNodes = replay.nodes, j = 0;\n j < replayNodes.length;\n j++\n ) {\n var node = replayNodes[j];\n if (node[1] === childIndex) {\n childIndex = node[2];\n node = node[3];\n task.replay = { nodes: childIndex, slots: node, pendingTasks: 1 };\n try {\n renderChildrenArray(request$jscomp$0, task, children, -1);\n if (\n 1 === task.replay.pendingTasks &&\n 0 < task.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n task.replay.pendingTasks--;\n } catch (x) {\n if (\n \"object\" === typeof x &&\n null !== x &&\n (x === SuspenseException || \"function\" === typeof x.then)\n )\n throw x;\n task.replay.pendingTasks--;\n children = getThrownInfo(task.componentStack);\n erroredReplay(\n request$jscomp$0,\n task.blockedBoundary,\n x,\n children,\n childIndex,\n node\n );\n }\n task.replay = replay;\n replayNodes.splice(j, 1);\n break;\n }\n }\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n return;\n }\n replay = task.treeContext;\n replayNodes = children.length;\n if (\n null !== task.replay &&\n ((j = task.replay.slots), null !== j && \"object\" === typeof j)\n ) {\n for (childIndex = 0; childIndex < replayNodes; childIndex++) {\n node = children[childIndex];\n task.treeContext = pushTreeContext(replay, replayNodes, childIndex);\n var resumeSegmentID = j[childIndex];\n \"number\" === typeof resumeSegmentID\n ? (resumeNode(\n request$jscomp$0,\n task,\n resumeSegmentID,\n node,\n childIndex\n ),\n delete j[childIndex])\n : renderNode(request$jscomp$0, task, node, childIndex);\n }\n task.treeContext = replay;\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n return;\n }\n for (j = 0; j < replayNodes; j++) {\n childIndex = children[j];\n var request = request$jscomp$0;\n node = task;\n resumeSegmentID = childIndex;\n if (\n null !== resumeSegmentID &&\n \"object\" === typeof resumeSegmentID &&\n (resumeSegmentID.$$typeof === REACT_ELEMENT_TYPE ||\n resumeSegmentID.$$typeof === REACT_PORTAL_TYPE) &&\n resumeSegmentID._store &&\n ((!resumeSegmentID._store.validated && null == resumeSegmentID.key) ||\n 2 === resumeSegmentID._store.validated)\n ) {\n if (\"object\" !== typeof resumeSegmentID._store)\n throw Error(\n \"React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.\"\n );\n resumeSegmentID._store.validated = 1;\n var didWarnForKey = request.didWarnForKey;\n null == didWarnForKey &&\n (didWarnForKey = request.didWarnForKey = new WeakSet());\n request = node.componentStack;\n if (null !== request && !didWarnForKey.has(request)) {\n didWarnForKey.add(request);\n var componentName = getComponentNameFromType(resumeSegmentID.type);\n didWarnForKey = resumeSegmentID._owner;\n var parentOwner = request.owner;\n request = \"\";\n if (parentOwner && \"undefined\" !== typeof parentOwner.type) {\n var name = getComponentNameFromType(parentOwner.type);\n name &&\n (request = \"\\n\\nCheck the render method of `\" + name + \"`.\");\n }\n request ||\n (componentName &&\n (request =\n \"\\n\\nCheck the top-level render call using <\" +\n componentName +\n \">.\"));\n componentName = \"\";\n null != didWarnForKey &&\n parentOwner !== didWarnForKey &&\n ((parentOwner = null),\n \"undefined\" !== typeof didWarnForKey.type\n ? (parentOwner = getComponentNameFromType(didWarnForKey.type))\n : \"string\" === typeof didWarnForKey.name &&\n (parentOwner = didWarnForKey.name),\n parentOwner &&\n (componentName =\n \" It was passed a child from \" + parentOwner + \".\"));\n didWarnForKey = node.componentStack;\n node.componentStack = {\n parent: node.componentStack,\n type: resumeSegmentID.type,\n owner: resumeSegmentID._owner,\n stack: null\n };\n console.error(\n 'Each child in a list should have a unique \"key\" prop.%s%s See https://react.dev/link/warning-keys for more information.',\n request,\n componentName\n );\n node.componentStack = didWarnForKey;\n }\n }\n task.treeContext = pushTreeContext(replay, replayNodes, j);\n renderNode(request$jscomp$0, task, childIndex, j);\n }\n task.treeContext = replay;\n task.keyPath = prevKeyPath;\n task.componentStack = previousComponentStack;\n }\n function untrackBoundary(request, boundary) {\n request = request.trackedPostpones;\n null !== request &&\n ((boundary = boundary.trackedContentKeyPath),\n null !== boundary &&\n ((boundary = request.workingMap.get(boundary)),\n void 0 !== boundary &&\n ((boundary.length = 4), (boundary[2] = []), (boundary[3] = null))));\n }\n function spawnNewSuspendedReplayTask(request, task, thenableState) {\n return createReplayTask(\n request,\n thenableState,\n task.replay,\n task.node,\n task.childIndex,\n task.blockedBoundary,\n task.hoistableState,\n task.abortSet,\n task.keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n }\n function spawnNewSuspendedRenderTask(request, task, thenableState) {\n var segment = task.blockedSegment,\n newSegment = createPendingSegment(\n request,\n segment.chunks.length,\n null,\n task.formatContext,\n segment.lastPushedText,\n !0\n );\n segment.children.push(newSegment);\n segment.lastPushedText = !1;\n return createRenderTask(\n request,\n thenableState,\n task.node,\n task.childIndex,\n task.blockedBoundary,\n newSegment,\n task.hoistableState,\n task.abortSet,\n task.keyPath,\n task.formatContext,\n task.context,\n task.treeContext,\n task.componentStack,\n task.isFallback\n );\n }\n function renderNode(request, task, node, childIndex) {\n var previousFormatContext = task.formatContext,\n previousContext = task.context,\n previousKeyPath = task.keyPath,\n previousTreeContext = task.treeContext,\n previousComponentStack = task.componentStack,\n segment = task.blockedSegment;\n if (null === segment)\n try {\n return renderNodeDestructive(request, task, node, childIndex);\n } catch (thrownValue) {\n if (\n (resetHooksState(),\n (node =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : thrownValue),\n \"object\" === typeof node && null !== node)\n ) {\n if (\"function\" === typeof node.then) {\n childIndex = getThenableStateAfterSuspending();\n request = spawnNewSuspendedReplayTask(\n request,\n task,\n childIndex\n ).ping;\n node.then(request, request);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n if (\"Maximum call stack size exceeded\" === node.message) {\n node = getThenableStateAfterSuspending();\n node = spawnNewSuspendedReplayTask(request, task, node);\n request.pingedTasks.push(node);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n }\n }\n else {\n var childrenLength = segment.children.length,\n chunkLength = segment.chunks.length;\n try {\n return renderNodeDestructive(request, task, node, childIndex);\n } catch (thrownValue$3) {\n if (\n (resetHooksState(),\n (segment.children.length = childrenLength),\n (segment.chunks.length = chunkLength),\n (node =\n thrownValue$3 === SuspenseException\n ? getSuspendedThenable()\n : thrownValue$3),\n \"object\" === typeof node && null !== node)\n ) {\n if (\"function\" === typeof node.then) {\n childIndex = getThenableStateAfterSuspending();\n request = spawnNewSuspendedRenderTask(\n request,\n task,\n childIndex\n ).ping;\n node.then(request, request);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n if (\"Maximum call stack size exceeded\" === node.message) {\n node = getThenableStateAfterSuspending();\n node = spawnNewSuspendedRenderTask(request, task, node);\n request.pingedTasks.push(node);\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n task.componentStack = previousComponentStack;\n switchContext(previousContext);\n return;\n }\n }\n }\n }\n task.formatContext = previousFormatContext;\n task.context = previousContext;\n task.keyPath = previousKeyPath;\n task.treeContext = previousTreeContext;\n switchContext(previousContext);\n throw node;\n }\n function erroredReplay(\n request,\n boundary,\n error,\n errorInfo,\n replayNodes,\n resumeSlots\n ) {\n var errorDigest = logRecoverableError(request, error, errorInfo);\n abortRemainingReplayNodes(\n request,\n boundary,\n replayNodes,\n resumeSlots,\n error,\n errorDigest,\n errorInfo,\n !1\n );\n }\n function abortTaskSoft(task) {\n var boundary = task.blockedBoundary;\n task = task.blockedSegment;\n null !== task && ((task.status = 3), finishedTask(this, boundary, task));\n }\n function abortRemainingReplayNodes(\n request$jscomp$0,\n boundary,\n nodes,\n slots,\n error$jscomp$0,\n errorDigest$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n ) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (4 === node.length)\n abortRemainingReplayNodes(\n request$jscomp$0,\n boundary,\n node[2],\n node[3],\n error$jscomp$0,\n errorDigest$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n );\n else {\n var request = request$jscomp$0;\n node = node[5];\n var error = error$jscomp$0,\n errorDigest = errorDigest$jscomp$0,\n errorInfo = errorInfo$jscomp$0,\n wasAborted = aborted,\n resumedBoundary = createSuspenseBoundary(request, new Set());\n resumedBoundary.parentFlushed = !0;\n resumedBoundary.rootSegmentID = node;\n resumedBoundary.status = CLIENT_RENDERED;\n encodeErrorForBoundary(\n resumedBoundary,\n errorDigest,\n error,\n errorInfo,\n wasAborted\n );\n resumedBoundary.parentFlushed &&\n request.clientRenderedBoundaries.push(resumedBoundary);\n }\n }\n nodes.length = 0;\n if (null !== slots) {\n if (null === boundary)\n throw Error(\n \"We should not have any resumable nodes in the shell. This is a bug in React.\"\n );\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(\n boundary,\n errorDigest$jscomp$0,\n error$jscomp$0,\n errorInfo$jscomp$0,\n aborted\n ),\n boundary.parentFlushed &&\n request$jscomp$0.clientRenderedBoundaries.push(boundary));\n if (\"object\" === typeof slots)\n for (var index in slots) delete slots[index];\n }\n }\n function abortTask(task, request, error) {\n var boundary = task.blockedBoundary,\n segment = task.blockedSegment;\n if (null !== segment) {\n if (6 === segment.status) return;\n segment.status = 3;\n }\n segment = getThrownInfo(task.componentStack);\n if (null === boundary) {\n if (13 !== request.status && request.status !== CLOSED) {\n boundary = task.replay;\n if (null === boundary) {\n logRecoverableError(request, error, segment);\n fatalError(request, error);\n return;\n }\n boundary.pendingTasks--;\n 0 === boundary.pendingTasks &&\n 0 < boundary.nodes.length &&\n ((task = logRecoverableError(request, error, segment)),\n abortRemainingReplayNodes(\n request,\n null,\n boundary.nodes,\n boundary.slots,\n error,\n task,\n segment,\n !0\n ));\n request.pendingRootTasks--;\n 0 === request.pendingRootTasks && completeShell(request);\n }\n } else\n boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n (task = logRecoverableError(request, error, segment)),\n (boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(boundary, task, error, segment, !0),\n untrackBoundary(request, boundary),\n boundary.parentFlushed &&\n request.clientRenderedBoundaries.push(boundary)),\n boundary.fallbackAbortableTasks.forEach(function (fallbackTask) {\n return abortTask(fallbackTask, request, error);\n }),\n boundary.fallbackAbortableTasks.clear();\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n function safelyEmitEarlyPreloads(request, shellComplete) {\n try {\n var renderState = request.renderState,\n onHeaders = renderState.onHeaders;\n if (onHeaders) {\n var headers = renderState.headers;\n if (headers) {\n renderState.headers = null;\n var linkHeader = headers.preconnects;\n headers.fontPreloads &&\n (linkHeader && (linkHeader += \", \"),\n (linkHeader += headers.fontPreloads));\n headers.highImagePreloads &&\n (linkHeader && (linkHeader += \", \"),\n (linkHeader += headers.highImagePreloads));\n if (!shellComplete) {\n var queueIter = renderState.styles.values(),\n queueStep = queueIter.next();\n b: for (\n ;\n 0 < headers.remainingCapacity && !queueStep.done;\n queueStep = queueIter.next()\n )\n for (\n var sheetIter = queueStep.value.sheets.values(),\n sheetStep = sheetIter.next();\n 0 < headers.remainingCapacity && !sheetStep.done;\n sheetStep = sheetIter.next()\n ) {\n var sheet = sheetStep.value,\n props = sheet.props,\n key = props.href,\n props$jscomp$0 = sheet.props;\n var header = getPreloadAsHeader(\n props$jscomp$0.href,\n \"style\",\n {\n crossOrigin: props$jscomp$0.crossOrigin,\n integrity: props$jscomp$0.integrity,\n nonce: props$jscomp$0.nonce,\n type: props$jscomp$0.type,\n fetchPriority: props$jscomp$0.fetchPriority,\n referrerPolicy: props$jscomp$0.referrerPolicy,\n media: props$jscomp$0.media\n }\n );\n if (0 <= (headers.remainingCapacity -= header.length + 2))\n (renderState.resets.style[key] = PRELOAD_NO_CREDS),\n linkHeader && (linkHeader += \", \"),\n (linkHeader += header),\n (renderState.resets.style[key] =\n \"string\" === typeof props.crossOrigin ||\n \"string\" === typeof props.integrity\n ? [props.crossOrigin, props.integrity]\n : PRELOAD_NO_CREDS);\n else break b;\n }\n }\n linkHeader ? onHeaders({ Link: linkHeader }) : onHeaders({});\n }\n }\n } catch (error) {\n logRecoverableError(request, error, {});\n }\n }\n function completeShell(request) {\n null === request.trackedPostpones && safelyEmitEarlyPreloads(request, !0);\n request.onShellError = noop;\n request = request.onShellReady;\n request();\n }\n function completeAll(request) {\n safelyEmitEarlyPreloads(\n request,\n null === request.trackedPostpones\n ? !0\n : null === request.completedRootSegment ||\n request.completedRootSegment.status !== POSTPONED\n );\n request = request.onAllReady;\n request();\n }\n function queueCompletedSegment(boundary, segment) {\n if (\n 0 === segment.chunks.length &&\n 1 === segment.children.length &&\n null === segment.children[0].boundary &&\n -1 === segment.children[0].id\n ) {\n var childSegment = segment.children[0];\n childSegment.id = segment.id;\n childSegment.parentFlushed = !0;\n childSegment.status === COMPLETED &&\n queueCompletedSegment(boundary, childSegment);\n } else boundary.completedSegments.push(segment);\n }\n function finishedTask(request, boundary, segment) {\n if (null === boundary) {\n if (null !== segment && segment.parentFlushed) {\n if (null !== request.completedRootSegment)\n throw Error(\n \"There can only be one root segment. This is a bug in React.\"\n );\n request.completedRootSegment = segment;\n }\n request.pendingRootTasks--;\n 0 === request.pendingRootTasks && completeShell(request);\n } else\n boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n (0 === boundary.pendingTasks\n ? (boundary.status === PENDING && (boundary.status = COMPLETED),\n null !== segment &&\n segment.parentFlushed &&\n segment.status === COMPLETED &&\n queueCompletedSegment(boundary, segment),\n boundary.parentFlushed &&\n request.completedBoundaries.push(boundary),\n boundary.status === COMPLETED &&\n (boundary.fallbackAbortableTasks.forEach(\n abortTaskSoft,\n request\n ),\n boundary.fallbackAbortableTasks.clear()))\n : null !== segment &&\n segment.parentFlushed &&\n segment.status === COMPLETED &&\n (queueCompletedSegment(boundary, segment),\n 1 === boundary.completedSegments.length &&\n boundary.parentFlushed &&\n request.partialBoundaries.push(boundary)));\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n function performWork(request$jscomp$1) {\n if (\n request$jscomp$1.status !== CLOSED &&\n 13 !== request$jscomp$1.status\n ) {\n var prevContext = currentActiveSnapshot,\n prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = HooksDispatcher;\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n var prevRequest = currentRequest;\n currentRequest = request$jscomp$1;\n var prevGetCurrentStackImpl = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = getCurrentStackInDEV;\n var prevResumableState = currentResumableState;\n currentResumableState = request$jscomp$1.resumableState;\n try {\n var pingedTasks = request$jscomp$1.pingedTasks,\n i;\n for (i = 0; i < pingedTasks.length; i++) {\n var request = request$jscomp$1,\n task = pingedTasks[i],\n segment = task.blockedSegment;\n if (null === segment) {\n var prevTaskInDEV = void 0,\n request$jscomp$0 = request;\n request = task;\n if (0 !== request.replay.pendingTasks) {\n switchContext(request.context);\n prevTaskInDEV = currentTaskInDEV;\n currentTaskInDEV = request;\n try {\n \"number\" === typeof request.replay.slots\n ? resumeNode(\n request$jscomp$0,\n request,\n request.replay.slots,\n request.node,\n request.childIndex\n )\n : retryNode(request$jscomp$0, request);\n if (\n 1 === request.replay.pendingTasks &&\n 0 < request.replay.nodes.length\n )\n throw Error(\n \"Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering.\"\n );\n request.replay.pendingTasks--;\n request.abortSet.delete(request);\n finishedTask(request$jscomp$0, request.blockedBoundary, null);\n } catch (thrownValue) {\n resetHooksState();\n var x =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : thrownValue;\n if (\n \"object\" === typeof x &&\n null !== x &&\n \"function\" === typeof x.then\n ) {\n var ping = request.ping;\n x.then(ping, ping);\n request.thenableState = getThenableStateAfterSuspending();\n } else {\n request.replay.pendingTasks--;\n request.abortSet.delete(request);\n var errorInfo = getThrownInfo(request.componentStack);\n erroredReplay(\n request$jscomp$0,\n request.blockedBoundary,\n 12 === request$jscomp$0.status\n ? request$jscomp$0.fatalError\n : x,\n errorInfo,\n request.replay.nodes,\n request.replay.slots\n );\n request$jscomp$0.pendingRootTasks--;\n 0 === request$jscomp$0.pendingRootTasks &&\n completeShell(request$jscomp$0);\n request$jscomp$0.allPendingTasks--;\n 0 === request$jscomp$0.allPendingTasks &&\n completeAll(request$jscomp$0);\n }\n } finally {\n currentTaskInDEV = prevTaskInDEV;\n }\n }\n } else {\n request$jscomp$0 = prevTaskInDEV = void 0;\n var task$jscomp$0 = task,\n segment$jscomp$0 = segment;\n if (segment$jscomp$0.status === PENDING) {\n segment$jscomp$0.status = 6;\n switchContext(task$jscomp$0.context);\n request$jscomp$0 = currentTaskInDEV;\n currentTaskInDEV = task$jscomp$0;\n var childrenLength = segment$jscomp$0.children.length,\n chunkLength = segment$jscomp$0.chunks.length;\n try {\n retryNode(request, task$jscomp$0),\n segment$jscomp$0.lastPushedText &&\n segment$jscomp$0.textEmbedded &&\n segment$jscomp$0.chunks.push(textSeparator),\n task$jscomp$0.abortSet.delete(task$jscomp$0),\n (segment$jscomp$0.status = COMPLETED),\n finishedTask(\n request,\n task$jscomp$0.blockedBoundary,\n segment$jscomp$0\n );\n } catch (thrownValue) {\n resetHooksState();\n segment$jscomp$0.children.length = childrenLength;\n segment$jscomp$0.chunks.length = chunkLength;\n var x$jscomp$0 =\n thrownValue === SuspenseException\n ? getSuspendedThenable()\n : 12 === request.status\n ? request.fatalError\n : thrownValue;\n if (\n \"object\" === typeof x$jscomp$0 &&\n null !== x$jscomp$0 &&\n \"function\" === typeof x$jscomp$0.then\n ) {\n segment$jscomp$0.status = PENDING;\n task$jscomp$0.thenableState =\n getThenableStateAfterSuspending();\n var ping$jscomp$0 = task$jscomp$0.ping;\n x$jscomp$0.then(ping$jscomp$0, ping$jscomp$0);\n } else {\n var errorInfo$jscomp$0 = getThrownInfo(\n task$jscomp$0.componentStack\n );\n task$jscomp$0.abortSet.delete(task$jscomp$0);\n segment$jscomp$0.status = 4;\n var boundary = task$jscomp$0.blockedBoundary;\n prevTaskInDEV = logRecoverableError(\n request,\n x$jscomp$0,\n errorInfo$jscomp$0\n );\n null === boundary\n ? fatalError(request, x$jscomp$0)\n : (boundary.pendingTasks--,\n boundary.status !== CLIENT_RENDERED &&\n ((boundary.status = CLIENT_RENDERED),\n encodeErrorForBoundary(\n boundary,\n prevTaskInDEV,\n x$jscomp$0,\n errorInfo$jscomp$0,\n !1\n ),\n untrackBoundary(request, boundary),\n boundary.parentFlushed &&\n request.clientRenderedBoundaries.push(boundary)));\n request.allPendingTasks--;\n 0 === request.allPendingTasks && completeAll(request);\n }\n } finally {\n currentTaskInDEV = request$jscomp$0;\n }\n }\n }\n }\n pingedTasks.splice(0, i);\n null !== request$jscomp$1.destination &&\n flushCompletedQueues(\n request$jscomp$1,\n request$jscomp$1.destination\n );\n } catch (error) {\n logRecoverableError(request$jscomp$1, error, {}),\n fatalError(request$jscomp$1, error);\n } finally {\n (currentResumableState = prevResumableState),\n (ReactSharedInternals.H = prevDispatcher),\n (ReactSharedInternals.A = prevAsyncDispatcher),\n (ReactSharedInternals.getCurrentStack = prevGetCurrentStackImpl),\n prevDispatcher === HooksDispatcher && switchContext(prevContext),\n (currentRequest = prevRequest);\n }\n }\n }\n function flushSubtree(request, destination, segment, hoistableState) {\n segment.parentFlushed = !0;\n switch (segment.status) {\n case PENDING:\n segment.id = request.nextSegmentId++;\n case POSTPONED:\n return (\n (hoistableState = segment.id),\n (segment.lastPushedText = !1),\n (segment.textEmbedded = !1),\n (request = request.renderState),\n writeChunk(destination, placeholder1),\n writeChunk(destination, request.placeholderPrefix),\n (request = stringToChunk(hoistableState.toString(16))),\n writeChunk(destination, request),\n writeChunkAndReturn(destination, placeholder2)\n );\n case COMPLETED:\n segment.status = FLUSHED;\n var r = !0,\n chunks = segment.chunks,\n chunkIdx = 0;\n segment = segment.children;\n for (var childIdx = 0; childIdx < segment.length; childIdx++) {\n for (r = segment[childIdx]; chunkIdx < r.index; chunkIdx++)\n writeChunk(destination, chunks[chunkIdx]);\n r = flushSegment(request, destination, r, hoistableState);\n }\n for (; chunkIdx < chunks.length - 1; chunkIdx++)\n writeChunk(destination, chunks[chunkIdx]);\n chunkIdx < chunks.length &&\n (r = writeChunkAndReturn(destination, chunks[chunkIdx]));\n return r;\n default:\n throw Error(\n \"Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.\"\n );\n }\n }\n function flushSegment(request, destination, segment, hoistableState) {\n var boundary = segment.boundary;\n if (null === boundary)\n return flushSubtree(request, destination, segment, hoistableState);\n boundary.parentFlushed = !0;\n if (boundary.status === CLIENT_RENDERED) {\n var errorDigest = boundary.errorDigest,\n errorMessage = boundary.errorMessage,\n errorStack = boundary.errorStack;\n boundary = boundary.errorComponentStack;\n writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);\n writeChunk(destination, clientRenderedSuspenseBoundaryError1);\n errorDigest &&\n (writeChunk(destination, clientRenderedSuspenseBoundaryError1A),\n writeChunk(\n destination,\n stringToChunk(escapeTextForBrowser(errorDigest))\n ),\n writeChunk(\n destination,\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n errorMessage &&\n (writeChunk(destination, clientRenderedSuspenseBoundaryError1B),\n writeChunk(\n destination,\n stringToChunk(escapeTextForBrowser(errorMessage))\n ),\n writeChunk(\n destination,\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n errorStack &&\n (writeChunk(destination, clientRenderedSuspenseBoundaryError1C),\n writeChunk(\n destination,\n stringToChunk(escapeTextForBrowser(errorStack))\n ),\n writeChunk(\n destination,\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n boundary &&\n (writeChunk(destination, clientRenderedSuspenseBoundaryError1D),\n writeChunk(\n destination,\n stringToChunk(escapeTextForBrowser(boundary))\n ),\n writeChunk(\n destination,\n clientRenderedSuspenseBoundaryErrorAttrInterstitial\n ));\n writeChunkAndReturn(destination, clientRenderedSuspenseBoundaryError2);\n flushSubtree(request, destination, segment, hoistableState);\n } else if (boundary.status !== COMPLETED)\n boundary.status === PENDING &&\n (boundary.rootSegmentID = request.nextSegmentId++),\n 0 < boundary.completedSegments.length &&\n request.partialBoundaries.push(boundary),\n writeStartPendingSuspenseBoundary(\n destination,\n request.renderState,\n boundary.rootSegmentID\n ),\n hoistableState &&\n ((boundary = boundary.fallbackState),\n boundary.styles.forEach(hoistStyleQueueDependency, hoistableState),\n boundary.stylesheets.forEach(\n hoistStylesheetDependency,\n hoistableState\n )),\n flushSubtree(request, destination, segment, hoistableState);\n else if (boundary.byteSize > request.progressiveChunkSize)\n (boundary.rootSegmentID = request.nextSegmentId++),\n request.completedBoundaries.push(boundary),\n writeStartPendingSuspenseBoundary(\n destination,\n request.renderState,\n boundary.rootSegmentID\n ),\n flushSubtree(request, destination, segment, hoistableState);\n else {\n hoistableState &&\n ((segment = boundary.contentState),\n segment.styles.forEach(hoistStyleQueueDependency, hoistableState),\n segment.stylesheets.forEach(\n hoistStylesheetDependency,\n hoistableState\n ));\n writeChunkAndReturn(destination, startCompletedSuspenseBoundary);\n segment = boundary.completedSegments;\n if (1 !== segment.length)\n throw Error(\n \"A previously unvisited boundary must have exactly one root segment. This is a bug in React.\"\n );\n flushSegment(request, destination, segment[0], hoistableState);\n }\n return writeChunkAndReturn(destination, endSuspenseBoundary);\n }\n function flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n ) {\n writeStartSegment(\n destination,\n request.renderState,\n segment.parentFormatContext,\n segment.id\n );\n flushSegment(request, destination, segment, hoistableState);\n return writeEndSegment(destination, segment.parentFormatContext);\n }\n function flushCompletedBoundary(request, destination, boundary) {\n for (\n var completedSegments = boundary.completedSegments, i = 0;\n i < completedSegments.length;\n i++\n )\n flushPartiallyCompletedSegment(\n request,\n destination,\n boundary,\n completedSegments[i]\n );\n completedSegments.length = 0;\n writeHoistablesForBoundary(\n destination,\n boundary.contentState,\n request.renderState\n );\n completedSegments = request.resumableState;\n request = request.renderState;\n i = boundary.rootSegmentID;\n boundary = boundary.contentState;\n var requiresStyleInsertion = request.stylesToHoist;\n request.stylesToHoist = !1;\n writeChunk(destination, request.startInlineScript);\n requiresStyleInsertion\n ? (completedSegments.instructions & SentCompleteBoundaryFunction) ===\n NothingSent\n ? ((completedSegments.instructions =\n completedSegments.instructions |\n SentStyleInsertionFunction |\n SentCompleteBoundaryFunction),\n writeChunk(destination, completeBoundaryWithStylesScript1FullBoth))\n : (completedSegments.instructions & SentStyleInsertionFunction) ===\n NothingSent\n ? ((completedSegments.instructions |= SentStyleInsertionFunction),\n writeChunk(\n destination,\n completeBoundaryWithStylesScript1FullPartial\n ))\n : writeChunk(destination, completeBoundaryWithStylesScript1Partial)\n : (completedSegments.instructions & SentCompleteBoundaryFunction) ===\n NothingSent\n ? ((completedSegments.instructions |= SentCompleteBoundaryFunction),\n writeChunk(destination, completeBoundaryScript1Full))\n : writeChunk(destination, completeBoundaryScript1Partial);\n completedSegments = stringToChunk(i.toString(16));\n writeChunk(destination, request.boundaryPrefix);\n writeChunk(destination, completedSegments);\n writeChunk(destination, completeBoundaryScript2);\n writeChunk(destination, request.segmentPrefix);\n writeChunk(destination, completedSegments);\n requiresStyleInsertion\n ? (writeChunk(destination, completeBoundaryScript3a),\n writeStyleResourceDependenciesInJS(destination, boundary))\n : writeChunk(destination, completeBoundaryScript3b);\n boundary = writeChunkAndReturn(destination, completeBoundaryScriptEnd);\n return writeBootstrap(destination, request) && boundary;\n }\n function flushPartiallyCompletedSegment(\n request,\n destination,\n boundary,\n segment\n ) {\n if (segment.status === FLUSHED) return !0;\n var hoistableState = boundary.contentState,\n segmentID = segment.id;\n if (-1 === segmentID) {\n if (-1 === (segment.id = boundary.rootSegmentID))\n throw Error(\n \"A root segment ID must have been assigned by now. This is a bug in React.\"\n );\n return flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n );\n }\n if (segmentID === boundary.rootSegmentID)\n return flushSegmentContainer(\n request,\n destination,\n segment,\n hoistableState\n );\n flushSegmentContainer(request, destination, segment, hoistableState);\n boundary = request.resumableState;\n request = request.renderState;\n writeChunk(destination, request.startInlineScript);\n (boundary.instructions & SentCompleteSegmentFunction) === NothingSent\n ? ((boundary.instructions |= SentCompleteSegmentFunction),\n writeChunk(destination, completeSegmentScript1Full))\n : writeChunk(destination, completeSegmentScript1Partial);\n writeChunk(destination, request.segmentPrefix);\n segmentID = stringToChunk(segmentID.toString(16));\n writeChunk(destination, segmentID);\n writeChunk(destination, completeSegmentScript2);\n writeChunk(destination, request.placeholderPrefix);\n writeChunk(destination, segmentID);\n destination = writeChunkAndReturn(destination, completeSegmentScriptEnd);\n return destination;\n }\n function flushCompletedQueues(request, destination) {\n currentView = new Uint8Array(2048);\n writtenBytes = 0;\n try {\n if (!(0 < request.pendingRootTasks)) {\n var i,\n completedRootSegment = request.completedRootSegment;\n if (null !== completedRootSegment) {\n if (completedRootSegment.status === POSTPONED) return;\n var renderState = request.renderState,\n htmlChunks = renderState.htmlChunks,\n headChunks = renderState.headChunks,\n i$jscomp$0;\n if (htmlChunks) {\n for (i$jscomp$0 = 0; i$jscomp$0 < htmlChunks.length; i$jscomp$0++)\n writeChunk(destination, htmlChunks[i$jscomp$0]);\n if (headChunks)\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < headChunks.length;\n i$jscomp$0++\n )\n writeChunk(destination, headChunks[i$jscomp$0]);\n else\n writeChunk(destination, startChunkForTag(\"head\")),\n writeChunk(destination, endOfStartTag);\n } else if (headChunks)\n for (i$jscomp$0 = 0; i$jscomp$0 < headChunks.length; i$jscomp$0++)\n writeChunk(destination, headChunks[i$jscomp$0]);\n var charsetChunks = renderState.charsetChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < charsetChunks.length;\n i$jscomp$0++\n )\n writeChunk(destination, charsetChunks[i$jscomp$0]);\n charsetChunks.length = 0;\n renderState.preconnects.forEach(flushResource, destination);\n renderState.preconnects.clear();\n var viewportChunks = renderState.viewportChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < viewportChunks.length;\n i$jscomp$0++\n )\n writeChunk(destination, viewportChunks[i$jscomp$0]);\n viewportChunks.length = 0;\n renderState.fontPreloads.forEach(flushResource, destination);\n renderState.fontPreloads.clear();\n renderState.highImagePreloads.forEach(flushResource, destination);\n renderState.highImagePreloads.clear();\n renderState.styles.forEach(flushStylesInPreamble, destination);\n var importMapChunks = renderState.importMapChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < importMapChunks.length;\n i$jscomp$0++\n )\n writeChunk(destination, importMapChunks[i$jscomp$0]);\n importMapChunks.length = 0;\n renderState.bootstrapScripts.forEach(flushResource, destination);\n renderState.scripts.forEach(flushResource, destination);\n renderState.scripts.clear();\n renderState.bulkPreloads.forEach(flushResource, destination);\n renderState.bulkPreloads.clear();\n var hoistableChunks = renderState.hoistableChunks;\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < hoistableChunks.length;\n i$jscomp$0++\n )\n writeChunk(destination, hoistableChunks[i$jscomp$0]);\n hoistableChunks.length = 0;\n htmlChunks &&\n null === headChunks &&\n writeChunk(destination, endChunkForTag(\"head\"));\n flushSegment(request, destination, completedRootSegment, null);\n request.completedRootSegment = null;\n writeBootstrap(destination, request.renderState);\n }\n var renderState$jscomp$0 = request.renderState;\n completedRootSegment = 0;\n var viewportChunks$jscomp$0 = renderState$jscomp$0.viewportChunks;\n for (\n completedRootSegment = 0;\n completedRootSegment < viewportChunks$jscomp$0.length;\n completedRootSegment++\n )\n writeChunk(\n destination,\n viewportChunks$jscomp$0[completedRootSegment]\n );\n viewportChunks$jscomp$0.length = 0;\n renderState$jscomp$0.preconnects.forEach(flushResource, destination);\n renderState$jscomp$0.preconnects.clear();\n renderState$jscomp$0.fontPreloads.forEach(flushResource, destination);\n renderState$jscomp$0.fontPreloads.clear();\n renderState$jscomp$0.highImagePreloads.forEach(\n flushResource,\n destination\n );\n renderState$jscomp$0.highImagePreloads.clear();\n renderState$jscomp$0.styles.forEach(preloadLateStyles, destination);\n renderState$jscomp$0.scripts.forEach(flushResource, destination);\n renderState$jscomp$0.scripts.clear();\n renderState$jscomp$0.bulkPreloads.forEach(flushResource, destination);\n renderState$jscomp$0.bulkPreloads.clear();\n var hoistableChunks$jscomp$0 = renderState$jscomp$0.hoistableChunks;\n for (\n completedRootSegment = 0;\n completedRootSegment < hoistableChunks$jscomp$0.length;\n completedRootSegment++\n )\n writeChunk(\n destination,\n hoistableChunks$jscomp$0[completedRootSegment]\n );\n hoistableChunks$jscomp$0.length = 0;\n var clientRenderedBoundaries = request.clientRenderedBoundaries;\n for (i = 0; i < clientRenderedBoundaries.length; i++) {\n var boundary = clientRenderedBoundaries[i];\n renderState$jscomp$0 = destination;\n var resumableState = request.resumableState,\n renderState$jscomp$1 = request.renderState,\n id = boundary.rootSegmentID,\n errorDigest = boundary.errorDigest,\n errorMessage = boundary.errorMessage,\n errorStack = boundary.errorStack,\n errorComponentStack = boundary.errorComponentStack;\n writeChunk(\n renderState$jscomp$0,\n renderState$jscomp$1.startInlineScript\n );\n (resumableState.instructions & SentClientRenderFunction) ===\n NothingSent\n ? ((resumableState.instructions |= SentClientRenderFunction),\n writeChunk(renderState$jscomp$0, clientRenderScript1Full))\n : writeChunk(renderState$jscomp$0, clientRenderScript1Partial);\n writeChunk(\n renderState$jscomp$0,\n renderState$jscomp$1.boundaryPrefix\n );\n writeChunk(renderState$jscomp$0, stringToChunk(id.toString(16)));\n writeChunk(renderState$jscomp$0, clientRenderScript1A);\n if (\n errorDigest ||\n errorMessage ||\n errorStack ||\n errorComponentStack\n )\n writeChunk(\n renderState$jscomp$0,\n clientRenderErrorScriptArgInterstitial\n ),\n writeChunk(\n renderState$jscomp$0,\n stringToChunk(\n escapeJSStringsForInstructionScripts(errorDigest || \"\")\n )\n );\n if (errorMessage || errorStack || errorComponentStack)\n writeChunk(\n renderState$jscomp$0,\n clientRenderErrorScriptArgInterstitial\n ),\n writeChunk(\n renderState$jscomp$0,\n stringToChunk(\n escapeJSStringsForInstructionScripts(errorMessage || \"\")\n )\n );\n if (errorStack || errorComponentStack)\n writeChunk(\n renderState$jscomp$0,\n clientRenderErrorScriptArgInterstitial\n ),\n writeChunk(\n renderState$jscomp$0,\n stringToChunk(\n escapeJSStringsForInstructionScripts(errorStack || \"\")\n )\n );\n errorComponentStack &&\n (writeChunk(\n renderState$jscomp$0,\n clientRenderErrorScriptArgInterstitial\n ),\n writeChunk(\n renderState$jscomp$0,\n stringToChunk(\n escapeJSStringsForInstructionScripts(errorComponentStack)\n )\n ));\n var JSCompiler_inline_result = writeChunkAndReturn(\n renderState$jscomp$0,\n clientRenderScriptEnd\n );\n if (!JSCompiler_inline_result) {\n request.destination = null;\n i++;\n clientRenderedBoundaries.splice(0, i);\n return;\n }\n }\n clientRenderedBoundaries.splice(0, i);\n var completedBoundaries = request.completedBoundaries;\n for (i = 0; i < completedBoundaries.length; i++)\n if (\n !flushCompletedBoundary(\n request,\n destination,\n completedBoundaries[i]\n )\n ) {\n request.destination = null;\n i++;\n completedBoundaries.splice(0, i);\n return;\n }\n completedBoundaries.splice(0, i);\n completeWriting(destination);\n currentView = new Uint8Array(2048);\n writtenBytes = 0;\n var partialBoundaries = request.partialBoundaries;\n for (i = 0; i < partialBoundaries.length; i++) {\n a: {\n clientRenderedBoundaries = request;\n boundary = destination;\n var boundary$jscomp$0 = partialBoundaries[i],\n completedSegments = boundary$jscomp$0.completedSegments;\n for (\n JSCompiler_inline_result = 0;\n JSCompiler_inline_result < completedSegments.length;\n JSCompiler_inline_result++\n )\n if (\n !flushPartiallyCompletedSegment(\n clientRenderedBoundaries,\n boundary,\n boundary$jscomp$0,\n completedSegments[JSCompiler_inline_result]\n )\n ) {\n JSCompiler_inline_result++;\n completedSegments.splice(0, JSCompiler_inline_result);\n var JSCompiler_inline_result$jscomp$0 = !1;\n break a;\n }\n completedSegments.splice(0, JSCompiler_inline_result);\n JSCompiler_inline_result$jscomp$0 = writeHoistablesForBoundary(\n boundary,\n boundary$jscomp$0.contentState,\n clientRenderedBoundaries.renderState\n );\n }\n if (!JSCompiler_inline_result$jscomp$0) {\n request.destination = null;\n i++;\n partialBoundaries.splice(0, i);\n return;\n }\n }\n partialBoundaries.splice(0, i);\n var largeBoundaries = request.completedBoundaries;\n for (i = 0; i < largeBoundaries.length; i++)\n if (\n !flushCompletedBoundary(request, destination, largeBoundaries[i])\n ) {\n request.destination = null;\n i++;\n largeBoundaries.splice(0, i);\n return;\n }\n largeBoundaries.splice(0, i);\n }\n } finally {\n 0 === request.allPendingTasks &&\n 0 === request.pingedTasks.length &&\n 0 === request.clientRenderedBoundaries.length &&\n 0 === request.completedBoundaries.length\n ? ((request.flushScheduled = !1),\n (i = request.resumableState),\n i.hasBody && writeChunk(destination, endChunkForTag(\"body\")),\n i.hasHtml && writeChunk(destination, endChunkForTag(\"html\")),\n completeWriting(destination),\n 0 !== request.abortableTasks.size &&\n console.error(\n \"There was still abortable task at the root when we closed. This is a bug in React.\"\n ),\n (request.status = CLOSED),\n destination.close(),\n (request.destination = null))\n : completeWriting(destination);\n }\n }\n function startWork(request) {\n request.flushScheduled = null !== request.destination;\n scheduleMicrotask(function () {\n return performWork(request);\n });\n scheduleWork(function () {\n 10 === request.status && (request.status = 11);\n null === request.trackedPostpones &&\n safelyEmitEarlyPreloads(request, 0 === request.pendingRootTasks);\n });\n }\n function enqueueFlush(request) {\n !1 === request.flushScheduled &&\n 0 === request.pingedTasks.length &&\n null !== request.destination &&\n ((request.flushScheduled = !0),\n scheduleWork(function () {\n var destination = request.destination;\n destination\n ? flushCompletedQueues(request, destination)\n : (request.flushScheduled = !1);\n }));\n }\n function startFlowing(request, destination) {\n if (13 === request.status)\n (request.status = CLOSED),\n closeWithError(destination, request.fatalError);\n else if (request.status !== CLOSED && null === request.destination) {\n request.destination = destination;\n try {\n flushCompletedQueues(request, destination);\n } catch (error) {\n logRecoverableError(request, error, {}), fatalError(request, error);\n }\n }\n }\n function abort(request, reason) {\n if (11 === request.status || 10 === request.status) request.status = 12;\n try {\n var abortableTasks = request.abortableTasks;\n if (0 < abortableTasks.size) {\n var error =\n void 0 === reason\n ? Error(\"The render was aborted by the server without a reason.\")\n : \"object\" === typeof reason &&\n null !== reason &&\n \"function\" === typeof reason.then\n ? Error(\"The render was aborted by the server with a promise.\")\n : reason;\n request.fatalError = error;\n abortableTasks.forEach(function (task) {\n return abortTask(task, request, error);\n });\n abortableTasks.clear();\n }\n null !== request.destination &&\n flushCompletedQueues(request, request.destination);\n } catch (error$4) {\n logRecoverableError(request, error$4, {}), fatalError(request, error$4);\n }\n }\n function ensureCorrectIsomorphicReactVersion() {\n var isomorphicReactPackageVersion = React.version;\n if (\"19.0.0\" !== isomorphicReactPackageVersion)\n throw Error(\n 'Incompatible React versions: The \"react\" and \"react-dom\" packages must have the exact same version. Instead got:\\n - react: ' +\n (isomorphicReactPackageVersion +\n \"\\n - react-dom: 19.0.0\\nLearn more: https://react.dev/warnings/version-mismatch\")\n );\n }\n var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\"),\n ReactDOM = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_SCOPE_TYPE = Symbol.for(\"react.scope\"),\n REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for(\"react.debug_trace_mode\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\"),\n REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n isArrayImpl = Array.isArray,\n jsxPropsParents = new WeakMap(),\n jsxChildrenParents = new WeakMap(),\n CLIENT_REFERENCE_TAG = Symbol.for(\"react.client.reference\"),\n channel = new MessageChannel(),\n taskQueue = [];\n channel.port1.onmessage = function () {\n var task = taskQueue.shift();\n task && task();\n };\n var LocalPromise = Promise,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : function (callback) {\n LocalPromise.resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n },\n currentView = null,\n writtenBytes = 0,\n textEncoder = new TextEncoder(),\n assign = Object.assign,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {},\n unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n ),\n aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n hasReadOnlyValue = {\n button: !0,\n checkbox: !0,\n image: !0,\n hidden: !0,\n radio: !0,\n reset: !0,\n submit: !0\n },\n ariaProperties = {\n \"aria-current\": 0,\n \"aria-description\": 0,\n \"aria-details\": 0,\n \"aria-disabled\": 0,\n \"aria-hidden\": 0,\n \"aria-invalid\": 0,\n \"aria-keyshortcuts\": 0,\n \"aria-label\": 0,\n \"aria-roledescription\": 0,\n \"aria-autocomplete\": 0,\n \"aria-checked\": 0,\n \"aria-expanded\": 0,\n \"aria-haspopup\": 0,\n \"aria-level\": 0,\n \"aria-modal\": 0,\n \"aria-multiline\": 0,\n \"aria-multiselectable\": 0,\n \"aria-orientation\": 0,\n \"aria-placeholder\": 0,\n \"aria-pressed\": 0,\n \"aria-readonly\": 0,\n \"aria-required\": 0,\n \"aria-selected\": 0,\n \"aria-sort\": 0,\n \"aria-valuemax\": 0,\n \"aria-valuemin\": 0,\n \"aria-valuenow\": 0,\n \"aria-valuetext\": 0,\n \"aria-atomic\": 0,\n \"aria-busy\": 0,\n \"aria-live\": 0,\n \"aria-relevant\": 0,\n \"aria-dropeffect\": 0,\n \"aria-grabbed\": 0,\n \"aria-activedescendant\": 0,\n \"aria-colcount\": 0,\n \"aria-colindex\": 0,\n \"aria-colspan\": 0,\n \"aria-controls\": 0,\n \"aria-describedby\": 0,\n \"aria-errormessage\": 0,\n \"aria-flowto\": 0,\n \"aria-labelledby\": 0,\n \"aria-owns\": 0,\n \"aria-posinset\": 0,\n \"aria-rowcount\": 0,\n \"aria-rowindex\": 0,\n \"aria-rowspan\": 0,\n \"aria-setsize\": 0\n },\n warnedProperties$1 = {},\n rARIA$1 = RegExp(\n \"^(aria)-[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n rARIACamel$1 = RegExp(\n \"^(aria)[A-Z][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n didWarnValueNull = !1,\n possibleStandardNames = {\n accept: \"accept\",\n acceptcharset: \"acceptCharset\",\n \"accept-charset\": \"acceptCharset\",\n accesskey: \"accessKey\",\n action: \"action\",\n allowfullscreen: \"allowFullScreen\",\n alt: \"alt\",\n as: \"as\",\n async: \"async\",\n autocapitalize: \"autoCapitalize\",\n autocomplete: \"autoComplete\",\n autocorrect: \"autoCorrect\",\n autofocus: \"autoFocus\",\n autoplay: \"autoPlay\",\n autosave: \"autoSave\",\n capture: \"capture\",\n cellpadding: \"cellPadding\",\n cellspacing: \"cellSpacing\",\n challenge: \"challenge\",\n charset: \"charSet\",\n checked: \"checked\",\n children: \"children\",\n cite: \"cite\",\n class: \"className\",\n classid: \"classID\",\n classname: \"className\",\n cols: \"cols\",\n colspan: \"colSpan\",\n content: \"content\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n controls: \"controls\",\n controlslist: \"controlsList\",\n coords: \"coords\",\n crossorigin: \"crossOrigin\",\n dangerouslysetinnerhtml: \"dangerouslySetInnerHTML\",\n data: \"data\",\n datetime: \"dateTime\",\n default: \"default\",\n defaultchecked: \"defaultChecked\",\n defaultvalue: \"defaultValue\",\n defer: \"defer\",\n dir: \"dir\",\n disabled: \"disabled\",\n disablepictureinpicture: \"disablePictureInPicture\",\n disableremoteplayback: \"disableRemotePlayback\",\n download: \"download\",\n draggable: \"draggable\",\n enctype: \"encType\",\n enterkeyhint: \"enterKeyHint\",\n fetchpriority: \"fetchPriority\",\n for: \"htmlFor\",\n form: \"form\",\n formmethod: \"formMethod\",\n formaction: \"formAction\",\n formenctype: \"formEncType\",\n formnovalidate: \"formNoValidate\",\n formtarget: \"formTarget\",\n frameborder: \"frameBorder\",\n headers: \"headers\",\n height: \"height\",\n hidden: \"hidden\",\n high: \"high\",\n href: \"href\",\n hreflang: \"hrefLang\",\n htmlfor: \"htmlFor\",\n httpequiv: \"httpEquiv\",\n \"http-equiv\": \"httpEquiv\",\n icon: \"icon\",\n id: \"id\",\n imagesizes: \"imageSizes\",\n imagesrcset: \"imageSrcSet\",\n inert: \"inert\",\n innerhtml: \"innerHTML\",\n inputmode: \"inputMode\",\n integrity: \"integrity\",\n is: \"is\",\n itemid: \"itemID\",\n itemprop: \"itemProp\",\n itemref: \"itemRef\",\n itemscope: \"itemScope\",\n itemtype: \"itemType\",\n keyparams: \"keyParams\",\n keytype: \"keyType\",\n kind: \"kind\",\n label: \"label\",\n lang: \"lang\",\n list: \"list\",\n loop: \"loop\",\n low: \"low\",\n manifest: \"manifest\",\n marginwidth: \"marginWidth\",\n marginheight: \"marginHeight\",\n max: \"max\",\n maxlength: \"maxLength\",\n media: \"media\",\n mediagroup: \"mediaGroup\",\n method: \"method\",\n min: \"min\",\n minlength: \"minLength\",\n multiple: \"multiple\",\n muted: \"muted\",\n name: \"name\",\n nomodule: \"noModule\",\n nonce: \"nonce\",\n novalidate: \"noValidate\",\n open: \"open\",\n optimum: \"optimum\",\n pattern: \"pattern\",\n placeholder: \"placeholder\",\n playsinline: \"playsInline\",\n poster: \"poster\",\n preload: \"preload\",\n profile: \"profile\",\n radiogroup: \"radioGroup\",\n readonly: \"readOnly\",\n referrerpolicy: \"referrerPolicy\",\n rel: \"rel\",\n required: \"required\",\n reversed: \"reversed\",\n role: \"role\",\n rows: \"rows\",\n rowspan: \"rowSpan\",\n sandbox: \"sandbox\",\n scope: \"scope\",\n scoped: \"scoped\",\n scrolling: \"scrolling\",\n seamless: \"seamless\",\n selected: \"selected\",\n shape: \"shape\",\n size: \"size\",\n sizes: \"sizes\",\n span: \"span\",\n spellcheck: \"spellCheck\",\n src: \"src\",\n srcdoc: \"srcDoc\",\n srclang: \"srcLang\",\n srcset: \"srcSet\",\n start: \"start\",\n step: \"step\",\n style: \"style\",\n summary: \"summary\",\n tabindex: \"tabIndex\",\n target: \"target\",\n title: \"title\",\n type: \"type\",\n usemap: \"useMap\",\n value: \"value\",\n width: \"width\",\n wmode: \"wmode\",\n wrap: \"wrap\",\n about: \"about\",\n accentheight: \"accentHeight\",\n \"accent-height\": \"accentHeight\",\n accumulate: \"accumulate\",\n additive: \"additive\",\n alignmentbaseline: \"alignmentBaseline\",\n \"alignment-baseline\": \"alignmentBaseline\",\n allowreorder: \"allowReorder\",\n alphabetic: \"alphabetic\",\n amplitude: \"amplitude\",\n arabicform: \"arabicForm\",\n \"arabic-form\": \"arabicForm\",\n ascent: \"ascent\",\n attributename: \"attributeName\",\n attributetype: \"attributeType\",\n autoreverse: \"autoReverse\",\n azimuth: \"azimuth\",\n basefrequency: \"baseFrequency\",\n baselineshift: \"baselineShift\",\n \"baseline-shift\": \"baselineShift\",\n baseprofile: \"baseProfile\",\n bbox: \"bbox\",\n begin: \"begin\",\n bias: \"bias\",\n by: \"by\",\n calcmode: \"calcMode\",\n capheight: \"capHeight\",\n \"cap-height\": \"capHeight\",\n clip: \"clip\",\n clippath: \"clipPath\",\n \"clip-path\": \"clipPath\",\n clippathunits: \"clipPathUnits\",\n cliprule: \"clipRule\",\n \"clip-rule\": \"clipRule\",\n color: \"color\",\n colorinterpolation: \"colorInterpolation\",\n \"color-interpolation\": \"colorInterpolation\",\n colorinterpolationfilters: \"colorInterpolationFilters\",\n \"color-interpolation-filters\": \"colorInterpolationFilters\",\n colorprofile: \"colorProfile\",\n \"color-profile\": \"colorProfile\",\n colorrendering: \"colorRendering\",\n \"color-rendering\": \"colorRendering\",\n contentscripttype: \"contentScriptType\",\n contentstyletype: \"contentStyleType\",\n cursor: \"cursor\",\n cx: \"cx\",\n cy: \"cy\",\n d: \"d\",\n datatype: \"datatype\",\n decelerate: \"decelerate\",\n descent: \"descent\",\n diffuseconstant: \"diffuseConstant\",\n direction: \"direction\",\n display: \"display\",\n divisor: \"divisor\",\n dominantbaseline: \"dominantBaseline\",\n \"dominant-baseline\": \"dominantBaseline\",\n dur: \"dur\",\n dx: \"dx\",\n dy: \"dy\",\n edgemode: \"edgeMode\",\n elevation: \"elevation\",\n enablebackground: \"enableBackground\",\n \"enable-background\": \"enableBackground\",\n end: \"end\",\n exponent: \"exponent\",\n externalresourcesrequired: \"externalResourcesRequired\",\n fill: \"fill\",\n fillopacity: \"fillOpacity\",\n \"fill-opacity\": \"fillOpacity\",\n fillrule: \"fillRule\",\n \"fill-rule\": \"fillRule\",\n filter: \"filter\",\n filterres: \"filterRes\",\n filterunits: \"filterUnits\",\n floodopacity: \"floodOpacity\",\n \"flood-opacity\": \"floodOpacity\",\n floodcolor: \"floodColor\",\n \"flood-color\": \"floodColor\",\n focusable: \"focusable\",\n fontfamily: \"fontFamily\",\n \"font-family\": \"fontFamily\",\n fontsize: \"fontSize\",\n \"font-size\": \"fontSize\",\n fontsizeadjust: \"fontSizeAdjust\",\n \"font-size-adjust\": \"fontSizeAdjust\",\n fontstretch: \"fontStretch\",\n \"font-stretch\": \"fontStretch\",\n fontstyle: \"fontStyle\",\n \"font-style\": \"fontStyle\",\n fontvariant: \"fontVariant\",\n \"font-variant\": \"fontVariant\",\n fontweight: \"fontWeight\",\n \"font-weight\": \"fontWeight\",\n format: \"format\",\n from: \"from\",\n fx: \"fx\",\n fy: \"fy\",\n g1: \"g1\",\n g2: \"g2\",\n glyphname: \"glyphName\",\n \"glyph-name\": \"glyphName\",\n glyphorientationhorizontal: \"glyphOrientationHorizontal\",\n \"glyph-orientation-horizontal\": \"glyphOrientationHorizontal\",\n glyphorientationvertical: \"glyphOrientationVertical\",\n \"glyph-orientation-vertical\": \"glyphOrientationVertical\",\n glyphref: \"glyphRef\",\n gradienttransform: \"gradientTransform\",\n gradientunits: \"gradientUnits\",\n hanging: \"hanging\",\n horizadvx: \"horizAdvX\",\n \"horiz-adv-x\": \"horizAdvX\",\n horizoriginx: \"horizOriginX\",\n \"horiz-origin-x\": \"horizOriginX\",\n ideographic: \"ideographic\",\n imagerendering: \"imageRendering\",\n \"image-rendering\": \"imageRendering\",\n in2: \"in2\",\n in: \"in\",\n inlist: \"inlist\",\n intercept: \"intercept\",\n k1: \"k1\",\n k2: \"k2\",\n k3: \"k3\",\n k4: \"k4\",\n k: \"k\",\n kernelmatrix: \"kernelMatrix\",\n kernelunitlength: \"kernelUnitLength\",\n kerning: \"kerning\",\n keypoints: \"keyPoints\",\n keysplines: \"keySplines\",\n keytimes: \"keyTimes\",\n lengthadjust: \"lengthAdjust\",\n letterspacing: \"letterSpacing\",\n \"letter-spacing\": \"letterSpacing\",\n lightingcolor: \"lightingColor\",\n \"lighting-color\": \"lightingColor\",\n limitingconeangle: \"limitingConeAngle\",\n local: \"local\",\n markerend: \"markerEnd\",\n \"marker-end\": \"markerEnd\",\n markerheight: \"markerHeight\",\n markermid: \"markerMid\",\n \"marker-mid\": \"markerMid\",\n markerstart: \"markerStart\",\n \"marker-start\": \"markerStart\",\n markerunits: \"markerUnits\",\n markerwidth: \"markerWidth\",\n mask: \"mask\",\n maskcontentunits: \"maskContentUnits\",\n maskunits: \"maskUnits\",\n mathematical: \"mathematical\",\n mode: \"mode\",\n numoctaves: \"numOctaves\",\n offset: \"offset\",\n opacity: \"opacity\",\n operator: \"operator\",\n order: \"order\",\n orient: \"orient\",\n orientation: \"orientation\",\n origin: \"origin\",\n overflow: \"overflow\",\n overlineposition: \"overlinePosition\",\n \"overline-position\": \"overlinePosition\",\n overlinethickness: \"overlineThickness\",\n \"overline-thickness\": \"overlineThickness\",\n paintorder: \"paintOrder\",\n \"paint-order\": \"paintOrder\",\n panose1: \"panose1\",\n \"panose-1\": \"panose1\",\n pathlength: \"pathLength\",\n patterncontentunits: \"patternContentUnits\",\n patterntransform: \"patternTransform\",\n patternunits: \"patternUnits\",\n pointerevents: \"pointerEvents\",\n \"pointer-events\": \"pointerEvents\",\n points: \"points\",\n pointsatx: \"pointsAtX\",\n pointsaty: \"pointsAtY\",\n pointsatz: \"pointsAtZ\",\n popover: \"popover\",\n popovertarget: \"popoverTarget\",\n popovertargetaction: \"popoverTargetAction\",\n prefix: \"prefix\",\n preservealpha: \"preserveAlpha\",\n preserveaspectratio: \"preserveAspectRatio\",\n primitiveunits: \"primitiveUnits\",\n property: \"property\",\n r: \"r\",\n radius: \"radius\",\n refx: \"refX\",\n refy: \"refY\",\n renderingintent: \"renderingIntent\",\n \"rendering-intent\": \"renderingIntent\",\n repeatcount: \"repeatCount\",\n repeatdur: \"repeatDur\",\n requiredextensions: \"requiredExtensions\",\n requiredfeatures: \"requiredFeatures\",\n resource: \"resource\",\n restart: \"restart\",\n result: \"result\",\n results: \"results\",\n rotate: \"rotate\",\n rx: \"rx\",\n ry: \"ry\",\n scale: \"scale\",\n security: \"security\",\n seed: \"seed\",\n shaperendering: \"shapeRendering\",\n \"shape-rendering\": \"shapeRendering\",\n slope: \"slope\",\n spacing: \"spacing\",\n specularconstant: \"specularConstant\",\n specularexponent: \"specularExponent\",\n speed: \"speed\",\n spreadmethod: \"spreadMethod\",\n startoffset: \"startOffset\",\n stddeviation: \"stdDeviation\",\n stemh: \"stemh\",\n stemv: \"stemv\",\n stitchtiles: \"stitchTiles\",\n stopcolor: \"stopColor\",\n \"stop-color\": \"stopColor\",\n stopopacity: \"stopOpacity\",\n \"stop-opacity\": \"stopOpacity\",\n strikethroughposition: \"strikethroughPosition\",\n \"strikethrough-position\": \"strikethroughPosition\",\n strikethroughthickness: \"strikethroughThickness\",\n \"strikethrough-thickness\": \"strikethroughThickness\",\n string: \"string\",\n stroke: \"stroke\",\n strokedasharray: \"strokeDasharray\",\n \"stroke-dasharray\": \"strokeDasharray\",\n strokedashoffset: \"strokeDashoffset\",\n \"stroke-dashoffset\": \"strokeDashoffset\",\n strokelinecap: \"strokeLinecap\",\n \"stroke-linecap\": \"strokeLinecap\",\n strokelinejoin: \"strokeLinejoin\",\n \"stroke-linejoin\": \"strokeLinejoin\",\n strokemiterlimit: \"strokeMiterlimit\",\n \"stroke-miterlimit\": \"strokeMiterlimit\",\n strokewidth: \"strokeWidth\",\n \"stroke-width\": \"strokeWidth\",\n strokeopacity: \"strokeOpacity\",\n \"stroke-opacity\": \"strokeOpacity\",\n suppresscontenteditablewarning: \"suppressContentEditableWarning\",\n suppresshydrationwarning: \"suppressHydrationWarning\",\n surfacescale: \"surfaceScale\",\n systemlanguage: \"systemLanguage\",\n tablevalues: \"tableValues\",\n targetx: \"targetX\",\n targety: \"targetY\",\n textanchor: \"textAnchor\",\n \"text-anchor\": \"textAnchor\",\n textdecoration: \"textDecoration\",\n \"text-decoration\": \"textDecoration\",\n textlength: \"textLength\",\n textrendering: \"textRendering\",\n \"text-rendering\": \"textRendering\",\n to: \"to\",\n transform: \"transform\",\n transformorigin: \"transformOrigin\",\n \"transform-origin\": \"transformOrigin\",\n typeof: \"typeof\",\n u1: \"u1\",\n u2: \"u2\",\n underlineposition: \"underlinePosition\",\n \"underline-position\": \"underlinePosition\",\n underlinethickness: \"underlineThickness\",\n \"underline-thickness\": \"underlineThickness\",\n unicode: \"unicode\",\n unicodebidi: \"unicodeBidi\",\n \"unicode-bidi\": \"unicodeBidi\",\n unicoderange: \"unicodeRange\",\n \"unicode-range\": \"unicodeRange\",\n unitsperem: \"unitsPerEm\",\n \"units-per-em\": \"unitsPerEm\",\n unselectable: \"unselectable\",\n valphabetic: \"vAlphabetic\",\n \"v-alphabetic\": \"vAlphabetic\",\n values: \"values\",\n vectoreffect: \"vectorEffect\",\n \"vector-effect\": \"vectorEffect\",\n version: \"version\",\n vertadvy: \"vertAdvY\",\n \"vert-adv-y\": \"vertAdvY\",\n vertoriginx: \"vertOriginX\",\n \"vert-origin-x\": \"vertOriginX\",\n vertoriginy: \"vertOriginY\",\n \"vert-origin-y\": \"vertOriginY\",\n vhanging: \"vHanging\",\n \"v-hanging\": \"vHanging\",\n videographic: \"vIdeographic\",\n \"v-ideographic\": \"vIdeographic\",\n viewbox: \"viewBox\",\n viewtarget: \"viewTarget\",\n visibility: \"visibility\",\n vmathematical: \"vMathematical\",\n \"v-mathematical\": \"vMathematical\",\n vocab: \"vocab\",\n widths: \"widths\",\n wordspacing: \"wordSpacing\",\n \"word-spacing\": \"wordSpacing\",\n writingmode: \"writingMode\",\n \"writing-mode\": \"writingMode\",\n x1: \"x1\",\n x2: \"x2\",\n x: \"x\",\n xchannelselector: \"xChannelSelector\",\n xheight: \"xHeight\",\n \"x-height\": \"xHeight\",\n xlinkactuate: \"xlinkActuate\",\n \"xlink:actuate\": \"xlinkActuate\",\n xlinkarcrole: \"xlinkArcrole\",\n \"xlink:arcrole\": \"xlinkArcrole\",\n xlinkhref: \"xlinkHref\",\n \"xlink:href\": \"xlinkHref\",\n xlinkrole: \"xlinkRole\",\n \"xlink:role\": \"xlinkRole\",\n xlinkshow: \"xlinkShow\",\n \"xlink:show\": \"xlinkShow\",\n xlinktitle: \"xlinkTitle\",\n \"xlink:title\": \"xlinkTitle\",\n xlinktype: \"xlinkType\",\n \"xlink:type\": \"xlinkType\",\n xmlbase: \"xmlBase\",\n \"xml:base\": \"xmlBase\",\n xmllang: \"xmlLang\",\n \"xml:lang\": \"xmlLang\",\n xmlns: \"xmlns\",\n \"xml:space\": \"xmlSpace\",\n xmlnsxlink: \"xmlnsXlink\",\n \"xmlns:xlink\": \"xmlnsXlink\",\n xmlspace: \"xmlSpace\",\n y1: \"y1\",\n y2: \"y2\",\n y: \"y\",\n ychannelselector: \"yChannelSelector\",\n z: \"z\",\n zoomandpan: \"zoomAndPan\"\n },\n warnedProperties = {},\n EVENT_NAME_REGEX = /^on./,\n INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/,\n rARIA = RegExp(\n \"^(aria)-[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n rARIACamel = RegExp(\n \"^(aria)[A-Z][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/,\n msPattern$1 = /^-ms-/,\n hyphenPattern = /-(.)/g,\n badStyleValueWithSemicolonPattern = /;\\s*$/,\n warnedStyleNames = {},\n warnedStyleValues = {},\n warnedForNaNValue = !1,\n warnedForInfinityValue = !1,\n matchHtmlRegExp = /[\"'&<>]/,\n uppercasePattern = /([A-Z])/g,\n msPattern = /^ms-/,\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n NotPending = Object.freeze({\n pending: !1,\n data: null,\n method: null,\n action: null\n }),\n previousDispatcher = ReactDOMSharedInternals.d;\n ReactDOMSharedInternals.d = {\n f: previousDispatcher.f,\n r: previousDispatcher.r,\n D: function (href) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (\"string\" === typeof href && href) {\n if (!resumableState.dnsResources.hasOwnProperty(href)) {\n resumableState.dnsResources[href] = EXISTS;\n resumableState = renderState.headers;\n var header, JSCompiler_temp;\n if (\n (JSCompiler_temp =\n resumableState && 0 < resumableState.remainingCapacity)\n )\n JSCompiler_temp =\n ((header =\n \"<\" +\n escapeHrefForLinkHeaderURLContext(href) +\n \">; rel=dns-prefetch\"),\n 0 <= (resumableState.remainingCapacity -= header.length + 2));\n JSCompiler_temp\n ? ((renderState.resets.dns[href] = EXISTS),\n resumableState.preconnects &&\n (resumableState.preconnects += \", \"),\n (resumableState.preconnects += header))\n : ((header = []),\n pushLinkImpl(header, { href: href, rel: \"dns-prefetch\" }),\n renderState.preconnects.add(header));\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.D(href);\n },\n C: function (href, crossOrigin) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (\"string\" === typeof href && href) {\n var bucket =\n \"use-credentials\" === crossOrigin\n ? \"credentials\"\n : \"string\" === typeof crossOrigin\n ? \"anonymous\"\n : \"default\";\n if (!resumableState.connectResources[bucket].hasOwnProperty(href)) {\n resumableState.connectResources[bucket][href] = EXISTS;\n resumableState = renderState.headers;\n var header, JSCompiler_temp;\n if (\n (JSCompiler_temp =\n resumableState && 0 < resumableState.remainingCapacity)\n ) {\n JSCompiler_temp =\n \"<\" +\n escapeHrefForLinkHeaderURLContext(href) +\n \">; rel=preconnect\";\n if (\"string\" === typeof crossOrigin) {\n var escapedCrossOrigin =\n escapeStringForLinkHeaderQuotedParamValueContext(\n crossOrigin,\n \"crossOrigin\"\n );\n JSCompiler_temp +=\n '; crossorigin=\"' + escapedCrossOrigin + '\"';\n }\n JSCompiler_temp =\n ((header = JSCompiler_temp),\n 0 <= (resumableState.remainingCapacity -= header.length + 2));\n }\n JSCompiler_temp\n ? ((renderState.resets.connect[bucket][href] = EXISTS),\n resumableState.preconnects &&\n (resumableState.preconnects += \", \"),\n (resumableState.preconnects += header))\n : ((bucket = []),\n pushLinkImpl(bucket, {\n rel: \"preconnect\",\n href: href,\n crossOrigin: crossOrigin\n }),\n renderState.preconnects.add(bucket));\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.C(href, crossOrigin);\n },\n L: function (href, as, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (as && href) {\n switch (as) {\n case \"image\":\n if (options) {\n var imageSrcSet = options.imageSrcSet;\n var imageSizes = options.imageSizes;\n var fetchPriority = options.fetchPriority;\n }\n var key = imageSrcSet\n ? imageSrcSet + \"\\n\" + (imageSizes || \"\")\n : href;\n if (resumableState.imageResources.hasOwnProperty(key)) return;\n resumableState.imageResources[key] = PRELOAD_NO_CREDS;\n resumableState = renderState.headers;\n var header;\n resumableState &&\n 0 < resumableState.remainingCapacity &&\n \"high\" === fetchPriority &&\n ((header = getPreloadAsHeader(href, as, options)),\n 0 <= (resumableState.remainingCapacity -= header.length + 2))\n ? ((renderState.resets.image[key] = PRELOAD_NO_CREDS),\n resumableState.highImagePreloads &&\n (resumableState.highImagePreloads += \", \"),\n (resumableState.highImagePreloads += header))\n : ((resumableState = []),\n pushLinkImpl(\n resumableState,\n assign(\n {\n rel: \"preload\",\n href: imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )\n ),\n \"high\" === fetchPriority\n ? renderState.highImagePreloads.add(resumableState)\n : (renderState.bulkPreloads.add(resumableState),\n renderState.preloads.images.set(key, resumableState)));\n break;\n case \"style\":\n if (resumableState.styleResources.hasOwnProperty(href)) return;\n imageSrcSet = [];\n pushLinkImpl(\n imageSrcSet,\n assign({ rel: \"preload\", href: href, as: as }, options)\n );\n resumableState.styleResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n renderState.preloads.stylesheets.set(href, imageSrcSet);\n renderState.bulkPreloads.add(imageSrcSet);\n break;\n case \"script\":\n if (resumableState.scriptResources.hasOwnProperty(href)) return;\n imageSrcSet = [];\n renderState.preloads.scripts.set(href, imageSrcSet);\n renderState.bulkPreloads.add(imageSrcSet);\n pushLinkImpl(\n imageSrcSet,\n assign({ rel: \"preload\", href: href, as: as }, options)\n );\n resumableState.scriptResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n break;\n default:\n if (resumableState.unknownResources.hasOwnProperty(as)) {\n if (\n ((imageSrcSet = resumableState.unknownResources[as]),\n imageSrcSet.hasOwnProperty(href))\n )\n return;\n } else\n (imageSrcSet = {}),\n (resumableState.unknownResources[as] = imageSrcSet);\n imageSrcSet[href] = PRELOAD_NO_CREDS;\n if (\n (resumableState = renderState.headers) &&\n 0 < resumableState.remainingCapacity &&\n \"font\" === as &&\n ((key = getPreloadAsHeader(href, as, options)),\n 0 <= (resumableState.remainingCapacity -= key.length + 2))\n )\n (renderState.resets.font[href] = PRELOAD_NO_CREDS),\n resumableState.fontPreloads &&\n (resumableState.fontPreloads += \", \"),\n (resumableState.fontPreloads += key);\n else\n switch (\n ((resumableState = []),\n (href = assign(\n { rel: \"preload\", href: href, as: as },\n options\n )),\n pushLinkImpl(resumableState, href),\n as)\n ) {\n case \"font\":\n renderState.fontPreloads.add(resumableState);\n break;\n default:\n renderState.bulkPreloads.add(resumableState);\n }\n }\n enqueueFlush(request);\n }\n } else previousDispatcher.L(href, as, options);\n },\n m: function (href, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (href) {\n var as =\n options && \"string\" === typeof options.as ? options.as : \"script\";\n switch (as) {\n case \"script\":\n if (resumableState.moduleScriptResources.hasOwnProperty(href))\n return;\n as = [];\n resumableState.moduleScriptResources[href] =\n !options ||\n (\"string\" !== typeof options.crossOrigin &&\n \"string\" !== typeof options.integrity)\n ? PRELOAD_NO_CREDS\n : [options.crossOrigin, options.integrity];\n renderState.preloads.moduleScripts.set(href, as);\n break;\n default:\n if (resumableState.moduleUnknownResources.hasOwnProperty(as)) {\n var resources = resumableState.unknownResources[as];\n if (resources.hasOwnProperty(href)) return;\n } else\n (resources = {}),\n (resumableState.moduleUnknownResources[as] = resources);\n as = [];\n resources[href] = PRELOAD_NO_CREDS;\n }\n pushLinkImpl(\n as,\n assign({ rel: \"modulepreload\", href: href }, options)\n );\n renderState.bulkPreloads.add(as);\n enqueueFlush(request);\n }\n } else previousDispatcher.m(href, options);\n },\n X: function (src, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (src) {\n var resourceState = resumableState.scriptResources.hasOwnProperty(\n src\n )\n ? resumableState.scriptResources[src]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.scriptResources[src] = EXISTS),\n (options = assign({ src: src, async: !0 }, options)),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(options, resourceState),\n (src = renderState.preloads.scripts.get(src))) &&\n (src.length = 0),\n (src = []),\n renderState.scripts.add(src),\n pushScriptImpl(src, options),\n enqueueFlush(request));\n }\n } else previousDispatcher.X(src, options);\n },\n S: function (href, precedence, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (href) {\n precedence = precedence || \"default\";\n var styleQueue = renderState.styles.get(precedence),\n resourceState = resumableState.styleResources.hasOwnProperty(href)\n ? resumableState.styleResources[href]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.styleResources[href] = EXISTS),\n styleQueue ||\n ((styleQueue = {\n precedence: stringToChunk(escapeTextForBrowser(precedence)),\n rules: [],\n hrefs: [],\n sheets: new Map()\n }),\n renderState.styles.set(precedence, styleQueue)),\n (precedence = {\n state: PENDING$1,\n props: assign(\n {\n rel: \"stylesheet\",\n href: href,\n \"data-precedence\": precedence\n },\n options\n )\n }),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(precedence.props, resourceState),\n (renderState = renderState.preloads.stylesheets.get(href)) &&\n 0 < renderState.length\n ? (renderState.length = 0)\n : (precedence.state = PRELOADED)),\n styleQueue.sheets.set(href, precedence),\n enqueueFlush(request));\n }\n } else previousDispatcher.S(href, precedence, options);\n },\n M: function (src, options) {\n var request = currentRequest ? currentRequest : null;\n if (request) {\n var resumableState = request.resumableState,\n renderState = request.renderState;\n if (src) {\n var resourceState =\n resumableState.moduleScriptResources.hasOwnProperty(src)\n ? resumableState.moduleScriptResources[src]\n : void 0;\n resourceState !== EXISTS &&\n ((resumableState.moduleScriptResources[src] = EXISTS),\n (options = assign(\n { src: src, type: \"module\", async: !0 },\n options\n )),\n resourceState &&\n (2 === resourceState.length &&\n adoptPreloadCredentials(options, resourceState),\n (src = renderState.preloads.moduleScripts.get(src))) &&\n (src.length = 0),\n (src = []),\n renderState.scripts.add(src),\n pushScriptImpl(src, options),\n enqueueFlush(request));\n }\n } else previousDispatcher.M(src, options);\n }\n };\n var NothingSent = 0,\n SentCompleteSegmentFunction = 1,\n SentCompleteBoundaryFunction = 2,\n SentClientRenderFunction = 4,\n SentStyleInsertionFunction = 8,\n EXISTS = null,\n PRELOAD_NO_CREDS = [];\n Object.freeze(PRELOAD_NO_CREDS);\n stringToPrecomputedChunk('\"></template>');\n var startInlineScript = stringToPrecomputedChunk(\"<script>\"),\n endInlineScript = stringToPrecomputedChunk(\"\\x3c/script>\"),\n startScriptSrc = stringToPrecomputedChunk('<script src=\"'),\n startModuleSrc = stringToPrecomputedChunk('<script type=\"module\" src=\"'),\n scriptNonce = stringToPrecomputedChunk('\" nonce=\"'),\n scriptIntegirty = stringToPrecomputedChunk('\" integrity=\"'),\n scriptCrossOrigin = stringToPrecomputedChunk('\" crossorigin=\"'),\n endAsyncScript = stringToPrecomputedChunk('\" async=\"\">\\x3c/script>'),\n scriptRegex = /(<\\/|<)(s)(cript)/gi,\n importMapScriptStart = stringToPrecomputedChunk(\n '<script type=\"importmap\">'\n ),\n importMapScriptEnd = stringToPrecomputedChunk(\"\\x3c/script>\");\n var didWarnForNewBooleanPropsWithEmptyValue = {};\n var ROOT_HTML_MODE = 0,\n HTML_HTML_MODE = 1,\n HTML_MODE = 2,\n SVG_MODE = 3,\n MATHML_MODE = 4,\n HTML_TABLE_MODE = 5,\n HTML_TABLE_BODY_MODE = 6,\n HTML_TABLE_ROW_MODE = 7,\n HTML_COLGROUP_MODE = 8,\n textSeparator = stringToPrecomputedChunk(\"\\x3c!-- --\\x3e\"),\n styleNameCache = new Map(),\n styleAttributeStart = stringToPrecomputedChunk(' style=\"'),\n styleAssign = stringToPrecomputedChunk(\":\"),\n styleSeparator = stringToPrecomputedChunk(\";\"),\n attributeSeparator = stringToPrecomputedChunk(\" \"),\n attributeAssign = stringToPrecomputedChunk('=\"'),\n attributeEnd = stringToPrecomputedChunk('\"'),\n attributeEmptyString = stringToPrecomputedChunk('=\"\"'),\n actionJavaScriptURL = stringToPrecomputedChunk(\n escapeTextForBrowser(\n \"javascript:throw new Error('React form unexpectedly submitted.')\"\n )\n ),\n startHiddenInputChunk = stringToPrecomputedChunk('<input type=\"hidden\"'),\n endOfStartTag = stringToPrecomputedChunk(\">\"),\n endOfStartTagSelfClosing = stringToPrecomputedChunk(\"/>\"),\n didWarnDefaultInputValue = !1,\n didWarnDefaultChecked = !1,\n didWarnDefaultSelectValue = !1,\n didWarnDefaultTextareaValue = !1,\n didWarnInvalidOptionChildren = !1,\n didWarnInvalidOptionInnerHTML = !1,\n didWarnSelectedSetOnOption = !1,\n didWarnFormActionType = !1,\n didWarnFormActionName = !1,\n didWarnFormActionTarget = !1,\n didWarnFormActionMethod = !1,\n selectedMarkerAttribute = stringToPrecomputedChunk(' selected=\"\"'),\n formReplayingRuntimeScript = stringToPrecomputedChunk(\n 'addEventListener(\"submit\",function(a){if(!a.defaultPrevented){var c=a.target,d=a.submitter,e=c.action,b=d;if(d){var f=d.getAttribute(\"formAction\");null!=f&&(e=f,b=null)}\"javascript:throw new Error(\\'React form unexpectedly submitted.\\')\"===e&&(a.preventDefault(),b?(a=document.createElement(\"input\"),a.name=b.name,a.value=b.value,b.parentNode.insertBefore(a,b),b=new FormData(c),a.parentNode.removeChild(a)):b=new FormData(c),a=c.ownerDocument||c,(a.$$reactFormReplay=a.$$reactFormReplay||[]).push(c,d,b))}});'\n ),\n formStateMarkerIsMatching = stringToPrecomputedChunk(\"\\x3c!--F!--\\x3e\"),\n formStateMarkerIsNotMatching = stringToPrecomputedChunk(\"\\x3c!--F--\\x3e\"),\n styleRegex = /(<\\/|<)(s)(tyle)/gi,\n leadingNewline = stringToPrecomputedChunk(\"\\n\"),\n VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,\n validatedTagCache = new Map(),\n doctypeChunk = stringToPrecomputedChunk(\"<!DOCTYPE html>\"),\n endTagCache = new Map(),\n placeholder1 = stringToPrecomputedChunk('<template id=\"'),\n placeholder2 = stringToPrecomputedChunk('\"></template>'),\n startCompletedSuspenseBoundary =\n stringToPrecomputedChunk(\"\\x3c!--$--\\x3e\"),\n startPendingSuspenseBoundary1 = stringToPrecomputedChunk(\n '\\x3c!--$?--\\x3e<template id=\"'\n ),\n startPendingSuspenseBoundary2 = stringToPrecomputedChunk('\"></template>'),\n startClientRenderedSuspenseBoundary =\n stringToPrecomputedChunk(\"\\x3c!--$!--\\x3e\"),\n endSuspenseBoundary = stringToPrecomputedChunk(\"\\x3c!--/$--\\x3e\"),\n clientRenderedSuspenseBoundaryError1 =\n stringToPrecomputedChunk(\"<template\"),\n clientRenderedSuspenseBoundaryErrorAttrInterstitial =\n stringToPrecomputedChunk('\"'),\n clientRenderedSuspenseBoundaryError1A =\n stringToPrecomputedChunk(' data-dgst=\"'),\n clientRenderedSuspenseBoundaryError1B =\n stringToPrecomputedChunk(' data-msg=\"'),\n clientRenderedSuspenseBoundaryError1C =\n stringToPrecomputedChunk(' data-stck=\"'),\n clientRenderedSuspenseBoundaryError1D =\n stringToPrecomputedChunk(' data-cstck=\"'),\n clientRenderedSuspenseBoundaryError2 =\n stringToPrecomputedChunk(\"></template>\"),\n startSegmentHTML = stringToPrecomputedChunk('<div hidden id=\"'),\n startSegmentHTML2 = stringToPrecomputedChunk('\">'),\n endSegmentHTML = stringToPrecomputedChunk(\"</div>\"),\n startSegmentSVG = stringToPrecomputedChunk(\n '<svg aria-hidden=\"true\" style=\"display:none\" id=\"'\n ),\n startSegmentSVG2 = stringToPrecomputedChunk('\">'),\n endSegmentSVG = stringToPrecomputedChunk(\"</svg>\"),\n startSegmentMathML = stringToPrecomputedChunk(\n '<math aria-hidden=\"true\" style=\"display:none\" id=\"'\n ),\n startSegmentMathML2 = stringToPrecomputedChunk('\">'),\n endSegmentMathML = stringToPrecomputedChunk(\"</math>\"),\n startSegmentTable = stringToPrecomputedChunk('<table hidden id=\"'),\n startSegmentTable2 = stringToPrecomputedChunk('\">'),\n endSegmentTable = stringToPrecomputedChunk(\"</table>\"),\n startSegmentTableBody = stringToPrecomputedChunk(\n '<table hidden><tbody id=\"'\n ),\n startSegmentTableBody2 = stringToPrecomputedChunk('\">'),\n endSegmentTableBody = stringToPrecomputedChunk(\"</tbody></table>\"),\n startSegmentTableRow = stringToPrecomputedChunk('<table hidden><tr id=\"'),\n startSegmentTableRow2 = stringToPrecomputedChunk('\">'),\n endSegmentTableRow = stringToPrecomputedChunk(\"</tr></table>\"),\n startSegmentColGroup = stringToPrecomputedChunk(\n '<table hidden><colgroup id=\"'\n ),\n startSegmentColGroup2 = stringToPrecomputedChunk('\">'),\n endSegmentColGroup = stringToPrecomputedChunk(\"</colgroup></table>\"),\n completeSegmentScript1Full = stringToPrecomputedChunk(\n '$RS=function(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'\n ),\n completeSegmentScript1Partial = stringToPrecomputedChunk('$RS(\"'),\n completeSegmentScript2 = stringToPrecomputedChunk('\",\"'),\n completeSegmentScriptEnd = stringToPrecomputedChunk('\")\\x3c/script>');\n stringToPrecomputedChunk('<template data-rsi=\"\" data-sid=\"');\n stringToPrecomputedChunk('\" data-pid=\"');\n var completeBoundaryScript1Full = stringToPrecomputedChunk(\n '$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data=\"$!\",a.setAttribute(\"data-dgst\",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if(\"/$\"===d)if(0===f)break;else f--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data=\"$\"}b._reactRetry&&b._reactRetry()}};$RC(\"'\n ),\n completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC(\"'),\n completeBoundaryWithStylesScript1FullBoth = stringToPrecomputedChunk(\n '$RC=function(b,c,e){c=document.getElementById(c);c.parentNode.removeChild(c);var a=document.getElementById(b);if(a){b=a.previousSibling;if(e)b.data=\"$!\",a.setAttribute(\"data-dgst\",e);else{e=b.parentNode;a=b.nextSibling;var f=0;do{if(a&&8===a.nodeType){var d=a.data;if(\"/$\"===d)if(0===f)break;else f--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||f++}d=a.nextSibling;e.removeChild(a);a=d}while(a);for(;c.firstChild;)e.insertBefore(c.firstChild,a);b.data=\"$\"}b._reactRetry&&b._reactRetry()}};$RM=new Map;\\n$RR=function(t,u,y){function v(n){this._p=null;n()}for(var w=$RC,p=$RM,q=new Map,r=document,g,b,h=r.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),x=[],k=0;b=h[k++];)\"not all\"===b.getAttribute(\"media\")?x.push(b):(\"LINK\"===b.tagName&&p.set(b.getAttribute(\"href\"),b),q.set(b.dataset.precedence,g=b));b=0;h=[];var l,a;for(k=!0;;){if(k){var e=y[b++];if(!e){k=!1;b=0;continue}var c=!1,m=0;var d=e[m++];if(a=p.get(d)){var f=a._p;c=!0}else{a=r.createElement(\"link\");a.href=\\nd;a.rel=\"stylesheet\";for(a.dataset.precedence=l=e[m++];f=e[m++];)a.setAttribute(f,e[m++]);f=a._p=new Promise(function(n,z){a.onload=v.bind(a,n);a.onerror=v.bind(a,z)});p.set(d,a)}d=a.getAttribute(\"media\");!f||d&&!matchMedia(d).matches||h.push(f);if(c)continue}else{a=x[b++];if(!a)break;l=a.getAttribute(\"data-precedence\");a.removeAttribute(\"media\")}c=q.get(l)||g;c===g&&(g=a);q.set(l,a);c?c.parentNode.insertBefore(a,c.nextSibling):(c=r.head,c.insertBefore(a,c.firstChild))}Promise.all(h).then(w.bind(null,\\nt,u,\"\"),w.bind(null,t,u,\"Resource failed to load\"))};$RR(\"'\n ),\n completeBoundaryWithStylesScript1FullPartial = stringToPrecomputedChunk(\n '$RM=new Map;\\n$RR=function(t,u,y){function v(n){this._p=null;n()}for(var w=$RC,p=$RM,q=new Map,r=document,g,b,h=r.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),x=[],k=0;b=h[k++];)\"not all\"===b.getAttribute(\"media\")?x.push(b):(\"LINK\"===b.tagName&&p.set(b.getAttribute(\"href\"),b),q.set(b.dataset.precedence,g=b));b=0;h=[];var l,a;for(k=!0;;){if(k){var e=y[b++];if(!e){k=!1;b=0;continue}var c=!1,m=0;var d=e[m++];if(a=p.get(d)){var f=a._p;c=!0}else{a=r.createElement(\"link\");a.href=\\nd;a.rel=\"stylesheet\";for(a.dataset.precedence=l=e[m++];f=e[m++];)a.setAttribute(f,e[m++]);f=a._p=new Promise(function(n,z){a.onload=v.bind(a,n);a.onerror=v.bind(a,z)});p.set(d,a)}d=a.getAttribute(\"media\");!f||d&&!matchMedia(d).matches||h.push(f);if(c)continue}else{a=x[b++];if(!a)break;l=a.getAttribute(\"data-precedence\");a.removeAttribute(\"media\")}c=q.get(l)||g;c===g&&(g=a);q.set(l,a);c?c.parentNode.insertBefore(a,c.nextSibling):(c=r.head,c.insertBefore(a,c.firstChild))}Promise.all(h).then(w.bind(null,\\nt,u,\"\"),w.bind(null,t,u,\"Resource failed to load\"))};$RR(\"'\n ),\n completeBoundaryWithStylesScript1Partial =\n stringToPrecomputedChunk('$RR(\"'),\n completeBoundaryScript2 = stringToPrecomputedChunk('\",\"'),\n completeBoundaryScript3a = stringToPrecomputedChunk('\",'),\n completeBoundaryScript3b = stringToPrecomputedChunk('\"'),\n completeBoundaryScriptEnd = stringToPrecomputedChunk(\")\\x3c/script>\");\n stringToPrecomputedChunk('<template data-rci=\"\" data-bid=\"');\n stringToPrecomputedChunk('<template data-rri=\"\" data-bid=\"');\n stringToPrecomputedChunk('\" data-sid=\"');\n stringToPrecomputedChunk('\" data-sty=\"');\n var clientRenderScript1Full = stringToPrecomputedChunk(\n '$RX=function(b,c,d,e,f){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),f&&(a.cstck=f),b._reactRetry&&b._reactRetry())};;$RX(\"'\n ),\n clientRenderScript1Partial = stringToPrecomputedChunk('$RX(\"'),\n clientRenderScript1A = stringToPrecomputedChunk('\"'),\n clientRenderErrorScriptArgInterstitial = stringToPrecomputedChunk(\",\"),\n clientRenderScriptEnd = stringToPrecomputedChunk(\")\\x3c/script>\");\n stringToPrecomputedChunk('<template data-rxi=\"\" data-bid=\"');\n stringToPrecomputedChunk('\" data-dgst=\"');\n stringToPrecomputedChunk('\" data-msg=\"');\n stringToPrecomputedChunk('\" data-stck=\"');\n stringToPrecomputedChunk('\" data-cstck=\"');\n var regexForJSStringsInInstructionScripts = /[<\\u2028\\u2029]/g,\n regexForJSStringsInScripts = /[&><\\u2028\\u2029]/g,\n lateStyleTagResourceOpen1 = stringToPrecomputedChunk(\n '<style media=\"not all\" data-precedence=\"'\n ),\n lateStyleTagResourceOpen2 = stringToPrecomputedChunk('\" data-href=\"'),\n lateStyleTagResourceOpen3 = stringToPrecomputedChunk('\">'),\n lateStyleTagTemplateClose = stringToPrecomputedChunk(\"</style>\"),\n currentlyRenderingBoundaryHasStylesToHoist = !1,\n destinationHasCapacity = !0,\n stylesheetFlushingQueue = [],\n styleTagResourceOpen1 = stringToPrecomputedChunk(\n '<style data-precedence=\"'\n ),\n styleTagResourceOpen2 = stringToPrecomputedChunk('\" data-href=\"'),\n spaceSeparator = stringToPrecomputedChunk(\" \"),\n styleTagResourceOpen3 = stringToPrecomputedChunk('\">'),\n styleTagResourceClose = stringToPrecomputedChunk(\"</style>\"),\n arrayFirstOpenBracket = stringToPrecomputedChunk(\"[\"),\n arraySubsequentOpenBracket = stringToPrecomputedChunk(\",[\"),\n arrayInterstitial = stringToPrecomputedChunk(\",\"),\n arrayCloseBracket = stringToPrecomputedChunk(\"]\"),\n PENDING$1 = 0,\n PRELOADED = 1,\n PREAMBLE = 2,\n LATE = 3,\n regexForHrefInLinkHeaderURLContext = /[<>\\r\\n]/g,\n regexForLinkHeaderQuotedParamValueContext = /[\"';,\\r\\n]/g,\n bind = Function.prototype.bind,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n emptyContextObject = {};\n Object.freeze(emptyContextObject);\n var rendererSigil = {};\n var currentActiveSnapshot = null,\n didWarnAboutNoopUpdateForComponent = {},\n didWarnAboutDeprecatedWillMount = {};\n var didWarnAboutUninitializedState = new Set();\n var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n var didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n var didWarnAboutDirectlyAssigningPropsToState = new Set();\n var didWarnAboutUndefinedDerivedState = new Set();\n var didWarnAboutContextTypes$1 = new Set();\n var didWarnAboutChildContextTypes = new Set();\n var didWarnAboutInvalidateContextType = new Set();\n var didWarnOnInvalidCallback = new Set();\n var classComponentUpdater = {\n isMounted: function () {\n return !1;\n },\n enqueueSetState: function (inst, payload, callback) {\n var internals = inst._reactInternals;\n null === internals.queue\n ? warnNoop(inst, \"setState\")\n : (internals.queue.push(payload),\n void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n inst.replace = !0;\n inst.queue = [payload];\n void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback);\n },\n enqueueForceUpdate: function (inst, callback) {\n null === inst._reactInternals.queue\n ? warnNoop(inst, \"forceUpdate\")\n : void 0 !== callback &&\n null !== callback &&\n warnOnInvalidCallback(callback);\n }\n },\n emptyTreeContext = { id: 1, overflow: \"\" },\n clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2,\n SuspenseException = Error(\n \"Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\\n\\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`\"\n ),\n suspendedThenable = null,\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n currentlyRenderingComponent = null,\n currentlyRenderingTask = null,\n currentlyRenderingRequest = null,\n currentlyRenderingKeyPath = null,\n firstWorkInProgressHook = null,\n workInProgressHook = null,\n isReRender = !1,\n didScheduleRenderPhaseUpdate = !1,\n localIdCounter = 0,\n actionStateCounter = 0,\n actionStateMatchingIndex = -1,\n thenableIndexCounter = 0,\n thenableState = null,\n renderPhaseUpdates = null,\n numberOfReRenders = 0,\n isInHookUserCodeInDev = !1,\n currentHookNameInDev,\n HooksDispatcher = {\n readContext: readContext,\n use: function (usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then)\n return unwrapThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE)\n return readContext(usable);\n }\n throw Error(\n \"An unsupported type was passed to use(): \" + String(usable)\n );\n },\n useContext: function (context) {\n currentHookNameInDev = \"useContext\";\n resolveCurrentlyRenderingComponent();\n return context._currentValue;\n },\n useMemo: useMemo,\n useReducer: useReducer,\n useRef: function (initialValue) {\n currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n workInProgressHook = createWorkInProgressHook();\n var previousRef = workInProgressHook.memoizedState;\n return null === previousRef\n ? ((initialValue = { current: initialValue }),\n Object.seal(initialValue),\n (workInProgressHook.memoizedState = initialValue))\n : previousRef;\n },\n useState: function (initialState) {\n currentHookNameInDev = \"useState\";\n return useReducer(basicStateReducer, initialState);\n },\n useInsertionEffect: noop$1,\n useLayoutEffect: noop$1,\n useCallback: function (callback, deps) {\n return useMemo(function () {\n return callback;\n }, deps);\n },\n useImperativeHandle: noop$1,\n useEffect: noop$1,\n useDebugValue: noop$1,\n useDeferredValue: function (value, initialValue) {\n resolveCurrentlyRenderingComponent();\n return void 0 !== initialValue ? initialValue : value;\n },\n useTransition: function () {\n resolveCurrentlyRenderingComponent();\n return [!1, unsupportedStartTransition];\n },\n useId: function () {\n var treeId = currentlyRenderingTask.treeContext;\n var overflow = treeId.overflow;\n treeId = treeId.id;\n treeId =\n (treeId & ~(1 << (32 - clz32(treeId) - 1))).toString(32) + overflow;\n var resumableState = currentResumableState;\n if (null === resumableState)\n throw Error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component.\"\n );\n overflow = localIdCounter++;\n treeId = \":\" + resumableState.idPrefix + \"R\" + treeId;\n 0 < overflow && (treeId += \"H\" + overflow.toString(32));\n return treeId + \":\";\n },\n useSyncExternalStore: function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n if (void 0 === getServerSnapshot)\n throw Error(\n \"Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.\"\n );\n return getServerSnapshot();\n },\n useCacheRefresh: function () {\n return unsupportedRefresh;\n },\n useMemoCache: function (size) {\n for (var data = Array(size), i = 0; i < size; i++)\n data[i] = REACT_MEMO_CACHE_SENTINEL;\n return data;\n },\n useHostTransitionStatus: function () {\n resolveCurrentlyRenderingComponent();\n return NotPending;\n },\n useOptimistic: function (passthrough) {\n resolveCurrentlyRenderingComponent();\n return [passthrough, unsupportedSetOptimisticState];\n }\n };\n HooksDispatcher.useFormState = useActionState;\n HooksDispatcher.useActionState = useActionState;\n var currentResumableState = null,\n currentTaskInDEV = null,\n DefaultAsyncDispatcher = {\n getCacheForType: function () {\n throw Error(\"Not implemented.\");\n },\n getOwner: function () {\n return null === currentTaskInDEV\n ? null\n : currentTaskInDEV.componentStack;\n }\n },\n disabledDepth = 0,\n prevLog,\n prevInfo,\n prevWarn,\n prevError,\n prevGroup,\n prevGroupCollapsed,\n prevGroupEnd;\n disabledLog.__reactDisabledLog = !0;\n var prefix,\n suffix,\n reentry = !1;\n var componentFrameCache = new (\n \"function\" === typeof WeakMap ? WeakMap : Map\n )();\n var callComponent = {\n \"react-stack-bottom-frame\": function (Component, props, secondArg) {\n return Component(props, secondArg);\n }\n },\n callComponentInDEV =\n callComponent[\"react-stack-bottom-frame\"].bind(callComponent),\n callRender = {\n \"react-stack-bottom-frame\": function (instance) {\n return instance.render();\n }\n },\n callRenderInDEV = callRender[\"react-stack-bottom-frame\"].bind(callRender),\n callLazyInit = {\n \"react-stack-bottom-frame\": function (lazy) {\n var init = lazy._init;\n return init(lazy._payload);\n }\n },\n callLazyInitInDEV =\n callLazyInit[\"react-stack-bottom-frame\"].bind(callLazyInit),\n CLIENT_RENDERED = 4,\n PENDING = 0,\n COMPLETED = 1,\n FLUSHED = 2,\n POSTPONED = 5,\n CLOSED = 14,\n currentRequest = null,\n didWarnAboutBadClass = {},\n didWarnAboutContextTypes = {},\n didWarnAboutContextTypeOnFunctionComponent = {},\n didWarnAboutGetDerivedStateOnFunctionComponent = {},\n didWarnAboutReassigningProps = !1,\n didWarnAboutGenerators = !1,\n didWarnAboutMaps = !1;\n ensureCorrectIsomorphicReactVersion();\n ensureCorrectIsomorphicReactVersion();\n exports.prerender = function (children, options) {\n return new Promise(function (resolve, reject) {\n var onHeaders = options ? options.onHeaders : void 0,\n onHeadersImpl;\n onHeaders &&\n (onHeadersImpl = function (headersDescriptor) {\n onHeaders(new Headers(headersDescriptor));\n });\n var resources = createResumableState(\n options ? options.identifierPrefix : void 0,\n options ? options.unstable_externalRuntimeSrc : void 0,\n options ? options.bootstrapScriptContent : void 0,\n options ? options.bootstrapScripts : void 0,\n options ? options.bootstrapModules : void 0\n ),\n request = createPrerenderRequest(\n children,\n resources,\n createRenderState(\n resources,\n void 0,\n options ? options.unstable_externalRuntimeSrc : void 0,\n options ? options.importMap : void 0,\n onHeadersImpl,\n options ? options.maxHeadersLength : void 0\n ),\n createRootFormatContext(options ? options.namespaceURI : void 0),\n options ? options.progressiveChunkSize : void 0,\n options ? options.onError : void 0,\n function () {\n var result = {\n prelude: new ReadableStream(\n {\n type: \"bytes\",\n pull: function (controller) {\n startFlowing(request, controller);\n },\n cancel: function (reason) {\n request.destination = null;\n abort(request, reason);\n }\n },\n { highWaterMark: 0 }\n )\n };\n resolve(result);\n },\n void 0,\n void 0,\n reject,\n options ? options.onPostpone : void 0\n );\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) abort(request, signal.reason);\n else {\n var listener = function () {\n abort(request, signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n startWork(request);\n });\n };\n exports.renderToReadableStream = function (children, options) {\n return new Promise(function (resolve, reject) {\n var onFatalError,\n onAllReady,\n allReady = new Promise(function (res, rej) {\n onAllReady = res;\n onFatalError = rej;\n }),\n onHeaders = options ? options.onHeaders : void 0,\n onHeadersImpl;\n onHeaders &&\n (onHeadersImpl = function (headersDescriptor) {\n onHeaders(new Headers(headersDescriptor));\n });\n var resumableState = createResumableState(\n options ? options.identifierPrefix : void 0,\n options ? options.unstable_externalRuntimeSrc : void 0,\n options ? options.bootstrapScriptContent : void 0,\n options ? options.bootstrapScripts : void 0,\n options ? options.bootstrapModules : void 0\n ),\n request = createRequest(\n children,\n resumableState,\n createRenderState(\n resumableState,\n options ? options.nonce : void 0,\n options ? options.unstable_externalRuntimeSrc : void 0,\n options ? options.importMap : void 0,\n onHeadersImpl,\n options ? options.maxHeadersLength : void 0\n ),\n createRootFormatContext(options ? options.namespaceURI : void 0),\n options ? options.progressiveChunkSize : void 0,\n options ? options.onError : void 0,\n onAllReady,\n function () {\n var stream = new ReadableStream(\n {\n type: \"bytes\",\n pull: function (controller) {\n startFlowing(request, controller);\n },\n cancel: function (reason) {\n request.destination = null;\n abort(request, reason);\n }\n },\n { highWaterMark: 0 }\n );\n stream.allReady = allReady;\n resolve(stream);\n },\n function (error) {\n allReady.catch(function () {});\n reject(error);\n },\n onFatalError,\n options ? options.onPostpone : void 0,\n options ? options.formState : void 0\n );\n if (options && options.signal) {\n var signal = options.signal;\n if (signal.aborted) abort(request, signal.reason);\n else {\n var listener = function () {\n abort(request, signal.reason);\n signal.removeEventListener(\"abort\", listener);\n };\n signal.addEventListener(\"abort\", listener);\n }\n }\n startWork(request);\n });\n };\n exports.version = \"19.0.0\";\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tc2VydmVyLmJyb3dzZXIuZGV2ZWxvcG1lbnQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDYTtBQUNiLEtBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxJQUFJO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDBCQUEwQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDZDQUE2QztBQUNuRSxzQkFBc0IsNENBQTRDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLElBQUk7QUFDdEM7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLHlCQUF5Qiw2QkFBNkI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGlCQUFpQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxpQkFBaUI7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Ysc0JBQXNCO0FBQ3RCO0FBQ0Esc0JBQXNCLGlCQUFpQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixjQUFjO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0pBQWtKLGlCQUFpQjtBQUNuSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtKQUFrSixpQkFBaUIs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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRSxZQUFZO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDBCQUEwQjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdWZBQXVmLFdBQVcsMExBQTBMLFNBQVMsV0FBVyxFQUFFO0FBQ2x0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUVBQXVFLFlBQVk7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNEJBQTRCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFCQUFxQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixvQ0FBb0M7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMkJBQTJCO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixhQUFhO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsNEJBQTRCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixxQkFBcUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSx3QkFBd0IsV0FBVyxnQkFBZ0I7QUFDbkQseUJBQXlCLFdBQVcsaUJBQWlCO0FBQ3JELHlCQUF5QixXQUFXLGlCQUFpQjtBQUNyRCwwQkFBMEIsV0FBVyxrQkFBa0I7QUFDdkQsMEJBQTBCLFdBQVcsa0JBQWtCO0FBQ3ZELG1DQUFtQyxXQUFXLDJCQUEyQjtBQUN6RSw2QkFBNkIsV0FBVyxxQkFBcUI7QUFDN0QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxnRUFBZ0UsZUFBZSxvQ0FBb0M7QUFDdEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsZ0VBQWdFLGVBQWUsb0NBQW9DO0FBQ3RKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isc0JBQXNCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixzQkFBc0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBdUQ7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRUFBbUU7QUFDbkU7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDBCQUEwQjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0RBQWdEO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxxQ0FBcUM7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMEJBQTBCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlCQUFpQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrQkFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGtCQUFrQixnQkFBZ0I7QUFDdkU7QUFDQTtBQUNBLFFBQVE7QUFDUiw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3QkFBd0I7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLHlEQUF5RDtBQUN6RDtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLDJCQUEyQjtBQUM1RCx3Q0FBd0Msb0JBQW9CO0FBQzVEO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4QkFBOEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGdDQUFnQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLG1DQUFtQyxnQ0FBZ0M7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IscUNBQXFDO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZ0NBQWdDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsOEJBQThCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw0QkFBNEI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixnREFBZ0Q7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyw0Q0FBTztBQUMvQixpQkFBaUIsbUJBQU8sQ0FBQyxvREFBVztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QywyQkFBMkI7QUFDM0IsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsSUFBSSw4QkFBOEI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLDJDQUEyQztBQUMzQztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLElBQUksZUFBZTtBQUNuQixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1zZXJ2ZXIuYnJvd3Nlci5kZXZlbG9wbWVudC5qcz81YjdhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS1zZXJ2ZXIuYnJvd3Nlci5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLypcblxuXG4gSlMgSW1wbGVtZW50YXRpb24gb2YgTXVybXVySGFzaDMgKHIxMzYpIChhcyBvZiBNYXkgMjAsIDIwMTEpXG5cbiBDb3B5cmlnaHQgKGMpIDIwMTEgR2FyeSBDb3VydFxuIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblxuIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuKi9cblwidXNlIHN0cmljdFwiO1xuXCJwcm9kdWN0aW9uXCIgIT09IHByb2Nlc3MuZW52Lk5PREVfRU5WICYmXG4gIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3R5bGVSZXBsYWNlcihtYXRjaCwgcHJlZml4LCBzLCBzdWZmaXgpIHtcbiAgICAgIHJldHVybiBcIlwiICsgcHJlZml4ICsgKFwic1wiID09PSBzID8gXCJcXFxcNzMgXCIgOiBcIlxcXFw1MyBcIikgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNjcmlwdFJlcGxhY2VyKG1hdGNoLCBwcmVmaXgsIHMsIHN1ZmZpeCkge1xuICAgICAgcmV0dXJuIFwiXCIgKyBwcmVmaXggKyAoXCJzXCIgPT09IHMgPyBcIlxcXFx1MDA3M1wiIDogXCJcXFxcdTAwNTNcIikgKyBzdWZmaXg7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9iamVjdE5hbWUob2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuICAgICAgICAuY2FsbChvYmplY3QpXG4gICAgICAgIC5yZXBsYWNlKC9eXFxbb2JqZWN0ICguKilcXF0kLywgZnVuY3Rpb24gKG0sIHAwKSB7XG4gICAgICAgICAgcmV0dXJuIHAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2Uoa2V5KSB7XG4gICAgICB2YXIgZW5jb2RlZEtleSA9IEpTT04uc3RyaW5naWZ5KGtleSk7XG4gICAgICByZXR1cm4gJ1wiJyArIGtleSArICdcIicgPT09IGVuY29kZWRLZXkgPyBrZXkgOiBlbmNvZGVkS2V5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKHZhbHVlKSB7XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgMTAgPj0gdmFsdWUubGVuZ3RoID8gdmFsdWUgOiB2YWx1ZS5zbGljZSgwLCAxMCkgKyBcIi4uLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgIGlmIChpc0FycmF5SW1wbCh2YWx1ZSkpIHJldHVybiBcIlsuLi5dXCI7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHZhbHVlICYmIHZhbHVlLiQkdHlwZW9mID09PSBDTElFTlRfUkVGRVJFTkNFX1RBRylcbiAgICAgICAgICAgIHJldHVybiBcImNsaWVudFwiO1xuICAgICAgICAgIHZhbHVlID0gb2JqZWN0TmFtZSh2YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHZhbHVlID8gXCJ7Li4ufVwiIDogdmFsdWU7XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgIHJldHVybiB2YWx1ZS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUdcbiAgICAgICAgICAgID8gXCJjbGllbnRcIlxuICAgICAgICAgICAgOiAodmFsdWUgPSB2YWx1ZS5kaXNwbGF5TmFtZSB8fCB2YWx1ZS5uYW1lKVxuICAgICAgICAgICAgICA/IFwiZnVuY3Rpb24gXCIgKyB2YWx1ZVxuICAgICAgICAgICAgICA6IFwiZnVuY3Rpb25cIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpIHJldHVybiB0eXBlO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgIH1cbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZS5yZW5kZXIpO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZS50eXBlKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHZhciBwYXlsb2FkID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZShwYXlsb2FkKSk7XG4gICAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVzY3JpYmVPYmplY3RGb3JFcnJvck1lc3NhZ2Uob2JqZWN0T3JBcnJheSwgZXhwYW5kZWROYW1lKSB7XG4gICAgICB2YXIgb2JqS2luZCA9IG9iamVjdE5hbWUob2JqZWN0T3JBcnJheSk7XG4gICAgICBpZiAoXCJPYmplY3RcIiAhPT0gb2JqS2luZCAmJiBcIkFycmF5XCIgIT09IG9iaktpbmQpIHJldHVybiBvYmpLaW5kO1xuICAgICAgdmFyIHN0YXJ0ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IDA7XG4gICAgICBpZiAoaXNBcnJheUltcGwob2JqZWN0T3JBcnJheSkpXG4gICAgICAgIGlmIChqc3hDaGlsZHJlblBhcmVudHMuaGFzKG9iamVjdE9yQXJyYXkpKSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBqc3hDaGlsZHJlblBhcmVudHMuZ2V0KG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIG9iaktpbmQgPSBcIjxcIiArIGRlc2NyaWJlRWxlbWVudFR5cGUodHlwZSkgKyBcIj5cIjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdE9yQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdE9yQXJyYXlbaV07XG4gICAgICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgICAgICA6IFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJiBudWxsICE9PSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgPyBcIntcIiArIGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwifVwiXG4gICAgICAgICAgICAgICAgICA6IFwie1wiICsgZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZSh2YWx1ZSkgKyBcIn1cIjtcbiAgICAgICAgICAgIFwiXCIgKyBpID09PSBleHBhbmRlZE5hbWVcbiAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChsZW5ndGggPSB2YWx1ZS5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IHZhbHVlKSlcbiAgICAgICAgICAgICAgOiAob2JqS2luZCA9XG4gICAgICAgICAgICAgICAgICAxNSA+IHZhbHVlLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgdmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogb2JqS2luZCArIFwiey4uLn1cIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9iaktpbmQgKz0gXCI8L1wiICsgZGVzY3JpYmVFbGVtZW50VHlwZSh0eXBlKSArIFwiPlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9iaktpbmQgPSBcIltcIjtcbiAgICAgICAgICBmb3IgKHR5cGUgPSAwOyB0eXBlIDwgb2JqZWN0T3JBcnJheS5sZW5ndGg7IHR5cGUrKylcbiAgICAgICAgICAgIDAgPCB0eXBlICYmIChvYmpLaW5kICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgIChpID0gb2JqZWN0T3JBcnJheVt0eXBlXSksXG4gICAgICAgICAgICAgIChpID1cbiAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgaSAmJiBudWxsICE9PSBpXG4gICAgICAgICAgICAgICAgICA/IGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKGkpXG4gICAgICAgICAgICAgICAgICA6IGRlc2NyaWJlVmFsdWVGb3JFcnJvck1lc3NhZ2UoaSkpLFxuICAgICAgICAgICAgICBcIlwiICsgdHlwZSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgICAgPyAoKHN0YXJ0ID0gb2JqS2luZC5sZW5ndGgpLFxuICAgICAgICAgICAgICAgICAgKGxlbmd0aCA9IGkubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChvYmpLaW5kICs9IGkpKVxuICAgICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgICAxMCA+IGkubGVuZ3RoICYmIDQwID4gb2JqS2luZC5sZW5ndGggKyBpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgID8gb2JqS2luZCArIGlcbiAgICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcIi4uLlwiKTtcbiAgICAgICAgICBvYmpLaW5kICs9IFwiXVwiO1xuICAgICAgICB9XG4gICAgICBlbHNlIGlmIChvYmplY3RPckFycmF5LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpXG4gICAgICAgIG9iaktpbmQgPSBcIjxcIiArIGRlc2NyaWJlRWxlbWVudFR5cGUob2JqZWN0T3JBcnJheS50eXBlKSArIFwiLz5cIjtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAob2JqZWN0T3JBcnJheS4kJHR5cGVvZiA9PT0gQ0xJRU5UX1JFRkVSRU5DRV9UQUcpIHJldHVybiBcImNsaWVudFwiO1xuICAgICAgICBpZiAoanN4UHJvcHNQYXJlbnRzLmhhcyhvYmplY3RPckFycmF5KSkge1xuICAgICAgICAgIG9iaktpbmQgPSBqc3hQcm9wc1BhcmVudHMuZ2V0KG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIG9iaktpbmQgPSBcIjxcIiArIChkZXNjcmliZUVsZW1lbnRUeXBlKG9iaktpbmQpIHx8IFwiLi4uXCIpO1xuICAgICAgICAgIHR5cGUgPSBPYmplY3Qua2V5cyhvYmplY3RPckFycmF5KTtcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdHlwZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb2JqS2luZCArPSBcIiBcIjtcbiAgICAgICAgICAgIHZhbHVlID0gdHlwZVtpXTtcbiAgICAgICAgICAgIG9iaktpbmQgKz0gZGVzY3JpYmVLZXlGb3JFcnJvck1lc3NhZ2UodmFsdWUpICsgXCI9XCI7XG4gICAgICAgICAgICB2YXIgX3ZhbHVlMiA9IG9iamVjdE9yQXJyYXlbdmFsdWVdO1xuICAgICAgICAgICAgdmFyIF9zdWJzdHIyID1cbiAgICAgICAgICAgICAgdmFsdWUgPT09IGV4cGFuZGVkTmFtZSAmJlxuICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgX3ZhbHVlMiAmJlxuICAgICAgICAgICAgICBudWxsICE9PSBfdmFsdWUyXG4gICAgICAgICAgICAgICAgPyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShfdmFsdWUyKVxuICAgICAgICAgICAgICAgIDogZGVzY3JpYmVWYWx1ZUZvckVycm9yTWVzc2FnZShfdmFsdWUyKTtcbiAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBfdmFsdWUyICYmIChfc3Vic3RyMiA9IFwie1wiICsgX3N1YnN0cjIgKyBcIn1cIik7XG4gICAgICAgICAgICB2YWx1ZSA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAobGVuZ3RoID0gX3N1YnN0cjIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAob2JqS2luZCArPSBfc3Vic3RyMikpXG4gICAgICAgICAgICAgIDogKG9iaktpbmQgPVxuICAgICAgICAgICAgICAgICAgMTAgPiBfc3Vic3RyMi5sZW5ndGggJiYgNDAgPiBvYmpLaW5kLmxlbmd0aCArIF9zdWJzdHIyLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyBfc3Vic3RyMlxuICAgICAgICAgICAgICAgICAgICA6IG9iaktpbmQgKyBcIi4uLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqS2luZCArPSBcIj5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpLaW5kID0gXCJ7XCI7XG4gICAgICAgICAgdHlwZSA9IE9iamVjdC5rZXlzKG9iamVjdE9yQXJyYXkpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0eXBlLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgMCA8IGkgJiYgKG9iaktpbmQgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgKHZhbHVlID0gdHlwZVtpXSksXG4gICAgICAgICAgICAgIChvYmpLaW5kICs9IGRlc2NyaWJlS2V5Rm9yRXJyb3JNZXNzYWdlKHZhbHVlKSArIFwiOiBcIiksXG4gICAgICAgICAgICAgIChfdmFsdWUyID0gb2JqZWN0T3JBcnJheVt2YWx1ZV0pLFxuICAgICAgICAgICAgICAoX3ZhbHVlMiA9XG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIF92YWx1ZTIgJiYgbnVsbCAhPT0gX3ZhbHVlMlxuICAgICAgICAgICAgICAgICAgPyBkZXNjcmliZU9iamVjdEZvckVycm9yTWVzc2FnZShfdmFsdWUyKVxuICAgICAgICAgICAgICAgICAgOiBkZXNjcmliZVZhbHVlRm9yRXJyb3JNZXNzYWdlKF92YWx1ZTIpKSxcbiAgICAgICAgICAgICAgdmFsdWUgPT09IGV4cGFuZGVkTmFtZVxuICAgICAgICAgICAgICAgID8gKChzdGFydCA9IG9iaktpbmQubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIChsZW5ndGggPSBfdmFsdWUyLmxlbmd0aCksXG4gICAgICAgICAgICAgICAgICAob2JqS2luZCArPSBfdmFsdWUyKSlcbiAgICAgICAgICAgICAgICA6IChvYmpLaW5kID1cbiAgICAgICAgICAgICAgICAgICAgMTAgPiBfdmFsdWUyLmxlbmd0aCAmJiA0MCA+IG9iaktpbmQubGVuZ3RoICsgX3ZhbHVlMi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICA/IG9iaktpbmQgKyBfdmFsdWUyXG4gICAgICAgICAgICAgICAgICAgICAgOiBvYmpLaW5kICsgXCIuLi5cIik7XG4gICAgICAgICAgb2JqS2luZCArPSBcIn1cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMCA9PT0gZXhwYW5kZWROYW1lXG4gICAgICAgID8gb2JqS2luZFxuICAgICAgICA6IC0xIDwgc3RhcnQgJiYgMCA8IGxlbmd0aFxuICAgICAgICAgID8gKChvYmplY3RPckFycmF5ID0gXCIgXCIucmVwZWF0KHN0YXJ0KSArIFwiXlwiLnJlcGVhdChsZW5ndGgpKSxcbiAgICAgICAgICAgIFwiXFxuICBcIiArIG9iaktpbmQgKyBcIlxcbiAgXCIgKyBvYmplY3RPckFycmF5KVxuICAgICAgICAgIDogXCJcXG4gIFwiICsgb2JqS2luZDtcbiAgICB9XG4gICAgZnVuY3Rpb24gbXVybXVyaGFzaDNfMzJfZ2Moa2V5LCBzZWVkKSB7XG4gICAgICB2YXIgcmVtYWluZGVyID0ga2V5Lmxlbmd0aCAmIDM7XG4gICAgICB2YXIgYnl0ZXMgPSBrZXkubGVuZ3RoIC0gcmVtYWluZGVyO1xuICAgICAgdmFyIGgxID0gc2VlZDtcbiAgICAgIGZvciAoc2VlZCA9IDA7IHNlZWQgPCBieXRlczsgKSB7XG4gICAgICAgIHZhciBrMSA9XG4gICAgICAgICAgKGtleS5jaGFyQ29kZUF0KHNlZWQpICYgMjU1KSB8XG4gICAgICAgICAgKChrZXkuY2hhckNvZGVBdCgrK3NlZWQpICYgMjU1KSA8PCA4KSB8XG4gICAgICAgICAgKChrZXkuY2hhckNvZGVBdCgrK3NlZWQpICYgMjU1KSA8PCAxNikgfFxuICAgICAgICAgICgoa2V5LmNoYXJDb2RlQXQoKytzZWVkKSAmIDI1NSkgPDwgMjQpO1xuICAgICAgICArK3NlZWQ7XG4gICAgICAgIGsxID1cbiAgICAgICAgICAoMzQzMjkxODM1MyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAoKCgzNDMyOTE4MzUzICogKGsxID4+PiAxNikpICYgNjU1MzUpIDw8IDE2KSkgJlxuICAgICAgICAgIDQyOTQ5NjcyOTU7XG4gICAgICAgIGsxID0gKGsxIDw8IDE1KSB8IChrMSA+Pj4gMTcpO1xuICAgICAgICBrMSA9XG4gICAgICAgICAgKDQ2MTg0NTkwNyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAoKCg0NjE4NDU5MDcgKiAoazEgPj4+IDE2KSkgJiA2NTUzNSkgPDwgMTYpKSAmXG4gICAgICAgICAgNDI5NDk2NzI5NTtcbiAgICAgICAgaDEgXj0gazE7XG4gICAgICAgIGgxID0gKGgxIDw8IDEzKSB8IChoMSA+Pj4gMTkpO1xuICAgICAgICBoMSA9XG4gICAgICAgICAgKDUgKiAoaDEgJiA2NTUzNSkgKyAoKCg1ICogKGgxID4+PiAxNikpICYgNjU1MzUpIDw8IDE2KSkgJiA0Mjk0OTY3Mjk1O1xuICAgICAgICBoMSA9IChoMSAmIDY1NTM1KSArIDI3NDkyICsgKCgoKGgxID4+PiAxNikgKyA1ODk2NCkgJiA2NTUzNSkgPDwgMTYpO1xuICAgICAgfVxuICAgICAgazEgPSAwO1xuICAgICAgc3dpdGNoIChyZW1haW5kZXIpIHtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGsxIF49IChrZXkuY2hhckNvZGVBdChzZWVkICsgMikgJiAyNTUpIDw8IDE2O1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgazEgXj0gKGtleS5jaGFyQ29kZUF0KHNlZWQgKyAxKSAmIDI1NSkgPDwgODtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIChrMSBePSBrZXkuY2hhckNvZGVBdChzZWVkKSAmIDI1NSksXG4gICAgICAgICAgICAoazEgPVxuICAgICAgICAgICAgICAoMzQzMjkxODM1MyAqIChrMSAmIDY1NTM1KSArXG4gICAgICAgICAgICAgICAgKCgoMzQzMjkxODM1MyAqIChrMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgICAgICAgNDI5NDk2NzI5NSksXG4gICAgICAgICAgICAoazEgPSAoazEgPDwgMTUpIHwgKGsxID4+PiAxNykpLFxuICAgICAgICAgICAgKGgxIF49XG4gICAgICAgICAgICAgICg0NjE4NDU5MDcgKiAoazEgJiA2NTUzNSkgK1xuICAgICAgICAgICAgICAgICgoKDQ2MTg0NTkwNyAqIChrMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgICAgICAgNDI5NDk2NzI5NSk7XG4gICAgICB9XG4gICAgICBoMSBePSBrZXkubGVuZ3RoO1xuICAgICAgaDEgXj0gaDEgPj4+IDE2O1xuICAgICAgaDEgPVxuICAgICAgICAoMjI0NjgyMjUwNyAqIChoMSAmIDY1NTM1KSArXG4gICAgICAgICAgKCgoMjI0NjgyMjUwNyAqIChoMSA+Pj4gMTYpKSAmIDY1NTM1KSA8PCAxNikpICZcbiAgICAgICAgNDI5NDk2NzI5NTtcbiAgICAgIGgxIF49IGgxID4+PiAxMztcbiAgICAgIGgxID1cbiAgICAgICAgKDMyNjY0ODk5MDkgKiAoaDEgJiA2NTUzNSkgK1xuICAgICAgICAgICgoKDMyNjY0ODk5MDkgKiAoaDEgPj4+IDE2KSkgJiA2NTUzNSkgPDwgMTYpKSAmXG4gICAgICAgIDQyOTQ5NjcyOTU7XG4gICAgICByZXR1cm4gKGgxIF4gKGgxID4+PiAxNikpID4+PiAwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzY2hlZHVsZVdvcmsoY2FsbGJhY2spIHtcbiAgICAgIHRhc2tRdWV1ZS5wdXNoKGNhbGxiYWNrKTtcbiAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UobnVsbCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZUVycm9ySW5OZXh0VGljayhlcnJvcikge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNodW5rKSB7XG4gICAgICBpZiAoMCAhPT0gY2h1bmsuYnl0ZUxlbmd0aClcbiAgICAgICAgaWYgKDIwNDggPCBjaHVuay5ieXRlTGVuZ3RoKVxuICAgICAgICAgIDAgPCB3cml0dGVuQnl0ZXMgJiZcbiAgICAgICAgICAgIChkZXN0aW5hdGlvbi5lbnF1ZXVlKFxuICAgICAgICAgICAgICBuZXcgVWludDhBcnJheShjdXJyZW50Vmlldy5idWZmZXIsIDAsIHdyaXR0ZW5CeXRlcylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoY3VycmVudFZpZXcgPSBuZXcgVWludDhBcnJheSgyMDQ4KSksXG4gICAgICAgICAgICAod3JpdHRlbkJ5dGVzID0gMCkpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24uZW5xdWV1ZShjaHVuayk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhbGxvd2FibGVCeXRlcyA9IGN1cnJlbnRWaWV3Lmxlbmd0aCAtIHdyaXR0ZW5CeXRlcztcbiAgICAgICAgICBhbGxvd2FibGVCeXRlcyA8IGNodW5rLmJ5dGVMZW5ndGggJiZcbiAgICAgICAgICAgICgwID09PSBhbGxvd2FibGVCeXRlc1xuICAgICAgICAgICAgICA/IGRlc3RpbmF0aW9uLmVucXVldWUoY3VycmVudFZpZXcpXG4gICAgICAgICAgICAgIDogKGN1cnJlbnRWaWV3LnNldChcbiAgICAgICAgICAgICAgICAgIGNodW5rLnN1YmFycmF5KDAsIGFsbG93YWJsZUJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgIHdyaXR0ZW5CeXRlc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24uZW5xdWV1ZShjdXJyZW50VmlldyksXG4gICAgICAgICAgICAgICAgKGNodW5rID0gY2h1bmsuc3ViYXJyYXkoYWxsb3dhYmxlQnl0ZXMpKSksXG4gICAgICAgICAgICAoY3VycmVudFZpZXcgPSBuZXcgVWludDhBcnJheSgyMDQ4KSksXG4gICAgICAgICAgICAod3JpdHRlbkJ5dGVzID0gMCkpO1xuICAgICAgICAgIGN1cnJlbnRWaWV3LnNldChjaHVuaywgd3JpdHRlbkJ5dGVzKTtcbiAgICAgICAgICB3cml0dGVuQnl0ZXMgKz0gY2h1bmsuYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjaHVuaykge1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY2h1bmspO1xuICAgICAgcmV0dXJuICEwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wbGV0ZVdyaXRpbmcoZGVzdGluYXRpb24pIHtcbiAgICAgIGN1cnJlbnRWaWV3ICYmXG4gICAgICAgIDAgPCB3cml0dGVuQnl0ZXMgJiZcbiAgICAgICAgKGRlc3RpbmF0aW9uLmVucXVldWUoXG4gICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoY3VycmVudFZpZXcuYnVmZmVyLCAwLCB3cml0dGVuQnl0ZXMpXG4gICAgICAgICksXG4gICAgICAgIChjdXJyZW50VmlldyA9IG51bGwpLFxuICAgICAgICAod3JpdHRlbkJ5dGVzID0gMCkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpbmdUb0NodW5rKGNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0ZXh0RW5jb2Rlci5lbmNvZGUoY29udGVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhjb250ZW50KSB7XG4gICAgICBjb250ZW50ID0gdGV4dEVuY29kZXIuZW5jb2RlKGNvbnRlbnQpO1xuICAgICAgMjA0OCA8IGNvbnRlbnQuYnl0ZUxlbmd0aCAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwicHJlY29tcHV0ZWQgY2h1bmtzIG11c3QgYmUgc21hbGxlciB0aGFuIHRoZSB2aWV3IHNpemUgY29uZmlndXJlZCBmb3IgdGhpcyBob3N0LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2xvc2VXaXRoRXJyb3IoZGVzdGluYXRpb24sIGVycm9yKSB7XG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBkZXN0aW5hdGlvbi5lcnJvclxuICAgICAgICA/IGRlc3RpbmF0aW9uLmVycm9yKGVycm9yKVxuICAgICAgICA6IGRlc3RpbmF0aW9uLmNsb3NlKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHR5cGVOYW1lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgU3ltYm9sICYmXG4gICAgICAgICAgU3ltYm9sLnRvU3RyaW5nVGFnICYmXG4gICAgICAgICAgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSkgfHxcbiAgICAgICAgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fFxuICAgICAgICBcIk9iamVjdFwiXG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSksICExO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gITA7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiXCIgKyB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSkge1xuICAgICAgaWYgKHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJUaGUgcHJvdmlkZWQgYCVzYCBhdHRyaWJ1dGUgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIHVzaW5nIGl0IGhlcmUuXCIsXG4gICAgICAgICAgICBhdHRyaWJ1dGVOYW1lLFxuICAgICAgICAgICAgdHlwZU5hbWUodmFsdWUpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrQ1NTUHJvcGVydHlTdHJpbmdDb2VyY2lvbih2YWx1ZSwgcHJvcE5hbWUpIHtcbiAgICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiVGhlIHByb3ZpZGVkIGAlc2AgQ1NTIHByb3BlcnR5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgICAgcHJvcE5hbWUsXG4gICAgICAgICAgICB0eXBlTmFtZSh2YWx1ZSlcbiAgICAgICAgICApLFxuICAgICAgICAgIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiVGhlIHByb3ZpZGVkIEhUTUwgbWFya3VwIHVzZXMgYSB2YWx1ZSBvZiB1bnN1cHBvcnRlZCB0eXBlICVzLiBUaGlzIHZhbHVlIG11c3QgYmUgY29lcmNlZCB0byBhIHN0cmluZyBiZWZvcmUgdXNpbmcgaXQgaGVyZS5cIixcbiAgICAgICAgICAgIHR5cGVOYW1lKHZhbHVlKVxuICAgICAgICAgICksXG4gICAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKVxuICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZSwgYXR0cmlidXRlTmFtZSkpXG4gICAgICAgIHJldHVybiAhMDtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUsIGF0dHJpYnV0ZU5hbWUpKVxuICAgICAgICByZXR1cm4gITE7XG4gICAgICBpZiAoVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSlcbiAgICAgICAgcmV0dXJuICh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSAhMCk7XG4gICAgICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gITA7XG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBhdHRyaWJ1dGUgbmFtZTogYCVzYFwiLCBhdHRyaWJ1dGVOYW1lKTtcbiAgICAgIHJldHVybiAhMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tDb250cm9sbGVkVmFsdWVQcm9wcyh0YWdOYW1lLCBwcm9wcykge1xuICAgICAgaGFzUmVhZE9ubHlWYWx1ZVtwcm9wcy50eXBlXSB8fFxuICAgICAgICBwcm9wcy5vbkNoYW5nZSB8fFxuICAgICAgICBwcm9wcy5vbklucHV0IHx8XG4gICAgICAgIHByb3BzLnJlYWRPbmx5IHx8XG4gICAgICAgIHByb3BzLmRpc2FibGVkIHx8XG4gICAgICAgIG51bGwgPT0gcHJvcHMudmFsdWUgfHxcbiAgICAgICAgKFwic2VsZWN0XCIgPT09IHRhZ05hbWVcbiAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgYG9uQ2hhbmdlYC5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLlwiXG4gICAgICAgICAgICApKTtcbiAgICAgIHByb3BzLm9uQ2hhbmdlIHx8XG4gICAgICAgIHByb3BzLnJlYWRPbmx5IHx8XG4gICAgICAgIHByb3BzLmRpc2FibGVkIHx8XG4gICAgICAgIG51bGwgPT0gcHJvcHMuY2hlY2tlZCB8fFxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuXCJcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSQxKHRhZ05hbWUsIG5hbWUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgaGFzT3duUHJvcGVydHkuY2FsbCh3YXJuZWRQcm9wZXJ0aWVzJDEsIG5hbWUpICYmXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXVxuICAgICAgKVxuICAgICAgICByZXR1cm4gITA7XG4gICAgICBpZiAockFSSUFDYW1lbCQxLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGFnTmFtZSA9IFwiYXJpYS1cIiArIG5hbWUuc2xpY2UoNCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdGFnTmFtZSA9IGFyaWFQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHRhZ05hbWUpID8gdGFnTmFtZSA6IG51bGw7XG4gICAgICAgIGlmIChudWxsID09IHRhZ05hbWUpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBBUklBIGF0dHJpYnV0ZSBgJXNgLiBBUklBIGF0dHJpYnV0ZXMgZm9sbG93IHRoZSBwYXR0ZXJuIGFyaWEtKiBhbmQgbXVzdCBiZSBsb3dlcmNhc2UuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAod2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gITApXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKG5hbWUgIT09IHRhZ05hbWUpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBBUklBIGF0dHJpYnV0ZSBgJXNgLiBEaWQgeW91IG1lYW4gYCVzYD9cIixcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdGFnTmFtZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSAhMClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHJBUklBJDEudGVzdChuYW1lKSkge1xuICAgICAgICB0YWdOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0YWdOYW1lID0gYXJpYVByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodGFnTmFtZSkgPyB0YWdOYW1lIDogbnVsbDtcbiAgICAgICAgaWYgKG51bGwgPT0gdGFnTmFtZSkgcmV0dXJuICh3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSAhMCksICExO1xuICAgICAgICBuYW1lICE9PSB0YWdOYW1lICYmXG4gICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlVua25vd24gQVJJQSBhdHRyaWJ1dGUgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/XCIsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGFnTmFtZVxuICAgICAgICAgICksXG4gICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9ICEwKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gITA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyQyKHR5cGUsIHByb3BzKSB7XG4gICAgICB2YXIgaW52YWxpZFByb3BzID0gW10sXG4gICAgICAgIGtleTtcbiAgICAgIGZvciAoa2V5IGluIHByb3BzKVxuICAgICAgICB2YWxpZGF0ZVByb3BlcnR5JDEodHlwZSwga2V5KSB8fCBpbnZhbGlkUHJvcHMucHVzaChrZXkpO1xuICAgICAgcHJvcHMgPSBpbnZhbGlkUHJvcHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgIHJldHVybiBcImBcIiArIHByb3AgKyBcImBcIjtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKTtcbiAgICAgIDEgPT09IGludmFsaWRQcm9wcy5sZW5ndGhcbiAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJJbnZhbGlkIGFyaWEgcHJvcCAlcyBvbiA8JXM+IHRhZy4gRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL2ludmFsaWQtYXJpYS1wcm9wc1wiLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgKVxuICAgICAgICA6IDEgPCBpbnZhbGlkUHJvcHMubGVuZ3RoICYmXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiSW52YWxpZCBhcmlhIHByb3BzICVzIG9uIDwlcz4gdGFnLiBGb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvaW52YWxpZC1hcmlhLXByb3BzXCIsXG4gICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHRhZ05hbWUsIG5hbWUsIHZhbHVlLCBldmVudFJlZ2lzdHJ5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh3YXJuZWRQcm9wZXJ0aWVzLCBuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdKVxuICAgICAgICByZXR1cm4gITA7XG4gICAgICB2YXIgbG93ZXJDYXNlZE5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAoXCJvbmZvY3VzaW5cIiA9PT0gbG93ZXJDYXNlZE5hbWUgfHwgXCJvbmZvY3Vzb3V0XCIgPT09IGxvd2VyQ2FzZWROYW1lKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlJlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGluc3RlYWQgb2Ygb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0LiBBbGwgUmVhY3QgZXZlbnRzIGFyZSBub3JtYWxpemVkIHRvIGJ1YmJsZSwgc28gb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0IGFyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFjdC5cIlxuICAgICAgICAgICksXG4gICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMClcbiAgICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgKChcImZvcm1cIiA9PT0gdGFnTmFtZSAmJiBcImFjdGlvblwiID09PSBuYW1lKSB8fFxuICAgICAgICAgIChcImlucHV0XCIgPT09IHRhZ05hbWUgJiYgXCJmb3JtQWN0aW9uXCIgPT09IG5hbWUpIHx8XG4gICAgICAgICAgKFwiYnV0dG9uXCIgPT09IHRhZ05hbWUgJiYgXCJmb3JtQWN0aW9uXCIgPT09IG5hbWUpKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gITA7XG4gICAgICBpZiAobnVsbCAhPSBldmVudFJlZ2lzdHJ5KSB7XG4gICAgICAgIHRhZ05hbWUgPSBldmVudFJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM7XG4gICAgICAgIGlmIChldmVudFJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkobmFtZSkpXG4gICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICBldmVudFJlZ2lzdHJ5ID0gdGFnTmFtZS5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSlcbiAgICAgICAgICA/IHRhZ05hbWVbbG93ZXJDYXNlZE5hbWVdXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBpZiAobnVsbCAhPSBldmVudFJlZ2lzdHJ5KVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgZXZlbnQgaGFuZGxlciBwcm9wZXJ0eSBgJXNgLiBEaWQgeW91IG1lYW4gYCVzYD9cIixcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgZXZlbnRSZWdpc3RyeVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKEVWRU5UX05BTUVfUkVHRVgudGVzdChuYW1lKSlcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJVbmtub3duIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gSXQgd2lsbCBiZSBpZ25vcmVkLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgKHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSAhMClcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChFVkVOVF9OQU1FX1JFR0VYLnRlc3QobmFtZSkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgSU5WQUxJRF9FVkVOVF9OQU1FX1JFR0VYLnRlc3QobmFtZSkgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBldmVudCBoYW5kbGVyIHByb3BlcnR5IGAlc2AuIFJlYWN0IGV2ZW50cyB1c2UgdGhlIGNhbWVsQ2FzZSBuYW1pbmcgY29udmVudGlvbiwgZm9yIGV4YW1wbGUgYG9uQ2xpY2tgLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApLFxuICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICk7XG4gICAgICBpZiAockFSSUEudGVzdChuYW1lKSB8fCByQVJJQUNhbWVsLnRlc3QobmFtZSkpIHJldHVybiAhMDtcbiAgICAgIGlmIChcImlubmVyaHRtbFwiID09PSBsb3dlckNhc2VkTmFtZSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBwZXJtaXR0ZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgaWYgKFwiYXJpYVwiID09PSBsb3dlckNhc2VkTmFtZSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJUaGUgYGFyaWFgIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiBSZWFjdC4gUGFzcyBpbmRpdmlkdWFsIGBhcmlhLWAgYXR0cmlidXRlcyBpbnN0ZWFkLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICBcImlzXCIgPT09IGxvd2VyQ2FzZWROYW1lICYmXG4gICAgICAgIG51bGwgIT09IHZhbHVlICYmXG4gICAgICAgIHZvaWQgMCAhPT0gdmFsdWUgJiZcbiAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHZhbHVlXG4gICAgICApXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiUmVjZWl2ZWQgYSBgJXNgIGZvciBhIHN0cmluZyBhdHRyaWJ1dGUgYGlzYC4gSWYgdGhpcyBpcyBleHBlY3RlZCwgY2FzdCB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXCIsXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWVcbiAgICAgICAgICApLFxuICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICk7XG4gICAgICBpZiAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIHZhbHVlICYmIGlzTmFOKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJSZWNlaXZlZCBOYU4gZm9yIHRoZSBgJXNgIGF0dHJpYnV0ZS4gSWYgdGhpcyBpcyBleHBlY3RlZCwgY2FzdCB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXCIsXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgKSxcbiAgICAgICAgICAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKVxuICAgICAgICApO1xuICAgICAgaWYgKHBvc3NpYmxlU3RhbmRhcmROYW1lcy5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgobG93ZXJDYXNlZE5hbWUgPSBwb3NzaWJsZVN0YW5kYXJkTmFtZXNbbG93ZXJDYXNlZE5hbWVdKSxcbiAgICAgICAgICBsb3dlckNhc2VkTmFtZSAhPT0gbmFtZSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgRE9NIHByb3BlcnR5IGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgP1wiLFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICBsb3dlckNhc2VkTmFtZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAobmFtZSAhPT0gbG93ZXJDYXNlZE5hbWUpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiUmVhY3QgZG9lcyBub3QgcmVjb2duaXplIHRoZSBgJXNgIHByb3Agb24gYSBET00gZWxlbWVudC4gSWYgeW91IGludGVudGlvbmFsbHkgd2FudCBpdCB0byBhcHBlYXIgaW4gdGhlIERPTSBhcyBhIGN1c3RvbSBhdHRyaWJ1dGUsIHNwZWxsIGl0IGFzIGxvd2VyY2FzZSBgJXNgIGluc3RlYWQuIElmIHlvdSBhY2NpZGVudGFsbHkgcGFzc2VkIGl0IGZyb20gYSBwYXJlbnQgY29tcG9uZW50LCByZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGVsZW1lbnQuXCIsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgbG93ZXJDYXNlZE5hbWVcbiAgICAgICAgICApLFxuICAgICAgICAgICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgICAgY2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOlxuICAgICAgICBjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgY2FzZSBcImRlZmF1bHRDaGVja2VkXCI6XG4gICAgICAgIGNhc2UgXCJpbm5lckhUTUxcIjpcbiAgICAgICAgY2FzZSBcInJlZlwiOlxuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgICAgY2FzZSBcImlubmVyVGV4dFwiOlxuICAgICAgICBjYXNlIFwidGV4dENvbnRlbnRcIjpcbiAgICAgICAgICByZXR1cm4gITA7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSBcImF1dG9Gb2N1c1wiOlxuICAgICAgICAgICAgY2FzZSBcImNoZWNrZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJtdWx0aXBsZVwiOlxuICAgICAgICAgICAgY2FzZSBcIm11dGVkXCI6XG4gICAgICAgICAgICBjYXNlIFwic2VsZWN0ZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJjb250ZW50RWRpdGFibGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJzcGVsbENoZWNrXCI6XG4gICAgICAgICAgICBjYXNlIFwiZHJhZ2dhYmxlXCI6XG4gICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJhdXRvUmV2ZXJzZVwiOlxuICAgICAgICAgICAgY2FzZSBcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJmb2N1c2FibGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJwcmVzZXJ2ZUFscGhhXCI6XG4gICAgICAgICAgICBjYXNlIFwiYWxsb3dGdWxsU2NyZWVuXCI6XG4gICAgICAgICAgICBjYXNlIFwiYXN5bmNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJhdXRvUGxheVwiOlxuICAgICAgICAgICAgY2FzZSBcImNvbnRyb2xzXCI6XG4gICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFwiOlxuICAgICAgICAgICAgY2FzZSBcImRlZmVyXCI6XG4gICAgICAgICAgICBjYXNlIFwiZGlzYWJsZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJkaXNhYmxlUGljdHVyZUluUGljdHVyZVwiOlxuICAgICAgICAgICAgY2FzZSBcImRpc2FibGVSZW1vdGVQbGF5YmFja1wiOlxuICAgICAgICAgICAgY2FzZSBcImZvcm1Ob1ZhbGlkYXRlXCI6XG4gICAgICAgICAgICBjYXNlIFwiaGlkZGVuXCI6XG4gICAgICAgICAgICBjYXNlIFwibG9vcFwiOlxuICAgICAgICAgICAgY2FzZSBcIm5vTW9kdWxlXCI6XG4gICAgICAgICAgICBjYXNlIFwibm9WYWxpZGF0ZVwiOlxuICAgICAgICAgICAgY2FzZSBcIm9wZW5cIjpcbiAgICAgICAgICAgIGNhc2UgXCJwbGF5c0lubGluZVwiOlxuICAgICAgICAgICAgY2FzZSBcInJlYWRPbmx5XCI6XG4gICAgICAgICAgICBjYXNlIFwicmVxdWlyZWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJyZXZlcnNlZFwiOlxuICAgICAgICAgICAgY2FzZSBcInNjb3BlZFwiOlxuICAgICAgICAgICAgY2FzZSBcInNlYW1sZXNzXCI6XG4gICAgICAgICAgICBjYXNlIFwiaXRlbVNjb3BlXCI6XG4gICAgICAgICAgICBjYXNlIFwiY2FwdHVyZVwiOlxuICAgICAgICAgICAgY2FzZSBcImRvd25sb2FkXCI6XG4gICAgICAgICAgICBjYXNlIFwiaW5lcnRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgbG93ZXJDYXNlZE5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwgNSk7XG4gICAgICAgICAgICAgIGlmIChcImRhdGEtXCIgPT09IGxvd2VyQ2FzZWROYW1lIHx8IFwiYXJpYS1cIiA9PT0gbG93ZXJDYXNlZE5hbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGAlc2AgZm9yIGEgbm9uLWJvb2xlYW4gYXR0cmlidXRlIGAlc2AuXFxuXFxuSWYgeW91IHdhbnQgdG8gd3JpdGUgaXQgdG8gdGhlIERPTSwgcGFzcyBhIHN0cmluZyBpbnN0ZWFkOiAlcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGAlc2AgZm9yIGEgbm9uLWJvb2xlYW4gYXR0cmlidXRlIGAlc2AuXFxuXFxuSWYgeW91IHdhbnQgdG8gd3JpdGUgaXQgdG8gdGhlIERPTSwgcGFzcyBhIHN0cmluZyBpbnN0ZWFkOiAlcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LlxcblxcbklmIHlvdSB1c2VkIHRvIGNvbmRpdGlvbmFsbHkgb21pdCBpdCB3aXRoICVzPXtjb25kaXRpb24gJiYgdmFsdWV9LCBwYXNzICVzPXtjb25kaXRpb24gPyB2YWx1ZSA6IHVuZGVmaW5lZH0gaW5zdGVhZC4nLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiAod2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwKTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgcmV0dXJuICh3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gITApLCAhMTtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgIGlmIChcImZhbHNlXCIgPT09IHZhbHVlIHx8IFwidHJ1ZVwiID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGVja2VkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwibXVsdGlwbGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIm11dGVkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJhbGxvd0Z1bGxTY3JlZW5cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImFzeW5jXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJhdXRvUGxheVwiOlxuICAgICAgICAgICAgICBjYXNlIFwiY29udHJvbHNcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRlZmF1bHRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRlZmVyXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkaXNhYmxlZFwiOlxuICAgICAgICAgICAgICBjYXNlIFwiZGlzYWJsZVBpY3R1cmVJblBpY3R1cmVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRpc2FibGVSZW1vdGVQbGF5YmFja1wiOlxuICAgICAgICAgICAgICBjYXNlIFwiZm9ybU5vVmFsaWRhdGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImhpZGRlblwiOlxuICAgICAgICAgICAgICBjYXNlIFwibG9vcFwiOlxuICAgICAgICAgICAgICBjYXNlIFwibm9Nb2R1bGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIm5vVmFsaWRhdGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcIm9wZW5cIjpcbiAgICAgICAgICAgICAgY2FzZSBcInBsYXlzSW5saW5lXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJyZWFkT25seVwiOlxuICAgICAgICAgICAgICBjYXNlIFwicmVxdWlyZWRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInJldmVyc2VkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJzY29wZWRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInNlYW1sZXNzXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJpdGVtU2NvcGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImluZXJ0XCI6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWNlaXZlZCB0aGUgc3RyaW5nIGAlc2AgZm9yIHRoZSBib29sZWFuIGF0dHJpYnV0ZSBgJXNgLiAlcyBEaWQgeW91IG1lYW4gJXM9eyVzfT9cIixcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIFwiZmFsc2VcIiA9PT0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IFwiVGhlIGJyb3dzZXIgd2lsbCBpbnRlcnByZXQgaXQgYXMgYSB0cnV0aHkgdmFsdWUuXCJcbiAgICAgICAgICAgICAgICA6ICdBbHRob3VnaCB0aGlzIHdvcmtzLCBpdCB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIGlmIHlvdSBwYXNzIHRoZSBzdHJpbmcgXCJmYWxzZVwiLicsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9ICEwO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAhMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gd2FyblVua25vd25Qcm9wZXJ0aWVzKHR5cGUsIHByb3BzLCBldmVudFJlZ2lzdHJ5KSB7XG4gICAgICB2YXIgdW5rbm93blByb3BzID0gW10sXG4gICAgICAgIGtleTtcbiAgICAgIGZvciAoa2V5IGluIHByb3BzKVxuICAgICAgICB2YWxpZGF0ZVByb3BlcnR5KHR5cGUsIGtleSwgcHJvcHNba2V5XSwgZXZlbnRSZWdpc3RyeSkgfHxcbiAgICAgICAgICB1bmtub3duUHJvcHMucHVzaChrZXkpO1xuICAgICAgcHJvcHMgPSB1bmtub3duUHJvcHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgIHJldHVybiBcImBcIiArIHByb3AgKyBcImBcIjtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKTtcbiAgICAgIDEgPT09IHVua25vd25Qcm9wcy5sZW5ndGhcbiAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBwcm9wICVzIG9uIDwlcz4gdGFnLiBFaXRoZXIgcmVtb3ZlIGl0IGZyb20gdGhlIGVsZW1lbnQsIG9yIHBhc3MgYSBzdHJpbmcgb3IgbnVtYmVyIHZhbHVlIHRvIGtlZXAgaXQgaW4gdGhlIERPTS4gRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL2F0dHJpYnV0ZS1iZWhhdmlvciBcIixcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICAgIClcbiAgICAgICAgOiAxIDwgdW5rbm93blByb3BzLmxlbmd0aCAmJlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIkludmFsaWQgdmFsdWVzIGZvciBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gRWl0aGVyIHJlbW92ZSB0aGVtIGZyb20gdGhlIGVsZW1lbnQsIG9yIHBhc3MgYSBzdHJpbmcgb3IgbnVtYmVyIHZhbHVlIHRvIGtlZXAgdGhlbSBpbiB0aGUgRE9NLiBGb3IgZGV0YWlscywgc2VlIGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvYXR0cmlidXRlLWJlaGF2aW9yIFwiLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB0eXBlXG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuICAgICAgICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlVGV4dEZvckJyb3dzZXIodGV4dCkge1xuICAgICAgaWYgKFxuICAgICAgICBcImJvb2xlYW5cIiA9PT0gdHlwZW9mIHRleHQgfHxcbiAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIHRleHQgfHxcbiAgICAgICAgXCJiaWdpbnRcIiA9PT0gdHlwZW9mIHRleHRcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIFwiXCIgKyB0ZXh0O1xuICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24odGV4dCk7XG4gICAgICB0ZXh0ID0gXCJcIiArIHRleHQ7XG4gICAgICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyh0ZXh0KTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICB2YXIgaHRtbCA9IFwiXCIsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHRleHQubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgc3dpdGNoICh0ZXh0LmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgICBtYXRjaCA9IFwiJnF1b3Q7XCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgbWF0Y2ggPSBcIiZhbXA7XCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOTpcbiAgICAgICAgICAgICAgbWF0Y2ggPSBcIiYjeDI3O1wiO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNjA6XG4gICAgICAgICAgICAgIG1hdGNoID0gXCImbHQ7XCI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA2MjpcbiAgICAgICAgICAgICAgbWF0Y2ggPSBcIiZndDtcIjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGFzdEluZGV4ICE9PSBpbmRleCAmJiAoaHRtbCArPSB0ZXh0LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpKTtcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgaHRtbCArPSBtYXRjaDtcbiAgICAgICAgfVxuICAgICAgICB0ZXh0ID0gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyB0ZXh0LnNsaWNlKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBmdW5jdGlvbiBzYW5pdGl6ZVVSTCh1cmwpIHtcbiAgICAgIHJldHVybiBpc0phdmFTY3JpcHRQcm90b2NvbC50ZXN0KFwiXCIgKyB1cmwpXG4gICAgICAgID8gXCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignUmVhY3QgaGFzIGJsb2NrZWQgYSBqYXZhc2NyaXB0OiBVUkwgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLicpXCJcbiAgICAgICAgOiB1cmw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZUVudGlyZUlubGluZVNjcmlwdENvbnRlbnQoc2NyaXB0VGV4dCkge1xuICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oc2NyaXB0VGV4dCk7XG4gICAgICByZXR1cm4gKFwiXCIgKyBzY3JpcHRUZXh0KS5yZXBsYWNlKHNjcmlwdFJlZ2V4LCBzY3JpcHRSZXBsYWNlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlbmRlclN0YXRlKFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICBub25jZSxcbiAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZyxcbiAgICAgIGltcG9ydE1hcCxcbiAgICAgIG9uSGVhZGVycyxcbiAgICAgIG1heEhlYWRlcnNMZW5ndGhcbiAgICApIHtcbiAgICAgIHZhciBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPVxuICAgICAgICAgIHZvaWQgMCA9PT0gbm9uY2VcbiAgICAgICAgICAgID8gc3RhcnRJbmxpbmVTY3JpcHRcbiAgICAgICAgICAgIDogc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAgICAgICAgICc8c2NyaXB0IG5vbmNlPVwiJyArIGVzY2FwZVRleHRGb3JCcm93c2VyKG5vbmNlKSArICdcIj4nXG4gICAgICAgICAgICAgICksXG4gICAgICAgIGlkUHJlZml4ID0gcmVzdW1hYmxlU3RhdGUuaWRQcmVmaXg7XG4gICAgICBleHRlcm5hbFJ1bnRpbWVDb25maWcgPSBbXTtcbiAgICAgIHZhciBib290c3RyYXBTY3JpcHRDb250ZW50ID0gcmVzdW1hYmxlU3RhdGUuYm9vdHN0cmFwU2NyaXB0Q29udGVudCxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0cyA9IHJlc3VtYWJsZVN0YXRlLmJvb3RzdHJhcFNjcmlwdHMsXG4gICAgICAgIGJvb3RzdHJhcE1vZHVsZXMgPSByZXN1bWFibGVTdGF0ZS5ib290c3RyYXBNb2R1bGVzO1xuICAgICAgdm9pZCAwICE9PSBib290c3RyYXBTY3JpcHRDb250ZW50ICYmXG4gICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKFxuICAgICAgICAgIGlubGluZVNjcmlwdFdpdGhOb25jZSxcbiAgICAgICAgICBzdHJpbmdUb0NodW5rKFxuICAgICAgICAgICAgZXNjYXBlRW50aXJlSW5saW5lU2NyaXB0Q29udGVudChib290c3RyYXBTY3JpcHRDb250ZW50KVxuICAgICAgICAgICksXG4gICAgICAgICAgZW5kSW5saW5lU2NyaXB0XG4gICAgICAgICk7XG4gICAgICBib290c3RyYXBTY3JpcHRDb250ZW50ID0gW107XG4gICAgICB2b2lkIDAgIT09IGltcG9ydE1hcCAmJlxuICAgICAgICAoYm9vdHN0cmFwU2NyaXB0Q29udGVudC5wdXNoKGltcG9ydE1hcFNjcmlwdFN0YXJ0KSxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0Q29udGVudC5wdXNoKFxuICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoXG4gICAgICAgICAgICBlc2NhcGVFbnRpcmVJbmxpbmVTY3JpcHRDb250ZW50KEpTT04uc3RyaW5naWZ5KGltcG9ydE1hcCkpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50LnB1c2goaW1wb3J0TWFwU2NyaXB0RW5kKSk7XG4gICAgICBvbkhlYWRlcnMgJiZcbiAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIG1heEhlYWRlcnNMZW5ndGggJiZcbiAgICAgICAgMCA+PSBtYXhIZWFkZXJzTGVuZ3RoICYmXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJSZWFjdCBleHBlY3RlZCBhIHBvc2l0aXZlIG5vbi16ZXJvIGBtYXhIZWFkZXJzTGVuZ3RoYCBvcHRpb24gYnV0IGZvdW5kICVzIGluc3RlYWQuIFdoZW4gdXNpbmcgdGhlIGBvbkhlYWRlcnNgIG9wdGlvbiB5b3UgbWF5IHN1cHBseSBhbiBvcHRpb25hbCBgbWF4SGVhZGVyc0xlbmd0aGAgb3B0aW9uIGFzIHdlbGwgaG93ZXZlciwgd2hlbiBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gemVybyBvciBsZXNzIG5vIGhlYWRlcnMgd2lsbCBiZSBjYXB0dXJlZC5cIixcbiAgICAgICAgICAwID09PSBtYXhIZWFkZXJzTGVuZ3RoID8gXCJ6ZXJvXCIgOiBtYXhIZWFkZXJzTGVuZ3RoXG4gICAgICAgICk7XG4gICAgICBpbXBvcnRNYXAgPSBvbkhlYWRlcnNcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcmVjb25uZWN0czogXCJcIixcbiAgICAgICAgICAgIGZvbnRQcmVsb2FkczogXCJcIixcbiAgICAgICAgICAgIGhpZ2hJbWFnZVByZWxvYWRzOiBcIlwiLFxuICAgICAgICAgICAgcmVtYWluaW5nQ2FwYWNpdHk6XG4gICAgICAgICAgICAgIDIgK1xuICAgICAgICAgICAgICAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIG1heEhlYWRlcnNMZW5ndGggPyBtYXhIZWFkZXJzTGVuZ3RoIDogMmUzKVxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsO1xuICAgICAgb25IZWFkZXJzID0ge1xuICAgICAgICBwbGFjZWhvbGRlclByZWZpeDogc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKGlkUHJlZml4ICsgXCJQOlwiKSxcbiAgICAgICAgc2VnbWVudFByZWZpeDogc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKGlkUHJlZml4ICsgXCJTOlwiKSxcbiAgICAgICAgYm91bmRhcnlQcmVmaXg6IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhpZFByZWZpeCArIFwiQjpcIiksXG4gICAgICAgIHN0YXJ0SW5saW5lU2NyaXB0OiBpbmxpbmVTY3JpcHRXaXRoTm9uY2UsXG4gICAgICAgIGh0bWxDaHVua3M6IG51bGwsXG4gICAgICAgIGhlYWRDaHVua3M6IG51bGwsXG4gICAgICAgIGV4dGVybmFsUnVudGltZVNjcmlwdDogbnVsbCxcbiAgICAgICAgYm9vdHN0cmFwQ2h1bmtzOiBleHRlcm5hbFJ1bnRpbWVDb25maWcsXG4gICAgICAgIGltcG9ydE1hcENodW5rczogYm9vdHN0cmFwU2NyaXB0Q29udGVudCxcbiAgICAgICAgb25IZWFkZXJzOiBvbkhlYWRlcnMsXG4gICAgICAgIGhlYWRlcnM6IGltcG9ydE1hcCxcbiAgICAgICAgcmVzZXRzOiB7XG4gICAgICAgICAgZm9udDoge30sXG4gICAgICAgICAgZG5zOiB7fSxcbiAgICAgICAgICBjb25uZWN0OiB7IGRlZmF1bHQ6IHt9LCBhbm9ueW1vdXM6IHt9LCBjcmVkZW50aWFsczoge30gfSxcbiAgICAgICAgICBpbWFnZToge30sXG4gICAgICAgICAgc3R5bGU6IHt9XG4gICAgICAgIH0sXG4gICAgICAgIGNoYXJzZXRDaHVua3M6IFtdLFxuICAgICAgICB2aWV3cG9ydENodW5rczogW10sXG4gICAgICAgIGhvaXN0YWJsZUNodW5rczogW10sXG4gICAgICAgIHByZWNvbm5lY3RzOiBuZXcgU2V0KCksXG4gICAgICAgIGZvbnRQcmVsb2FkczogbmV3IFNldCgpLFxuICAgICAgICBoaWdoSW1hZ2VQcmVsb2FkczogbmV3IFNldCgpLFxuICAgICAgICBzdHlsZXM6IG5ldyBNYXAoKSxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0czogbmV3IFNldCgpLFxuICAgICAgICBzY3JpcHRzOiBuZXcgU2V0KCksXG4gICAgICAgIGJ1bGtQcmVsb2FkczogbmV3IFNldCgpLFxuICAgICAgICBwcmVsb2Fkczoge1xuICAgICAgICAgIGltYWdlczogbmV3IE1hcCgpLFxuICAgICAgICAgIHN0eWxlc2hlZXRzOiBuZXcgTWFwKCksXG4gICAgICAgICAgc2NyaXB0czogbmV3IE1hcCgpLFxuICAgICAgICAgIG1vZHVsZVNjcmlwdHM6IG5ldyBNYXAoKVxuICAgICAgICB9LFxuICAgICAgICBub25jZTogbm9uY2UsXG4gICAgICAgIGhvaXN0YWJsZVN0YXRlOiBudWxsLFxuICAgICAgICBzdHlsZXNUb0hvaXN0OiAhMVxuICAgICAgfTtcbiAgICAgIGlmICh2b2lkIDAgIT09IGJvb3RzdHJhcFNjcmlwdHMpXG4gICAgICAgIGZvciAoaW1wb3J0TWFwID0gMDsgaW1wb3J0TWFwIDwgYm9vdHN0cmFwU2NyaXB0cy5sZW5ndGg7IGltcG9ydE1hcCsrKSB7XG4gICAgICAgICAgbWF4SGVhZGVyc0xlbmd0aCA9IGJvb3RzdHJhcFNjcmlwdHNbaW1wb3J0TWFwXTtcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50ID0gaWRQcmVmaXggPSB2b2lkIDA7XG4gICAgICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICAgICAgcmVsOiBcInByZWxvYWRcIixcbiAgICAgICAgICAgIGFzOiBcInNjcmlwdFwiLFxuICAgICAgICAgICAgZmV0Y2hQcmlvcml0eTogXCJsb3dcIixcbiAgICAgICAgICAgIG5vbmNlOiBub25jZVxuICAgICAgICAgIH07XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG1heEhlYWRlcnNMZW5ndGhcbiAgICAgICAgICAgID8gKHByb3BzLmhyZWYgPSBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPSBtYXhIZWFkZXJzTGVuZ3RoKVxuICAgICAgICAgICAgOiAoKHByb3BzLmhyZWYgPSBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPSBtYXhIZWFkZXJzTGVuZ3RoLnNyYyksXG4gICAgICAgICAgICAgIChwcm9wcy5pbnRlZ3JpdHkgPSBib290c3RyYXBTY3JpcHRDb250ZW50ID1cbiAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgbWF4SGVhZGVyc0xlbmd0aC5pbnRlZ3JpdHlcbiAgICAgICAgICAgICAgICAgID8gbWF4SGVhZGVyc0xlbmd0aC5pbnRlZ3JpdHlcbiAgICAgICAgICAgICAgICAgIDogdm9pZCAwKSxcbiAgICAgICAgICAgICAgKHByb3BzLmNyb3NzT3JpZ2luID0gaWRQcmVmaXggPVxuICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBtYXhIZWFkZXJzTGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgbnVsbCA9PSBtYXhIZWFkZXJzTGVuZ3RoLmNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICAgICAgOiBcInVzZS1jcmVkZW50aWFsc1wiID09PSBtYXhIZWFkZXJzTGVuZ3RoLmNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICA6IFwiXCIpKTtcbiAgICAgICAgICBwcmVsb2FkQm9vdHN0cmFwU2NyaXB0T3JNb2R1bGUoXG4gICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIG9uSGVhZGVycyxcbiAgICAgICAgICAgIGlubGluZVNjcmlwdFdpdGhOb25jZSxcbiAgICAgICAgICAgIHByb3BzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBleHRlcm5hbFJ1bnRpbWVDb25maWcucHVzaChcbiAgICAgICAgICAgIHN0YXJ0U2NyaXB0U3JjLFxuICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihpbmxpbmVTY3JpcHRXaXRoTm9uY2UpKVxuICAgICAgICAgICk7XG4gICAgICAgICAgbm9uY2UgJiZcbiAgICAgICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKFxuICAgICAgICAgICAgICBzY3JpcHROb25jZSxcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihub25jZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBib290c3RyYXBTY3JpcHRDb250ZW50ICYmXG4gICAgICAgICAgICBleHRlcm5hbFJ1bnRpbWVDb25maWcucHVzaChcbiAgICAgICAgICAgICAgc2NyaXB0SW50ZWdpcnR5LFxuICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgaWRQcmVmaXggJiZcbiAgICAgICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKFxuICAgICAgICAgICAgICBzY3JpcHRDcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihpZFByZWZpeCkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKGVuZEFzeW5jU2NyaXB0KTtcbiAgICAgICAgfVxuICAgICAgaWYgKHZvaWQgMCAhPT0gYm9vdHN0cmFwTW9kdWxlcylcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRzID0gMDtcbiAgICAgICAgICBib290c3RyYXBTY3JpcHRzIDwgYm9vdHN0cmFwTW9kdWxlcy5sZW5ndGg7XG4gICAgICAgICAgYm9vdHN0cmFwU2NyaXB0cysrXG4gICAgICAgIClcbiAgICAgICAgICAoaW1wb3J0TWFwID0gYm9vdHN0cmFwTW9kdWxlc1tib290c3RyYXBTY3JpcHRzXSksXG4gICAgICAgICAgICAoaWRQcmVmaXggPSBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPSB2b2lkIDApLFxuICAgICAgICAgICAgKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQgPSB7XG4gICAgICAgICAgICAgIHJlbDogXCJtb2R1bGVwcmVsb2FkXCIsXG4gICAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IFwibG93XCIsXG4gICAgICAgICAgICAgIG5vbmNlOiBub25jZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgaW1wb3J0TWFwXG4gICAgICAgICAgICAgID8gKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQuaHJlZiA9IG1heEhlYWRlcnNMZW5ndGggPSBpbXBvcnRNYXApXG4gICAgICAgICAgICAgIDogKChib290c3RyYXBTY3JpcHRDb250ZW50LmhyZWYgPSBtYXhIZWFkZXJzTGVuZ3RoID1cbiAgICAgICAgICAgICAgICAgIGltcG9ydE1hcC5zcmMpLFxuICAgICAgICAgICAgICAgIChib290c3RyYXBTY3JpcHRDb250ZW50LmludGVncml0eSA9IGlkUHJlZml4ID1cbiAgICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBpbXBvcnRNYXAuaW50ZWdyaXR5XG4gICAgICAgICAgICAgICAgICAgID8gaW1wb3J0TWFwLmludGVncml0eVxuICAgICAgICAgICAgICAgICAgICA6IHZvaWQgMCksXG4gICAgICAgICAgICAgICAgKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQuY3Jvc3NPcmlnaW4gPSBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPVxuICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGltcG9ydE1hcCB8fCBudWxsID09IGltcG9ydE1hcC5jcm9zc09yaWdpblxuICAgICAgICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICA6IFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IGltcG9ydE1hcC5jcm9zc09yaWdpblxuICAgICAgICAgICAgICAgICAgICAgID8gXCJ1c2UtY3JlZGVudGlhbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIDogXCJcIikpLFxuICAgICAgICAgICAgcHJlbG9hZEJvb3RzdHJhcFNjcmlwdE9yTW9kdWxlKFxuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgb25IZWFkZXJzLFxuICAgICAgICAgICAgICBtYXhIZWFkZXJzTGVuZ3RoLFxuICAgICAgICAgICAgICBib290c3RyYXBTY3JpcHRDb250ZW50XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZXh0ZXJuYWxSdW50aW1lQ29uZmlnLnB1c2goXG4gICAgICAgICAgICAgIHN0YXJ0TW9kdWxlU3JjLFxuICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKG1heEhlYWRlcnNMZW5ndGgpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG5vbmNlICYmXG4gICAgICAgICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKFxuICAgICAgICAgICAgICAgIHNjcmlwdE5vbmNlLFxuICAgICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIobm9uY2UpKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGlkUHJlZml4ICYmXG4gICAgICAgICAgICAgIGV4dGVybmFsUnVudGltZUNvbmZpZy5wdXNoKFxuICAgICAgICAgICAgICAgIHNjcmlwdEludGVnaXJ0eSxcbiAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKGlkUHJlZml4KSlcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgJiZcbiAgICAgICAgICAgICAgZXh0ZXJuYWxSdW50aW1lQ29uZmlnLnB1c2goXG4gICAgICAgICAgICAgICAgc2NyaXB0Q3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihpbmxpbmVTY3JpcHRXaXRoTm9uY2UpKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZXh0ZXJuYWxSdW50aW1lQ29uZmlnLnB1c2goZW5kQXN5bmNTY3JpcHQpO1xuICAgICAgcmV0dXJuIG9uSGVhZGVycztcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUmVzdW1hYmxlU3RhdGUoXG4gICAgICBpZGVudGlmaWVyUHJlZml4LFxuICAgICAgZXh0ZXJuYWxSdW50aW1lQ29uZmlnLFxuICAgICAgYm9vdHN0cmFwU2NyaXB0Q29udGVudCxcbiAgICAgIGJvb3RzdHJhcFNjcmlwdHMsXG4gICAgICBib290c3RyYXBNb2R1bGVzXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZFByZWZpeDogdm9pZCAwID09PSBpZGVudGlmaWVyUHJlZml4ID8gXCJcIiA6IGlkZW50aWZpZXJQcmVmaXgsXG4gICAgICAgIG5leHRGb3JtSUQ6IDAsXG4gICAgICAgIHN0cmVhbWluZ0Zvcm1hdDogMCxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0Q29udGVudDogYm9vdHN0cmFwU2NyaXB0Q29udGVudCxcbiAgICAgICAgYm9vdHN0cmFwU2NyaXB0czogYm9vdHN0cmFwU2NyaXB0cyxcbiAgICAgICAgYm9vdHN0cmFwTW9kdWxlczogYm9vdHN0cmFwTW9kdWxlcyxcbiAgICAgICAgaW5zdHJ1Y3Rpb25zOiBOb3RoaW5nU2VudCxcbiAgICAgICAgaGFzQm9keTogITEsXG4gICAgICAgIGhhc0h0bWw6ICExLFxuICAgICAgICB1bmtub3duUmVzb3VyY2VzOiB7fSxcbiAgICAgICAgZG5zUmVzb3VyY2VzOiB7fSxcbiAgICAgICAgY29ubmVjdFJlc291cmNlczogeyBkZWZhdWx0OiB7fSwgYW5vbnltb3VzOiB7fSwgY3JlZGVudGlhbHM6IHt9IH0sXG4gICAgICAgIGltYWdlUmVzb3VyY2VzOiB7fSxcbiAgICAgICAgc3R5bGVSZXNvdXJjZXM6IHt9LFxuICAgICAgICBzY3JpcHRSZXNvdXJjZXM6IHt9LFxuICAgICAgICBtb2R1bGVVbmtub3duUmVzb3VyY2VzOiB7fSxcbiAgICAgICAgbW9kdWxlU2NyaXB0UmVzb3VyY2VzOiB7fVxuICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlRm9ybWF0Q29udGV4dChpbnNlcnRpb25Nb2RlLCBzZWxlY3RlZFZhbHVlLCB0YWdTY29wZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5zZXJ0aW9uTW9kZTogaW5zZXJ0aW9uTW9kZSxcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZTogc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgdGFnU2NvcGU6IHRhZ1Njb3BlXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSb290Rm9ybWF0Q29udGV4dChuYW1lc3BhY2VVUkkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KFxuICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgPT09IG5hbWVzcGFjZVVSSVxuICAgICAgICAgID8gU1ZHX01PREVcbiAgICAgICAgICA6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiID09PSBuYW1lc3BhY2VVUklcbiAgICAgICAgICAgID8gTUFUSE1MX01PREVcbiAgICAgICAgICAgIDogUk9PVF9IVE1MX01PREUsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDBcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENoaWxkRm9ybWF0Q29udGV4dChwYXJlbnRDb250ZXh0LCB0eXBlLCBwcm9wcykge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJub3NjcmlwdFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KFxuICAgICAgICAgICAgSFRNTF9NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGUgfCAxXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KFxuICAgICAgICAgICAgSFRNTF9NT0RFLFxuICAgICAgICAgICAgbnVsbCAhPSBwcm9wcy52YWx1ZSA/IHByb3BzLnZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgcGFyZW50Q29udGV4dC50YWdTY29wZVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgXCJzdmdcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChTVkdfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSk7XG4gICAgICAgIGNhc2UgXCJwaWN0dXJlXCI6XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoXG4gICAgICAgICAgICBIVE1MX01PREUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgcGFyZW50Q29udGV4dC50YWdTY29wZSB8IDJcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwibWF0aFwiOlxuICAgICAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KE1BVEhNTF9NT0RFLCBudWxsLCBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlKTtcbiAgICAgICAgY2FzZSBcImZvcmVpZ25PYmplY3RcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIG51bGwsIHBhcmVudENvbnRleHQudGFnU2NvcGUpO1xuICAgICAgICBjYXNlIFwidGFibGVcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfVEFCTEVfTU9ERSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInRoZWFkXCI6XG4gICAgICAgIGNhc2UgXCJ0Ym9keVwiOlxuICAgICAgICBjYXNlIFwidGZvb3RcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfVEFCTEVfQk9EWV9NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGVcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIFwiY29sZ3JvdXBcIjpcbiAgICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChcbiAgICAgICAgICAgIEhUTUxfQ09MR1JPVVBfTU9ERSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBcInRyXCI6XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoXG4gICAgICAgICAgICBIVE1MX1RBQkxFX1JPV19NT0RFLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHBhcmVudENvbnRleHQudGFnU2NvcGVcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA+PSBIVE1MX1RBQkxFX01PREVcbiAgICAgICAgPyBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSlcbiAgICAgICAgOiBwYXJlbnRDb250ZXh0Lmluc2VydGlvbk1vZGUgPT09IFJPT1RfSFRNTF9NT0RFXG4gICAgICAgICAgPyBcImh0bWxcIiA9PT0gdHlwZVxuICAgICAgICAgICAgPyBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfSFRNTF9NT0RFLCBudWxsLCBwYXJlbnRDb250ZXh0LnRhZ1Njb3BlKVxuICAgICAgICAgICAgOiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCwgcGFyZW50Q29udGV4dC50YWdTY29wZSlcbiAgICAgICAgICA6IHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gSFRNTF9IVE1MX01PREVcbiAgICAgICAgICAgID8gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIG51bGwsIHBhcmVudENvbnRleHQudGFnU2NvcGUpXG4gICAgICAgICAgICA6IHBhcmVudENvbnRleHQ7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hUZXh0SW5zdGFuY2UodGFyZ2V0LCB0ZXh0LCByZW5kZXJTdGF0ZSwgdGV4dEVtYmVkZGVkKSB7XG4gICAgICBpZiAoXCJcIiA9PT0gdGV4dCkgcmV0dXJuIHRleHRFbWJlZGRlZDtcbiAgICAgIHRleHRFbWJlZGRlZCAmJiB0YXJnZXQucHVzaCh0ZXh0U2VwYXJhdG9yKTtcbiAgICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodGV4dCkpKTtcbiAgICAgIHJldHVybiAhMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaFN0eWxlQXR0cmlidXRlKHRhcmdldCwgc3R5bGUpIHtcbiAgICAgIGlmIChcIm9iamVjdFwiICE9PSB0eXBlb2Ygc3R5bGUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCBub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgJ2VtJ319IHdoZW4gdXNpbmcgSlNYLlwiXG4gICAgICAgICk7XG4gICAgICB2YXIgaXNGaXJzdCA9ICEwLFxuICAgICAgICBzdHlsZU5hbWU7XG4gICAgICBmb3IgKHN0eWxlTmFtZSBpbiBzdHlsZSlcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIHN0eWxlTmFtZSkpIHtcbiAgICAgICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlW3N0eWxlTmFtZV07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbnVsbCAhPSBzdHlsZVZhbHVlICYmXG4gICAgICAgICAgICBcImJvb2xlYW5cIiAhPT0gdHlwZW9mIHN0eWxlVmFsdWUgJiZcbiAgICAgICAgICAgIFwiXCIgIT09IHN0eWxlVmFsdWVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICgwID09PSBzdHlsZU5hbWUuaW5kZXhPZihcIi0tXCIpKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lQ2h1bmsgPSBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHN0eWxlTmFtZSkpO1xuICAgICAgICAgICAgICBjaGVja0NTU1Byb3BlcnR5U3RyaW5nQ29lcmNpb24oc3R5bGVWYWx1ZSwgc3R5bGVOYW1lKTtcbiAgICAgICAgICAgICAgc3R5bGVWYWx1ZSA9IHN0cmluZ1RvQ2h1bmsoXG4gICAgICAgICAgICAgICAgZXNjYXBlVGV4dEZvckJyb3dzZXIoKFwiXCIgKyBzdHlsZVZhbHVlKS50cmltKCkpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuYW1lQ2h1bmsgPSBzdHlsZU5hbWU7XG4gICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlVmFsdWU7XG4gICAgICAgICAgICAgIGlmICgtMSA8IG5hbWVDaHVuay5pbmRleE9mKFwiLVwiKSkge1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbmFtZUNodW5rO1xuICAgICAgICAgICAgICAgICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmXG4gICAgICAgICAgICAgICAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB8fFxuICAgICAgICAgICAgICAgICAgKCh3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gITApLFxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgXCJVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzP1wiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBjYW1lbGl6ZShuYW1lLnJlcGxhY2UobXNQYXR0ZXJuJDEsIFwibXMtXCIpKVxuICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZUNodW5rKSlcbiAgICAgICAgICAgICAgICAobmFtZSA9IG5hbWVDaHVuayksXG4gICAgICAgICAgICAgICAgICAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJlxuICAgICAgICAgICAgICAgICAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSAhMCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJVbnN1cHBvcnRlZCB2ZW5kb3ItcHJlZml4ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz9cIixcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZUNodW5rO1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSRqc2NvbXAkMCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSRqc2NvbXAkMCkgJiZcbiAgICAgICAgICAgICAgICAgIHdhcm5lZFN0eWxlVmFsdWVzW3ZhbHVlJGpzY29tcCQwXSkgfHxcbiAgICAgICAgICAgICAgICAgICgod2FybmVkU3R5bGVWYWx1ZXNbdmFsdWUkanNjb21wJDBdID0gITApLFxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgJ1N0eWxlIHByb3BlcnR5IHZhbHVlcyBzaG91bGRuXFwndCBjb250YWluIGEgc2VtaWNvbG9uLiBUcnkgXCIlczogJXNcIiBpbnN0ZWFkLicsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlJGpzY29tcCQwLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgYmFkU3R5bGVWYWx1ZVdpdGhTZW1pY29sb25QYXR0ZXJuLFxuICAgICAgICAgICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgKGlzTmFOKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgPyB3YXJuZWRGb3JOYU5WYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZEZvck5hTlZhbHVlID0gITApLFxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LlwiLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWVDaHVua1xuICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgOiBpc0Zpbml0ZSh2YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgd2FybmVkRm9ySW5maW5pdHlWYWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoKHdhcm5lZEZvckluZmluaXR5VmFsdWUgPSAhMCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJgSW5maW5pdHlgIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIHRoZSBgJXNgIGNzcyBzdHlsZSBwcm9wZXJ0eS5cIixcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lQ2h1bmtcbiAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICBuYW1lQ2h1bmsgPSBzdHlsZU5hbWU7XG4gICAgICAgICAgICAgIHZhbHVlID0gc3R5bGVOYW1lQ2FjaGUuZ2V0KG5hbWVDaHVuayk7XG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gdmFsdWVcbiAgICAgICAgICAgICAgICA/IChuYW1lQ2h1bmsgPSB2YWx1ZSlcbiAgICAgICAgICAgICAgICA6ICgodmFsdWUgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWVDaHVua1xuICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UodXBwZXJjYXNlUGF0dGVybiwgXCItJDFcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShtc1BhdHRlcm4sIFwiLW1zLVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICAgIHN0eWxlTmFtZUNhY2hlLnNldChuYW1lQ2h1bmssIHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgIChuYW1lQ2h1bmsgPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2Ygc3R5bGVWYWx1ZVxuICAgICAgICAgICAgICAgID8gKHN0eWxlVmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAwID09PSBzdHlsZVZhbHVlIHx8IHVuaXRsZXNzTnVtYmVycy5oYXMoc3R5bGVOYW1lKVxuICAgICAgICAgICAgICAgICAgICAgID8gc3RyaW5nVG9DaHVuayhcIlwiICsgc3R5bGVWYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICA6IHN0cmluZ1RvQ2h1bmsoc3R5bGVWYWx1ZSArIFwicHhcIikpXG4gICAgICAgICAgICAgICAgOiAoY2hlY2tDU1NQcm9wZXJ0eVN0cmluZ0NvZXJjaW9uKHN0eWxlVmFsdWUsIHN0eWxlTmFtZSksXG4gICAgICAgICAgICAgICAgICAoc3R5bGVWYWx1ZSA9IHN0cmluZ1RvQ2h1bmsoXG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKChcIlwiICsgc3R5bGVWYWx1ZSkudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNGaXJzdFxuICAgICAgICAgICAgICA/ICgoaXNGaXJzdCA9ICExKSxcbiAgICAgICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgICAgIHN0eWxlQXR0cmlidXRlU3RhcnQsXG4gICAgICAgICAgICAgICAgICBuYW1lQ2h1bmssXG4gICAgICAgICAgICAgICAgICBzdHlsZUFzc2lnbixcbiAgICAgICAgICAgICAgICAgIHN0eWxlVmFsdWVcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IHRhcmdldC5wdXNoKHN0eWxlU2VwYXJhdG9yLCBuYW1lQ2h1bmssIHN0eWxlQXNzaWduLCBzdHlsZVZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGlzRmlyc3QgfHwgdGFyZ2V0LnB1c2goYXR0cmlidXRlRW5kKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaEJvb2xlYW5BdHRyaWJ1dGUodGFyZ2V0LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgdmFsdWUgJiZcbiAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICBzdHJpbmdUb0NodW5rKG5hbWUpLFxuICAgICAgICAgIGF0dHJpYnV0ZUVtcHR5U3RyaW5nXG4gICAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgIFwiYm9vbGVhblwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgIHN0cmluZ1RvQ2h1bmsobmFtZSksXG4gICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSxcbiAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaEFkZGl0aW9uYWxGb3JtRmllbGQodmFsdWUsIGtleSkge1xuICAgICAgdGhpcy5wdXNoKHN0YXJ0SGlkZGVuSW5wdXRDaHVuayk7XG4gICAgICB2YWxpZGF0ZUFkZGl0aW9uYWxGb3JtRmllbGQodmFsdWUpO1xuICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0aGlzLCBcIm5hbWVcIiwga2V5KTtcbiAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGhpcywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICB0aGlzLnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVBZGRpdGlvbmFsRm9ybUZpZWxkKHZhbHVlKSB7XG4gICAgICBpZiAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHZhbHVlKVxuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIkZpbGUvQmxvYiBmaWVsZHMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGluIHByb2dyZXNzaXZlIGZvcm1zLiBXaWxsIGZhbGxiYWNrIHRvIGNsaWVudCBoeWRyYXRpb24uXCJcbiAgICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q3VzdG9tRm9ybUZpZWxkcyhyZXN1bWFibGVTdGF0ZSwgZm9ybUFjdGlvbikge1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGZvcm1BY3Rpb24uJCRGT1JNX0FDVElPTikge1xuICAgICAgICB2YXIgaWQgPSByZXN1bWFibGVTdGF0ZS5uZXh0Rm9ybUlEKys7XG4gICAgICAgIHJlc3VtYWJsZVN0YXRlID0gcmVzdW1hYmxlU3RhdGUuaWRQcmVmaXggKyBpZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgY3VzdG9tRmllbGRzID0gZm9ybUFjdGlvbi4kJEZPUk1fQUNUSU9OKHJlc3VtYWJsZVN0YXRlKTtcbiAgICAgICAgICBpZiAoY3VzdG9tRmllbGRzKSB7XG4gICAgICAgICAgICB2YXIgZm9ybURhdGEgPSBjdXN0b21GaWVsZHMuZGF0YTtcbiAgICAgICAgICAgIG51bGwgIT0gZm9ybURhdGEgJiYgZm9ybURhdGEuZm9yRWFjaCh2YWxpZGF0ZUFkZGl0aW9uYWxGb3JtRmllbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY3VzdG9tRmllbGRzO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHggJiZcbiAgICAgICAgICAgIG51bGwgIT09IHggJiZcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlblxuICAgICAgICAgIClcbiAgICAgICAgICAgIHRocm93IHg7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiRmFpbGVkIHRvIHNlcmlhbGl6ZSBhbiBhY3Rpb24gZm9yIHByb2dyZXNzaXZlIGVuaGFuY2VtZW50OlxcbiVzXCIsXG4gICAgICAgICAgICB4XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hGb3JtQWN0aW9uQXR0cmlidXRlKFxuICAgICAgdGFyZ2V0LFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICByZW5kZXJTdGF0ZSxcbiAgICAgIGZvcm1BY3Rpb24sXG4gICAgICBmb3JtRW5jVHlwZSxcbiAgICAgIGZvcm1NZXRob2QsXG4gICAgICBmb3JtVGFyZ2V0LFxuICAgICAgbmFtZVxuICAgICkge1xuICAgICAgdmFyIGZvcm1EYXRhID0gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmb3JtQWN0aW9uKSB7XG4gICAgICAgIG51bGwgPT09IG5hbWUgfHxcbiAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvbk5hbWUgfHxcbiAgICAgICAgICAoKGRpZFdhcm5Gb3JtQWN0aW9uTmFtZSA9ICEwKSxcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgJ0Nhbm5vdCBzcGVjaWZ5IGEgXCJuYW1lXCIgcHJvcCBmb3IgYSBidXR0b24gdGhhdCBzcGVjaWZpZXMgYSBmdW5jdGlvbiBhcyBhIGZvcm1BY3Rpb24uIFJlYWN0IG5lZWRzIGl0IHRvIGVuY29kZSB3aGljaCBhY3Rpb24gc2hvdWxkIGJlIGludm9rZWQuIEl0IHdpbGwgZ2V0IG92ZXJyaWRkZW4uJ1xuICAgICAgICAgICkpO1xuICAgICAgICAobnVsbCA9PT0gZm9ybUVuY1R5cGUgJiYgbnVsbCA9PT0gZm9ybU1ldGhvZCkgfHxcbiAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvbk1ldGhvZCB8fFxuICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25NZXRob2QgPSAhMCksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHNwZWNpZnkgYSBmb3JtRW5jVHlwZSBvciBmb3JtTWV0aG9kIGZvciBhIGJ1dHRvbiB0aGF0IHNwZWNpZmllcyBhIGZ1bmN0aW9uIGFzIGEgZm9ybUFjdGlvbi4gUmVhY3QgcHJvdmlkZXMgdGhvc2UgYXV0b21hdGljYWxseS4gVGhleSB3aWxsIGdldCBvdmVycmlkZGVuLlwiXG4gICAgICAgICAgKSk7XG4gICAgICAgIG51bGwgPT09IGZvcm1UYXJnZXQgfHxcbiAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvblRhcmdldCB8fFxuICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25UYXJnZXQgPSAhMCksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHNwZWNpZnkgYSBmb3JtVGFyZ2V0IGZvciBhIGJ1dHRvbiB0aGF0IHNwZWNpZmllcyBhIGZ1bmN0aW9uIGFzIGEgZm9ybUFjdGlvbi4gVGhlIGZ1bmN0aW9uIHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIHdpbmRvdy5cIlxuICAgICAgICAgICkpO1xuICAgICAgICB2YXIgY3VzdG9tRmllbGRzID0gZ2V0Q3VzdG9tRm9ybUZpZWxkcyhyZXN1bWFibGVTdGF0ZSwgZm9ybUFjdGlvbik7XG4gICAgICAgIG51bGwgIT09IGN1c3RvbUZpZWxkc1xuICAgICAgICAgID8gKChuYW1lID0gY3VzdG9tRmllbGRzLm5hbWUpLFxuICAgICAgICAgICAgKGZvcm1BY3Rpb24gPSBjdXN0b21GaWVsZHMuYWN0aW9uIHx8IFwiXCIpLFxuICAgICAgICAgICAgKGZvcm1FbmNUeXBlID0gY3VzdG9tRmllbGRzLmVuY1R5cGUpLFxuICAgICAgICAgICAgKGZvcm1NZXRob2QgPSBjdXN0b21GaWVsZHMubWV0aG9kKSxcbiAgICAgICAgICAgIChmb3JtVGFyZ2V0ID0gY3VzdG9tRmllbGRzLnRhcmdldCksXG4gICAgICAgICAgICAoZm9ybURhdGEgPSBjdXN0b21GaWVsZHMuZGF0YSkpXG4gICAgICAgICAgOiAodGFyZ2V0LnB1c2goXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhcImZvcm1BY3Rpb25cIiksXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgYWN0aW9uSmF2YVNjcmlwdFVSTCxcbiAgICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgKGZvcm1UYXJnZXQgPSBmb3JtTWV0aG9kID0gZm9ybUVuY1R5cGUgPSBmb3JtQWN0aW9uID0gbmFtZSA9IG51bGwpLFxuICAgICAgICAgICAgaW5qZWN0Rm9ybVJlcGxheWluZ1J1bnRpbWUocmVzdW1hYmxlU3RhdGUsIHJlbmRlclN0YXRlKSk7XG4gICAgICB9XG4gICAgICBudWxsICE9IG5hbWUgJiYgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIFwibmFtZVwiLCBuYW1lKTtcbiAgICAgIG51bGwgIT0gZm9ybUFjdGlvbiAmJiBwdXNoQXR0cmlidXRlKHRhcmdldCwgXCJmb3JtQWN0aW9uXCIsIGZvcm1BY3Rpb24pO1xuICAgICAgbnVsbCAhPSBmb3JtRW5jVHlwZSAmJiBwdXNoQXR0cmlidXRlKHRhcmdldCwgXCJmb3JtRW5jVHlwZVwiLCBmb3JtRW5jVHlwZSk7XG4gICAgICBudWxsICE9IGZvcm1NZXRob2QgJiYgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIFwiZm9ybU1ldGhvZFwiLCBmb3JtTWV0aG9kKTtcbiAgICAgIG51bGwgIT0gZm9ybVRhcmdldCAmJiBwdXNoQXR0cmlidXRlKHRhcmdldCwgXCJmb3JtVGFyZ2V0XCIsIGZvcm1UYXJnZXQpO1xuICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoQXR0cmlidXRlKHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICBjYXNlIFwiY2xhc3NOYW1lXCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIFwiY2xhc3NcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwidGFiSW5kZXhcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ0YWJpbmRleFwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJkaXJcIjpcbiAgICAgICAgY2FzZSBcInJvbGVcIjpcbiAgICAgICAgY2FzZSBcInZpZXdCb3hcIjpcbiAgICAgICAgY2FzZSBcIndpZHRoXCI6XG4gICAgICAgIGNhc2UgXCJoZWlnaHRcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgICAgICBwdXNoU3R5bGVBdHRyaWJ1dGUodGFyZ2V0LCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzcmNcIjpcbiAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICBpZiAoXCJcIiA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIFwic3JjXCIgPT09IG5hbWVcbiAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ0FuIGVtcHR5IHN0cmluZyAoXCJcIikgd2FzIHBhc3NlZCB0byB0aGUgJXMgYXR0cmlidXRlLiBUaGlzIG1heSBjYXVzZSB0aGUgYnJvd3NlciB0byBkb3dubG9hZCB0aGUgd2hvbGUgcGFnZSBhZ2FpbiBvdmVyIHRoZSBuZXR3b3JrLiBUbyBmaXggdGhpcywgZWl0aGVyIGRvIG5vdCByZW5kZXIgdGhlIGVsZW1lbnQgYXQgYWxsIG9yIHBhc3MgbnVsbCB0byAlcyBpbnN0ZWFkIG9mIGFuIGVtcHR5IHN0cmluZy4nLFxuICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICdBbiBlbXB0eSBzdHJpbmcgKFwiXCIpIHdhcyBwYXNzZWQgdG8gdGhlICVzIGF0dHJpYnV0ZS4gVG8gZml4IHRoaXMsIGVpdGhlciBkbyBub3QgcmVuZGVyIHRoZSBlbGVtZW50IGF0IGFsbCBvciBwYXNzIG51bGwgdG8gJXMgaW5zdGVhZCBvZiBhbiBlbXB0eSBzdHJpbmcuJyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBcImFjdGlvblwiOlxuICAgICAgICBjYXNlIFwiZm9ybUFjdGlvblwiOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG51bGwgPT0gdmFsdWUgfHxcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgICAgIFwiYm9vbGVhblwiID09PSB0eXBlb2YgdmFsdWVcbiAgICAgICAgICApXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCBuYW1lKTtcbiAgICAgICAgICB2YWx1ZSA9IHNhbml0aXplVVJMKFwiXCIgKyB2YWx1ZSk7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICBzdHJpbmdUb0NodW5rKG5hbWUpLFxuICAgICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLFxuICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImRlZmF1bHRWYWx1ZVwiOlxuICAgICAgICBjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjpcbiAgICAgICAgY2FzZSBcImlubmVySFRNTFwiOlxuICAgICAgICBjYXNlIFwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCI6XG4gICAgICAgIGNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpcbiAgICAgICAgY2FzZSBcInJlZlwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXV0b0ZvY3VzXCI6XG4gICAgICAgIGNhc2UgXCJtdWx0aXBsZVwiOlxuICAgICAgICBjYXNlIFwibXV0ZWRcIjpcbiAgICAgICAgICBwdXNoQm9vbGVhbkF0dHJpYnV0ZSh0YXJnZXQsIG5hbWUudG9Mb3dlckNhc2UoKSwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieGxpbmtIcmVmXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICAgICAgXCJib29sZWFuXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIG5hbWUpO1xuICAgICAgICAgIHZhbHVlID0gc2FuaXRpemVVUkwoXCJcIiArIHZhbHVlKTtcbiAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoXCJ4bGluazpocmVmXCIpLFxuICAgICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLFxuICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNvbnRlbnRFZGl0YWJsZVwiOlxuICAgICAgICBjYXNlIFwic3BlbGxDaGVja1wiOlxuICAgICAgICBjYXNlIFwiZHJhZ2dhYmxlXCI6XG4gICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICBjYXNlIFwiYXV0b1JldmVyc2VcIjpcbiAgICAgICAgY2FzZSBcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIjpcbiAgICAgICAgY2FzZSBcImZvY3VzYWJsZVwiOlxuICAgICAgICBjYXNlIFwicHJlc2VydmVBbHBoYVwiOlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsobmFtZSksXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJpbmVydFwiOlxuICAgICAgICAgIFwiXCIgIT09IHZhbHVlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRm9yTmV3Qm9vbGVhblByb3BzV2l0aEVtcHR5VmFsdWVbbmFtZV0gfHxcbiAgICAgICAgICAgICgoZGlkV2FybkZvck5ld0Jvb2xlYW5Qcm9wc1dpdGhFbXB0eVZhbHVlW25hbWVdID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWNlaXZlZCBhbiBlbXB0eSBzdHJpbmcgZm9yIGEgYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC4gVGhpcyB3aWxsIHRyZWF0IHRoZSBhdHRyaWJ1dGUgYXMgaWYgaXQgd2VyZSBmYWxzZS4gRWl0aGVyIHBhc3MgYGZhbHNlYCB0byBzaWxlbmNlIHRoaXMgd2FybmluZywgb3IgcGFzcyBgdHJ1ZWAgaWYgeW91IHVzZWQgYW4gZW1wdHkgc3RyaW5nIGluIGVhcmxpZXIgdmVyc2lvbnMgb2YgUmVhY3QgdG8gaW5kaWNhdGUgdGhpcyBhdHRyaWJ1dGUgaXMgdHJ1ZS5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIGNhc2UgXCJhbGxvd0Z1bGxTY3JlZW5cIjpcbiAgICAgICAgY2FzZSBcImFzeW5jXCI6XG4gICAgICAgIGNhc2UgXCJhdXRvUGxheVwiOlxuICAgICAgICBjYXNlIFwiY29udHJvbHNcIjpcbiAgICAgICAgY2FzZSBcImRlZmF1bHRcIjpcbiAgICAgICAgY2FzZSBcImRlZmVyXCI6XG4gICAgICAgIGNhc2UgXCJkaXNhYmxlZFwiOlxuICAgICAgICBjYXNlIFwiZGlzYWJsZVBpY3R1cmVJblBpY3R1cmVcIjpcbiAgICAgICAgY2FzZSBcImRpc2FibGVSZW1vdGVQbGF5YmFja1wiOlxuICAgICAgICBjYXNlIFwiZm9ybU5vVmFsaWRhdGVcIjpcbiAgICAgICAgY2FzZSBcImhpZGRlblwiOlxuICAgICAgICBjYXNlIFwibG9vcFwiOlxuICAgICAgICBjYXNlIFwibm9Nb2R1bGVcIjpcbiAgICAgICAgY2FzZSBcIm5vVmFsaWRhdGVcIjpcbiAgICAgICAgY2FzZSBcIm9wZW5cIjpcbiAgICAgICAgY2FzZSBcInBsYXlzSW5saW5lXCI6XG4gICAgICAgIGNhc2UgXCJyZWFkT25seVwiOlxuICAgICAgICBjYXNlIFwicmVxdWlyZWRcIjpcbiAgICAgICAgY2FzZSBcInJldmVyc2VkXCI6XG4gICAgICAgIGNhc2UgXCJzY29wZWRcIjpcbiAgICAgICAgY2FzZSBcInNlYW1sZXNzXCI6XG4gICAgICAgIGNhc2UgXCJpdGVtU2NvcGVcIjpcbiAgICAgICAgICB2YWx1ZSAmJlxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhuYW1lKSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlRW1wdHlTdHJpbmdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJjYXB0dXJlXCI6XG4gICAgICAgIGNhc2UgXCJkb3dubG9hZFwiOlxuICAgICAgICAgICEwID09PSB2YWx1ZVxuICAgICAgICAgICAgPyB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhuYW1lKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVFbXB0eVN0cmluZ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6ICExICE9PSB2YWx1ZSAmJlxuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICAgICAgICAgdGFyZ2V0LnB1c2goXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsobmFtZSksXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNvbHNcIjpcbiAgICAgICAgY2FzZSBcInJvd3NcIjpcbiAgICAgICAgY2FzZSBcInNpemVcIjpcbiAgICAgICAgY2FzZSBcInNwYW5cIjpcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICAhaXNOYU4odmFsdWUpICYmXG4gICAgICAgICAgICAxIDw9IHZhbHVlICYmXG4gICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKG5hbWUpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSxcbiAgICAgICAgICAgICAgYXR0cmlidXRlRW5kXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicm93U3BhblwiOlxuICAgICAgICBjYXNlIFwic3RhcnRcIjpcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICAgICAgXCJzeW1ib2xcIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgICBpc05hTih2YWx1ZSkgfHxcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsobmFtZSksXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bGlua0FjdHVhdGVcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bGluazphY3R1YXRlXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rQXJjcm9sZVwiOlxuICAgICAgICAgIHB1c2hTdHJpbmdBdHRyaWJ1dGUodGFyZ2V0LCBcInhsaW5rOmFyY3JvbGVcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieGxpbmtSb2xlXCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIFwieGxpbms6cm9sZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bGlua1Nob3dcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bGluazpzaG93XCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhsaW5rVGl0bGVcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bGluazp0aXRsZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bGlua1R5cGVcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bGluazp0eXBlXCIsIHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInhtbEJhc2VcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bWw6YmFzZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJ4bWxMYW5nXCI6XG4gICAgICAgICAgcHVzaFN0cmluZ0F0dHJpYnV0ZSh0YXJnZXQsIFwieG1sOmxhbmdcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwieG1sU3BhY2VcIjpcbiAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCwgXCJ4bWw6c3BhY2VcIiwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoMiA8IG5hbWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgKFwib1wiICE9PSBuYW1lWzBdICYmIFwiT1wiICE9PSBuYW1lWzBdKSB8fFxuICAgICAgICAgICAgKFwiblwiICE9PSBuYW1lWzFdICYmIFwiTlwiICE9PSBuYW1lWzFdKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKChuYW1lID0gYWxpYXNlcy5nZXQobmFtZSkgfHwgbmFtZSksIGlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgICAgICAgIHZhciBwcmVmaXggPSBuYW1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwgNSk7XG4gICAgICAgICAgICAgICAgICBpZiAoXCJkYXRhLVwiICE9PSBwcmVmaXggJiYgXCJhcmlhLVwiICE9PSBwcmVmaXgpIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0YXJnZXQucHVzaChcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVTZXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhuYW1lKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MLCBjaGlsZHJlbikge1xuICAgICAgaWYgKG51bGwgIT0gaW5uZXJIVE1MKSB7XG4gICAgICAgIGlmIChudWxsICE9IGNoaWxkcmVuKVxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC5cIlxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChcIm9iamVjdFwiICE9PSB0eXBlb2YgaW5uZXJIVE1MIHx8ICEoXCJfX2h0bWxcIiBpbiBpbm5lckhUTUwpKVxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIGlubmVySFRNTCA9IGlubmVySFRNTC5fX2h0bWw7XG4gICAgICAgIG51bGwgIT09IGlubmVySFRNTCAmJlxuICAgICAgICAgIHZvaWQgMCAhPT0gaW5uZXJIVE1MICYmXG4gICAgICAgICAgKGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKGlubmVySFRNTCksXG4gICAgICAgICAgdGFyZ2V0LnB1c2goc3RyaW5nVG9DaHVuayhcIlwiICsgaW5uZXJIVE1MKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjaGVja1NlbGVjdFByb3AocHJvcHMsIHByb3BOYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBudWxsICE9IHZhbHVlICYmXG4gICAgICAgICgodmFsdWUgPSBpc0FycmF5SW1wbCh2YWx1ZSkpLFxuICAgICAgICBwcm9wcy5tdWx0aXBsZSAmJiAhdmFsdWVcbiAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmIGBtdWx0aXBsZWAgaXMgdHJ1ZS5cIixcbiAgICAgICAgICAgICAgcHJvcE5hbWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6ICFwcm9wcy5tdWx0aXBsZSAmJlxuICAgICAgICAgICAgdmFsdWUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyIHZhbHVlIGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuXCIsXG4gICAgICAgICAgICAgIHByb3BOYW1lXG4gICAgICAgICAgICApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmxhdHRlbk9wdGlvbkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgbnVsbCAhPSBjaGlsZCAmJlxuICAgICAgICAgICgoY29udGVudCArPSBjaGlsZCksXG4gICAgICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiB8fFxuICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkIHx8XG4gICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgY2hpbGQgfHxcbiAgICAgICAgICAgIFwiYmlnaW50XCIgPT09IHR5cGVvZiBjaGlsZCB8fFxuICAgICAgICAgICAgKChkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJDYW5ub3QgaW5mZXIgdGhlIG9wdGlvbiB2YWx1ZSBvZiBjb21wbGV4IGNoaWxkcmVuLiBQYXNzIGEgYHZhbHVlYCBwcm9wIG9yIHVzZSBhIHBsYWluIHN0cmluZyBhcyBjaGlsZHJlbiB0byA8b3B0aW9uPi5cIlxuICAgICAgICAgICAgKSkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5qZWN0Rm9ybVJlcGxheWluZ1J1bnRpbWUocmVzdW1hYmxlU3RhdGUsIHJlbmRlclN0YXRlKSB7XG4gICAgICAocmVzdW1hYmxlU3RhdGUuaW5zdHJ1Y3Rpb25zICYgMTYpID09PSBOb3RoaW5nU2VudCAmJlxuICAgICAgICAoKHJlc3VtYWJsZVN0YXRlLmluc3RydWN0aW9ucyB8PSAxNiksXG4gICAgICAgIHJlbmRlclN0YXRlLmJvb3RzdHJhcENodW5rcy51bnNoaWZ0KFxuICAgICAgICAgIHJlbmRlclN0YXRlLnN0YXJ0SW5saW5lU2NyaXB0LFxuICAgICAgICAgIGZvcm1SZXBsYXlpbmdSdW50aW1lU2NyaXB0LFxuICAgICAgICAgIGVuZElubGluZVNjcmlwdFxuICAgICAgICApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaExpbmtJbXBsKHRhcmdldCwgcHJvcHMpIHtcbiAgICAgIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJsaW5rXCIpKTtcbiAgICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpXG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUpXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJsaW5rIGlzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZVN0eWxlVGV4dENvbnRlbnQoc3R5bGVUZXh0KSB7XG4gICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihzdHlsZVRleHQpO1xuICAgICAgcmV0dXJuIChcIlwiICsgc3R5bGVUZXh0KS5yZXBsYWNlKHN0eWxlUmVnZXgsIHN0eWxlUmVwbGFjZXIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoU2VsZkNsb3NpbmcodGFyZ2V0LCBwcm9wcywgdGFnKSB7XG4gICAgICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKHRhZykpO1xuICAgICAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcylcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSlcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICB0YWcgK1xuICAgICAgICAgICAgICAgICAgICBcIiBpcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoVGl0bGVJbXBsKHRhcmdldCwgcHJvcHMpIHtcbiAgICAgIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJ0aXRsZVwiKSk7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBudWxsLFxuICAgICAgICBpbm5lckhUTUwgPSBudWxsLFxuICAgICAgICBwcm9wS2V5O1xuICAgICAgZm9yIChwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgcHJvcHMgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuKVxuICAgICAgICA/IDIgPiBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICA/IGNoaWxkcmVuWzBdXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIDogY2hpbGRyZW47XG4gICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBwcm9wcyAmJlxuICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgcHJvcHMgJiZcbiAgICAgICAgbnVsbCAhPT0gcHJvcHMgJiZcbiAgICAgICAgdm9pZCAwICE9PSBwcm9wcyAmJlxuICAgICAgICB0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKFwiXCIgKyBwcm9wcykpKTtcbiAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKTtcbiAgICAgIHRhcmdldC5wdXNoKGVuZENodW5rRm9yVGFnKFwidGl0bGVcIikpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTY3JpcHRJbXBsKHRhcmdldCwgcHJvcHMpIHtcbiAgICAgIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJzY3JpcHRcIikpO1xuICAgICAgdmFyIGNoaWxkcmVuID0gbnVsbCxcbiAgICAgICAgaW5uZXJIVE1MID0gbnVsbCxcbiAgICAgICAgcHJvcEtleTtcbiAgICAgIGZvciAocHJvcEtleSBpbiBwcm9wcylcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSlcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgaW5uZXJIVE1MID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgIG51bGwgIT0gY2hpbGRyZW4gJiZcbiAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIGNoaWxkcmVuICYmXG4gICAgICAgICgocHJvcHMgPVxuICAgICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiBjaGlsZHJlblxuICAgICAgICAgICAgPyBcImEgbnVtYmVyIGZvciBjaGlsZHJlblwiXG4gICAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG4gICAgICAgICAgICAgID8gXCJhbiBhcnJheSBmb3IgY2hpbGRyZW5cIlxuICAgICAgICAgICAgICA6IFwic29tZXRoaW5nIHVuZXhwZWN0ZWQgZm9yIGNoaWxkcmVuXCIpLFxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiQSBzY3JpcHQgZWxlbWVudCB3YXMgcmVuZGVyZWQgd2l0aCAlcy4gSWYgc2NyaXB0IGVsZW1lbnQgaGFzIGNoaWxkcmVuIGl0IG11c3QgYmUgYSBzaW5nbGUgc3RyaW5nLiBDb25zaWRlciB1c2luZyBkYW5nZXJvdXNseVNldElubmVySFRNTCBvciBwYXNzaW5nIGEgcGxhaW4gc3RyaW5nIGFzIGNoaWxkcmVuLlwiLFxuICAgICAgICAgIHByb3BzXG4gICAgICAgICkpO1xuICAgICAgcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuICYmXG4gICAgICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoZXNjYXBlRW50aXJlSW5saW5lU2NyaXB0Q29udGVudChjaGlsZHJlbikpKTtcbiAgICAgIHRhcmdldC5wdXNoKGVuZENodW5rRm9yVGFnKFwic2NyaXB0XCIpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0YWcpIHtcbiAgICAgIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSk7XG4gICAgICB2YXIgaW5uZXJIVE1MID0gKHRhZyA9IG51bGwpLFxuICAgICAgICBwcm9wS2V5O1xuICAgICAgZm9yIChwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgIHRhZyA9IHByb3BWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgaW5uZXJIVE1MID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIHRhZyk7XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHRhZ1xuICAgICAgICA/ICh0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHRhZykpKSwgbnVsbClcbiAgICAgICAgOiB0YWc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSB7XG4gICAgICB2YXIgdGFnU3RhcnRDaHVuayA9IHZhbGlkYXRlZFRhZ0NhY2hlLmdldCh0YWcpO1xuICAgICAgaWYgKHZvaWQgMCA9PT0gdGFnU3RhcnRDaHVuaykge1xuICAgICAgICBpZiAoIVZBTElEX1RBR19SRUdFWC50ZXN0KHRhZykpIHRocm93IEVycm9yKFwiSW52YWxpZCB0YWc6IFwiICsgdGFnKTtcbiAgICAgICAgdGFnU3RhcnRDaHVuayA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjxcIiArIHRhZyk7XG4gICAgICAgIHZhbGlkYXRlZFRhZ0NhY2hlLnNldCh0YWcsIHRhZ1N0YXJ0Q2h1bmspO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhZ1N0YXJ0Q2h1bms7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hTdGFydEluc3RhbmNlKFxuICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgdHlwZSxcbiAgICAgIHByb3BzLFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICByZW5kZXJTdGF0ZSxcbiAgICAgIGhvaXN0YWJsZVN0YXRlLFxuICAgICAgZm9ybWF0Q29udGV4dCxcbiAgICAgIHRleHRFbWJlZGRlZCxcbiAgICAgIGlzRmFsbGJhY2tcbiAgICApIHtcbiAgICAgIHZhbGlkYXRlUHJvcGVydGllcyQyKHR5cGUsIHByb3BzKTtcbiAgICAgIChcImlucHV0XCIgIT09IHR5cGUgJiYgXCJ0ZXh0YXJlYVwiICE9PSB0eXBlICYmIFwic2VsZWN0XCIgIT09IHR5cGUpIHx8XG4gICAgICAgIG51bGwgPT0gcHJvcHMgfHxcbiAgICAgICAgbnVsbCAhPT0gcHJvcHMudmFsdWUgfHxcbiAgICAgICAgZGlkV2FyblZhbHVlTnVsbCB8fFxuICAgICAgICAoKGRpZFdhcm5WYWx1ZU51bGwgPSAhMCksXG4gICAgICAgIFwic2VsZWN0XCIgPT09IHR5cGUgJiYgcHJvcHMubXVsdGlwbGVcbiAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiYHZhbHVlYCBwcm9wIG9uIGAlc2Agc2hvdWxkIG5vdCBiZSBudWxsLiBDb25zaWRlciB1c2luZyBhbiBlbXB0eSBhcnJheSB3aGVuIGBtdWx0aXBsZWAgaXMgc2V0IHRvIGB0cnVlYCB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIGB1bmRlZmluZWRgIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJgdmFsdWVgIHByb3Agb24gYCVzYCBzaG91bGQgbm90IGJlIG51bGwuIENvbnNpZGVyIHVzaW5nIGFuIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgY29tcG9uZW50IG9yIGB1bmRlZmluZWRgIGZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy5cIixcbiAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgKSk7XG4gICAgICBiOiBpZiAoLTEgPT09IHR5cGUuaW5kZXhPZihcIi1cIikpIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMTtcbiAgICAgIGVsc2VcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImFubm90YXRpb24teG1sXCI6XG4gICAgICAgICAgY2FzZSBcImNvbG9yLXByb2ZpbGVcIjpcbiAgICAgICAgICBjYXNlIFwiZm9udC1mYWNlXCI6XG4gICAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1zcmNcIjpcbiAgICAgICAgICBjYXNlIFwiZm9udC1mYWNlLXVyaVwiOlxuICAgICAgICAgIGNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6XG4gICAgICAgICAgY2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6XG4gICAgICAgICAgY2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgICAgICAgYnJlYWsgYjtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITA7XG4gICAgICAgIH1cbiAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCB8fFxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuaXMgfHxcbiAgICAgICAgd2FyblVua25vd25Qcm9wZXJ0aWVzKHR5cGUsIHByb3BzLCBudWxsKTtcbiAgICAgICFwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgJiZcbiAgICAgICAgcHJvcHMuY29udGVudEVkaXRhYmxlICYmXG4gICAgICAgIG51bGwgIT0gcHJvcHMuY2hpbGRyZW4gJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcIkEgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgdGhvc2Ugbm9kZXMgYXJlIHVuZXhwZWN0ZWRseSBtb2RpZmllZCBvciBkdXBsaWNhdGVkLiBUaGlzIGlzIHByb2JhYmx5IG5vdCBpbnRlbnRpb25hbC5cIlxuICAgICAgICApO1xuICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlICE9PSBTVkdfTU9ERSAmJlxuICAgICAgICBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUgIT09IE1BVEhNTF9NT0RFICYmXG4gICAgICAgIC0xID09PSB0eXBlLmluZGV4T2YoXCItXCIpICYmXG4gICAgICAgIHR5cGUudG9Mb3dlckNhc2UoKSAhPT0gdHlwZSAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiPCVzIC8+IGlzIHVzaW5nIGluY29ycmVjdCBjYXNpbmcuIFVzZSBQYXNjYWxDYXNlIGZvciBSZWFjdCBjb21wb25lbnRzLCBvciBsb3dlcmNhc2UgZm9yIEhUTUwgZWxlbWVudHMuXCIsXG4gICAgICAgICAgdHlwZVxuICAgICAgICApO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJkaXZcIjpcbiAgICAgICAgY2FzZSBcInNwYW5cIjpcbiAgICAgICAgY2FzZSBcInN2Z1wiOlxuICAgICAgICBjYXNlIFwicGF0aFwiOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJhXCIpKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBudWxsLFxuICAgICAgICAgICAgaW5uZXJIVE1MID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXk7XG4gICAgICAgICAgZm9yIChwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICAgICAgICAgICAgXCJcIiA9PT0gcHJvcFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPyBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJocmVmXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgOiBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gICAgICAgICAgcHVzaElubmVySFRNTCh0YXJnZXQkanNjb21wJDAsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuICAgICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIoY2hpbGRyZW4pKSk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gY2hpbGRyZW47XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMDtcbiAgICAgICAgY2FzZSBcImdcIjpcbiAgICAgICAgY2FzZSBcInBcIjpcbiAgICAgICAgY2FzZSBcImxpXCI6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICAgICAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKFwic2VsZWN0XCIsIHByb3BzKTtcbiAgICAgICAgICBjaGVja1NlbGVjdFByb3AocHJvcHMsIFwidmFsdWVcIik7XG4gICAgICAgICAgY2hlY2tTZWxlY3RQcm9wKHByb3BzLCBcImRlZmF1bHRWYWx1ZVwiKTtcbiAgICAgICAgICB2b2lkIDAgPT09IHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICB2b2lkIDAgPT09IHByb3BzLmRlZmF1bHRWYWx1ZSB8fFxuICAgICAgICAgICAgZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90IGJvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCBlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSA9ICEwKSk7XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInNlbGVjdFwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQwO1xuICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkMCBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQwKSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQwID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkMF07XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkMClcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDApIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDAsIGNoaWxkcmVuJGpzY29tcCQwKTtcbiAgICAgICAgICByZXR1cm4gY2hpbGRyZW4kanNjb21wJDA7XG4gICAgICAgIGNhc2UgXCJvcHRpb25cIjpcbiAgICAgICAgICB2YXIgc2VsZWN0ZWRWYWx1ZSA9IGZvcm1hdENvbnRleHQuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwib3B0aW9uXCIpKTtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgdmFsdWUgPSBudWxsLFxuICAgICAgICAgICAgc2VsZWN0ZWQgPSBudWxsLFxuICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDE7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQxIGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDEpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDEgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQxXTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQxKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkMSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQxID0gcHJvcFZhbHVlJGpzY29tcCQxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IHByb3BWYWx1ZSRqc2NvbXAkMTtcbiAgICAgICAgICAgICAgICAgICAgZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAoY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxzZWxlY3Q+IGluc3RlYWQgb2Ygc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LlwiXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAoZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24gPSAhMCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcHJvcFZhbHVlJGpzY29tcCQxO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMSxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDFcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG51bGwgIT0gc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKG51bGwgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIFwidmFsdWVcIik7XG4gICAgICAgICAgICAgIHZhciBzdHJpbmdWYWx1ZSA9IFwiXCIgKyB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICBudWxsID09PSBpbm5lckhUTUwkanNjb21wJDEgfHxcbiAgICAgICAgICAgICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbklubmVySFRNTCB8fFxuICAgICAgICAgICAgICAgICgoZGlkV2FybkludmFsaWRPcHRpb25Jbm5lckhUTUwgPSAhMCksXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiUGFzcyBhIGB2YWx1ZWAgcHJvcCBpZiB5b3Ugc2V0IGRhbmdlcm91c2x5SW5uZXJIVE1MIHNvIFJlYWN0IGtub3dzIHdoaWNoIHZhbHVlIHNob3VsZCBiZSBzZWxlY3RlZC5cIlxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIChzdHJpbmdWYWx1ZSA9IGZsYXR0ZW5PcHRpb25DaGlsZHJlbihjaGlsZHJlbiRqc2NvbXAkMSkpO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKHNlbGVjdGVkVmFsdWUpKVxuICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdGVkVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAoY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihzZWxlY3RlZFZhbHVlW2ldLCBcInZhbHVlXCIpLFxuICAgICAgICAgICAgICAgICAgXCJcIiArIHNlbGVjdGVkVmFsdWVbaV0gPT09IHN0cmluZ1ZhbHVlKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc2VsZWN0ZWRNYXJrZXJBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24oc2VsZWN0ZWRWYWx1ZSwgXCJzZWxlY3QudmFsdWVcIiksXG4gICAgICAgICAgICAgICAgXCJcIiArIHNlbGVjdGVkVmFsdWUgPT09IHN0cmluZ1ZhbHVlICYmXG4gICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzZWxlY3RlZE1hcmtlckF0dHJpYnV0ZSk7XG4gICAgICAgICAgfSBlbHNlIHNlbGVjdGVkICYmIHRhcmdldCRqc2NvbXAkMC5wdXNoKHNlbGVjdGVkTWFya2VyQXR0cmlidXRlKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBwdXNoSW5uZXJIVE1MKHRhcmdldCRqc2NvbXAkMCwgaW5uZXJIVE1MJGpzY29tcCQxLCBjaGlsZHJlbiRqc2NvbXAkMSk7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkcmVuJGpzY29tcCQxO1xuICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKFwidGV4dGFyZWFcIiwgcHJvcHMpO1xuICAgICAgICAgIHZvaWQgMCA9PT0gcHJvcHMudmFsdWUgfHxcbiAgICAgICAgICAgIHZvaWQgMCA9PT0gcHJvcHMuZGVmYXVsdFZhbHVlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRGVmYXVsdFRleHRhcmVhVmFsdWUgfHxcbiAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlRleHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90IGJvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhIGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRUZXh0YXJlYVZhbHVlID0gITApKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwidGV4dGFyZWFcIikpO1xuICAgICAgICAgIHZhciB2YWx1ZSRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBudWxsLFxuICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDIgPSBudWxsLFxuICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMjtcbiAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDIgaW4gcHJvcHMpXG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkMikpIHtcbiAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSRqc2NvbXAkMiA9IHByb3BzW3Byb3BLZXkkanNjb21wJDJdO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDIpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQyKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDIgPSBwcm9wVmFsdWUkanNjb21wJDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gcHJvcFZhbHVlJGpzY29tcCQyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICBcImBkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3QgbWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQyLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkMlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBudWxsID09PSB2YWx1ZSRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gZGVmYXVsdFZhbHVlICYmXG4gICAgICAgICAgICAodmFsdWUkanNjb21wJDAgPSBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIGlmIChudWxsICE9IGNoaWxkcmVuJGpzY29tcCQyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlVzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBpbnN0ZWFkIG9mIHNldHRpbmcgY2hpbGRyZW4gb24gPHRleHRhcmVhPi5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChudWxsICE9IHZhbHVlJGpzY29tcCQwKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIklmIHlvdSBzdXBwbHkgYGRlZmF1bHRWYWx1ZWAgb24gYSA8dGV4dGFyZWE+LCBkbyBub3QgcGFzcyBjaGlsZHJlbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuJGpzY29tcCQyKSkge1xuICAgICAgICAgICAgICBpZiAoMSA8IGNoaWxkcmVuJGpzY29tcCQyLmxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIjx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC5cIik7XG4gICAgICAgICAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKGNoaWxkcmVuJGpzY29tcCQyWzBdKTtcbiAgICAgICAgICAgICAgdmFsdWUkanNjb21wJDAgPSBcIlwiICsgY2hpbGRyZW4kanNjb21wJDJbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihjaGlsZHJlbiRqc2NvbXAkMik7XG4gICAgICAgICAgICB2YWx1ZSRqc2NvbXAkMCA9IFwiXCIgKyBjaGlsZHJlbiRqc2NvbXAkMjtcbiAgICAgICAgICB9XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICBcIlxcblwiID09PSB2YWx1ZSRqc2NvbXAkMFswXSAmJlxuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2gobGVhZGluZ05ld2xpbmUpO1xuICAgICAgICAgIG51bGwgIT09IHZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAoY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSRqc2NvbXAkMCwgXCJ2YWx1ZVwiKSxcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKFwiXCIgKyB2YWx1ZSRqc2NvbXAkMCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgY2FzZSBcImlucHV0XCI6XG4gICAgICAgICAgY2hlY2tDb250cm9sbGVkVmFsdWVQcm9wcyhcImlucHV0XCIsIHByb3BzKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChzdGFydENodW5rRm9yVGFnKFwiaW5wdXRcIikpO1xuICAgICAgICAgIHZhciBuYW1lID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24gPSBudWxsLFxuICAgICAgICAgICAgZm9ybUVuY1R5cGUgPSBudWxsLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCA9IG51bGwsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0ID0gbnVsbCxcbiAgICAgICAgICAgIHZhbHVlJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBjaGVja2VkID0gbnVsbCxcbiAgICAgICAgICAgIGRlZmF1bHRDaGVja2VkID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDM7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQzIGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDMpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDMgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQzXTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQzKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkMykge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJpbnB1dCBpcyBhIHNlbGYtY2xvc2luZyB0YWcgYW5kIG11c3QgbmVpdGhlciBoYXZlIGBjaGlsZHJlbmAgbm9yIHVzZSBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLlwiXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwibmFtZVwiOlxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gcHJvcFZhbHVlJGpzY29tcCQzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtQWN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BY3Rpb24gPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcm1FbmNUeXBlXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1FbmNUeXBlID0gcHJvcFZhbHVlJGpzY29tcCQzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1NZXRob2QgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImZvcm1UYXJnZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybVRhcmdldCA9IHByb3BWYWx1ZSRqc2NvbXAkMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdENoZWNrZWQgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRlZmF1bHRWYWx1ZVwiOlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUkanNjb21wJDAgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoZWNrZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9IHByb3BWYWx1ZSRqc2NvbXAkMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDM7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkMyxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCA9PT0gZm9ybUFjdGlvbiB8fFxuICAgICAgICAgICAgXCJpbWFnZVwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBcInN1Ym1pdFwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvblR5cGUgfHxcbiAgICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25UeXBlID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ0FuIGlucHV0IGNhbiBvbmx5IHNwZWNpZnkgYSBmb3JtQWN0aW9uIGFsb25nIHdpdGggdHlwZT1cInN1Ym1pdFwiIG9yIHR5cGU9XCJpbWFnZVwiLidcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIHZhciBmb3JtRGF0YSA9IHB1c2hGb3JtQWN0aW9uQXR0cmlidXRlKFxuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24sXG4gICAgICAgICAgICBmb3JtRW5jVHlwZSxcbiAgICAgICAgICAgIGZvcm1NZXRob2QsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0LFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICk7XG4gICAgICAgICAgbnVsbCA9PT0gY2hlY2tlZCB8fFxuICAgICAgICAgICAgbnVsbCA9PT0gZGVmYXVsdENoZWNrZWQgfHxcbiAgICAgICAgICAgIGRpZFdhcm5EZWZhdWx0Q2hlY2tlZCB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuIElucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIChzcGVjaWZ5IGVpdGhlciB0aGUgY2hlY2tlZCBwcm9wLCBvciB0aGUgZGVmYXVsdENoZWNrZWQgcHJvcCwgYnV0IG5vdCBib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCBlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86IGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzXCIsXG4gICAgICAgICAgICAgIFwiQSBjb21wb25lbnRcIixcbiAgICAgICAgICAgICAgcHJvcHMudHlwZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIChkaWRXYXJuRGVmYXVsdENoZWNrZWQgPSAhMCkpO1xuICAgICAgICAgIG51bGwgPT09IHZhbHVlJGpzY29tcCQxIHx8XG4gICAgICAgICAgICBudWxsID09PSBkZWZhdWx0VmFsdWUkanNjb21wJDAgfHxcbiAgICAgICAgICAgIGRpZFdhcm5EZWZhdWx0SW5wdXRWYWx1ZSB8fFxuICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggdmFsdWUgYW5kIGRlZmF1bHRWYWx1ZSBwcm9wcy4gSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiBodHRwczovL3JlYWN0LmRldi9saW5rL2NvbnRyb2xsZWQtY29tcG9uZW50c1wiLFxuICAgICAgICAgICAgICBcIkEgY29tcG9uZW50XCIsXG4gICAgICAgICAgICAgIHByb3BzLnR5cGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICAoZGlkV2FybkRlZmF1bHRJbnB1dFZhbHVlID0gITApKTtcbiAgICAgICAgICBudWxsICE9PSBjaGVja2VkXG4gICAgICAgICAgICA/IHB1c2hCb29sZWFuQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJjaGVja2VkXCIsIGNoZWNrZWQpXG4gICAgICAgICAgICA6IG51bGwgIT09IGRlZmF1bHRDaGVja2VkICYmXG4gICAgICAgICAgICAgIHB1c2hCb29sZWFuQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJjaGVja2VkXCIsIGRlZmF1bHRDaGVja2VkKTtcbiAgICAgICAgICBudWxsICE9PSB2YWx1ZSRqc2NvbXAkMVxuICAgICAgICAgICAgPyBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJ2YWx1ZVwiLCB2YWx1ZSRqc2NvbXAkMSlcbiAgICAgICAgICAgIDogbnVsbCAhPT0gZGVmYXVsdFZhbHVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcInZhbHVlXCIsIGRlZmF1bHRWYWx1ZSRqc2NvbXAkMCk7XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1EYXRhICYmXG4gICAgICAgICAgICBmb3JtRGF0YS5mb3JFYWNoKHB1c2hBZGRpdGlvbmFsRm9ybUZpZWxkLCB0YXJnZXQkanNjb21wJDApO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlIFwiYnV0dG9uXCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcImJ1dHRvblwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQzID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMiA9IG51bGwsXG4gICAgICAgICAgICBuYW1lJGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1BY3Rpb24kanNjb21wJDAgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDAgPSBudWxsLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCRqc2NvbXAkMCA9IG51bGwsXG4gICAgICAgICAgICBmb3JtVGFyZ2V0JGpzY29tcCQwID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDQ7XG4gICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQ0IGluIHByb3BzKVxuICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDQpKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDQgPSBwcm9wc1twcm9wS2V5JGpzY29tcCQ0XTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQ0KVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkNCkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQzID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDIgPSBwcm9wVmFsdWUkanNjb21wJDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm5hbWVcIjpcbiAgICAgICAgICAgICAgICAgICAgbmFtZSRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybUFjdGlvblwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtQWN0aW9uJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtRW5jVHlwZVwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtRW5jVHlwZSRqc2NvbXAkMCA9IHByb3BWYWx1ZSRqc2NvbXAkNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZm9ybU1ldGhvZFwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQwID0gcHJvcFZhbHVlJGpzY29tcCQ0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtVGFyZ2V0XCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDAgPSBwcm9wVmFsdWUkanNjb21wJDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcHVzaEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWUkanNjb21wJDRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCA9PT0gZm9ybUFjdGlvbiRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgbnVsbCA9PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBcInN1Ym1pdFwiID09PSBwcm9wcy50eXBlIHx8XG4gICAgICAgICAgICBkaWRXYXJuRm9ybUFjdGlvblR5cGUgfHxcbiAgICAgICAgICAgICgoZGlkV2FybkZvcm1BY3Rpb25UeXBlID0gITApLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgJ0EgYnV0dG9uIGNhbiBvbmx5IHNwZWNpZnkgYSBmb3JtQWN0aW9uIGFsb25nIHdpdGggdHlwZT1cInN1Ym1pdFwiIG9yIG5vIHR5cGUuJ1xuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgdmFyIGZvcm1EYXRhJGpzY29tcCQwID0gcHVzaEZvcm1BY3Rpb25BdHRyaWJ1dGUoXG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMCxcbiAgICAgICAgICAgIGZvcm1FbmNUeXBlJGpzY29tcCQwLFxuICAgICAgICAgICAgZm9ybU1ldGhvZCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICBuYW1lJGpzY29tcCQwXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1EYXRhJGpzY29tcCQwICYmXG4gICAgICAgICAgICBmb3JtRGF0YSRqc2NvbXAkMC5mb3JFYWNoKHB1c2hBZGRpdGlvbmFsRm9ybUZpZWxkLCB0YXJnZXQkanNjb21wJDApO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDIsIGNoaWxkcmVuJGpzY29tcCQzKTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQzKSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkMykpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMSA9IGNoaWxkcmVuJGpzY29tcCQzO1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDE7XG4gICAgICAgIGNhc2UgXCJmb3JtXCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcImZvcm1cIikpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkNCA9IG51bGwsXG4gICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDMgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMSA9IG51bGwsXG4gICAgICAgICAgICBmb3JtRW5jVHlwZSRqc2NvbXAkMSA9IG51bGwsXG4gICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQxID0gbnVsbCxcbiAgICAgICAgICAgIGZvcm1UYXJnZXQkanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNTtcbiAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDUgaW4gcHJvcHMpXG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkNSkpIHtcbiAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSRqc2NvbXAkNSA9IHByb3BzW3Byb3BLZXkkanNjb21wJDVdO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDUpXG4gICAgICAgICAgICAgICAgc3dpdGNoIChwcm9wS2V5JGpzY29tcCQ1KSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDQgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkMyA9IHByb3BWYWx1ZSRqc2NvbXAkNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiYWN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIGZvcm1BY3Rpb24kanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImVuY1R5cGVcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDEgPSBwcm9wVmFsdWUkanNjb21wJDU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm1ldGhvZFwiOlxuICAgICAgICAgICAgICAgICAgICBmb3JtTWV0aG9kJGpzY29tcCQxID0gcHJvcFZhbHVlJGpzY29tcCQ1O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0YXJnZXRcIjpcbiAgICAgICAgICAgICAgICAgICAgZm9ybVRhcmdldCRqc2NvbXAkMSA9IHByb3BWYWx1ZSRqc2NvbXAkNTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQ1LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkNVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZm9ybURhdGEkanNjb21wJDEgPSBudWxsLFxuICAgICAgICAgICAgZm9ybUFjdGlvbk5hbWUgPSBudWxsO1xuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmb3JtQWN0aW9uJGpzY29tcCQxKSB7XG4gICAgICAgICAgICAobnVsbCA9PT0gZm9ybUVuY1R5cGUkanNjb21wJDEgJiYgbnVsbCA9PT0gZm9ybU1ldGhvZCRqc2NvbXAkMSkgfHxcbiAgICAgICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25NZXRob2QgfHxcbiAgICAgICAgICAgICAgKChkaWRXYXJuRm9ybUFjdGlvbk1ldGhvZCA9ICEwKSxcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgZW5jVHlwZSBvciBtZXRob2QgZm9yIGEgZm9ybSB0aGF0IHNwZWNpZmllcyBhIGZ1bmN0aW9uIGFzIHRoZSBhY3Rpb24uIFJlYWN0IHByb3ZpZGVzIHRob3NlIGF1dG9tYXRpY2FsbHkuIFRoZXkgd2lsbCBnZXQgb3ZlcnJpZGRlbi5cIlxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIG51bGwgPT09IGZvcm1UYXJnZXQkanNjb21wJDEgfHxcbiAgICAgICAgICAgICAgZGlkV2FybkZvcm1BY3Rpb25UYXJnZXQgfHxcbiAgICAgICAgICAgICAgKChkaWRXYXJuRm9ybUFjdGlvblRhcmdldCA9ICEwKSxcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBzcGVjaWZ5IGEgdGFyZ2V0IGZvciBhIGZvcm0gdGhhdCBzcGVjaWZpZXMgYSBmdW5jdGlvbiBhcyB0aGUgYWN0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgd2luZG93LlwiXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgdmFyIGN1c3RvbUZpZWxkcyA9IGdldEN1c3RvbUZvcm1GaWVsZHMoXG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgICBmb3JtQWN0aW9uJGpzY29tcCQxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbnVsbCAhPT0gY3VzdG9tRmllbGRzXG4gICAgICAgICAgICAgID8gKChmb3JtQWN0aW9uJGpzY29tcCQxID0gY3VzdG9tRmllbGRzLmFjdGlvbiB8fCBcIlwiKSxcbiAgICAgICAgICAgICAgICAoZm9ybUVuY1R5cGUkanNjb21wJDEgPSBjdXN0b21GaWVsZHMuZW5jVHlwZSksXG4gICAgICAgICAgICAgICAgKGZvcm1NZXRob2QkanNjb21wJDEgPSBjdXN0b21GaWVsZHMubWV0aG9kKSxcbiAgICAgICAgICAgICAgICAoZm9ybVRhcmdldCRqc2NvbXAkMSA9IGN1c3RvbUZpZWxkcy50YXJnZXQpLFxuICAgICAgICAgICAgICAgIChmb3JtRGF0YSRqc2NvbXAkMSA9IGN1c3RvbUZpZWxkcy5kYXRhKSxcbiAgICAgICAgICAgICAgICAoZm9ybUFjdGlvbk5hbWUgPSBjdXN0b21GaWVsZHMubmFtZSkpXG4gICAgICAgICAgICAgIDogKHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhcImFjdGlvblwiKSxcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUFzc2lnbixcbiAgICAgICAgICAgICAgICAgIGFjdGlvbkphdmFTY3JpcHRVUkwsXG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVFbmRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIChmb3JtVGFyZ2V0JGpzY29tcCQxID1cbiAgICAgICAgICAgICAgICAgIGZvcm1NZXRob2QkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgICAgZm9ybUVuY1R5cGUkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgICAgZm9ybUFjdGlvbiRqc2NvbXAkMSA9XG4gICAgICAgICAgICAgICAgICAgIG51bGwpLFxuICAgICAgICAgICAgICAgIGluamVjdEZvcm1SZXBsYXlpbmdSdW50aW1lKHJlc3VtYWJsZVN0YXRlLCByZW5kZXJTdGF0ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBudWxsICE9IGZvcm1BY3Rpb24kanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcImFjdGlvblwiLCBmb3JtQWN0aW9uJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1FbmNUeXBlJGpzY29tcCQxICYmXG4gICAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJlbmNUeXBlXCIsIGZvcm1FbmNUeXBlJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1NZXRob2QkanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcIm1ldGhvZFwiLCBmb3JtTWV0aG9kJGpzY29tcCQxKTtcbiAgICAgICAgICBudWxsICE9IGZvcm1UYXJnZXQkanNjb21wJDEgJiZcbiAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0JGpzY29tcCQwLCBcInRhcmdldFwiLCBmb3JtVGFyZ2V0JGpzY29tcCQxKTtcbiAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICBudWxsICE9PSBmb3JtQWN0aW9uTmFtZSAmJlxuICAgICAgICAgICAgKHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0SGlkZGVuSW5wdXRDaHVuayksXG4gICAgICAgICAgICBwdXNoU3RyaW5nQXR0cmlidXRlKHRhcmdldCRqc2NvbXAkMCwgXCJuYW1lXCIsIGZvcm1BY3Rpb25OYW1lKSxcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyksXG4gICAgICAgICAgICBudWxsICE9IGZvcm1EYXRhJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIGZvcm1EYXRhJGpzY29tcCQxLmZvckVhY2goXG4gICAgICAgICAgICAgICAgcHVzaEFkZGl0aW9uYWxGb3JtRmllbGQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDMsIGNoaWxkcmVuJGpzY29tcCQ0KTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQ0KSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkNCkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMiA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMiA9IGNoaWxkcmVuJGpzY29tcCQ0O1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDI7XG4gICAgICAgIGNhc2UgXCJtZW51aXRlbVwiOlxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoXCJtZW51aXRlbVwiKSk7XG4gICAgICAgICAgZm9yICh2YXIgcHJvcEtleSRqc2NvbXAkNiBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ2KSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQ2ID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkNl07XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkNilcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDYpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwibWVudWl0ZW1zIGNhbm5vdCBoYXZlIGBjaGlsZHJlbmAgbm9yIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDYsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQ2XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcIm9iamVjdFwiKSk7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQ1ID0gbnVsbCxcbiAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNCA9IG51bGwsXG4gICAgICAgICAgICBwcm9wS2V5JGpzY29tcCQ3O1xuICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkNyBpbiBwcm9wcylcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ3KSkge1xuICAgICAgICAgICAgICB2YXIgcHJvcFZhbHVlJGpzY29tcCQ3ID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkN107XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkNylcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDcpIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkNSA9IHByb3BWYWx1ZSRqc2NvbXAkNztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ0ID0gcHJvcFZhbHVlJGpzY29tcCQ3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRhXCI6XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24ocHJvcFZhbHVlJGpzY29tcCQ3LCBcImRhdGFcIik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzYW5pdGl6ZWRWYWx1ZSA9IHNhbml0aXplVVJMKFwiXCIgKyBwcm9wVmFsdWUkanNjb21wJDcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXCJcIiA9PT0gc2FuaXRpemVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGVtcHR5IHN0cmluZyAoXCJcIikgd2FzIHBhc3NlZCB0byB0aGUgJXMgYXR0cmlidXRlLiBUbyBmaXggdGhpcywgZWl0aGVyIGRvIG5vdCByZW5kZXIgdGhlIGVsZW1lbnQgYXQgYWxsIG9yIHBhc3MgbnVsbCB0byAlcyBpbnN0ZWFkIG9mIGFuIGVtcHR5IHN0cmluZy4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkNyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDdcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKFwiZGF0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVBc3NpZ24sXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihzYW5pdGl6ZWRWYWx1ZSkpLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDcsXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlJGpzY29tcCQ3XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgIHB1c2hJbm5lckhUTUwodGFyZ2V0JGpzY29tcCQwLCBpbm5lckhUTUwkanNjb21wJDQsIGNoaWxkcmVuJGpzY29tcCQ1KTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNoaWxkcmVuJGpzY29tcCQ1KSB7XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihjaGlsZHJlbiRqc2NvbXAkNSkpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMyA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMyA9IGNoaWxkcmVuJGpzY29tcCQ1O1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDM7XG4gICAgICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgICAgIHZhciBpbnNlcnRpb25Nb2RlID0gZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlLFxuICAgICAgICAgICAgbm9zY3JpcHRUYWdJblNjb3BlID0gISEoZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDEpO1xuICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBcImNoaWxkcmVuXCIpKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDYgPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICAgICAgY2hpbGQgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuJGpzY29tcCQ2KVxuICAgICAgICAgICAgICAgID8gMiA+IGNoaWxkcmVuJGpzY29tcCQ2Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgPyBjaGlsZHJlbiRqc2NvbXAkNlswXVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgOiBjaGlsZHJlbiRqc2NvbXAkNjtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4kanNjb21wJDYpICYmIDEgPCBjaGlsZHJlbiRqc2NvbXAkNi5sZW5ndGhcbiAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gQXJyYXkgd2l0aCBsZW5ndGggJXMgaW5zdGVhZC4gQnJvd3NlcnMgdHJlYXQgYWxsIGNoaWxkIE5vZGVzIG9mIDx0aXRsZT4gdGFncyBhcyBUZXh0IGNvbnRlbnQgYW5kIFJlYWN0IGV4cGVjdHMgdG8gYmUgYWJsZSB0byBjb252ZXJ0IGBjaGlsZHJlbmAgb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSB3aGljaCBpcyB3aHkgQXJyYXlzIG9mIGxlbmd0aCBncmVhdGVyIHRoYW4gMSBhcmUgbm90IHN1cHBvcnRlZC4gV2hlbiB1c2luZyBKU1ggaXQgY2FuIGJlIGNvbW1vbmcgdG8gY29tYmluZSB0ZXh0IG5vZGVzIGFuZCB2YWx1ZSBub2Rlcy4gRm9yIGV4YW1wbGU6IDx0aXRsZT5oZWxsbyB7bmFtZU9mVXNlcn08L3RpdGxlPi4gV2hpbGUgbm90IGltbWVkaWF0ZWx5IGFwcGFyZW50LCBgY2hpbGRyZW5gIGluIHRoaXMgY2FzZSBpcyBhbiBBcnJheSB3aXRoIGxlbmd0aCAyLiBJZiB5b3VyIGBjaGlsZHJlbmAgcHJvcCBpcyB1c2luZyB0aGlzIGZvcm0gdHJ5IHJld3JpdGluZyBpdCB1c2luZyBhIHRlbXBsYXRlIHN0cmluZzogPHRpdGxlPntgaGVsbG8gJHtuYW1lT2ZVc2VyfWB9PC90aXRsZT4uXCIsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkNi5sZW5ndGhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQgfHwgXCJzeW1ib2xcIiA9PT0gdHlwZW9mIGNoaWxkXG4gICAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlJlYWN0IGV4cGVjdCBjaGlsZHJlbiBvZiA8dGl0bGU+IHRhZ3MgdG8gYmUgYSBzdHJpbmcsIG51bWJlciwgYmlnaW50LCBvciBvYmplY3Qgd2l0aCBhIG5vdmVsIGB0b1N0cmluZ2AgbWV0aG9kIGJ1dCBmb3VuZCAlcyBpbnN0ZWFkLiBCcm93c2VycyB0cmVhdCBhbGwgY2hpbGQgTm9kZXMgb2YgPHRpdGxlPiB0YWdzIGFzIFRleHQgY29udGVudCBhbmQgUmVhY3QgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgY2hpbGRyZW4gb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZS5cIixcbiAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQgPyBcImEgRnVuY3Rpb25cIiA6IFwiYSBTeWJtb2xcIlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogY2hpbGQgJiZcbiAgICAgICAgICAgICAgICAgIGNoaWxkLnRvU3RyaW5nID09PSB7fS50b1N0cmluZyAmJlxuICAgICAgICAgICAgICAgICAgKG51bGwgIT0gY2hpbGQuJCR0eXBlb2ZcbiAgICAgICAgICAgICAgICAgICAgPyBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gb2JqZWN0IHRoYXQgYXBwZWFycyB0byBiZSBhIFJlYWN0IGVsZW1lbnQgd2hpY2ggbmV2ZXIgaW1wbGVtZW50cyBhIHN1aXRhYmxlIGB0b1N0cmluZ2AgbWV0aG9kLiBCcm93c2VycyB0cmVhdCBhbGwgY2hpbGQgTm9kZXMgb2YgPHRpdGxlPiB0YWdzIGFzIFRleHQgY29udGVudCBhbmQgUmVhY3QgZXhwZWN0cyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgY2hpbGRyZW4gb2YgPHRpdGxlPiB0YWdzIHRvIGEgc2luZ2xlIHN0cmluZyB2YWx1ZSB3aGljaCBpcyB3aHkgcmVuZGVyaW5nIFJlYWN0IGVsZW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQuIElmIHRoZSBgY2hpbGRyZW5gIG9mIDx0aXRsZT4gaXMgYSBSZWFjdCBDb21wb25lbnQgdHJ5IG1vdmluZyB0aGUgPHRpdGxlPiB0YWcgaW50byB0aGF0IGNvbXBvbmVudC4gSWYgdGhlIGBjaGlsZHJlbmAgb2YgPHRpdGxlPiBpcyBzb21lIEhUTUwgbWFya3VwIGNoYW5nZSBpdCB0byBiZSBUZXh0IG9ubHkgdG8gYmUgdmFsaWQgSFRNTC5cIlxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWFjdCBleHBlY3RzIHRoZSBgY2hpbGRyZW5gIHByb3Agb2YgPHRpdGxlPiB0YWdzIHRvIGJlIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCwgb3Igb2JqZWN0IHdpdGggYSBub3ZlbCBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgYW4gb2JqZWN0IHRoYXQgZG9lcyBub3QgaW1wbGVtZW50IGEgc3VpdGFibGUgYHRvU3RyaW5nYCBtZXRob2QuIEJyb3dzZXJzIHRyZWF0IGFsbCBjaGlsZCBOb2RlcyBvZiA8dGl0bGU+IHRhZ3MgYXMgVGV4dCBjb250ZW50IGFuZCBSZWFjdCBleHBlY3RzIHRvIGJlIGFibGUgdG8gY29udmVydCBjaGlsZHJlbiBvZiA8dGl0bGU+IHRhZ3MgdG8gYSBzaW5nbGUgc3RyaW5nIHZhbHVlLiBVc2luZyB0aGUgZGVmYXVsdCBgdG9TdHJpbmdgIG1ldGhvZCBhdmFpbGFibGUgb24gZXZlcnkgb2JqZWN0IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuIENvbnNpZGVyIHdoZXRoZXIgdGhlIGBjaGlsZHJlbmAgb2YgdGhpcyA8dGl0bGU+IGlzIGFuIG9iamVjdCBpbiBlcnJvciBhbmQgY2hhbmdlIGl0IHRvIGEgc3RyaW5nIG9yIG51bWJlciB2YWx1ZSBpZiBzby4gT3RoZXJ3aXNlIGltcGxlbWVudCBhIGB0b1N0cmluZ2AgbWV0aG9kIHRoYXQgUmVhY3QgY2FuIHVzZSB0byBwcm9kdWNlIGEgdmFsaWQgPHRpdGxlPi5cIlxuICAgICAgICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpbnNlcnRpb25Nb2RlID09PSBTVkdfTU9ERSB8fFxuICAgICAgICAgICAgbm9zY3JpcHRUYWdJblNjb3BlIHx8XG4gICAgICAgICAgICBudWxsICE9IHByb3BzLml0ZW1Qcm9wXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNCA9IHB1c2hUaXRsZUltcGwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaXNGYWxsYmFja1xuICAgICAgICAgICAgICA/IChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDQgPSBudWxsKVxuICAgICAgICAgICAgICA6IChwdXNoVGl0bGVJbXBsKHJlbmRlclN0YXRlLmhvaXN0YWJsZUNodW5rcywgcHJvcHMpLFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDQgPSB2b2lkIDApKTtcbiAgICAgICAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ0O1xuICAgICAgICBjYXNlIFwibGlua1wiOlxuICAgICAgICAgIHZhciByZWwgPSBwcm9wcy5yZWwsXG4gICAgICAgICAgICBocmVmID0gcHJvcHMuaHJlZixcbiAgICAgICAgICAgIHByZWNlZGVuY2UgPSBwcm9wcy5wcmVjZWRlbmNlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gU1ZHX01PREUgfHxcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQudGFnU2NvcGUgJiAxIHx8XG4gICAgICAgICAgICBudWxsICE9IHByb3BzLml0ZW1Qcm9wIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgcmVsIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgaHJlZiB8fFxuICAgICAgICAgICAgXCJcIiA9PT0gaHJlZlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgXCJzdHlsZXNoZWV0XCIgPT09IHJlbCAmJlxuICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMucHJlY2VkZW5jZSAmJlxuICAgICAgICAgICAgICAoKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIGhyZWYpIHx8XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgICdSZWFjdCBlbmNvdW50ZXJlZCBhIGA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgLi4uLz5gIHdpdGggYSBgcHJlY2VkZW5jZWAgcHJvcCBhbmQgZXhwZWN0ZWQgdGhlIGBocmVmYCBwcm9wIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZyBidXQgZWNvdW50ZXJlZCAlcyBpbnN0ZWFkLiBJZiB5b3VyIGludGVudCB3YXMgdG8gaGF2ZSBSZWFjdCBob2lzdCBhbmQgZGVkdXBsY2lhdGUgdGhpcyBzdHlsZXNoZWV0IHVzaW5nIHRoZSBgcHJlY2VkZW5jZWAgcHJvcCBlbnN1cmUgdGhlcmUgaXMgYSBub24tZW1wdHkgc3RyaW5nIGBocmVmYCBwcm9wIGFzIHdlbGwsIG90aGVyd2lzZSByZW1vdmUgdGhlIGBwcmVjZWRlbmNlYCBwcm9wLicsXG4gICAgICAgICAgICAgICAgICBudWxsID09PSBocmVmXG4gICAgICAgICAgICAgICAgICAgID8gXCJgbnVsbGBcIlxuICAgICAgICAgICAgICAgICAgICA6IHZvaWQgMCA9PT0gaHJlZlxuICAgICAgICAgICAgICAgICAgICAgID8gXCJgdW5kZWZpbmVkYFwiXG4gICAgICAgICAgICAgICAgICAgICAgOiBcIlwiID09PSBocmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYW4gZW1wdHkgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ3NvbWV0aGluZyB3aXRoIHR5cGUgXCInICsgdHlwZW9mIGhyZWYgKyAnXCInXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICBwdXNoTGlua0ltcGwodGFyZ2V0JGpzY29tcCQwLCBwcm9wcyk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ1ID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2UgaWYgKFwic3R5bGVzaGVldFwiID09PSBwcm9wcy5yZWwpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcmVjZWRlbmNlIHx8XG4gICAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgcHJvcHMub25Mb2FkIHx8XG4gICAgICAgICAgICAgIHByb3BzLm9uRXJyb3JcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByZWNlZGVuY2UpXG4gICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcHMuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAnUmVhY3QgZW5jb3VudGVyZWQgYSBgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIC4uLi8+YCB3aXRoIGEgYHByZWNlZGVuY2VgIHByb3AgYW5kIGEgYGRpc2FibGVkYCBwcm9wLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIGBkaXNhYmxlZGAgcHJvcCBpbmRpY2F0ZXMgYW4gaW50ZW50IHRvIG1hbmFnZSB0aGUgc3R5bGVzaGVldCBhY3RpdmUgc3RhdGUgZnJvbSB5b3VyIGZyb20geW91ciBDb21wb25lbnQgY29kZSBhbmQgUmVhY3Qgd2lsbCBub3QgaG9pc3Qgb3IgZGVkdXBsaWNhdGUgdGhpcyBzdHlsZXNoZWV0LiBJZiB5b3VyIGludGVudCB3YXMgdG8gaGF2ZSBSZWFjdCBob2lzdCBhbmQgZGVkdXBsY2lhdGUgdGhpcyBzdHlsZXNoZWV0IHVzaW5nIHRoZSBgcHJlY2VkZW5jZWAgcHJvcCByZW1vdmUgdGhlIGBkaXNhYmxlZGAgcHJvcCwgb3RoZXJ3aXNlIHJlbW92ZSB0aGUgYHByZWNlZGVuY2VgIHByb3AuJ1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wcy5vbkxvYWQgfHwgcHJvcHMub25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgdmFyIHByb3BEZXNjcmlwdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTG9hZCAmJiBwcm9wcy5vbkVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgPyBcImBvbkxvYWRgIGFuZCBgb25FcnJvcmAgcHJvcHNcIlxuICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHMub25Mb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiYG9uTG9hZGAgcHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA6IFwiYG9uRXJyb3JgIHByb3BcIjtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdSZWFjdCBlbmNvdW50ZXJlZCBhIGA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgLi4uLz5gIHdpdGggYSBgcHJlY2VkZW5jZWAgcHJvcCBhbmQgJXMuIFRoZSBwcmVzZW5jZSBvZiBsb2FkaW5nIGFuZCBlcnJvciBoYW5kbGVycyBpbmRpY2F0ZXMgYW4gaW50ZW50IHRvIG1hbmFnZSB0aGUgc3R5bGVzaGVldCBsb2FkaW5nIHN0YXRlIGZyb20geW91ciBmcm9tIHlvdXIgQ29tcG9uZW50IGNvZGUgYW5kIFJlYWN0IHdpbGwgbm90IGhvaXN0IG9yIGRlZHVwbGljYXRlIHRoaXMgc3R5bGVzaGVldC4gSWYgeW91ciBpbnRlbnQgd2FzIHRvIGhhdmUgUmVhY3QgaG9pc3QgYW5kIGRlZHVwbGNpYXRlIHRoaXMgc3R5bGVzaGVldCB1c2luZyB0aGUgYHByZWNlZGVuY2VgIHByb3AgcmVtb3ZlIHRoZSAlcywgb3RoZXJ3aXNlIHJlbW92ZSB0aGUgYHByZWNlZGVuY2VgIHByb3AuJyxcbiAgICAgICAgICAgICAgICAgICAgcHJvcERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBwcm9wRGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDUgPSBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgIHByb3BzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgc3R5bGVRdWV1ZSA9IHJlbmRlclN0YXRlLnN0eWxlcy5nZXQocHJlY2VkZW5jZSksXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSA9IHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KFxuICAgICAgICAgICAgICAgICAgaHJlZlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgID8gcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl1cbiAgICAgICAgICAgICAgICAgIDogdm9pZCAwO1xuICAgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0ZSAhPT0gRVhJU1RTKSB7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZl0gPSBFWElTVFM7XG4gICAgICAgICAgICAgICAgc3R5bGVRdWV1ZSB8fFxuICAgICAgICAgICAgICAgICAgKChzdHlsZVF1ZXVlID0ge1xuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHByZWNlZGVuY2UpKSxcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBocmVmczogW10sXG4gICAgICAgICAgICAgICAgICAgIHNoZWV0czogbmV3IE1hcCgpXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnN0eWxlcy5zZXQocHJlY2VkZW5jZSwgc3R5bGVRdWV1ZSkpO1xuICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgICAgIHN0YXRlOiBQRU5ESU5HJDEsXG4gICAgICAgICAgICAgICAgICBwcm9wczogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBcImRhdGEtcHJlY2VkZW5jZVwiOiBwcm9wcy5wcmVjZWRlbmNlLFxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBudWxsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgIDIgPT09IHJlc291cmNlU3RhdGUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGFkb3B0UHJlbG9hZENyZWRlbnRpYWxzKHJlc291cmNlLnByb3BzLCByZXNvdXJjZVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHZhciBwcmVsb2FkUmVzb3VyY2UgPVxuICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5zdHlsZXNoZWV0cy5nZXQoaHJlZik7XG4gICAgICAgICAgICAgICAgICBwcmVsb2FkUmVzb3VyY2UgJiYgMCA8IHByZWxvYWRSZXNvdXJjZS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyAocHJlbG9hZFJlc291cmNlLmxlbmd0aCA9IDApXG4gICAgICAgICAgICAgICAgICAgIDogKHJlc291cmNlLnN0YXRlID0gUFJFTE9BREVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuc2V0KGhyZWYsIHJlc291cmNlKTtcbiAgICAgICAgICAgICAgICBob2lzdGFibGVTdGF0ZSAmJiBob2lzdGFibGVTdGF0ZS5zdHlsZXNoZWV0cy5hZGQocmVzb3VyY2UpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0eWxlUXVldWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3Jlc291cmNlID0gc3R5bGVRdWV1ZS5zaGVldHMuZ2V0KGhyZWYpO1xuICAgICAgICAgICAgICAgIF9yZXNvdXJjZSAmJlxuICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGUgJiZcbiAgICAgICAgICAgICAgICAgIGhvaXN0YWJsZVN0YXRlLnN0eWxlc2hlZXRzLmFkZChfcmVzb3VyY2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRleHRFbWJlZGRlZCAmJiB0YXJnZXQkanNjb21wJDAucHVzaCh0ZXh0U2VwYXJhdG9yKTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ1ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcm9wcy5vbkxvYWQgfHwgcHJvcHMub25FcnJvclxuICAgICAgICAgICAgICA/IChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDUgPSBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICBwcm9wc1xuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogKHRleHRFbWJlZGRlZCAmJiB0YXJnZXQkanNjb21wJDAucHVzaCh0ZXh0U2VwYXJhdG9yKSxcbiAgICAgICAgICAgICAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ1ID0gaXNGYWxsYmFja1xuICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICA6IHB1c2hMaW5rSW1wbChyZW5kZXJTdGF0ZS5ob2lzdGFibGVDaHVua3MsIHByb3BzKSkpO1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDU7XG4gICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICB2YXIgYXN5bmNQcm9wID0gcHJvcHMuYXN5bmM7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHByb3BzLnNyYyB8fFxuICAgICAgICAgICAgIXByb3BzLnNyYyB8fFxuICAgICAgICAgICAgIWFzeW5jUHJvcCB8fFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgYXN5bmNQcm9wIHx8XG4gICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgYXN5bmNQcm9wIHx8XG4gICAgICAgICAgICBwcm9wcy5vbkxvYWQgfHxcbiAgICAgICAgICAgIHByb3BzLm9uRXJyb3IgfHxcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gU1ZHX01PREUgfHxcbiAgICAgICAgICAgIGZvcm1hdENvbnRleHQudGFnU2NvcGUgJiAxIHx8XG4gICAgICAgICAgICBudWxsICE9IHByb3BzLml0ZW1Qcm9wXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNiA9IHB1c2hTY3JpcHRJbXBsKFxuICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgIHByb3BzXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGtleSA9IHByb3BzLnNyYztcbiAgICAgICAgICAgIGlmIChcIm1vZHVsZVwiID09PSBwcm9wcy50eXBlKSB7XG4gICAgICAgICAgICAgIHZhciByZXNvdXJjZXMgPSByZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXM7XG4gICAgICAgICAgICAgIHZhciBwcmVsb2FkcyA9IHJlbmRlclN0YXRlLnByZWxvYWRzLm1vZHVsZVNjcmlwdHM7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgKHJlc291cmNlcyA9IHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlcyksXG4gICAgICAgICAgICAgICAgKHByZWxvYWRzID0gcmVuZGVyU3RhdGUucHJlbG9hZHMuc2NyaXB0cyk7XG4gICAgICAgICAgICB2YXIgcmVzb3VyY2VTdGF0ZSRqc2NvbXAkMCA9IHJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShrZXkpXG4gICAgICAgICAgICAgID8gcmVzb3VyY2VzW2tleV1cbiAgICAgICAgICAgICAgOiB2b2lkIDA7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0ZSRqc2NvbXAkMCAhPT0gRVhJU1RTKSB7XG4gICAgICAgICAgICAgIHJlc291cmNlc1trZXldID0gRVhJU1RTO1xuICAgICAgICAgICAgICB2YXIgc2NyaXB0UHJvcHMgPSBwcm9wcztcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlU3RhdGUkanNjb21wJDApIHtcbiAgICAgICAgICAgICAgICAyID09PSByZXNvdXJjZVN0YXRlJGpzY29tcCQwLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgKChzY3JpcHRQcm9wcyA9IGFzc2lnbih7fSwgcHJvcHMpKSxcbiAgICAgICAgICAgICAgICAgIGFkb3B0UHJlbG9hZENyZWRlbnRpYWxzKHNjcmlwdFByb3BzLCByZXNvdXJjZVN0YXRlJGpzY29tcCQwKSk7XG4gICAgICAgICAgICAgICAgdmFyIHByZWxvYWRSZXNvdXJjZSRqc2NvbXAkMCA9IHByZWxvYWRzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIHByZWxvYWRSZXNvdXJjZSRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgKHByZWxvYWRSZXNvdXJjZSRqc2NvbXAkMC5sZW5ndGggPSAwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgcmVzb3VyY2UkanNjb21wJDAgPSBbXTtcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuc2NyaXB0cy5hZGQocmVzb3VyY2UkanNjb21wJDApO1xuICAgICAgICAgICAgICBwdXNoU2NyaXB0SW1wbChyZXNvdXJjZSRqc2NvbXAkMCwgc2NyaXB0UHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dEVtYmVkZGVkICYmIHRhcmdldCRqc2NvbXAkMC5wdXNoKHRleHRTZXBhcmF0b3IpO1xuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ2ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNjtcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgdmFyIGluc2VydGlvbk1vZGUkanNjb21wJDAgPSBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUsXG4gICAgICAgICAgICBub3NjcmlwdFRhZ0luU2NvcGUkanNjb21wJDAgPSAhIShmb3JtYXRDb250ZXh0LnRhZ1Njb3BlICYgMSk7XG4gICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIFwiY2hpbGRyZW5cIikpIHtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkNyA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgICAgICBjaGlsZCRqc2NvbXAkMCA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4kanNjb21wJDcpXG4gICAgICAgICAgICAgICAgPyAyID4gY2hpbGRyZW4kanNjb21wJDcubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuJGpzY29tcCQ3WzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICA6IGNoaWxkcmVuJGpzY29tcCQ3O1xuICAgICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNoaWxkJGpzY29tcCQwIHx8XG4gICAgICAgICAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiBjaGlsZCRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGNoaWxkJGpzY29tcCQwKSkgJiZcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIlJlYWN0IGV4cGVjdCBjaGlsZHJlbiBvZiA8c3R5bGU+IHRhZ3MgdG8gYmUgYSBzdHJpbmcsIG51bWJlciwgb3Igb2JqZWN0IHdpdGggYSBgdG9TdHJpbmdgIG1ldGhvZCBidXQgZm91bmQgJXMgaW5zdGVhZC4gSW4gYnJvd3NlcnMgc3R5bGUgRWxlbWVudHMgY2FuIG9ubHkgaGF2ZSBgVGV4dGAgTm9kZXMgYXMgY2hpbGRyZW4uXCIsXG4gICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGQkanNjb21wJDBcbiAgICAgICAgICAgICAgICAgID8gXCJhIEZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIDogXCJzeW1ib2xcIiA9PT0gdHlwZW9mIGNoaWxkJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgID8gXCJhIFN5Ym1vbFwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJhbiBBcnJheVwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBwcmVjZWRlbmNlJGpzY29tcCQwID0gcHJvcHMucHJlY2VkZW5jZSxcbiAgICAgICAgICAgIGhyZWYkanNjb21wJDAgPSBwcm9wcy5ocmVmO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGluc2VydGlvbk1vZGUkanNjb21wJDAgPT09IFNWR19NT0RFIHx8XG4gICAgICAgICAgICBub3NjcmlwdFRhZ0luU2NvcGUkanNjb21wJDAgfHxcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuaXRlbVByb3AgfHxcbiAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcmVjZWRlbmNlJGpzY29tcCQwIHx8XG4gICAgICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgaHJlZiRqc2NvbXAkMCB8fFxuICAgICAgICAgICAgXCJcIiA9PT0gaHJlZiRqc2NvbXAkMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RhcnRDaHVua0ZvclRhZyhcInN0eWxlXCIpKTtcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkOCA9IG51bGwsXG4gICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNSA9IG51bGwsXG4gICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDg7XG4gICAgICAgICAgICBmb3IgKHByb3BLZXkkanNjb21wJDggaW4gcHJvcHMpXG4gICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ4KSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDggPSBwcm9wc1twcm9wS2V5JGpzY29tcCQ4XTtcbiAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDgpXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDggPSBwcm9wVmFsdWUkanNjb21wJDg7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNSA9IHByb3BWYWx1ZSRqc2NvbXAkODtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICBwdXNoQXR0cmlidXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkOCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkOFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgICAgdmFyIGNoaWxkJGpzY29tcCQxID0gQXJyYXkuaXNBcnJheShjaGlsZHJlbiRqc2NvbXAkOClcbiAgICAgICAgICAgICAgPyAyID4gY2hpbGRyZW4kanNjb21wJDgubGVuZ3RoXG4gICAgICAgICAgICAgICAgPyBjaGlsZHJlbiRqc2NvbXAkOFswXVxuICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICA6IGNoaWxkcmVuJGpzY29tcCQ4O1xuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY2hpbGQkanNjb21wJDEgJiZcbiAgICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIGNoaWxkJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGNoaWxkJGpzY29tcCQxICYmXG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gY2hpbGQkanNjb21wJDEgJiZcbiAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVTdHlsZVRleHRDb250ZW50KGNoaWxkJGpzY29tcCQxKSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHB1c2hJbm5lckhUTUwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ1LFxuICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKGVuZENodW5rRm9yVGFnKFwic3R5bGVcIikpO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkNyA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhyZWYkanNjb21wJDAuaW5jbHVkZXMoXCIgXCIpICYmXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgJ1JlYWN0IGV4cGVjdGVkIHRoZSBgaHJlZmAgcHJvcCBmb3IgYSA8c3R5bGU+IHRhZyBvcHRpbmcgaW50byBob2lzdGluZyBzZW1hbnRpY3MgdXNpbmcgdGhlIGBwcmVjZWRlbmNlYCBwcm9wIHRvIG5vdCBoYXZlIGFueSBzcGFjZXMgYnV0IGVjb3VudGVyZWQgc3BhY2VzIGluc3RlYWQuIHVzaW5nIHNwYWNlcyBpbiB0aGlzIHByb3Agd2lsbCBjYXVzZSBoeWRyYXRpb24gb2YgdGhpcyBzdHlsZSB0byBmYWlsIG9uIHRoZSBjbGllbnQuIFRoZSBocmVmIGZvciB0aGUgPHN0eWxlPiB3aGVyZSB0aGlzIG9jdXJyZWQgaXMgXCIlc1wiLicsXG4gICAgICAgICAgICAgICAgaHJlZiRqc2NvbXAkMFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdmFyIHN0eWxlUXVldWUkanNjb21wJDAgPVxuICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnN0eWxlcy5nZXQocHJlY2VkZW5jZSRqc2NvbXAkMCksXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUkanNjb21wJDEgPVxuICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYkanNjb21wJDApXG4gICAgICAgICAgICAgICAgICA/IHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzW2hyZWYkanNjb21wJDBdXG4gICAgICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZVN0YXRlJGpzY29tcCQxICE9PSBFWElTVFMpIHtcbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXNbaHJlZiRqc2NvbXAkMF0gPSBFWElTVFM7XG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUkanNjb21wJDEgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ1JlYWN0IGVuY291bnRlcmVkIGEgaG9pc3RhYmxlIHN0eWxlIHRhZyBmb3IgdGhlIHNhbWUgaHJlZiBhcyBhIHByZWxvYWQ6IFwiJXNcIi4gV2hlbiB1c2luZyBhIHN0eWxlIHRhZyB0byBpbmxpbmUgc3R5bGVzIHlvdSBzaG91bGQgbm90IGFsc28gcHJlbG9hZCBpdCBhcyBhIHN0eWxzaGVldC4nLFxuICAgICAgICAgICAgICAgICAgaHJlZiRqc2NvbXAkMFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHN0eWxlUXVldWUkanNjb21wJDBcbiAgICAgICAgICAgICAgICA/IHN0eWxlUXVldWUkanNjb21wJDAuaHJlZnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihocmVmJGpzY29tcCQwKSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6ICgoc3R5bGVRdWV1ZSRqc2NvbXAkMCA9IHtcbiAgICAgICAgICAgICAgICAgICAgcHJlY2VkZW5jZTogc3RyaW5nVG9DaHVuayhcbiAgICAgICAgICAgICAgICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3NlcihwcmVjZWRlbmNlJGpzY29tcCQwKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBydWxlczogW10sXG4gICAgICAgICAgICAgICAgICAgIGhyZWZzOiBbc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihocmVmJGpzY29tcCQwKSldLFxuICAgICAgICAgICAgICAgICAgICBzaGVldHM6IG5ldyBNYXAoKVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5zdHlsZXMuc2V0KFxuICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVF1ZXVlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHN0eWxlUXVldWUkanNjb21wJDAucnVsZXMsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4kanNjb21wJDkgPSBudWxsLFxuICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkNiA9IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvcEtleSRqc2NvbXAkOTtcbiAgICAgICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQ5IGluIHByb3BzKVxuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5JGpzY29tcCQ5KSkge1xuICAgICAgICAgICAgICAgICAgdmFyIHByb3BWYWx1ZSRqc2NvbXAkOSA9IHByb3BzW3Byb3BLZXkkanNjb21wJDldO1xuICAgICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJGpzY29tcCQ5KVxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQ5ID0gcHJvcFZhbHVlJGpzY29tcCQ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDYgPSBwcm9wVmFsdWUkanNjb21wJDk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBjaGlsZCRqc2NvbXAkMiA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4kanNjb21wJDkpXG4gICAgICAgICAgICAgICAgPyAyID4gY2hpbGRyZW4kanNjb21wJDkubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IGNoaWxkcmVuJGpzY29tcCQ5WzBdXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICA6IGNoaWxkcmVuJGpzY29tcCQ5O1xuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjaGlsZCRqc2NvbXAkMiAmJlxuICAgICAgICAgICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiBjaGlsZCRqc2NvbXAkMiAmJlxuICAgICAgICAgICAgICAgIG51bGwgIT09IGNoaWxkJGpzY29tcCQyICYmXG4gICAgICAgICAgICAgICAgdm9pZCAwICE9PSBjaGlsZCRqc2NvbXAkMiAmJlxuICAgICAgICAgICAgICAgIHRhcmdldC5wdXNoKFxuICAgICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVTdHlsZVRleHRDb250ZW50KGNoaWxkJGpzY29tcCQyKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MJGpzY29tcCQ2LCBjaGlsZHJlbiRqc2NvbXAkOSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdHlsZVF1ZXVlJGpzY29tcCQwICYmXG4gICAgICAgICAgICAgIGhvaXN0YWJsZVN0YXRlICYmXG4gICAgICAgICAgICAgIGhvaXN0YWJsZVN0YXRlLnN0eWxlcy5hZGQoc3R5bGVRdWV1ZSRqc2NvbXAkMCk7XG4gICAgICAgICAgICB0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0JGpzY29tcCQwLnB1c2godGV4dFNlcGFyYXRvcik7XG4gICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDcgPSB2b2lkIDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDc7XG4gICAgICAgIGNhc2UgXCJtZXRhXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBTVkdfTU9ERSB8fFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC50YWdTY29wZSAmIDEgfHxcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcHMuaXRlbVByb3BcbiAgICAgICAgICApXG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ4ID0gcHVzaFNlbGZDbG9zaW5nKFxuICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcIm1ldGFcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICB0ZXh0RW1iZWRkZWQgJiYgdGFyZ2V0JGpzY29tcCQwLnB1c2godGV4dFNlcGFyYXRvciksXG4gICAgICAgICAgICAgIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDggPSBpc0ZhbGxiYWNrXG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuY2hhclNldFxuICAgICAgICAgICAgICAgICAgPyBwdXNoU2VsZkNsb3NpbmcocmVuZGVyU3RhdGUuY2hhcnNldENodW5rcywgcHJvcHMsIFwibWV0YVwiKVxuICAgICAgICAgICAgICAgICAgOiBcInZpZXdwb3J0XCIgPT09IHByb3BzLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBwdXNoU2VsZkNsb3NpbmcocmVuZGVyU3RhdGUudmlld3BvcnRDaHVua3MsIHByb3BzLCBcIm1ldGFcIilcbiAgICAgICAgICAgICAgICAgICAgOiBwdXNoU2VsZkNsb3NpbmcoXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5ob2lzdGFibGVDaHVua3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWV0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgcmV0dXJuIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkODtcbiAgICAgICAgY2FzZSBcImxpc3RpbmdcIjpcbiAgICAgICAgY2FzZSBcInByZVwiOlxuICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodHlwZSkpO1xuICAgICAgICAgIHZhciBjaGlsZHJlbiRqc2NvbXAkMTAgPSBudWxsLFxuICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ3ID0gbnVsbCxcbiAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDEwO1xuICAgICAgICAgIGZvciAocHJvcEtleSRqc2NvbXAkMTAgaW4gcHJvcHMpXG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSRqc2NvbXAkMTApKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDEwID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkMTBdO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUkanNjb21wJDEwKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSRqc2NvbXAkMTApIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMTAgPSBwcm9wVmFsdWUkanNjb21wJDEwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUwkanNjb21wJDcgPSBwcm9wVmFsdWUkanNjb21wJDEwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHB1c2hBdHRyaWJ1dGUoXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDEwLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkMTBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gICAgICAgICAgaWYgKG51bGwgIT0gaW5uZXJIVE1MJGpzY29tcCQ3KSB7XG4gICAgICAgICAgICBpZiAobnVsbCAhPSBjaGlsZHJlbiRqc2NvbXAkMTApXG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIGlubmVySFRNTCRqc2NvbXAkNyB8fFxuICAgICAgICAgICAgICAhKFwiX19odG1sXCIgaW4gaW5uZXJIVE1MJGpzY29tcCQ3KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBcImBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVzdCBiZSBpbiB0aGUgZm9ybSBge19faHRtbDogLi4ufWAuIFBsZWFzZSB2aXNpdCBodHRwczovL3JlYWN0LmRldi9saW5rL2Rhbmdlcm91c2x5LXNldC1pbm5lci1odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB2YXIgaHRtbCA9IGlubmVySFRNTCRqc2NvbXAkNy5fX2h0bWw7XG4gICAgICAgICAgICBudWxsICE9PSBodG1sICYmXG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gaHRtbCAmJlxuICAgICAgICAgICAgICAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGh0bWwgJiYgMCA8IGh0bWwubGVuZ3RoICYmIFwiXFxuXCIgPT09IGh0bWxbMF1cbiAgICAgICAgICAgICAgICA/IHRhcmdldCRqc2NvbXAkMC5wdXNoKGxlYWRpbmdOZXdsaW5lLCBzdHJpbmdUb0NodW5rKGh0bWwpKVxuICAgICAgICAgICAgICAgIDogKGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKGh0bWwpLFxuICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goc3RyaW5nVG9DaHVuayhcIlwiICsgaHRtbCkpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBjaGlsZHJlbiRqc2NvbXAkMTAgJiZcbiAgICAgICAgICAgIFwiXFxuXCIgPT09IGNoaWxkcmVuJGpzY29tcCQxMFswXSAmJlxuICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2gobGVhZGluZ05ld2xpbmUpO1xuICAgICAgICAgIHJldHVybiBjaGlsZHJlbiRqc2NvbXAkMTA7XG4gICAgICAgIGNhc2UgXCJpbWdcIjpcbiAgICAgICAgICB2YXIgc3JjID0gcHJvcHMuc3JjLFxuICAgICAgICAgICAgc3JjU2V0ID0gcHJvcHMuc3JjU2V0O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIFwibGF6eVwiID09PSBwcm9wcy5sb2FkaW5nIHx8XG4gICAgICAgICAgICAgICghc3JjICYmICFzcmNTZXQpIHx8XG4gICAgICAgICAgICAgIChcInN0cmluZ1wiICE9PSB0eXBlb2Ygc3JjICYmIG51bGwgIT0gc3JjKSB8fFxuICAgICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHNyY1NldCAmJiBudWxsICE9IHNyY1NldClcbiAgICAgICAgICAgICkgJiZcbiAgICAgICAgICAgIFwibG93XCIgIT09IHByb3BzLmZldGNoUHJpb3JpdHkgJiZcbiAgICAgICAgICAgICExID09PSAhIShmb3JtYXRDb250ZXh0LnRhZ1Njb3BlICYgMykgJiZcbiAgICAgICAgICAgIChcInN0cmluZ1wiICE9PSB0eXBlb2Ygc3JjIHx8XG4gICAgICAgICAgICAgIFwiOlwiICE9PSBzcmNbNF0gfHxcbiAgICAgICAgICAgICAgKFwiZFwiICE9PSBzcmNbMF0gJiYgXCJEXCIgIT09IHNyY1swXSkgfHxcbiAgICAgICAgICAgICAgKFwiYVwiICE9PSBzcmNbMV0gJiYgXCJBXCIgIT09IHNyY1sxXSkgfHxcbiAgICAgICAgICAgICAgKFwidFwiICE9PSBzcmNbMl0gJiYgXCJUXCIgIT09IHNyY1syXSkgfHxcbiAgICAgICAgICAgICAgKFwiYVwiICE9PSBzcmNbM10gJiYgXCJBXCIgIT09IHNyY1szXSkpICYmXG4gICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHNyY1NldCB8fFxuICAgICAgICAgICAgICBcIjpcIiAhPT0gc3JjU2V0WzRdIHx8XG4gICAgICAgICAgICAgIChcImRcIiAhPT0gc3JjU2V0WzBdICYmIFwiRFwiICE9PSBzcmNTZXRbMF0pIHx8XG4gICAgICAgICAgICAgIChcImFcIiAhPT0gc3JjU2V0WzFdICYmIFwiQVwiICE9PSBzcmNTZXRbMV0pIHx8XG4gICAgICAgICAgICAgIChcInRcIiAhPT0gc3JjU2V0WzJdICYmIFwiVFwiICE9PSBzcmNTZXRbMl0pIHx8XG4gICAgICAgICAgICAgIChcImFcIiAhPT0gc3JjU2V0WzNdICYmIFwiQVwiICE9PSBzcmNTZXRbM10pKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIHNpemVzID0gXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByb3BzLnNpemVzID8gcHJvcHMuc2l6ZXMgOiB2b2lkIDAsXG4gICAgICAgICAgICAgIGtleSRqc2NvbXAkMCA9IHNyY1NldCA/IHNyY1NldCArIFwiXFxuXCIgKyAoc2l6ZXMgfHwgXCJcIikgOiBzcmMsXG4gICAgICAgICAgICAgIHByb21vdGFibGVQcmVsb2FkcyA9IHJlbmRlclN0YXRlLnByZWxvYWRzLmltYWdlcyxcbiAgICAgICAgICAgICAgcmVzb3VyY2UkanNjb21wJDEgPSBwcm9tb3RhYmxlUHJlbG9hZHMuZ2V0KGtleSRqc2NvbXAkMCk7XG4gICAgICAgICAgICBpZiAocmVzb3VyY2UkanNjb21wJDEpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIFwiaGlnaFwiID09PSBwcm9wcy5mZXRjaFByaW9yaXR5IHx8XG4gICAgICAgICAgICAgICAgMTAgPiByZW5kZXJTdGF0ZS5oaWdoSW1hZ2VQcmVsb2Fkcy5zaXplXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBwcm9tb3RhYmxlUHJlbG9hZHMuZGVsZXRlKGtleSRqc2NvbXAkMCksXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5oaWdoSW1hZ2VQcmVsb2Fkcy5hZGQocmVzb3VyY2UkanNjb21wJDEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgIXJlc3VtYWJsZVN0YXRlLmltYWdlUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGtleSRqc2NvbXAkMClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZS5pbWFnZVJlc291cmNlc1trZXkkanNjb21wJDBdID0gUFJFTE9BRF9OT19DUkVEUztcbiAgICAgICAgICAgICAgdmFyIGlucHV0ID0gcHJvcHMuY3Jvc3NPcmlnaW47XG4gICAgICAgICAgICAgIHZhciBjcm9zc09yaWdpbiA9XG4gICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGlucHV0XG4gICAgICAgICAgICAgICAgICA/IFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IGlucHV0XG4gICAgICAgICAgICAgICAgICAgID8gaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgICAgdmFyIGhlYWRlcnMgPSByZW5kZXJTdGF0ZS5oZWFkZXJzLFxuICAgICAgICAgICAgICAgIGhlYWRlcjtcbiAgICAgICAgICAgICAgaGVhZGVycyAmJlxuICAgICAgICAgICAgICAwIDwgaGVhZGVycy5yZW1haW5pbmdDYXBhY2l0eSAmJlxuICAgICAgICAgICAgICAoXCJoaWdoXCIgPT09IHByb3BzLmZldGNoUHJpb3JpdHkgfHxcbiAgICAgICAgICAgICAgICA1MDAgPiBoZWFkZXJzLmhpZ2hJbWFnZVByZWxvYWRzLmxlbmd0aCkgJiZcbiAgICAgICAgICAgICAgKChoZWFkZXIgPSBnZXRQcmVsb2FkQXNIZWFkZXIoc3JjLCBcImltYWdlXCIsIHtcbiAgICAgICAgICAgICAgICBpbWFnZVNyY1NldDogcHJvcHMuc3JjU2V0LFxuICAgICAgICAgICAgICAgIGltYWdlU2l6ZXM6IHByb3BzLnNpemVzLFxuICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICBpbnRlZ3JpdHk6IHByb3BzLmludGVncml0eSxcbiAgICAgICAgICAgICAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHMudHlwZSxcbiAgICAgICAgICAgICAgICBmZXRjaFByaW9yaXR5OiBwcm9wcy5mZXRjaFByaW9yaXR5LFxuICAgICAgICAgICAgICAgIHJlZmVycmVyUG9saWN5OiBwcm9wcy5yZWZlcmVyUG9saWN5XG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgMCA8PSAoaGVhZGVycy5yZW1haW5pbmdDYXBhY2l0eSAtPSBoZWFkZXIubGVuZ3RoICsgMikpXG4gICAgICAgICAgICAgICAgPyAoKHJlbmRlclN0YXRlLnJlc2V0cy5pbWFnZVtrZXkkanNjb21wJDBdID0gUFJFTE9BRF9OT19DUkVEUyksXG4gICAgICAgICAgICAgICAgICBoZWFkZXJzLmhpZ2hJbWFnZVByZWxvYWRzICYmXG4gICAgICAgICAgICAgICAgICAgIChoZWFkZXJzLmhpZ2hJbWFnZVByZWxvYWRzICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAoaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2FkcyArPSBoZWFkZXIpKVxuICAgICAgICAgICAgICAgIDogKChyZXNvdXJjZSRqc2NvbXAkMSA9IFtdKSxcbiAgICAgICAgICAgICAgICAgIHB1c2hMaW5rSW1wbChyZXNvdXJjZSRqc2NvbXAkMSwge1xuICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICBhczogXCJpbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBocmVmOiBzcmNTZXQgPyB2b2lkIDAgOiBzcmMsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU3JjU2V0OiBzcmNTZXQsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZXM6IHNpemVzLFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogcHJvcHMuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy50eXBlLFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFByaW9yaXR5OiBwcm9wcy5mZXRjaFByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogcHJvcHMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgXCJoaWdoXCIgPT09IHByb3BzLmZldGNoUHJpb3JpdHkgfHxcbiAgICAgICAgICAgICAgICAgIDEwID4gcmVuZGVyU3RhdGUuaGlnaEltYWdlUHJlbG9hZHMuc2l6ZVxuICAgICAgICAgICAgICAgICAgICA/IHJlbmRlclN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzLmFkZChyZXNvdXJjZSRqc2NvbXAkMSlcbiAgICAgICAgICAgICAgICAgICAgOiAocmVuZGVyU3RhdGUuYnVsa1ByZWxvYWRzLmFkZChyZXNvdXJjZSRqc2NvbXAkMSksXG4gICAgICAgICAgICAgICAgICAgICAgcHJvbW90YWJsZVByZWxvYWRzLnNldChrZXkkanNjb21wJDAsIHJlc291cmNlJGpzY29tcCQxKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHVzaFNlbGZDbG9zaW5nKHRhcmdldCRqc2NvbXAkMCwgcHJvcHMsIFwiaW1nXCIpO1xuICAgICAgICBjYXNlIFwiYmFzZVwiOlxuICAgICAgICBjYXNlIFwiYXJlYVwiOlxuICAgICAgICBjYXNlIFwiYnJcIjpcbiAgICAgICAgY2FzZSBcImNvbFwiOlxuICAgICAgICBjYXNlIFwiZW1iZWRcIjpcbiAgICAgICAgY2FzZSBcImhyXCI6XG4gICAgICAgIGNhc2UgXCJrZXlnZW5cIjpcbiAgICAgICAgY2FzZSBcInBhcmFtXCI6XG4gICAgICAgIGNhc2UgXCJzb3VyY2VcIjpcbiAgICAgICAgY2FzZSBcInRyYWNrXCI6XG4gICAgICAgIGNhc2UgXCJ3YnJcIjpcbiAgICAgICAgICByZXR1cm4gcHVzaFNlbGZDbG9zaW5nKHRhcmdldCRqc2NvbXAkMCwgcHJvcHMsIHR5cGUpO1xuICAgICAgICBjYXNlIFwiYW5ub3RhdGlvbi14bWxcIjpcbiAgICAgICAgY2FzZSBcImNvbG9yLXByb2ZpbGVcIjpcbiAgICAgICAgY2FzZSBcImZvbnQtZmFjZVwiOlxuICAgICAgICBjYXNlIFwiZm9udC1mYWNlLXNyY1wiOlxuICAgICAgICBjYXNlIFwiZm9udC1mYWNlLXVyaVwiOlxuICAgICAgICBjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOlxuICAgICAgICBjYXNlIFwiZm9udC1mYWNlLW5hbWVcIjpcbiAgICAgICAgY2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImhlYWRcIjpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUgPCBIVE1MX01PREUgJiZcbiAgICAgICAgICAgIG51bGwgPT09IHJlbmRlclN0YXRlLmhlYWRDaHVua3NcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmhlYWRDaHVua3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDkgPSBwdXNoU3RhcnRHZW5lcmljRWxlbWVudChcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuaGVhZENodW5rcyxcbiAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgIFwiaGVhZFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQ5ID0gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgIFwiaGVhZFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDk7XG4gICAgICAgIGNhc2UgXCJodG1sXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBST09UX0hUTUxfTU9ERSAmJlxuICAgICAgICAgICAgbnVsbCA9PT0gcmVuZGVyU3RhdGUuaHRtbENodW5rc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuaHRtbENodW5rcyA9IFtkb2N0eXBlQ2h1bmtdO1xuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMTAgPSBwdXNoU3RhcnRHZW5lcmljRWxlbWVudChcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuaHRtbENodW5rcyxcbiAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgIFwiaHRtbFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQxMCA9IHB1c2hTdGFydEdlbmVyaWNFbGVtZW50KFxuICAgICAgICAgICAgICB0YXJnZXQkanNjb21wJDAsXG4gICAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgICBcImh0bWxcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQxMDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoLTEgIT09IHR5cGUuaW5kZXhPZihcIi1cIikpIHtcbiAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodHlwZSkpO1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuJGpzY29tcCQxMSA9IG51bGwsXG4gICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkOCA9IG51bGwsXG4gICAgICAgICAgICAgIHByb3BLZXkkanNjb21wJDExO1xuICAgICAgICAgICAgZm9yIChwcm9wS2V5JGpzY29tcCQxMSBpbiBwcm9wcylcbiAgICAgICAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkkanNjb21wJDExKSkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wVmFsdWUkanNjb21wJDExID0gcHJvcHNbcHJvcEtleSRqc2NvbXAkMTFdO1xuICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSRqc2NvbXAkMTEpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcEtleSRqc2NvbXAkMTE7XG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkanNjb21wJDExKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuJGpzY29tcCQxMSA9IHByb3BWYWx1ZSRqc2NvbXAkMTE7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgICAgICAgIGlubmVySFRNTCRqc2NvbXAkOCA9IHByb3BWYWx1ZSRqc2NvbXAkMTE7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdHlsZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIHB1c2hTdHlsZUF0dHJpYnV0ZSh0YXJnZXQkanNjb21wJDAsIHByb3BWYWx1ZSRqc2NvbXAkMTEpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlZlwiOlxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2xhc3NOYW1lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IFwiY2xhc3NcIjtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0F0dHJpYnV0ZU5hbWVTYWZlKHByb3BLZXkkanNjb21wJDExKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgcHJvcFZhbHVlJGpzY29tcCQxMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHByb3BWYWx1ZSRqc2NvbXAkMTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICExICE9PSBwcm9wVmFsdWUkanNjb21wJDExXG4gICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoITAgPT09IHByb3BWYWx1ZSRqc2NvbXAkMTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZSRqc2NvbXAkMTEgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHByb3BWYWx1ZSRqc2NvbXAkMTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0JGpzY29tcCQwLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhhdHRyaWJ1dGVOYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlQXNzaWduLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZVRleHRGb3JCcm93c2VyKHByb3BWYWx1ZSRqc2NvbXAkMTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZUVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXQkanNjb21wJDAucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgICAgICAgICAgIHB1c2hJbm5lckhUTUwoXG4gICAgICAgICAgICAgIHRhcmdldCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgaW5uZXJIVE1MJGpzY29tcCQ4LFxuICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMTFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRyZW4kanNjb21wJDExO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQkanNjb21wJDAsIHByb3BzLCB0eXBlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5kQ2h1bmtGb3JUYWcodGFnKSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbmRUYWdDYWNoZS5nZXQodGFnKTtcbiAgICAgIHZvaWQgMCA9PT0gY2h1bmsgJiZcbiAgICAgICAgKChjaHVuayA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwvXCIgKyB0YWcgKyBcIj5cIikpLFxuICAgICAgICBlbmRUYWdDYWNoZS5zZXQodGFnLCBjaHVuaykpO1xuICAgICAgcmV0dXJuIGNodW5rO1xuICAgIH1cbiAgICBmdW5jdGlvbiB3cml0ZUJvb3RzdHJhcChkZXN0aW5hdGlvbiwgcmVuZGVyU3RhdGUpIHtcbiAgICAgIHJlbmRlclN0YXRlID0gcmVuZGVyU3RhdGUuYm9vdHN0cmFwQ2h1bmtzO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW5kZXJTdGF0ZS5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlbmRlclN0YXRlW2ldKTtcbiAgICAgIHJldHVybiBpIDwgcmVuZGVyU3RhdGUubGVuZ3RoXG4gICAgICAgID8gKChpID0gcmVuZGVyU3RhdGVbaV0pLFxuICAgICAgICAgIChyZW5kZXJTdGF0ZS5sZW5ndGggPSAwKSxcbiAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBpKSlcbiAgICAgICAgOiAhMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gd3JpdGVTdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZSwgaWQpIHtcbiAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkxKTtcbiAgICAgIGlmIChudWxsID09PSBpZClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJBbiBJRCBtdXN0IGhhdmUgYmVlbiBhc3NpZ25lZCBiZWZvcmUgd2UgY2FuIGNvbXBsZXRlIHRoZSBib3VuZGFyeS5cIlxuICAgICAgICApO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVuZGVyU3RhdGUuYm91bmRhcnlQcmVmaXgpO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKTtcbiAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5Mik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlU3RhcnRTZWdtZW50KGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZSwgZm9ybWF0Q29udGV4dCwgaWQpIHtcbiAgICAgIHN3aXRjaCAoZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgIGNhc2UgUk9PVF9IVE1MX01PREU6XG4gICAgICAgIGNhc2UgSFRNTF9IVE1MX01PREU6XG4gICAgICAgIGNhc2UgSFRNTF9NT0RFOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRIVE1MKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlbmRlclN0YXRlLnNlZ21lbnRQcmVmaXgpLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudEhUTUwyKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgU1ZHX01PREU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFNWRyksXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSksXG4gICAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRTVkcyKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgTUFUSE1MX01PREU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudE1hdGhNTCksXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSksXG4gICAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRNYXRoTUwyKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgSFRNTF9UQUJMRV9NT0RFOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZSksXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSksXG4gICAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZTIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBIVE1MX1RBQkxFX0JPRFlfTU9ERTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50VGFibGVCb2R5KSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlbmRlclN0YXRlLnNlZ21lbnRQcmVmaXgpLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFRhYmxlQm9keTIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBIVE1MX1RBQkxFX1JPV19NT0RFOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZVJvdyksXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZW5kZXJTdGF0ZS5zZWdtZW50UHJlZml4KSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSksXG4gICAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZVJvdzIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBIVE1MX0NPTEdST1VQX01PREU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudENvbEdyb3VwKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlbmRlclN0YXRlLnNlZ21lbnRQcmVmaXgpLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudENvbEdyb3VwMilcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IEVycm9yKFwiVW5rbm93biBpbnNlcnRpb24gbW9kZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgZm9ybWF0Q29udGV4dCkge1xuICAgICAgc3dpdGNoIChmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgY2FzZSBST09UX0hUTUxfTU9ERTpcbiAgICAgICAgY2FzZSBIVE1MX0hUTUxfTU9ERTpcbiAgICAgICAgY2FzZSBIVE1MX01PREU6XG4gICAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRIVE1MKTtcbiAgICAgICAgY2FzZSBTVkdfTU9ERTpcbiAgICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFNWRyk7XG4gICAgICAgIGNhc2UgTUFUSE1MX01PREU6XG4gICAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRNYXRoTUwpO1xuICAgICAgICBjYXNlIEhUTUxfVEFCTEVfTU9ERTpcbiAgICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFRhYmxlKTtcbiAgICAgICAgY2FzZSBIVE1MX1RBQkxFX0JPRFlfTU9ERTpcbiAgICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFRhYmxlQm9keSk7XG4gICAgICAgIGNhc2UgSFRNTF9UQUJMRV9ST1dfTU9ERTpcbiAgICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFRhYmxlUm93KTtcbiAgICAgICAgY2FzZSBIVE1MX0NPTEdST1VQX01PREU6XG4gICAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRDb2xHcm91cCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbmtub3duIGluc2VydGlvbiBtb2RlLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKGlucHV0KSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5wdXQpLnJlcGxhY2UoXG4gICAgICAgIHJlZ2V4Rm9ySlNTdHJpbmdzSW5JbnN0cnVjdGlvblNjcmlwdHMsXG4gICAgICAgIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgIHN3aXRjaCAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNhc2UgXCI8XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcIlxcXFx1MDAzY1wiO1xuICAgICAgICAgICAgY2FzZSBcIlxcdTIwMjhcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHUyMDI4XCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjAyOVwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTIwMjlcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdFwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhpbnB1dCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0KS5yZXBsYWNlKFxuICAgICAgICByZWdleEZvckpTU3RyaW5nc0luU2NyaXB0cyxcbiAgICAgICAgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICAgICAgc3dpdGNoIChtYXRjaCkge1xuICAgICAgICAgICAgY2FzZSBcIiZcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHUwMDI2XCI7XG4gICAgICAgICAgICBjYXNlIFwiPlwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTAwM2VcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8XCI6XG4gICAgICAgICAgICAgIHJldHVybiBcIlxcXFx1MDAzY1wiO1xuICAgICAgICAgICAgY2FzZSBcIlxcdTIwMjhcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcXHUyMDI4XCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjAyOVwiOlxuICAgICAgICAgICAgICByZXR1cm4gXCJcXFxcdTIwMjlcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiZXNjYXBlSlNPYmplY3RGb3JJbnN0cnVjdGlvblNjcmlwdHMgZW5jb3VudGVyZWQgYSBtYXRjaCBpdCBkb2VzIG5vdCBrbm93IGhvdyB0byByZXBsYWNlLiB0aGlzIG1lYW5zIHRoZSBtYXRjaCByZWdleCBhbmQgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgYXJlIG5vIGxvbmdlciBpbiBzeW5jLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0XCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoU3R5bGVUYWdzTGF0ZUZvckJvdW5kYXJ5KHN0eWxlUXVldWUpIHtcbiAgICAgIHZhciBydWxlcyA9IHN0eWxlUXVldWUucnVsZXMsXG4gICAgICAgIGhyZWZzID0gc3R5bGVRdWV1ZS5ocmVmcztcbiAgICAgIDAgPCBydWxlcy5sZW5ndGggJiZcbiAgICAgICAgMCA9PT0gaHJlZnMubGVuZ3RoICYmXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJSZWFjdCBleHBlY3RlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBocmVmIGZvciBhbiBhIGhvaXN0YWJsZSBzdHlsZSBidXQgZm91bmQgbm9uZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICApO1xuICAgICAgdmFyIGkgPSAwO1xuICAgICAgaWYgKGhyZWZzLmxlbmd0aCkge1xuICAgICAgICB3cml0ZUNodW5rKHRoaXMsIGxhdGVTdHlsZVRhZ1Jlc291cmNlT3BlbjEpO1xuICAgICAgICB3cml0ZUNodW5rKHRoaXMsIHN0eWxlUXVldWUucHJlY2VkZW5jZSk7XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgd3JpdGVDaHVuayh0aGlzLCBsYXRlU3R5bGVUYWdSZXNvdXJjZU9wZW4yKTtcbiAgICAgICAgICBpIDwgaHJlZnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICBpKytcbiAgICAgICAgKVxuICAgICAgICAgIHdyaXRlQ2h1bmsodGhpcywgaHJlZnNbaV0pLCB3cml0ZUNodW5rKHRoaXMsIHNwYWNlU2VwYXJhdG9yKTtcbiAgICAgICAgd3JpdGVDaHVuayh0aGlzLCBocmVmc1tpXSk7XG4gICAgICAgIHdyaXRlQ2h1bmsodGhpcywgbGF0ZVN0eWxlVGFnUmVzb3VyY2VPcGVuMyk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgd3JpdGVDaHVuayh0aGlzLCBydWxlc1tpXSk7XG4gICAgICAgIGRlc3RpbmF0aW9uSGFzQ2FwYWNpdHkgPSB3cml0ZUNodW5rQW5kUmV0dXJuKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgbGF0ZVN0eWxlVGFnVGVtcGxhdGVDbG9zZVxuICAgICAgICApO1xuICAgICAgICBjdXJyZW50bHlSZW5kZXJpbmdCb3VuZGFyeUhhc1N0eWxlc1RvSG9pc3QgPSAhMDtcbiAgICAgICAgcnVsZXMubGVuZ3RoID0gMDtcbiAgICAgICAgaHJlZnMubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzU3R5bGVzVG9Ib2lzdChzdHlsZXNoZWV0KSB7XG4gICAgICByZXR1cm4gc3R5bGVzaGVldC5zdGF0ZSAhPT0gUFJFQU1CTEVcbiAgICAgICAgPyAoY3VycmVudGx5UmVuZGVyaW5nQm91bmRhcnlIYXNTdHlsZXNUb0hvaXN0ID0gITApXG4gICAgICAgIDogITE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlSG9pc3RhYmxlc0ZvckJvdW5kYXJ5KFxuICAgICAgZGVzdGluYXRpb24sXG4gICAgICBob2lzdGFibGVTdGF0ZSxcbiAgICAgIHJlbmRlclN0YXRlXG4gICAgKSB7XG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdCb3VuZGFyeUhhc1N0eWxlc1RvSG9pc3QgPSAhMTtcbiAgICAgIGRlc3RpbmF0aW9uSGFzQ2FwYWNpdHkgPSAhMDtcbiAgICAgIGhvaXN0YWJsZVN0YXRlLnN0eWxlcy5mb3JFYWNoKGZsdXNoU3R5bGVUYWdzTGF0ZUZvckJvdW5kYXJ5LCBkZXN0aW5hdGlvbik7XG4gICAgICBob2lzdGFibGVTdGF0ZS5zdHlsZXNoZWV0cy5mb3JFYWNoKGhhc1N0eWxlc1RvSG9pc3QpO1xuICAgICAgY3VycmVudGx5UmVuZGVyaW5nQm91bmRhcnlIYXNTdHlsZXNUb0hvaXN0ICYmXG4gICAgICAgIChyZW5kZXJTdGF0ZS5zdHlsZXNUb0hvaXN0ID0gITApO1xuICAgICAgcmV0dXJuIGRlc3RpbmF0aW9uSGFzQ2FwYWNpdHk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoUmVzb3VyY2UocmVzb3VyY2UpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzb3VyY2UubGVuZ3RoOyBpKyspIHdyaXRlQ2h1bmsodGhpcywgcmVzb3VyY2VbaV0pO1xuICAgICAgcmVzb3VyY2UubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTdHlsZUluUHJlYW1ibGUoc3R5bGVzaGVldCkge1xuICAgICAgcHVzaExpbmtJbXBsKHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlLCBzdHlsZXNoZWV0LnByb3BzKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUubGVuZ3RoOyBpKyspXG4gICAgICAgIHdyaXRlQ2h1bmsodGhpcywgc3R5bGVzaGVldEZsdXNoaW5nUXVldWVbaV0pO1xuICAgICAgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUubGVuZ3RoID0gMDtcbiAgICAgIHN0eWxlc2hlZXQuc3RhdGUgPSBQUkVBTUJMRTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTdHlsZXNJblByZWFtYmxlKHN0eWxlUXVldWUpIHtcbiAgICAgIHZhciBoYXNTdHlsZXNoZWV0cyA9IDAgPCBzdHlsZVF1ZXVlLnNoZWV0cy5zaXplO1xuICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuZm9yRWFjaChmbHVzaFN0eWxlSW5QcmVhbWJsZSwgdGhpcyk7XG4gICAgICBzdHlsZVF1ZXVlLnNoZWV0cy5jbGVhcigpO1xuICAgICAgdmFyIHJ1bGVzID0gc3R5bGVRdWV1ZS5ydWxlcyxcbiAgICAgICAgaHJlZnMgPSBzdHlsZVF1ZXVlLmhyZWZzO1xuICAgICAgaWYgKCFoYXNTdHlsZXNoZWV0cyB8fCBocmVmcy5sZW5ndGgpIHtcbiAgICAgICAgd3JpdGVDaHVuayh0aGlzLCBzdHlsZVRhZ1Jlc291cmNlT3BlbjEpO1xuICAgICAgICB3cml0ZUNodW5rKHRoaXMsIHN0eWxlUXVldWUucHJlY2VkZW5jZSk7XG4gICAgICAgIHN0eWxlUXVldWUgPSAwO1xuICAgICAgICBpZiAoaHJlZnMubGVuZ3RoKSB7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsodGhpcywgc3R5bGVUYWdSZXNvdXJjZU9wZW4yKTtcbiAgICAgICAgICAgIHN0eWxlUXVldWUgPCBocmVmcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgc3R5bGVRdWV1ZSsrXG4gICAgICAgICAgKVxuICAgICAgICAgICAgd3JpdGVDaHVuayh0aGlzLCBocmVmc1tzdHlsZVF1ZXVlXSksXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsodGhpcywgc3BhY2VTZXBhcmF0b3IpO1xuICAgICAgICAgIHdyaXRlQ2h1bmsodGhpcywgaHJlZnNbc3R5bGVRdWV1ZV0pO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlQ2h1bmsodGhpcywgc3R5bGVUYWdSZXNvdXJjZU9wZW4zKTtcbiAgICAgICAgZm9yIChzdHlsZVF1ZXVlID0gMDsgc3R5bGVRdWV1ZSA8IHJ1bGVzLmxlbmd0aDsgc3R5bGVRdWV1ZSsrKVxuICAgICAgICAgIHdyaXRlQ2h1bmsodGhpcywgcnVsZXNbc3R5bGVRdWV1ZV0pO1xuICAgICAgICB3cml0ZUNodW5rKHRoaXMsIHN0eWxlVGFnUmVzb3VyY2VDbG9zZSk7XG4gICAgICAgIHJ1bGVzLmxlbmd0aCA9IDA7XG4gICAgICAgIGhyZWZzLmxlbmd0aCA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHByZWxvYWRMYXRlU3R5bGUoc3R5bGVzaGVldCkge1xuICAgICAgaWYgKHN0eWxlc2hlZXQuc3RhdGUgPT09IFBFTkRJTkckMSkge1xuICAgICAgICBzdHlsZXNoZWV0LnN0YXRlID0gUFJFTE9BREVEO1xuICAgICAgICB2YXIgcHJvcHMgPSBzdHlsZXNoZWV0LnByb3BzO1xuICAgICAgICBwdXNoTGlua0ltcGwoc3R5bGVzaGVldEZsdXNoaW5nUXVldWUsIHtcbiAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgIGFzOiBcInN0eWxlXCIsXG4gICAgICAgICAgaHJlZjogc3R5bGVzaGVldC5wcm9wcy5ocmVmLFxuICAgICAgICAgIGNyb3NzT3JpZ2luOiBwcm9wcy5jcm9zc09yaWdpbixcbiAgICAgICAgICBmZXRjaFByaW9yaXR5OiBwcm9wcy5mZXRjaFByaW9yaXR5LFxuICAgICAgICAgIGludGVncml0eTogcHJvcHMuaW50ZWdyaXR5LFxuICAgICAgICAgIG1lZGlhOiBwcm9wcy5tZWRpYSxcbiAgICAgICAgICBocmVmTGFuZzogcHJvcHMuaHJlZkxhbmcsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHByb3BzLnJlZmVycmVyUG9saWN5XG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIHN0eWxlc2hlZXQgPSAwO1xuICAgICAgICAgIHN0eWxlc2hlZXQgPCBzdHlsZXNoZWV0Rmx1c2hpbmdRdWV1ZS5sZW5ndGg7XG4gICAgICAgICAgc3R5bGVzaGVldCsrXG4gICAgICAgIClcbiAgICAgICAgICB3cml0ZUNodW5rKHRoaXMsIHN0eWxlc2hlZXRGbHVzaGluZ1F1ZXVlW3N0eWxlc2hlZXRdKTtcbiAgICAgICAgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUubGVuZ3RoID0gMDtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHJlbG9hZExhdGVTdHlsZXMoc3R5bGVRdWV1ZSkge1xuICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuZm9yRWFjaChwcmVsb2FkTGF0ZVN0eWxlLCB0aGlzKTtcbiAgICAgIHN0eWxlUXVldWUuc2hlZXRzLmNsZWFyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdyaXRlU3R5bGVSZXNvdXJjZURlcGVuZGVuY2llc0luSlMoZGVzdGluYXRpb24sIGhvaXN0YWJsZVN0YXRlKSB7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBhcnJheUZpcnN0T3BlbkJyYWNrZXQpO1xuICAgICAgdmFyIG5leHRBcnJheU9wZW5CcmFja0NodW5rID0gYXJyYXlGaXJzdE9wZW5CcmFja2V0O1xuICAgICAgaG9pc3RhYmxlU3RhdGUuc3R5bGVzaGVldHMuZm9yRWFjaChmdW5jdGlvbiAocmVzb3VyY2UpIHtcbiAgICAgICAgaWYgKHJlc291cmNlLnN0YXRlICE9PSBQUkVBTUJMRSlcbiAgICAgICAgICBpZiAocmVzb3VyY2Uuc3RhdGUgPT09IExBVEUpXG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBuZXh0QXJyYXlPcGVuQnJhY2tDaHVuayksXG4gICAgICAgICAgICAgIChyZXNvdXJjZSA9IHJlc291cmNlLnByb3BzLmhyZWYpLFxuICAgICAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHJlc291cmNlLCBcImhyZWZcIiksXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhcbiAgICAgICAgICAgICAgICAgIGVzY2FwZUpTT2JqZWN0Rm9ySW5zdHJ1Y3Rpb25TY3JpcHRzKFwiXCIgKyByZXNvdXJjZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGFycmF5Q2xvc2VCcmFja2V0KSxcbiAgICAgICAgICAgICAgKG5leHRBcnJheU9wZW5CcmFja0NodW5rID0gYXJyYXlTdWJzZXF1ZW50T3BlbkJyYWNrZXQpO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgbmV4dEFycmF5T3BlbkJyYWNrQ2h1bmspO1xuICAgICAgICAgICAgdmFyIHByZWNlZGVuY2UgPSByZXNvdXJjZS5wcm9wc1tcImRhdGEtcHJlY2VkZW5jZVwiXSxcbiAgICAgICAgICAgICAgcHJvcHMgPSByZXNvdXJjZS5wcm9wcyxcbiAgICAgICAgICAgICAgY29lcmNlZEhyZWYgPSBzYW5pdGl6ZVVSTChcIlwiICsgcmVzb3VyY2UucHJvcHMuaHJlZik7XG4gICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhjb2VyY2VkSHJlZikpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihwcmVjZWRlbmNlLCBcInByZWNlZGVuY2VcIik7XG4gICAgICAgICAgICBwcmVjZWRlbmNlID0gXCJcIiArIHByZWNlZGVuY2U7XG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBhcnJheUludGVyc3RpdGlhbCk7XG4gICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhwcmVjZWRlbmNlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkgJiZcbiAgICAgICAgICAgICAgICAoKHByZWNlZGVuY2UgPSBwcm9wc1twcm9wS2V5XSksIG51bGwgIT0gcHJlY2VkZW5jZSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImhyZWZcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJyZWxcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJwcmVjZWRlbmNlXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGF0YS1wcmVjZWRlbmNlXCI6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgXCJsaW5rIGlzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuXCJcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlU3R5bGVSZXNvdXJjZUF0dHJpYnV0ZUluSlMoXG4gICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcEtleSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgYXJyYXlDbG9zZUJyYWNrZXQpO1xuICAgICAgICAgICAgbmV4dEFycmF5T3BlbkJyYWNrQ2h1bmsgPSBhcnJheVN1YnNlcXVlbnRPcGVuQnJhY2tldDtcbiAgICAgICAgICAgIHJlc291cmNlLnN0YXRlID0gTEFURTtcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGFycmF5Q2xvc2VCcmFja2V0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gd3JpdGVTdHlsZVJlc291cmNlQXR0cmlidXRlSW5KUyhkZXN0aW5hdGlvbiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgY2FzZSBcImlubmVySFRNTFwiOlxuICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgY2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOlxuICAgICAgICBjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6XG4gICAgICAgIGNhc2UgXCJzdHlsZVwiOlxuICAgICAgICBjYXNlIFwicmVmXCI6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlIFwiY2xhc3NOYW1lXCI6XG4gICAgICAgICAgYXR0cmlidXRlTmFtZSA9IFwiY2xhc3NcIjtcbiAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCBhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgICBuYW1lID0gXCJcIiArIHZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiaGlkZGVuXCI6XG4gICAgICAgICAgaWYgKCExID09PSB2YWx1ZSkgcmV0dXJuO1xuICAgICAgICAgIG5hbWUgPSBcIlwiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwic3JjXCI6XG4gICAgICAgIGNhc2UgXCJocmVmXCI6XG4gICAgICAgICAgdmFsdWUgPSBzYW5pdGl6ZVVSTCh2YWx1ZSk7XG4gICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgbmFtZSA9IFwiXCIgKyB2YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoMiA8IG5hbWUubGVuZ3RoICYmXG4gICAgICAgICAgICAgIChcIm9cIiA9PT0gbmFtZVswXSB8fCBcIk9cIiA9PT0gbmFtZVswXSkgJiZcbiAgICAgICAgICAgICAgKFwiblwiID09PSBuYW1lWzFdIHx8IFwiTlwiID09PSBuYW1lWzFdKSkgfHxcbiAgICAgICAgICAgICFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsIGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgIG5hbWUgPSBcIlwiICsgdmFsdWU7XG4gICAgICB9XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBhcnJheUludGVyc3RpdGlhbCk7XG4gICAgICB3cml0ZUNodW5rKFxuICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhhdHRyaWJ1dGVOYW1lKSlcbiAgICAgICk7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBhcnJheUludGVyc3RpdGlhbCk7XG4gICAgICB3cml0ZUNodW5rKFxuICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgc3RyaW5nVG9DaHVuayhlc2NhcGVKU09iamVjdEZvckluc3RydWN0aW9uU2NyaXB0cyhuYW1lKSlcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNyZWF0ZUhvaXN0YWJsZVN0YXRlKCkge1xuICAgICAgcmV0dXJuIHsgc3R5bGVzOiBuZXcgU2V0KCksIHN0eWxlc2hlZXRzOiBuZXcgU2V0KCkgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJlbG9hZEJvb3RzdHJhcFNjcmlwdE9yTW9kdWxlKFxuICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICByZW5kZXJTdGF0ZSxcbiAgICAgIGhyZWYsXG4gICAgICBwcm9wc1xuICAgICkge1xuICAgICAgKHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShocmVmKSB8fFxuICAgICAgICByZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZikpICYmXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ0ludGVybmFsIFJlYWN0IEVycm9yOiBSZWFjdCBleHBlY3RlZCBib290c3RyYXAgc2NyaXB0IG9yIG1vZHVsZSB3aXRoIHNyYyBcIiVzXCIgdG8gbm90IGhhdmUgYmVlbiBwcmVsb2FkZWQgYWxyZWFkeS4gcGxlYXNlIGZpbGUgYW4gaXNzdWUnLFxuICAgICAgICAgIGhyZWZcbiAgICAgICAgKTtcbiAgICAgIHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlc1tocmVmXSA9IEVYSVNUUztcbiAgICAgIHJlc3VtYWJsZVN0YXRlLm1vZHVsZVNjcmlwdFJlc291cmNlc1tocmVmXSA9IEVYSVNUUztcbiAgICAgIHJlc3VtYWJsZVN0YXRlID0gW107XG4gICAgICBwdXNoTGlua0ltcGwocmVzdW1hYmxlU3RhdGUsIHByb3BzKTtcbiAgICAgIHJlbmRlclN0YXRlLmJvb3RzdHJhcFNjcmlwdHMuYWRkKHJlc3VtYWJsZVN0YXRlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRvcHRQcmVsb2FkQ3JlZGVudGlhbHModGFyZ2V0LCBwcmVsb2FkU3RhdGUpIHtcbiAgICAgIG51bGwgPT0gdGFyZ2V0LmNyb3NzT3JpZ2luICYmICh0YXJnZXQuY3Jvc3NPcmlnaW4gPSBwcmVsb2FkU3RhdGVbMF0pO1xuICAgICAgbnVsbCA9PSB0YXJnZXQuaW50ZWdyaXR5ICYmICh0YXJnZXQuaW50ZWdyaXR5ID0gcHJlbG9hZFN0YXRlWzFdKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0UHJlbG9hZEFzSGVhZGVyKGhyZWYsIGFzLCBwYXJhbXMpIHtcbiAgICAgIGhyZWYgPSBlc2NhcGVIcmVmRm9yTGlua0hlYWRlclVSTENvbnRleHQoaHJlZik7XG4gICAgICBhcyA9IGVzY2FwZVN0cmluZ0ZvckxpbmtIZWFkZXJRdW90ZWRQYXJhbVZhbHVlQ29udGV4dChhcywgXCJhc1wiKTtcbiAgICAgIGFzID0gXCI8XCIgKyBocmVmICsgJz47IHJlbD1wcmVsb2FkOyBhcz1cIicgKyBhcyArICdcIic7XG4gICAgICBmb3IgKHZhciBwYXJhbU5hbWUgaW4gcGFyYW1zKVxuICAgICAgICBoYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtcywgcGFyYW1OYW1lKSAmJlxuICAgICAgICAgICgoaHJlZiA9IHBhcmFtc1twYXJhbU5hbWVdKSxcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJlxuICAgICAgICAgICAgKGFzICs9XG4gICAgICAgICAgICAgIFwiOyBcIiArXG4gICAgICAgICAgICAgIHBhcmFtTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJz1cIicgK1xuICAgICAgICAgICAgICBlc2NhcGVTdHJpbmdGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHQoXG4gICAgICAgICAgICAgICAgaHJlZixcbiAgICAgICAgICAgICAgICBwYXJhbU5hbWVcbiAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgICdcIicpKTtcbiAgICAgIHJldHVybiBhcztcbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlSHJlZkZvckxpbmtIZWFkZXJVUkxDb250ZXh0KGhyZWZJbnB1dCkge1xuICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihocmVmSW5wdXQsIFwiaHJlZlwiKTtcbiAgICAgIHJldHVybiAoXCJcIiArIGhyZWZJbnB1dCkucmVwbGFjZShcbiAgICAgICAgcmVnZXhGb3JIcmVmSW5MaW5rSGVhZGVyVVJMQ29udGV4dCxcbiAgICAgICAgZXNjYXBlSHJlZkZvckxpbmtIZWFkZXJVUkxDb250ZXh0UmVwbGFjZXJcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZUhyZWZGb3JMaW5rSGVhZGVyVVJMQ29udGV4dFJlcGxhY2VyKG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKG1hdGNoKSB7XG4gICAgICAgIGNhc2UgXCI8XCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTNDXCI7XG4gICAgICAgIGNhc2UgXCI+XCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTNFXCI7XG4gICAgICAgIGNhc2UgXCJcXG5cIjpcbiAgICAgICAgICByZXR1cm4gXCIlMEFcIjtcbiAgICAgICAgY2FzZSBcIlxcclwiOlxuICAgICAgICAgIHJldHVybiBcIiUwRFwiO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJlc2NhcGVMaW5rSHJlZkZvckhlYWRlckNvbnRleHRSZXBsYWNlciBlbmNvdW50ZXJlZCBhIG1hdGNoIGl0IGRvZXMgbm90IGtub3cgaG93IHRvIHJlcGxhY2UuIHRoaXMgbWVhbnMgdGhlIG1hdGNoIHJlZ2V4IGFuZCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBhcmUgbm8gbG9uZ2VyIGluIHN5bmMuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3RcIlxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVzY2FwZVN0cmluZ0ZvckxpbmtIZWFkZXJRdW90ZWRQYXJhbVZhbHVlQ29udGV4dCh2YWx1ZSwgbmFtZSkge1xuICAgICAgd2lsbENvZXJjaW9uVGhyb3codmFsdWUpICYmXG4gICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiVGhlIHByb3ZpZGVkIGAlc2Agb3B0aW9uIGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdHlwZU5hbWUodmFsdWUpXG4gICAgICAgICksXG4gICAgICAgIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkpO1xuICAgICAgcmV0dXJuIChcIlwiICsgdmFsdWUpLnJlcGxhY2UoXG4gICAgICAgIHJlZ2V4Rm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0LFxuICAgICAgICBlc2NhcGVTdHJpbmdGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHRSZXBsYWNlclxuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXNjYXBlU3RyaW5nRm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0UmVwbGFjZXIobWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAobWF0Y2gpIHtcbiAgICAgICAgY2FzZSAnXCInOlxuICAgICAgICAgIHJldHVybiBcIiUyMlwiO1xuICAgICAgICBjYXNlIFwiJ1wiOlxuICAgICAgICAgIHJldHVybiBcIiUyN1wiO1xuICAgICAgICBjYXNlIFwiO1wiOlxuICAgICAgICAgIHJldHVybiBcIiUzQlwiO1xuICAgICAgICBjYXNlIFwiLFwiOlxuICAgICAgICAgIHJldHVybiBcIiUyQ1wiO1xuICAgICAgICBjYXNlIFwiXFxuXCI6XG4gICAgICAgICAgcmV0dXJuIFwiJTBBXCI7XG4gICAgICAgIGNhc2UgXCJcXHJcIjpcbiAgICAgICAgICByZXR1cm4gXCIlMERcIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiZXNjYXBlU3RyaW5nRm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0UmVwbGFjZXIgZW5jb3VudGVyZWQgYSBtYXRjaCBpdCBkb2VzIG5vdCBrbm93IGhvdyB0byByZXBsYWNlLiB0aGlzIG1lYW5zIHRoZSBtYXRjaCByZWdleCBhbmQgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgYXJlIG5vIGxvbmdlciBpbiBzeW5jLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0XCJcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBob2lzdFN0eWxlUXVldWVEZXBlbmRlbmN5KHN0eWxlUXVldWUpIHtcbiAgICAgIHRoaXMuc3R5bGVzLmFkZChzdHlsZVF1ZXVlKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaG9pc3RTdHlsZXNoZWV0RGVwZW5kZW5jeShzdHlsZXNoZWV0KSB7XG4gICAgICB0aGlzLnN0eWxlc2hlZXRzLmFkZChzdHlsZXNoZWV0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgICAgIGlmIChudWxsID09IHR5cGUpIHJldHVybiBudWxsO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHJldHVybiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gdHlwZTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiRnJhZ21lbnRcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQb3J0YWxcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlByb2ZpbGVyXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdHJpY3RNb2RlXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgIH1cbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIHR5cGUudGFnICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgdHlwZS4kJHR5cGVvZilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuUHJvdmlkZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlNVTUVSX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuQ29uc3VtZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICB2YXIgaW5uZXJUeXBlID0gdHlwZS5yZW5kZXI7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAgICAgKCh0eXBlID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8IFwiXCIpLFxuICAgICAgICAgICAgICAodHlwZSA9IFwiXCIgIT09IHR5cGUgPyBcIkZvcndhcmRSZWYoXCIgKyB0eXBlICsgXCIpXCIgOiBcIkZvcndhcmRSZWZcIikpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5uZXJUeXBlXG4gICAgICAgICAgICAgICAgPyBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcFRvTmVhcmVzdENvbW1vbkFuY2VzdG9yKHByZXYsIG5leHQpIHtcbiAgICAgIGlmIChwcmV2ICE9PSBuZXh0KSB7XG4gICAgICAgIHByZXYuY29udGV4dC5fY3VycmVudFZhbHVlID0gcHJldi5wYXJlbnRWYWx1ZTtcbiAgICAgICAgcHJldiA9IHByZXYucGFyZW50O1xuICAgICAgICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuICAgICAgICBpZiAobnVsbCA9PT0gcHJldikge1xuICAgICAgICAgIGlmIChudWxsICE9PSBwYXJlbnROZXh0KVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlIHN0YWNrcyBtdXN0IHJlYWNoIHRoZSByb290IGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKG51bGwgPT09IHBhcmVudE5leHQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgXCJUaGUgc3RhY2tzIG11c3QgcmVhY2ggdGhlIHJvb3QgYXQgdGhlIHNhbWUgdGltZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwcmV2LCBwYXJlbnROZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0LmNvbnRleHQuX2N1cnJlbnRWYWx1ZSA9IG5leHQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBvcEFsbFByZXZpb3VzKHByZXYpIHtcbiAgICAgIHByZXYuY29udGV4dC5fY3VycmVudFZhbHVlID0gcHJldi5wYXJlbnRWYWx1ZTtcbiAgICAgIHByZXYgPSBwcmV2LnBhcmVudDtcbiAgICAgIG51bGwgIT09IHByZXYgJiYgcG9wQWxsUHJldmlvdXMocHJldik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHB1c2hBbGxOZXh0KG5leHQpIHtcbiAgICAgIHZhciBwYXJlbnROZXh0ID0gbmV4dC5wYXJlbnQ7XG4gICAgICBudWxsICE9PSBwYXJlbnROZXh0ICYmIHB1c2hBbGxOZXh0KHBhcmVudE5leHQpO1xuICAgICAgbmV4dC5jb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBuZXh0LnZhbHVlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwb3BQcmV2aW91c1RvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCkge1xuICAgICAgcHJldi5jb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBwcmV2LnBhcmVudFZhbHVlO1xuICAgICAgcHJldiA9IHByZXYucGFyZW50O1xuICAgICAgaWYgKG51bGwgPT09IHByZXYpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVGhlIGRlcHRoIG11c3QgZXF1YWwgYXQgbGVhc3QgYXQgemVybyBiZWZvcmUgcmVhY2hpbmcgdGhlIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgKTtcbiAgICAgIHByZXYuZGVwdGggPT09IG5leHQuZGVwdGhcbiAgICAgICAgPyBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwcmV2LCBuZXh0KVxuICAgICAgICA6IHBvcFByZXZpb3VzVG9Db21tb25MZXZlbChwcmV2LCBuZXh0KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgbmV4dCkge1xuICAgICAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcbiAgICAgIGlmIChudWxsID09PSBwYXJlbnROZXh0KVxuICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICBcIlRoZSBkZXB0aCBtdXN0IGVxdWFsIGF0IGxlYXN0IGF0IHplcm8gYmVmb3JlIHJlYWNoaW5nIHRoZSByb290LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICk7XG4gICAgICBwcmV2LmRlcHRoID09PSBwYXJlbnROZXh0LmRlcHRoXG4gICAgICAgID8gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgcGFyZW50TmV4dClcbiAgICAgICAgOiBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBwYXJlbnROZXh0KTtcbiAgICAgIG5leHQuY29udGV4dC5fY3VycmVudFZhbHVlID0gbmV4dC52YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3dpdGNoQ29udGV4dChuZXdTbmFwc2hvdCkge1xuICAgICAgdmFyIHByZXYgPSBjdXJyZW50QWN0aXZlU25hcHNob3Q7XG4gICAgICBwcmV2ICE9PSBuZXdTbmFwc2hvdCAmJlxuICAgICAgICAobnVsbCA9PT0gcHJldlxuICAgICAgICAgID8gcHVzaEFsbE5leHQobmV3U25hcHNob3QpXG4gICAgICAgICAgOiBudWxsID09PSBuZXdTbmFwc2hvdFxuICAgICAgICAgICAgPyBwb3BBbGxQcmV2aW91cyhwcmV2KVxuICAgICAgICAgICAgOiBwcmV2LmRlcHRoID09PSBuZXdTbmFwc2hvdC5kZXB0aFxuICAgICAgICAgICAgICA/IHBvcFRvTmVhcmVzdENvbW1vbkFuY2VzdG9yKHByZXYsIG5ld1NuYXBzaG90KVxuICAgICAgICAgICAgICA6IHByZXYuZGVwdGggPiBuZXdTbmFwc2hvdC5kZXB0aFxuICAgICAgICAgICAgICAgID8gcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5ld1NuYXBzaG90KVxuICAgICAgICAgICAgICAgIDogcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgbmV3U25hcHNob3QpLFxuICAgICAgICAoY3VycmVudEFjdGl2ZVNuYXBzaG90ID0gbmV3U25hcHNob3QpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrKSB7XG4gICAgICBpZiAobnVsbCAhPT0gY2FsbGJhY2sgJiYgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGtleSA9IFN0cmluZyhjYWxsYmFjayk7XG4gICAgICAgIGRpZFdhcm5PbkludmFsaWRDYWxsYmFjay5oYXMoa2V5KSB8fFxuICAgICAgICAgIChkaWRXYXJuT25JbnZhbGlkQ2FsbGJhY2suYWRkKGtleSksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIFwiRXhwZWN0ZWQgdGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBhcmd1bWVudCB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkIHJlY2VpdmVkOiAlcy5cIixcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gICAgICBwdWJsaWNJbnN0YW5jZSA9XG4gICAgICAgICgocHVibGljSW5zdGFuY2UgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcikgJiZcbiAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUocHVibGljSW5zdGFuY2UpKSB8fFxuICAgICAgICBcIlJlYWN0Q2xhc3NcIjtcbiAgICAgIHZhciB3YXJuaW5nS2V5ID0gcHVibGljSW5zdGFuY2UgKyBcIi5cIiArIGNhbGxlck5hbWU7XG4gICAgICBkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50W3dhcm5pbmdLZXldIHx8XG4gICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiBUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gVGhpcyBpcyBhIG5vLW9wLlxcblxcblBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC5cIixcbiAgICAgICAgICBjYWxsZXJOYW1lLFxuICAgICAgICAgIHB1YmxpY0luc3RhbmNlXG4gICAgICAgICksXG4gICAgICAgIChkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50W3dhcm5pbmdLZXldID0gITApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaFRyZWVDb250ZXh0KGJhc2VDb250ZXh0LCB0b3RhbENoaWxkcmVuLCBpbmRleCkge1xuICAgICAgdmFyIGJhc2VJZFdpdGhMZWFkaW5nQml0ID0gYmFzZUNvbnRleHQuaWQ7XG4gICAgICBiYXNlQ29udGV4dCA9IGJhc2VDb250ZXh0Lm92ZXJmbG93O1xuICAgICAgdmFyIGJhc2VMZW5ndGggPSAzMiAtIGNsejMyKGJhc2VJZFdpdGhMZWFkaW5nQml0KSAtIDE7XG4gICAgICBiYXNlSWRXaXRoTGVhZGluZ0JpdCAmPSB+KDEgPDwgYmFzZUxlbmd0aCk7XG4gICAgICBpbmRleCArPSAxO1xuICAgICAgdmFyIGxlbmd0aCA9IDMyIC0gY2x6MzIodG90YWxDaGlsZHJlbikgKyBiYXNlTGVuZ3RoO1xuICAgICAgaWYgKDMwIDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBudW1iZXJPZk92ZXJmbG93Qml0cyA9IGJhc2VMZW5ndGggLSAoYmFzZUxlbmd0aCAlIDUpO1xuICAgICAgICBsZW5ndGggPSAoXG4gICAgICAgICAgYmFzZUlkV2l0aExlYWRpbmdCaXQgJlxuICAgICAgICAgICgoMSA8PCBudW1iZXJPZk92ZXJmbG93Qml0cykgLSAxKVxuICAgICAgICApLnRvU3RyaW5nKDMyKTtcbiAgICAgICAgYmFzZUlkV2l0aExlYWRpbmdCaXQgPj49IG51bWJlck9mT3ZlcmZsb3dCaXRzO1xuICAgICAgICBiYXNlTGVuZ3RoIC09IG51bWJlck9mT3ZlcmZsb3dCaXRzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOlxuICAgICAgICAgICAgKDEgPDwgKDMyIC0gY2x6MzIodG90YWxDaGlsZHJlbikgKyBiYXNlTGVuZ3RoKSkgfFxuICAgICAgICAgICAgKGluZGV4IDw8IGJhc2VMZW5ndGgpIHxcbiAgICAgICAgICAgIGJhc2VJZFdpdGhMZWFkaW5nQml0LFxuICAgICAgICAgIG92ZXJmbG93OiBsZW5ndGggKyBiYXNlQ29udGV4dFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6ICgxIDw8IGxlbmd0aCkgfCAoaW5kZXggPDwgYmFzZUxlbmd0aCkgfCBiYXNlSWRXaXRoTGVhZGluZ0JpdCxcbiAgICAgICAgb3ZlcmZsb3c6IGJhc2VDb250ZXh0XG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjbHozMkZhbGxiYWNrKHgpIHtcbiAgICAgIHggPj4+PSAwO1xuICAgICAgcmV0dXJuIDAgPT09IHggPyAzMiA6ICgzMSAtICgobG9nKHgpIC8gTE4yKSB8IDApKSB8IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vb3AkMigpIHt9XG4gICAgZnVuY3Rpb24gdHJhY2tVc2VkVGhlbmFibGUodGhlbmFibGVTdGF0ZSwgdGhlbmFibGUsIGluZGV4KSB7XG4gICAgICBpbmRleCA9IHRoZW5hYmxlU3RhdGVbaW5kZXhdO1xuICAgICAgdm9pZCAwID09PSBpbmRleFxuICAgICAgICA/IHRoZW5hYmxlU3RhdGUucHVzaCh0aGVuYWJsZSlcbiAgICAgICAgOiBpbmRleCAhPT0gdGhlbmFibGUgJiZcbiAgICAgICAgICAodGhlbmFibGUudGhlbihub29wJDIsIG5vb3AkMiksICh0aGVuYWJsZSA9IGluZGV4KSk7XG4gICAgICBzd2l0Y2ggKHRoZW5hYmxlLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHRoZW5hYmxlLnN0YXR1c1xuICAgICAgICAgICAgPyB0aGVuYWJsZS50aGVuKG5vb3AkMiwgbm9vcCQyKVxuICAgICAgICAgICAgOiAoKHRoZW5hYmxlU3RhdGUgPSB0aGVuYWJsZSksXG4gICAgICAgICAgICAgICh0aGVuYWJsZVN0YXRlLnN0YXR1cyA9IFwicGVuZGluZ1wiKSxcbiAgICAgICAgICAgICAgdGhlbmFibGVTdGF0ZS50aGVuKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChmdWxmaWxsZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKFwicGVuZGluZ1wiID09PSB0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZ1bGZpbGxlZFRoZW5hYmxlID0gdGhlbmFibGU7XG4gICAgICAgICAgICAgICAgICAgIGZ1bGZpbGxlZFRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCI7XG4gICAgICAgICAgICAgICAgICAgIGZ1bGZpbGxlZFRoZW5hYmxlLnZhbHVlID0gZnVsZmlsbGVkVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcInBlbmRpbmdcIiA9PT0gdGhlbmFibGUuc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWplY3RlZFRoZW5hYmxlID0gdGhlbmFibGU7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdGVkVGhlbmFibGUuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgICAgICAgICAgICAgICByZWplY3RlZFRoZW5hYmxlLnJlYXNvbiA9IGVycm9yO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgXCJmdWxmaWxsZWRcIjpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICAgICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICAgICAgICAgIHRocm93IHRoZW5hYmxlLnJlYXNvbjtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3VzcGVuZGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgICB0aHJvdyBTdXNwZW5zZUV4Y2VwdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0U3VzcGVuZGVkVGhlbmFibGUoKSB7XG4gICAgICBpZiAobnVsbCA9PT0gc3VzcGVuZGVkVGhlbmFibGUpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiRXhwZWN0ZWQgYSBzdXNwZW5kZWQgdGhlbmFibGUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICk7XG4gICAgICB2YXIgdGhlbmFibGUgPSBzdXNwZW5kZWRUaGVuYWJsZTtcbiAgICAgIHN1c3BlbmRlZFRoZW5hYmxlID0gbnVsbDtcbiAgICAgIHJldHVybiB0aGVuYWJsZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgICAgcmV0dXJuICh4ID09PSB5ICYmICgwICE9PSB4IHx8IDEgLyB4ID09PSAxIC8geSkpIHx8ICh4ICE9PSB4ICYmIHkgIT09IHkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCkge1xuICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJJbnZhbGlkIGhvb2sgY2FsbC4gSG9va3MgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBvZiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGNvbXBvbmVudC4gVGhpcyBjb3VsZCBoYXBwZW4gZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuMS4gWW91IG1pZ2h0IGhhdmUgbWlzbWF0Y2hpbmcgdmVyc2lvbnMgb2YgUmVhY3QgYW5kIHRoZSByZW5kZXJlciAoc3VjaCBhcyBSZWFjdCBET00pXFxuMi4gWW91IG1pZ2h0IGJlIGJyZWFraW5nIHRoZSBSdWxlcyBvZiBIb29rc1xcbjMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG5TZWUgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9pbnZhbGlkLWhvb2stY2FsbCBmb3IgdGlwcyBhYm91dCBob3cgdG8gZGVidWcgYW5kIGZpeCB0aGlzIHByb2JsZW0uXCJcbiAgICAgICAgKTtcbiAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiRG8gbm90IGNhbGwgSG9va3MgaW5zaWRlIHVzZUVmZmVjdCguLi4pLCB1c2VNZW1vKC4uLiksIG9yIG90aGVyIGJ1aWx0LWluIEhvb2tzLiBZb3UgY2FuIG9ubHkgY2FsbCBIb29rcyBhdCB0aGUgdG9wIGxldmVsIG9mIHlvdXIgUmVhY3QgZnVuY3Rpb24uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9ydWxlcy1vZi1ob29rc1wiXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVIb29rKCkge1xuICAgICAgaWYgKDAgPCBudW1iZXJPZlJlUmVuZGVycylcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJSZW5kZXJlZCBtb3JlIGhvb2tzIHRoYW4gZHVyaW5nIHRoZSBwcmV2aW91cyByZW5kZXJcIik7XG4gICAgICByZXR1cm4geyBtZW1vaXplZFN0YXRlOiBudWxsLCBxdWV1ZTogbnVsbCwgbmV4dDogbnVsbCB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKSB7XG4gICAgICBudWxsID09PSB3b3JrSW5Qcm9ncmVzc0hvb2tcbiAgICAgICAgPyBudWxsID09PSBmaXJzdFdvcmtJblByb2dyZXNzSG9va1xuICAgICAgICAgID8gKChpc1JlUmVuZGVyID0gITEpLFxuICAgICAgICAgICAgKGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlSG9vaygpKSlcbiAgICAgICAgICA6ICgoaXNSZVJlbmRlciA9ICEwKSwgKHdvcmtJblByb2dyZXNzSG9vayA9IGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rKSlcbiAgICAgICAgOiBudWxsID09PSB3b3JrSW5Qcm9ncmVzc0hvb2submV4dFxuICAgICAgICAgID8gKChpc1JlUmVuZGVyID0gITEpLFxuICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzSG9vayA9IHdvcmtJblByb2dyZXNzSG9vay5uZXh0ID0gY3JlYXRlSG9vaygpKSlcbiAgICAgICAgICA6ICgoaXNSZVJlbmRlciA9ICEwKSwgKHdvcmtJblByb2dyZXNzSG9vayA9IHdvcmtJblByb2dyZXNzSG9vay5uZXh0KSk7XG4gICAgICByZXR1cm4gd29ya0luUHJvZ3Jlc3NIb29rO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRUaGVuYWJsZVN0YXRlQWZ0ZXJTdXNwZW5kaW5nKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhlbmFibGVTdGF0ZTtcbiAgICAgIHRoZW5hYmxlU3RhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNldEhvb2tzU3RhdGUoKSB7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMTtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0tleVBhdGggPVxuICAgICAgICBjdXJyZW50bHlSZW5kZXJpbmdSZXF1ZXN0ID1cbiAgICAgICAgY3VycmVudGx5UmVuZGVyaW5nVGFzayA9XG4gICAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9XG4gICAgICAgICAgbnVsbDtcbiAgICAgIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSAhMTtcbiAgICAgIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbiAgICAgIG51bWJlck9mUmVSZW5kZXJzID0gMDtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IHJlbmRlclBoYXNlVXBkYXRlcyA9IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlYWRDb250ZXh0KGNvbnRleHQpIHtcbiAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiAmJlxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiQ29udGV4dCBjYW4gb25seSBiZSByZWFkIHdoaWxlIFJlYWN0IGlzIHJlbmRlcmluZy4gSW4gY2xhc3NlcywgeW91IGNhbiByZWFkIGl0IGluIHRoZSByZW5kZXIgbWV0aG9kIG9yIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcy4gSW4gZnVuY3Rpb24gY29tcG9uZW50cywgeW91IGNhbiByZWFkIGl0IGRpcmVjdGx5IGluIHRoZSBmdW5jdGlvbiBib2R5LCBidXQgbm90IGluc2lkZSBIb29rcyBsaWtlIHVzZVJlZHVjZXIoKSBvciB1c2VNZW1vKCkuXCJcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiBjb250ZXh0Ll9jdXJyZW50VmFsdWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJhc2ljU3RhdGVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pIHtcbiAgICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhY3Rpb24gPyBhY3Rpb24oc3RhdGUpIDogYWN0aW9uO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VSZWR1Y2VyKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgICAgIHJlZHVjZXIgIT09IGJhc2ljU3RhdGVSZWR1Y2VyICYmIChjdXJyZW50SG9va05hbWVJbkRldiA9IFwidXNlUmVkdWNlclwiKTtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgICAgaWYgKGlzUmVSZW5kZXIpIHtcbiAgICAgICAgaW5pdCA9IHdvcmtJblByb2dyZXNzSG9vay5xdWV1ZTtcbiAgICAgICAgaW5pdGlhbEFyZyA9IGluaXQuZGlzcGF0Y2g7XG4gICAgICAgIGlmIChudWxsICE9PSByZW5kZXJQaGFzZVVwZGF0ZXMpIHtcbiAgICAgICAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQoaW5pdCk7XG4gICAgICAgICAgaWYgKHZvaWQgMCAhPT0gZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSkge1xuICAgICAgICAgICAgcmVuZGVyUGhhc2VVcGRhdGVzLmRlbGV0ZShpbml0KTtcbiAgICAgICAgICAgIGluaXQgPSB3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgdmFyIGFjdGlvbiA9IGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUuYWN0aW9uO1xuICAgICAgICAgICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMDtcbiAgICAgICAgICAgICAgaW5pdCA9IHJlZHVjZXIoaW5pdCwgYWN0aW9uKTtcbiAgICAgICAgICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITE7XG4gICAgICAgICAgICAgIGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUgPSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQ7XG4gICAgICAgICAgICB9IHdoaWxlIChudWxsICE9PSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlKTtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gaW5pdDtcbiAgICAgICAgICAgIHJldHVybiBbaW5pdCwgaW5pdGlhbEFyZ107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIGluaXRpYWxBcmddO1xuICAgICAgfVxuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITA7XG4gICAgICByZWR1Y2VyID1cbiAgICAgICAgcmVkdWNlciA9PT0gYmFzaWNTdGF0ZVJlZHVjZXJcbiAgICAgICAgICA/IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluaXRpYWxBcmdcbiAgICAgICAgICAgID8gaW5pdGlhbEFyZygpXG4gICAgICAgICAgICA6IGluaXRpYWxBcmdcbiAgICAgICAgICA6IHZvaWQgMCAhPT0gaW5pdFxuICAgICAgICAgICAgPyBpbml0KGluaXRpYWxBcmcpXG4gICAgICAgICAgICA6IGluaXRpYWxBcmc7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gcmVkdWNlcjtcbiAgICAgIHJlZHVjZXIgPSB3b3JrSW5Qcm9ncmVzc0hvb2sucXVldWUgPSB7IGxhc3Q6IG51bGwsIGRpc3BhdGNoOiBudWxsIH07XG4gICAgICByZWR1Y2VyID0gcmVkdWNlci5kaXNwYXRjaCA9IGRpc3BhdGNoQWN0aW9uLmJpbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCxcbiAgICAgICAgcmVkdWNlclxuICAgICAgKTtcbiAgICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIHJlZHVjZXJdO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1c2VNZW1vKG5leHRDcmVhdGUsIGRlcHMpIHtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgICAgZGVwcyA9IHZvaWQgMCA9PT0gZGVwcyA/IG51bGwgOiBkZXBzO1xuICAgICAgaWYgKG51bGwgIT09IHdvcmtJblByb2dyZXNzSG9vaykge1xuICAgICAgICB2YXIgcHJldlN0YXRlID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG4gICAgICAgIGlmIChudWxsICE9PSBwcmV2U3RhdGUgJiYgbnVsbCAhPT0gZGVwcykge1xuICAgICAgICAgIGE6IHtcbiAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBwcmV2U3RhdGVbMV07XG4gICAgICAgICAgICBpZiAobnVsbCA9PT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KVxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXMgcmVjZWl2ZWQgYSBmaW5hbCBhcmd1bWVudCBkdXJpbmcgdGhpcyByZW5kZXIsIGJ1dCBub3QgZHVyaW5nIHRoZSBwcmV2aW91cyByZW5kZXIuIEV2ZW4gdGhvdWdoIHRoZSBmaW5hbCBhcmd1bWVudCBpcyBvcHRpb25hbCwgaXRzIHR5cGUgY2Fubm90IGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMuXCIsXG4gICAgICAgICAgICAgICAgY3VycmVudEhvb2tOYW1lSW5EZXZcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITEpO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGRlcHMubGVuZ3RoICE9PSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGZpbmFsIGFyZ3VtZW50IHBhc3NlZCB0byAlcyBjaGFuZ2VkIHNpemUgYmV0d2VlbiByZW5kZXJzLiBUaGUgb3JkZXIgYW5kIHNpemUgb2YgdGhpcyBhcnJheSBtdXN0IHJlbWFpbiBjb25zdGFudC5cXG5cXG5QcmV2aW91czogJXNcXG5JbmNvbWluZzogJXNcIixcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRIb29rTmFtZUluRGV2LFxuICAgICAgICAgICAgICAgICAgXCJbXCIgKyBkZXBzLmpvaW4oXCIsIFwiKSArIFwiXVwiLFxuICAgICAgICAgICAgICAgICAgXCJbXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQuam9pbihcIiwgXCIpICsgXCJdXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgICAgICAgICBpIDwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0Lmxlbmd0aCAmJiBpIDwgZGVwcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAoIW9iamVjdElzKGRlcHNbaV0sIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFtpXSkpIHtcbiAgICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSByZXR1cm4gcHJldlN0YXRlWzBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMDtcbiAgICAgIG5leHRDcmVhdGUgPSBuZXh0Q3JlYXRlKCk7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSAhMTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gW25leHRDcmVhdGUsIGRlcHNdO1xuICAgICAgcmV0dXJuIG5leHRDcmVhdGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRpc3BhdGNoQWN0aW9uKGNvbXBvbmVudElkZW50aXR5LCBxdWV1ZSwgYWN0aW9uKSB7XG4gICAgICBpZiAoMjUgPD0gbnVtYmVyT2ZSZVJlbmRlcnMpXG4gICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgIFwiVG9vIG1hbnkgcmUtcmVuZGVycy4gUmVhY3QgbGltaXRzIHRoZSBudW1iZXIgb2YgcmVuZGVycyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3AuXCJcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb21wb25lbnRJZGVudGl0eSA9PT0gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKChkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gITApLFxuICAgICAgICAgIChjb21wb25lbnRJZGVudGl0eSA9IHsgYWN0aW9uOiBhY3Rpb24sIG5leHQ6IG51bGwgfSksXG4gICAgICAgICAgbnVsbCA9PT0gcmVuZGVyUGhhc2VVcGRhdGVzICYmIChyZW5kZXJQaGFzZVVwZGF0ZXMgPSBuZXcgTWFwKCkpLFxuICAgICAgICAgIChhY3Rpb24gPSByZW5kZXJQaGFzZVVwZGF0ZXMuZ2V0KHF1ZXVlKSksXG4gICAgICAgICAgdm9pZCAwID09PSBhY3Rpb24pXG4gICAgICAgIClcbiAgICAgICAgICByZW5kZXJQaGFzZVVwZGF0ZXMuc2V0KHF1ZXVlLCBjb21wb25lbnRJZGVudGl0eSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZvciAocXVldWUgPSBhY3Rpb247IG51bGwgIT09IHF1ZXVlLm5leHQ7ICkgcXVldWUgPSBxdWV1ZS5uZXh0O1xuICAgICAgICAgIHF1ZXVlLm5leHQgPSBjb21wb25lbnRJZGVudGl0eTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFN0YXJ0VHJhbnNpdGlvbigpIHtcbiAgICAgIHRocm93IEVycm9yKFwic3RhcnRUcmFuc2l0aW9uIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuXCIpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1bnN1cHBvcnRlZFNldE9wdGltaXN0aWNTdGF0ZSgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiQ2Fubm90IHVwZGF0ZSBvcHRpbWlzdGljIHN0YXRlIHdoaWxlIHJlbmRlcmluZy5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVzZUFjdGlvblN0YXRlKGFjdGlvbiwgaW5pdGlhbFN0YXRlLCBwZXJtYWxpbmspIHtcbiAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgIHZhciBhY3Rpb25TdGF0ZUhvb2tJbmRleCA9IGFjdGlvblN0YXRlQ291bnRlcisrLFxuICAgICAgICByZXF1ZXN0ID0gY3VycmVudGx5UmVuZGVyaW5nUmVxdWVzdDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhY3Rpb24uJCRGT1JNX0FDVElPTikge1xuICAgICAgICB2YXIgbmV4dFBvc3RiYWNrU3RhdGVLZXkgPSBudWxsLFxuICAgICAgICAgIGNvbXBvbmVudEtleVBhdGggPSBjdXJyZW50bHlSZW5kZXJpbmdLZXlQYXRoO1xuICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5mb3JtU3RhdGU7XG4gICAgICAgIHZhciBpc1NpZ25hdHVyZUVxdWFsID0gYWN0aW9uLiQkSVNfU0lHTkFUVVJFX0VRVUFMO1xuICAgICAgICBpZiAobnVsbCAhPT0gcmVxdWVzdCAmJiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpc1NpZ25hdHVyZUVxdWFsKSB7XG4gICAgICAgICAgdmFyIHBvc3RiYWNrS2V5ID0gcmVxdWVzdFsxXTtcbiAgICAgICAgICBpc1NpZ25hdHVyZUVxdWFsLmNhbGwoYWN0aW9uLCByZXF1ZXN0WzJdLCByZXF1ZXN0WzNdKSAmJlxuICAgICAgICAgICAgKChuZXh0UG9zdGJhY2tTdGF0ZUtleSA9XG4gICAgICAgICAgICAgIHZvaWQgMCAhPT0gcGVybWFsaW5rXG4gICAgICAgICAgICAgICAgPyBcInBcIiArIHBlcm1hbGlua1xuICAgICAgICAgICAgICAgIDogXCJrXCIgK1xuICAgICAgICAgICAgICAgICAgbXVybXVyaGFzaDNfMzJfZ2MoXG4gICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRLZXlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uU3RhdGVIb29rSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgcG9zdGJhY2tLZXkgPT09IG5leHRQb3N0YmFja1N0YXRlS2V5ICYmXG4gICAgICAgICAgICAgICgoYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4ID0gYWN0aW9uU3RhdGVIb29rSW5kZXgpLFxuICAgICAgICAgICAgICAoaW5pdGlhbFN0YXRlID0gcmVxdWVzdFswXSkpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm91bmRBY3Rpb24gPSBhY3Rpb24uYmluZChudWxsLCBpbml0aWFsU3RhdGUpO1xuICAgICAgICBhY3Rpb24gPSBmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICAgIGJvdW5kQWN0aW9uKHBheWxvYWQpO1xuICAgICAgICB9O1xuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBib3VuZEFjdGlvbi4kJEZPUk1fQUNUSU9OICYmXG4gICAgICAgICAgKGFjdGlvbi4kJEZPUk1fQUNUSU9OID0gZnVuY3Rpb24gKHByZWZpeCkge1xuICAgICAgICAgICAgcHJlZml4ID0gYm91bmRBY3Rpb24uJCRGT1JNX0FDVElPTihwcmVmaXgpO1xuICAgICAgICAgICAgdm9pZCAwICE9PSBwZXJtYWxpbmsgJiZcbiAgICAgICAgICAgICAgKGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24ocGVybWFsaW5rLCBcInRhcmdldFwiKSxcbiAgICAgICAgICAgICAgKHBlcm1hbGluayArPSBcIlwiKSxcbiAgICAgICAgICAgICAgKHByZWZpeC5hY3Rpb24gPSBwZXJtYWxpbmspKTtcbiAgICAgICAgICAgIHZhciBmb3JtRGF0YSA9IHByZWZpeC5kYXRhO1xuICAgICAgICAgICAgZm9ybURhdGEgJiZcbiAgICAgICAgICAgICAgKG51bGwgPT09IG5leHRQb3N0YmFja1N0YXRlS2V5ICYmXG4gICAgICAgICAgICAgICAgKG5leHRQb3N0YmFja1N0YXRlS2V5ID1cbiAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gcGVybWFsaW5rXG4gICAgICAgICAgICAgICAgICAgID8gXCJwXCIgKyBwZXJtYWxpbmtcbiAgICAgICAgICAgICAgICAgICAgOiBcImtcIiArXG4gICAgICAgICAgICAgICAgICAgICAgbXVybXVyaGFzaDNfMzJfZ2MoXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEtleVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblN0YXRlSG9va0luZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFwiJEFDVElPTl9LRVlcIiwgbmV4dFBvc3RiYWNrU3RhdGVLZXkpKTtcbiAgICAgICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbaW5pdGlhbFN0YXRlLCBhY3Rpb24sICExXTtcbiAgICAgIH1cbiAgICAgIHZhciBfYm91bmRBY3Rpb24gPSBhY3Rpb24uYmluZChudWxsLCBpbml0aWFsU3RhdGUpO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgICBmdW5jdGlvbiAocGF5bG9hZCkge1xuICAgICAgICAgIF9ib3VuZEFjdGlvbihwYXlsb2FkKTtcbiAgICAgICAgfSxcbiAgICAgICAgITFcbiAgICAgIF07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVud3JhcFRoZW5hYmxlKHRoZW5hYmxlKSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGVuYWJsZUluZGV4Q291bnRlcjtcbiAgICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyICs9IDE7XG4gICAgICBudWxsID09PSB0aGVuYWJsZVN0YXRlICYmICh0aGVuYWJsZVN0YXRlID0gW10pO1xuICAgICAgcmV0dXJuIHRyYWNrVXNlZFRoZW5hYmxlKHRoZW5hYmxlU3RhdGUsIHRoZW5hYmxlLCBpbmRleCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHVuc3VwcG9ydGVkUmVmcmVzaCgpIHtcbiAgICAgIHRocm93IEVycm9yKFwiQ2FjaGUgY2Fubm90IGJlIHJlZnJlc2hlZCBkdXJpbmcgc2VydmVyIHJlbmRlcmluZy5cIik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vb3AkMSgpIHt9XG4gICAgZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuICAgIGZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICAgICAgaWYgKDAgPT09IGRpc2FibGVkRGVwdGgpIHtcbiAgICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7XG4gICAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgICB3cml0YWJsZTogITBcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZGlzYWJsZWREZXB0aCsrO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gICAgICBkaXNhYmxlZERlcHRoLS07XG4gICAgICBpZiAoMCA9PT0gZGlzYWJsZWREZXB0aCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB7IGNvbmZpZ3VyYWJsZTogITAsIGVudW1lcmFibGU6ICEwLCB3cml0YWJsZTogITAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkxvZyB9KSxcbiAgICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2SW5mbyB9KSxcbiAgICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2V2FybiB9KSxcbiAgICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkVycm9yIH0pLFxuICAgICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2R3JvdXAgfSksXG4gICAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZCB9KSxcbiAgICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkdyb3VwRW5kIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgMCA+IGRpc2FibGVkRGVwdGggJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcImRpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBwcmVmaXgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgICAgcHJlZml4ID0gKG1hdGNoICYmIG1hdGNoWzFdKSB8fCBcIlwiO1xuICAgICAgICAgIHN1ZmZpeCA9XG4gICAgICAgICAgICAtMSA8IHguc3RhY2suaW5kZXhPZihcIlxcbiAgICBhdFwiKVxuICAgICAgICAgICAgICA/IFwiICg8YW5vbnltb3VzPilcIlxuICAgICAgICAgICAgICA6IC0xIDwgeC5zdGFjay5pbmRleE9mKFwiQFwiKVxuICAgICAgICAgICAgICAgID8gXCJAdW5rbm93bjowOjBcIlxuICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgfVxuICAgICAgcmV0dXJuIFwiXFxuXCIgKyBwcmVmaXggKyBuYW1lICsgc3VmZml4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgICAgIGlmICghZm4gfHwgcmVlbnRyeSkgcmV0dXJuIFwiXCI7XG4gICAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG4gICAgICBpZiAodm9pZCAwICE9PSBmcmFtZSkgcmV0dXJuIGZyYW1lO1xuICAgICAgcmVlbnRyeSA9ICEwO1xuICAgICAgZnJhbWUgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdm9pZCAwO1xuICAgICAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlciA9IG51bGw7XG4gICAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5IO1xuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IG51bGw7XG4gICAgICBkaXNhYmxlTG9ncygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIFJ1bkluUm9vdEZyYW1lID0ge1xuICAgICAgICAgIERldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgXCJwcm9wc1wiLCB7XG4gICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSB4O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHgkMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDEpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSB4JDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChGYWtlID0gZm4oKSkgJiZcbiAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIEZha2UuY2F0Y2ggJiZcbiAgICAgICAgICAgICAgICAgIEZha2UuY2F0Y2goZnVuY3Rpb24gKCkge30pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzYW1wbGUuc3RhY2spXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdC5kaXNwbGF5TmFtZSA9XG4gICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIjtcbiAgICAgICAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFxuICAgICAgICAgIFwibmFtZVwiXG4gICAgICAgICk7XG4gICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci5jb25maWd1cmFibGUgJiZcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXG4gICAgICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgICAgIHsgdmFsdWU6IFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCIgfVxuICAgICAgICAgICk7XG4gICAgICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPVxuICAgICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksXG4gICAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgICAgY29udHJvbFN0YWNrID0gX1J1bkluUm9vdEZyYW1lJERldGVyWzFdO1xuICAgICAgICBpZiAoc2FtcGxlU3RhY2sgJiYgY29udHJvbFN0YWNrKSB7XG4gICAgICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlU3RhY2suc3BsaXQoXCJcXG5cIiksXG4gICAgICAgICAgICBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IG5hbWVQcm9wRGVzY3JpcHRvciA9IDA7XG4gICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPCBzYW1wbGVMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgKVxuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yKys7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA8IGNvbnRyb2xMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFjb250cm9sTGluZXNbX1J1bkluUm9vdEZyYW1lJERldGVyXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIClcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlcisrO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA9PT0gc2FtcGxlTGluZXMubGVuZ3RoIHx8XG4gICAgICAgICAgICBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPT09IGNvbnRyb2xMaW5lcy5sZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgICAgICAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlciAmJlxuICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgIGNvbnRyb2xMaW5lc1tfUnVuSW5Sb290RnJhbWUkRGV0ZXJdO1xuXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlci0tO1xuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJiAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlcjtcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci0tLCBfUnVuSW5Sb290RnJhbWUkRGV0ZXItLVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXSAhPT1cbiAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoMSAhPT0gbmFtZVByb3BEZXNjcmlwdG9yIHx8IDEgIT09IF9SdW5JblJvb3RGcmFtZSREZXRlcikge1xuICAgICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChuYW1lUHJvcERlc2NyaXB0b3ItLSxcbiAgICAgICAgICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyLS0sXG4gICAgICAgICAgICAgICAgICAgIDAgPiBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl0pXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgbmV3IFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBmbi5kaXNwbGF5TmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgIF9mcmFtZS5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgKF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKFwiPGFub255bW91cz5cIiwgZm4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoMSA8PSBuYW1lUHJvcERlc2NyaXB0b3IgJiYgMCA8PSBfUnVuSW5Sb290RnJhbWUkRGV0ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAocmVlbnRyeSA9ICExKSxcbiAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IHByZXZpb3VzRGlzcGF0Y2hlciksXG4gICAgICAgICAgcmVlbmFibGVMb2dzKCksXG4gICAgICAgICAgKEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnJhbWUpO1xuICAgICAgfVxuICAgICAgc2FtcGxlTGluZXMgPSAoc2FtcGxlTGluZXMgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiBcIlwiKVxuICAgICAgICA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHNhbXBsZUxpbmVzKVxuICAgICAgICA6IFwiXCI7XG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmbiAmJiBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc2FtcGxlTGluZXMpO1xuICAgICAgcmV0dXJuIHNhbXBsZUxpbmVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZUNvbXBvbmVudFN0YWNrQnlUeXBlKHR5cGUpIHtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgICAgIHJldHVybiB0eXBlLnByb3RvdHlwZSAmJiB0eXBlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50XG4gICAgICAgICAgPyAoKHR5cGUgPSBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsICEwKSksIHR5cGUpXG4gICAgICAgICAgOiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsICExKTtcbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSAmJiBudWxsICE9PSB0eXBlKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyLCAhMSk7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSh0eXBlLnR5cGUsICExKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZSxcbiAgICAgICAgICAgICAgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgICBsYXp5Q29tcG9uZW50ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHR5cGUgPSBsYXp5Q29tcG9uZW50KHBheWxvYWQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJMYXp5XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50U3RhY2tCeVR5cGUodHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlLm5hbWUpXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChwYXlsb2FkID0gdHlwZS5lbnYpLFxuICAgICAgICAgICAgZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXG4gICAgICAgICAgICAgIHR5cGUubmFtZSArIChwYXlsb2FkID8gXCIgW1wiICsgcGF5bG9hZCArIFwiXVwiIDogXCJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlTGlzdFwiKTtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShcIlN1c3BlbnNlXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFN0YWNrQnlDb21wb25lbnRTdGFja05vZGUoY29tcG9uZW50U3RhY2spIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBpbmZvID0gXCJcIjtcbiAgICAgICAgZG9cbiAgICAgICAgICAoaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudFN0YWNrQnlUeXBlKGNvbXBvbmVudFN0YWNrLnR5cGUpKSxcbiAgICAgICAgICAgIChjb21wb25lbnRTdGFjayA9IGNvbXBvbmVudFN0YWNrLnBhcmVudCk7XG4gICAgICAgIHdoaWxlIChjb21wb25lbnRTdGFjayk7XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICByZXR1cm4gXCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIiArIHgubWVzc2FnZSArIFwiXFxuXCIgKyB4LnN0YWNrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZhdWx0RXJyb3JIYW5kbGVyKGVycm9yKSB7XG4gICAgICBpZiAoXG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlcnJvciAmJlxuICAgICAgICBudWxsICE9PSBlcnJvciAmJlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3IuZW52aXJvbm1lbnROYW1lXG4gICAgICApIHtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGVycm9yLmVudmlyb25tZW50TmFtZTtcbiAgICAgICAgZXJyb3IgPSBbZXJyb3JdLnNsaWNlKDApO1xuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3JbMF1cbiAgICAgICAgICA/IGVycm9yLnNwbGljZShcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgXCIlYyVzJWMgXCIgKyBlcnJvclswXSxcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kOiAjZTZlNmU2O2JhY2tncm91bmQ6IGxpZ2h0LWRhcmsocmdiYSgwLDAsMCwwLjEpLCByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpKTtjb2xvcjogIzAwMDAwMDtjb2xvcjogbGlnaHQtZGFyaygjMDAwMDAwLCAjZmZmZmZmKTtib3JkZXItcmFkaXVzOiAycHhcIixcbiAgICAgICAgICAgICAgXCIgXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgKyBcIiBcIixcbiAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogZXJyb3Iuc3BsaWNlKFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICBcIiVjJXMlYyBcIixcbiAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kOiAjZTZlNmU2O2JhY2tncm91bmQ6IGxpZ2h0LWRhcmsocmdiYSgwLDAsMCwwLjEpLCByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpKTtjb2xvcjogIzAwMDAwMDtjb2xvcjogbGlnaHQtZGFyaygjMDAwMDAwLCAjZmZmZmZmKTtib3JkZXItcmFkaXVzOiAycHhcIixcbiAgICAgICAgICAgICAgXCIgXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgKyBcIiBcIixcbiAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgZXJyb3IudW5zaGlmdChjb25zb2xlKTtcbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gYmluZC5hcHBseShjb25zb2xlLmVycm9yLCBlcnJvcik7XG4gICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCgpO1xuICAgICAgfSBlbHNlIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5vb3AoKSB7fVxuICAgIGZ1bmN0aW9uIFJlcXVlc3RJbnN0YW5jZShcbiAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICByb290Rm9ybWF0Q29udGV4dCxcbiAgICAgIHByb2dyZXNzaXZlQ2h1bmtTaXplLFxuICAgICAgb25FcnJvcixcbiAgICAgIG9uQWxsUmVhZHksXG4gICAgICBvblNoZWxsUmVhZHksXG4gICAgICBvblNoZWxsRXJyb3IsXG4gICAgICBvbkZhdGFsRXJyb3IsXG4gICAgICBvblBvc3Rwb25lLFxuICAgICAgZm9ybVN0YXRlXG4gICAgKSB7XG4gICAgICB2YXIgYWJvcnRTZXQgPSBuZXcgU2V0KCk7XG4gICAgICB0aGlzLmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMuZmx1c2hTY2hlZHVsZWQgPSAhMTtcbiAgICAgIHRoaXMucmVzdW1hYmxlU3RhdGUgPSByZXN1bWFibGVTdGF0ZTtcbiAgICAgIHRoaXMucmVuZGVyU3RhdGUgPSByZW5kZXJTdGF0ZTtcbiAgICAgIHRoaXMucm9vdEZvcm1hdENvbnRleHQgPSByb290Rm9ybWF0Q29udGV4dDtcbiAgICAgIHRoaXMucHJvZ3Jlc3NpdmVDaHVua1NpemUgPVxuICAgICAgICB2b2lkIDAgPT09IHByb2dyZXNzaXZlQ2h1bmtTaXplID8gMTI4MDAgOiBwcm9ncmVzc2l2ZUNodW5rU2l6ZTtcbiAgICAgIHRoaXMuc3RhdHVzID0gMTA7XG4gICAgICB0aGlzLmZhdGFsRXJyb3IgPSBudWxsO1xuICAgICAgdGhpcy5wZW5kaW5nUm9vdFRhc2tzID0gdGhpcy5hbGxQZW5kaW5nVGFza3MgPSB0aGlzLm5leHRTZWdtZW50SWQgPSAwO1xuICAgICAgdGhpcy5jb21wbGV0ZWRSb290U2VnbWVudCA9IG51bGw7XG4gICAgICB0aGlzLmFib3J0YWJsZVRhc2tzID0gYWJvcnRTZXQ7XG4gICAgICB0aGlzLnBpbmdlZFRhc2tzID0gW107XG4gICAgICB0aGlzLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcyA9IFtdO1xuICAgICAgdGhpcy5jb21wbGV0ZWRCb3VuZGFyaWVzID0gW107XG4gICAgICB0aGlzLnBhcnRpYWxCb3VuZGFyaWVzID0gW107XG4gICAgICB0aGlzLnRyYWNrZWRQb3N0cG9uZXMgPSBudWxsO1xuICAgICAgdGhpcy5vbkVycm9yID0gdm9pZCAwID09PSBvbkVycm9yID8gZGVmYXVsdEVycm9ySGFuZGxlciA6IG9uRXJyb3I7XG4gICAgICB0aGlzLm9uUG9zdHBvbmUgPSB2b2lkIDAgPT09IG9uUG9zdHBvbmUgPyBub29wIDogb25Qb3N0cG9uZTtcbiAgICAgIHRoaXMub25BbGxSZWFkeSA9IHZvaWQgMCA9PT0gb25BbGxSZWFkeSA/IG5vb3AgOiBvbkFsbFJlYWR5O1xuICAgICAgdGhpcy5vblNoZWxsUmVhZHkgPSB2b2lkIDAgPT09IG9uU2hlbGxSZWFkeSA/IG5vb3AgOiBvblNoZWxsUmVhZHk7XG4gICAgICB0aGlzLm9uU2hlbGxFcnJvciA9IHZvaWQgMCA9PT0gb25TaGVsbEVycm9yID8gbm9vcCA6IG9uU2hlbGxFcnJvcjtcbiAgICAgIHRoaXMub25GYXRhbEVycm9yID0gdm9pZCAwID09PSBvbkZhdGFsRXJyb3IgPyBub29wIDogb25GYXRhbEVycm9yO1xuICAgICAgdGhpcy5mb3JtU3RhdGUgPSB2b2lkIDAgPT09IGZvcm1TdGF0ZSA/IG51bGwgOiBmb3JtU3RhdGU7XG4gICAgICB0aGlzLmRpZFdhcm5Gb3JLZXkgPSBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0KFxuICAgICAgY2hpbGRyZW4sXG4gICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgcm9vdEZvcm1hdENvbnRleHQsXG4gICAgICBwcm9ncmVzc2l2ZUNodW5rU2l6ZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvbkFsbFJlYWR5LFxuICAgICAgb25TaGVsbFJlYWR5LFxuICAgICAgb25TaGVsbEVycm9yLFxuICAgICAgb25GYXRhbEVycm9yLFxuICAgICAgb25Qb3N0cG9uZSxcbiAgICAgIGZvcm1TdGF0ZVxuICAgICkge1xuICAgICAgcmVzdW1hYmxlU3RhdGUgPSBuZXcgUmVxdWVzdEluc3RhbmNlKFxuICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgcmVuZGVyU3RhdGUsXG4gICAgICAgIHJvb3RGb3JtYXRDb250ZXh0LFxuICAgICAgICBwcm9ncmVzc2l2ZUNodW5rU2l6ZSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgb25BbGxSZWFkeSxcbiAgICAgICAgb25TaGVsbFJlYWR5LFxuICAgICAgICBvblNoZWxsRXJyb3IsXG4gICAgICAgIG9uRmF0YWxFcnJvcixcbiAgICAgICAgb25Qb3N0cG9uZSxcbiAgICAgICAgZm9ybVN0YXRlXG4gICAgICApO1xuICAgICAgcmVuZGVyU3RhdGUgPSBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgIDAsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHJvb3RGb3JtYXRDb250ZXh0LFxuICAgICAgICAhMSxcbiAgICAgICAgITFcbiAgICAgICk7XG4gICAgICByZW5kZXJTdGF0ZS5wYXJlbnRGbHVzaGVkID0gITA7XG4gICAgICBjaGlsZHJlbiA9IGNyZWF0ZVJlbmRlclRhc2soXG4gICAgICAgIHJlc3VtYWJsZVN0YXRlLFxuICAgICAgICBudWxsLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgLTEsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgICBudWxsLFxuICAgICAgICByZXN1bWFibGVTdGF0ZS5hYm9ydGFibGVUYXNrcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgcm9vdEZvcm1hdENvbnRleHQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIGVtcHR5VHJlZUNvbnRleHQsXG4gICAgICAgIG51bGwsXG4gICAgICAgICExXG4gICAgICApO1xuICAgICAgcHVzaENvbXBvbmVudFN0YWNrKGNoaWxkcmVuKTtcbiAgICAgIHJlc3VtYWJsZVN0YXRlLnBpbmdlZFRhc2tzLnB1c2goY2hpbGRyZW4pO1xuICAgICAgcmV0dXJuIHJlc3VtYWJsZVN0YXRlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVQcmVyZW5kZXJSZXF1ZXN0KFxuICAgICAgY2hpbGRyZW4sXG4gICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgcm9vdEZvcm1hdENvbnRleHQsXG4gICAgICBwcm9ncmVzc2l2ZUNodW5rU2l6ZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBvbkFsbFJlYWR5LFxuICAgICAgb25TaGVsbFJlYWR5LFxuICAgICAgb25TaGVsbEVycm9yLFxuICAgICAgb25GYXRhbEVycm9yLFxuICAgICAgb25Qb3N0cG9uZVxuICAgICkge1xuICAgICAgY2hpbGRyZW4gPSBjcmVhdGVSZXF1ZXN0KFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgIHJlbmRlclN0YXRlLFxuICAgICAgICByb290Rm9ybWF0Q29udGV4dCxcbiAgICAgICAgcHJvZ3Jlc3NpdmVDaHVua1NpemUsXG4gICAgICAgIG9uRXJyb3IsXG4gICAgICAgIG9uQWxsUmVhZHksXG4gICAgICAgIG9uU2hlbGxSZWFkeSxcbiAgICAgICAgb25TaGVsbEVycm9yLFxuICAgICAgICBvbkZhdGFsRXJyb3IsXG4gICAgICAgIG9uUG9zdHBvbmUsXG4gICAgICAgIHZvaWQgMFxuICAgICAgKTtcbiAgICAgIGNoaWxkcmVuLnRyYWNrZWRQb3N0cG9uZXMgPSB7XG4gICAgICAgIHdvcmtpbmdNYXA6IG5ldyBNYXAoKSxcbiAgICAgICAgcm9vdE5vZGVzOiBbXSxcbiAgICAgICAgcm9vdFNsb3RzOiBudWxsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwaW5nVGFzayhyZXF1ZXN0LCB0YXNrKSB7XG4gICAgICByZXF1ZXN0LnBpbmdlZFRhc2tzLnB1c2godGFzayk7XG4gICAgICAxID09PSByZXF1ZXN0LnBpbmdlZFRhc2tzLmxlbmd0aCAmJlxuICAgICAgICAoKHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgPSBudWxsICE9PSByZXF1ZXN0LmRlc3RpbmF0aW9uKSxcbiAgICAgICAgbnVsbCAhPT0gcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzIHx8IDEwID09PSByZXF1ZXN0LnN0YXR1c1xuICAgICAgICAgID8gc2NoZWR1bGVNaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gcGVyZm9ybVdvcmsocmVxdWVzdCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIDogc2NoZWR1bGVXb3JrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICAgICAgICAgICAgfSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIGZhbGxiYWNrQWJvcnRhYmxlVGFza3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogUEVORElORyxcbiAgICAgICAgcm9vdFNlZ21lbnRJRDogLTEsXG4gICAgICAgIHBhcmVudEZsdXNoZWQ6ICExLFxuICAgICAgICBwZW5kaW5nVGFza3M6IDAsXG4gICAgICAgIGNvbXBsZXRlZFNlZ21lbnRzOiBbXSxcbiAgICAgICAgYnl0ZVNpemU6IDAsXG4gICAgICAgIGZhbGxiYWNrQWJvcnRhYmxlVGFza3M6IGZhbGxiYWNrQWJvcnRhYmxlVGFza3MsXG4gICAgICAgIGVycm9yRGlnZXN0OiBudWxsLFxuICAgICAgICBjb250ZW50U3RhdGU6IGNyZWF0ZUhvaXN0YWJsZVN0YXRlKCksXG4gICAgICAgIGZhbGxiYWNrU3RhdGU6IGNyZWF0ZUhvaXN0YWJsZVN0YXRlKCksXG4gICAgICAgIHRyYWNrZWRDb250ZW50S2V5UGF0aDogbnVsbCxcbiAgICAgICAgdHJhY2tlZEZhbGxiYWNrTm9kZTogbnVsbCxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBudWxsLFxuICAgICAgICBlcnJvclN0YWNrOiBudWxsLFxuICAgICAgICBlcnJvckNvbXBvbmVudFN0YWNrOiBudWxsXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBjcmVhdGVSZW5kZXJUYXNrKFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHRoZW5hYmxlU3RhdGUsXG4gICAgICBub2RlLFxuICAgICAgY2hpbGRJbmRleCxcbiAgICAgIGJsb2NrZWRCb3VuZGFyeSxcbiAgICAgIGJsb2NrZWRTZWdtZW50LFxuICAgICAgaG9pc3RhYmxlU3RhdGUsXG4gICAgICBhYm9ydFNldCxcbiAgICAgIGtleVBhdGgsXG4gICAgICBmb3JtYXRDb250ZXh0LFxuICAgICAgY29udGV4dCxcbiAgICAgIHRyZWVDb250ZXh0LFxuICAgICAgY29tcG9uZW50U3RhY2ssXG4gICAgICBpc0ZhbGxiYWNrXG4gICAgKSB7XG4gICAgICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcysrO1xuICAgICAgbnVsbCA9PT0gYmxvY2tlZEJvdW5kYXJ5XG4gICAgICAgID8gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzKytcbiAgICAgICAgOiBibG9ja2VkQm91bmRhcnkucGVuZGluZ1Rhc2tzKys7XG4gICAgICB2YXIgdGFzayA9IHtcbiAgICAgICAgcmVwbGF5OiBudWxsLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICBjaGlsZEluZGV4OiBjaGlsZEluZGV4LFxuICAgICAgICBwaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHBpbmdUYXNrKHJlcXVlc3QsIHRhc2spO1xuICAgICAgICB9LFxuICAgICAgICBibG9ja2VkQm91bmRhcnk6IGJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgYmxvY2tlZFNlZ21lbnQ6IGJsb2NrZWRTZWdtZW50LFxuICAgICAgICBob2lzdGFibGVTdGF0ZTogaG9pc3RhYmxlU3RhdGUsXG4gICAgICAgIGFib3J0U2V0OiBhYm9ydFNldCxcbiAgICAgICAga2V5UGF0aDoga2V5UGF0aCxcbiAgICAgICAgZm9ybWF0Q29udGV4dDogZm9ybWF0Q29udGV4dCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgdHJlZUNvbnRleHQ6IHRyZWVDb250ZXh0LFxuICAgICAgICBjb21wb25lbnRTdGFjazogY29tcG9uZW50U3RhY2ssXG4gICAgICAgIHRoZW5hYmxlU3RhdGU6IHRoZW5hYmxlU3RhdGUsXG4gICAgICAgIGlzRmFsbGJhY2s6IGlzRmFsbGJhY2tcbiAgICAgIH07XG4gICAgICBhYm9ydFNldC5hZGQodGFzayk7XG4gICAgICByZXR1cm4gdGFzaztcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUmVwbGF5VGFzayhcbiAgICAgIHJlcXVlc3QsXG4gICAgICB0aGVuYWJsZVN0YXRlLFxuICAgICAgcmVwbGF5LFxuICAgICAgbm9kZSxcbiAgICAgIGNoaWxkSW5kZXgsXG4gICAgICBibG9ja2VkQm91bmRhcnksXG4gICAgICBob2lzdGFibGVTdGF0ZSxcbiAgICAgIGFib3J0U2V0LFxuICAgICAga2V5UGF0aCxcbiAgICAgIGZvcm1hdENvbnRleHQsXG4gICAgICBjb250ZXh0LFxuICAgICAgdHJlZUNvbnRleHQsXG4gICAgICBjb21wb25lbnRTdGFjayxcbiAgICAgIGlzRmFsbGJhY2tcbiAgICApIHtcbiAgICAgIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzKys7XG4gICAgICBudWxsID09PSBibG9ja2VkQm91bmRhcnlcbiAgICAgICAgPyByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MrK1xuICAgICAgICA6IGJsb2NrZWRCb3VuZGFyeS5wZW5kaW5nVGFza3MrKztcbiAgICAgIHJlcGxheS5wZW5kaW5nVGFza3MrKztcbiAgICAgIHZhciB0YXNrID0ge1xuICAgICAgICByZXBsYXk6IHJlcGxheSxcbiAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgY2hpbGRJbmRleDogY2hpbGRJbmRleCxcbiAgICAgICAgcGluZzogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBwaW5nVGFzayhyZXF1ZXN0LCB0YXNrKTtcbiAgICAgICAgfSxcbiAgICAgICAgYmxvY2tlZEJvdW5kYXJ5OiBibG9ja2VkQm91bmRhcnksXG4gICAgICAgIGJsb2NrZWRTZWdtZW50OiBudWxsLFxuICAgICAgICBob2lzdGFibGVTdGF0ZTogaG9pc3RhYmxlU3RhdGUsXG4gICAgICAgIGFib3J0U2V0OiBhYm9ydFNldCxcbiAgICAgICAga2V5UGF0aDoga2V5UGF0aCxcbiAgICAgICAgZm9ybWF0Q29udGV4dDogZm9ybWF0Q29udGV4dCxcbiAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgdHJlZUNvbnRleHQ6IHRyZWVDb250ZXh0LFxuICAgICAgICBjb21wb25lbnRTdGFjazogY29tcG9uZW50U3RhY2ssXG4gICAgICAgIHRoZW5hYmxlU3RhdGU6IHRoZW5hYmxlU3RhdGUsXG4gICAgICAgIGlzRmFsbGJhY2s6IGlzRmFsbGJhY2tcbiAgICAgIH07XG4gICAgICBhYm9ydFNldC5hZGQodGFzayk7XG4gICAgICByZXR1cm4gdGFzaztcbiAgICB9XG4gICAgZnVuY3Rpb24gY3JlYXRlUGVuZGluZ1NlZ21lbnQoXG4gICAgICByZXF1ZXN0LFxuICAgICAgaW5kZXgsXG4gICAgICBib3VuZGFyeSxcbiAgICAgIHBhcmVudEZvcm1hdENvbnRleHQsXG4gICAgICBsYXN0UHVzaGVkVGV4dCxcbiAgICAgIHRleHRFbWJlZGRlZFxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBQRU5ESU5HLFxuICAgICAgICBpZDogLTEsXG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgcGFyZW50Rmx1c2hlZDogITEsXG4gICAgICAgIGNodW5rczogW10sXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgcGFyZW50Rm9ybWF0Q29udGV4dDogcGFyZW50Rm9ybWF0Q29udGV4dCxcbiAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgICBsYXN0UHVzaGVkVGV4dDogbGFzdFB1c2hlZFRleHQsXG4gICAgICAgIHRleHRFbWJlZGRlZDogdGV4dEVtYmVkZGVkXG4gICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDdXJyZW50U3RhY2tJbkRFVigpIHtcbiAgICAgIHJldHVybiBudWxsID09PSBjdXJyZW50VGFza0luREVWIHx8XG4gICAgICAgIG51bGwgPT09IGN1cnJlbnRUYXNrSW5ERVYuY29tcG9uZW50U3RhY2tcbiAgICAgICAgPyBcIlwiXG4gICAgICAgIDogZ2V0U3RhY2tCeUNvbXBvbmVudFN0YWNrTm9kZShjdXJyZW50VGFza0luREVWLmNvbXBvbmVudFN0YWNrKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaFNlcnZlckNvbXBvbmVudFN0YWNrKHRhc2ssIGRlYnVnSW5mbykge1xuICAgICAgaWYgKG51bGwgIT0gZGVidWdJbmZvKVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlYnVnSW5mby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBjb21wb25lbnRJbmZvID0gZGVidWdJbmZvW2ldO1xuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBjb21wb25lbnRJbmZvLm5hbWUgJiZcbiAgICAgICAgICAgICh0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IHRhc2suY29tcG9uZW50U3RhY2ssXG4gICAgICAgICAgICAgIHR5cGU6IGNvbXBvbmVudEluZm8sXG4gICAgICAgICAgICAgIG93bmVyOiBjb21wb25lbnRJbmZvLm93bmVyLFxuICAgICAgICAgICAgICBzdGFjazogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcHVzaENvbXBvbmVudFN0YWNrKHRhc2spIHtcbiAgICAgIHZhciBub2RlID0gdGFzay5ub2RlO1xuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBub2RlICYmIG51bGwgIT09IG5vZGUpXG4gICAgICAgIHN3aXRjaCAobm9kZS4kJHR5cGVvZikge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICAgICAgdmFyIHR5cGUgPSBub2RlLnR5cGUsXG4gICAgICAgICAgICAgIG93bmVyID0gbm9kZS5fb3duZXI7XG4gICAgICAgICAgICBwdXNoU2VydmVyQ29tcG9uZW50U3RhY2sodGFzaywgbm9kZS5fZGVidWdJbmZvKTtcbiAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSB7XG4gICAgICAgICAgICAgIHBhcmVudDogdGFzay5jb21wb25lbnRTdGFjayxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgb3duZXI6IG93bmVyLFxuICAgICAgICAgICAgICBzdGFjazogbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgcHVzaFNlcnZlckNvbXBvbmVudFN0YWNrKHRhc2ssIG5vZGUuX2RlYnVnSW5mbyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2Ygbm9kZS50aGVuICYmXG4gICAgICAgICAgICAgIHB1c2hTZXJ2ZXJDb21wb25lbnRTdGFjayh0YXNrLCBub2RlLl9kZWJ1Z0luZm8pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldFRocm93bkluZm8obm9kZSkge1xuICAgICAgdmFyIGVycm9ySW5mbyA9IHt9O1xuICAgICAgbm9kZSAmJlxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3JJbmZvLCBcImNvbXBvbmVudFN0YWNrXCIsIHtcbiAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHN0YWNrID0gZ2V0U3RhY2tCeUNvbXBvbmVudFN0YWNrTm9kZShub2RlKTtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvckluZm8sIFwiY29tcG9uZW50U3RhY2tcIiwge1xuICAgICAgICAgICAgICB2YWx1ZTogc3RhY2tcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHN0YWNrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gZXJyb3JJbmZvO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgYm91bmRhcnksXG4gICAgICBkaWdlc3QsXG4gICAgICBlcnJvcixcbiAgICAgIHRocm93bkluZm8sXG4gICAgICB3YXNBYm9ydGVkXG4gICAgKSB7XG4gICAgICBib3VuZGFyeS5lcnJvckRpZ2VzdCA9IGRpZ2VzdDtcbiAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgPyAoKGRpZ2VzdCA9IFN0cmluZyhlcnJvci5tZXNzYWdlKSksIChlcnJvciA9IFN0cmluZyhlcnJvci5zdGFjaykpKVxuICAgICAgICA6ICgoZGlnZXN0ID1cbiAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlcnJvciAmJiBudWxsICE9PSBlcnJvclxuICAgICAgICAgICAgICA/IGRlc2NyaWJlT2JqZWN0Rm9yRXJyb3JNZXNzYWdlKGVycm9yKVxuICAgICAgICAgICAgICA6IFN0cmluZyhlcnJvcikpLFxuICAgICAgICAgIChlcnJvciA9IG51bGwpKTtcbiAgICAgIHdhc0Fib3J0ZWQgPSB3YXNBYm9ydGVkXG4gICAgICAgID8gXCJTd2l0Y2hlZCB0byBjbGllbnQgcmVuZGVyaW5nIGJlY2F1c2UgdGhlIHNlcnZlciByZW5kZXJpbmcgYWJvcnRlZCBkdWUgdG86XFxuXFxuXCJcbiAgICAgICAgOiBcIlN3aXRjaGVkIHRvIGNsaWVudCByZW5kZXJpbmcgYmVjYXVzZSB0aGUgc2VydmVyIHJlbmRlcmluZyBlcnJvcmVkOlxcblxcblwiO1xuICAgICAgYm91bmRhcnkuZXJyb3JNZXNzYWdlID0gd2FzQWJvcnRlZCArIGRpZ2VzdDtcbiAgICAgIGJvdW5kYXJ5LmVycm9yU3RhY2sgPSBudWxsICE9PSBlcnJvciA/IHdhc0Fib3J0ZWQgKyBlcnJvciA6IG51bGw7XG4gICAgICBib3VuZGFyeS5lcnJvckNvbXBvbmVudFN0YWNrID0gdGhyb3duSW5mby5jb21wb25lbnRTdGFjaztcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwgZXJyb3JJbmZvKSB7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5vbkVycm9yO1xuICAgICAgZXJyb3IgPSByZXF1ZXN0KGVycm9yLCBlcnJvckluZm8pO1xuICAgICAgaWYgKG51bGwgIT0gZXJyb3IgJiYgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIGVycm9yKVxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuIFwic3RyaW5nXCIuIG9uRXJyb3Igc2hvdWxkIHJldHVybiBhIHN0cmluZyBhbmQgbWF5IHJldHVybiBudWxsIG9yIHVuZGVmaW5lZCBidXQgbXVzdCBub3QgcmV0dXJuIGFueXRoaW5nIGVsc2UuIEl0IHJlY2VpdmVkIHNvbWV0aGluZyBvZiB0eXBlIFwiJXNcIiBpbnN0ZWFkJyxcbiAgICAgICAgICB0eXBlb2YgZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIGVsc2UgcmV0dXJuIGVycm9yO1xuICAgIH1cbiAgICBmdW5jdGlvbiBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKSB7XG4gICAgICB2YXIgb25TaGVsbEVycm9yID0gcmVxdWVzdC5vblNoZWxsRXJyb3IsXG4gICAgICAgIG9uRmF0YWxFcnJvciA9IHJlcXVlc3Qub25GYXRhbEVycm9yO1xuICAgICAgb25TaGVsbEVycm9yKGVycm9yKTtcbiAgICAgIG9uRmF0YWxFcnJvcihlcnJvcik7XG4gICAgICBudWxsICE9PSByZXF1ZXN0LmRlc3RpbmF0aW9uXG4gICAgICAgID8gKChyZXF1ZXN0LnN0YXR1cyA9IENMT1NFRCksXG4gICAgICAgICAgY2xvc2VXaXRoRXJyb3IocmVxdWVzdC5kZXN0aW5hdGlvbiwgZXJyb3IpKVxuICAgICAgICA6ICgocmVxdWVzdC5zdGF0dXMgPSAxMyksIChyZXF1ZXN0LmZhdGFsRXJyb3IgPSBlcnJvcikpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZW5kZXJXaXRoSG9va3MoXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGFzayxcbiAgICAgIGtleVBhdGgsXG4gICAgICBDb21wb25lbnQsXG4gICAgICBwcm9wcyxcbiAgICAgIHNlY29uZEFyZ1xuICAgICkge1xuICAgICAgdmFyIHByZXZUaGVuYWJsZVN0YXRlID0gdGFzay50aGVuYWJsZVN0YXRlO1xuICAgICAgdGFzay50aGVuYWJsZVN0YXRlID0gbnVsbDtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHt9O1xuICAgICAgY3VycmVudGx5UmVuZGVyaW5nVGFzayA9IHRhc2s7XG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdSZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0tleVBhdGggPSBrZXlQYXRoO1xuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITE7XG4gICAgICBhY3Rpb25TdGF0ZUNvdW50ZXIgPSBsb2NhbElkQ291bnRlciA9IDA7XG4gICAgICBhY3Rpb25TdGF0ZU1hdGNoaW5nSW5kZXggPSAtMTtcbiAgICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyID0gMDtcbiAgICAgIHRoZW5hYmxlU3RhdGUgPSBwcmV2VGhlbmFibGVTdGF0ZTtcbiAgICAgIGZvciAoXG4gICAgICAgIHJlcXVlc3QgPSBjYWxsQ29tcG9uZW50SW5ERVYoQ29tcG9uZW50LCBwcm9wcywgc2Vjb25kQXJnKTtcbiAgICAgICAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZTtcblxuICAgICAgKVxuICAgICAgICAoZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9ICExKSxcbiAgICAgICAgICAoYWN0aW9uU3RhdGVDb3VudGVyID0gbG9jYWxJZENvdW50ZXIgPSAwKSxcbiAgICAgICAgICAoYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4ID0gLTEpLFxuICAgICAgICAgICh0aGVuYWJsZUluZGV4Q291bnRlciA9IDApLFxuICAgICAgICAgIChudW1iZXJPZlJlUmVuZGVycyArPSAxKSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbCksXG4gICAgICAgICAgKHJlcXVlc3QgPSBDb21wb25lbnQocHJvcHMsIHNlY29uZEFyZykpO1xuICAgICAgcmVzZXRIb29rc1N0YXRlKCk7XG4gICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG4gICAgZnVuY3Rpb24gZmluaXNoRnVuY3Rpb25Db21wb25lbnQoXG4gICAgICByZXF1ZXN0LFxuICAgICAgdGFzayxcbiAgICAgIGtleVBhdGgsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGhhc0lkLFxuICAgICAgYWN0aW9uU3RhdGVDb3VudCxcbiAgICAgIGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleFxuICAgICkge1xuICAgICAgdmFyIGRpZEVtaXRBY3Rpb25TdGF0ZU1hcmtlcnMgPSAhMTtcbiAgICAgIGlmICgwICE9PSBhY3Rpb25TdGF0ZUNvdW50ICYmIG51bGwgIT09IHJlcXVlc3QuZm9ybVN0YXRlKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgICAgaWYgKG51bGwgIT09IHNlZ21lbnQpIHtcbiAgICAgICAgICBkaWRFbWl0QWN0aW9uU3RhdGVNYXJrZXJzID0gITA7XG4gICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnQuY2h1bmtzO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9uU3RhdGVDb3VudDsgaSsrKVxuICAgICAgICAgICAgaSA9PT0gYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4XG4gICAgICAgICAgICAgID8gc2VnbWVudC5wdXNoKGZvcm1TdGF0ZU1hcmtlcklzTWF0Y2hpbmcpXG4gICAgICAgICAgICAgIDogc2VnbWVudC5wdXNoKGZvcm1TdGF0ZU1hcmtlcklzTm90TWF0Y2hpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhY3Rpb25TdGF0ZUNvdW50ID0gdGFzay5rZXlQYXRoO1xuICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgIGhhc0lkXG4gICAgICAgID8gKChrZXlQYXRoID0gdGFzay50cmVlQ29udGV4dCksXG4gICAgICAgICAgKHRhc2sudHJlZUNvbnRleHQgPSBwdXNoVHJlZUNvbnRleHQoa2V5UGF0aCwgMSwgMCkpLFxuICAgICAgICAgIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4sIC0xKSxcbiAgICAgICAgICAodGFzay50cmVlQ29udGV4dCA9IGtleVBhdGgpKVxuICAgICAgICA6IGRpZEVtaXRBY3Rpb25TdGF0ZU1hcmtlcnNcbiAgICAgICAgICA/IHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4sIC0xKVxuICAgICAgICAgIDogcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuLCAtMSk7XG4gICAgICB0YXNrLmtleVBhdGggPSBhY3Rpb25TdGF0ZUNvdW50O1xuICAgIH1cbiAgICBmdW5jdGlvbiByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGtleVBhdGgsIHR5cGUsIHByb3BzLCByZWYpIHtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBpZiAodHlwZS5wcm90b3R5cGUgJiYgdHlwZS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCkge1xuICAgICAgICAgIHZhciBuZXdQcm9wcyA9IHByb3BzO1xuICAgICAgICAgIGlmIChcInJlZlwiIGluIHByb3BzKSB7XG4gICAgICAgICAgICBuZXdQcm9wcyA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpXG4gICAgICAgICAgICAgIFwicmVmXCIgIT09IHByb3BOYW1lICYmIChuZXdQcm9wc1twcm9wTmFtZV0gPSBwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG4gICAgICAgICAgaWYgKGRlZmF1bHRQcm9wcykge1xuICAgICAgICAgICAgbmV3UHJvcHMgPT09IHByb3BzICYmIChuZXdQcm9wcyA9IGFzc2lnbih7fSwgbmV3UHJvcHMsIHByb3BzKSk7XG4gICAgICAgICAgICBmb3IgKHZhciBfcHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKVxuICAgICAgICAgICAgICB2b2lkIDAgPT09IG5ld1Byb3BzW19wcm9wTmFtZV0gJiZcbiAgICAgICAgICAgICAgICAobmV3UHJvcHNbX3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1tfcHJvcE5hbWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHJlc29sdmVkUHJvcHMgPSBuZXdQcm9wcztcbiAgICAgICAgICB2YXIgY29udGV4dCA9IGVtcHR5Q29udGV4dE9iamVjdCxcbiAgICAgICAgICAgIGNvbnRleHRUeXBlID0gdHlwZS5jb250ZXh0VHlwZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImNvbnRleHRUeXBlXCIgaW4gdHlwZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gY29udGV4dFR5cGUgJiZcbiAgICAgICAgICAgICh2b2lkIDAgPT09IGNvbnRleHRUeXBlIHx8XG4gICAgICAgICAgICAgIGNvbnRleHRUeXBlLiQkdHlwZW9mICE9PSBSRUFDVF9DT05URVhUX1RZUEUpICYmXG4gICAgICAgICAgICAhZGlkV2FybkFib3V0SW52YWxpZGF0ZUNvbnRleHRUeXBlLmhhcyh0eXBlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZGlkV2FybkFib3V0SW52YWxpZGF0ZUNvbnRleHRUeXBlLmFkZCh0eXBlKTtcbiAgICAgICAgICAgIHZhciBhZGRlbmR1bSA9XG4gICAgICAgICAgICAgIHZvaWQgMCA9PT0gY29udGV4dFR5cGVcbiAgICAgICAgICAgICAgICA/IFwiIEhvd2V2ZXIsIGl0IGlzIHNldCB0byB1bmRlZmluZWQuIFRoaXMgY2FuIGJlIGNhdXNlZCBieSBhIHR5cG8gb3IgYnkgbWl4aW5nIHVwIG5hbWVkIGFuZCBkZWZhdWx0IGltcG9ydHMuIFRoaXMgY2FuIGFsc28gaGFwcGVuIGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3ksIHNvIHRyeSBtb3ZpbmcgdGhlIGNyZWF0ZUNvbnRleHQoKSBjYWxsIHRvIGEgc2VwYXJhdGUgZmlsZS5cIlxuICAgICAgICAgICAgICAgIDogXCJvYmplY3RcIiAhPT0gdHlwZW9mIGNvbnRleHRUeXBlXG4gICAgICAgICAgICAgICAgICA/IFwiIEhvd2V2ZXIsIGl0IGlzIHNldCB0byBhIFwiICsgdHlwZW9mIGNvbnRleHRUeXBlICsgXCIuXCJcbiAgICAgICAgICAgICAgICAgIDogY29udGV4dFR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlNVTUVSX1RZUEVcbiAgICAgICAgICAgICAgICAgICAgPyBcIiBEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIHRoZSBDb250ZXh0LkNvbnN1bWVyIGluc3RlYWQ/XCJcbiAgICAgICAgICAgICAgICAgICAgOiBcIiBIb3dldmVyLCBpdCBpcyBzZXQgdG8gYW4gb2JqZWN0IHdpdGgga2V5cyB7XCIgK1xuICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbnRleHRUeXBlKS5qb2luKFwiLCBcIikgK1xuICAgICAgICAgICAgICAgICAgICAgIFwifS5cIjtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgZGVmaW5lcyBhbiBpbnZhbGlkIGNvbnRleHRUeXBlLiBjb250ZXh0VHlwZSBzaG91bGQgcG9pbnQgdG8gdGhlIENvbnRleHQgb2JqZWN0IHJldHVybmVkIGJ5IFJlYWN0LmNyZWF0ZUNvbnRleHQoKS4lc1wiLFxuICAgICAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgXCJDb21wb25lbnRcIixcbiAgICAgICAgICAgICAgYWRkZW5kdW1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBjb250ZXh0VHlwZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gY29udGV4dFR5cGUgJiZcbiAgICAgICAgICAgIChjb250ZXh0ID0gY29udGV4dFR5cGUuX2N1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IHR5cGUocmVzb2x2ZWRQcm9wcywgY29udGV4dCk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgJiZcbiAgICAgICAgICAgIChudWxsID09PSBpbnN0YW5jZS5zdGF0ZSB8fCB2b2lkIDAgPT09IGluc3RhbmNlLnN0YXRlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgXCJDb21wb25lbnRcIjtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dFVuaW5pdGlhbGl6ZWRTdGF0ZS5oYXMoY29tcG9uZW50TmFtZSkgfHxcbiAgICAgICAgICAgICAgKGRpZFdhcm5BYm91dFVuaW5pdGlhbGl6ZWRTdGF0ZS5hZGQoY29tcG9uZW50TmFtZSksXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgXCJgJXNgIHVzZXMgYGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc2AgYnV0IGl0cyBpbml0aWFsIHN0YXRlIGlzICVzLiBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZC4gSW5zdGVhZCwgZGVmaW5lIHRoZSBpbml0aWFsIHN0YXRlIGJ5IGFzc2lnbmluZyBhbiBvYmplY3QgdG8gYHRoaXMuc3RhdGVgIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBgJXNgLiBUaGlzIGVuc3VyZXMgdGhhdCBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBhcmd1bWVudHMgaGF2ZSBhIGNvbnNpc3RlbnQgc2hhcGUuXCIsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSxcbiAgICAgICAgICAgICAgICBudWxsID09PSBpbnN0YW5jZS5zdGF0ZSA/IFwibnVsbFwiIDogXCJ1bmRlZmluZWRcIixcbiAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyB8fFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBmb3VuZFdpbGxNb3VudE5hbWUgPSBudWxsLFxuICAgICAgICAgICAgICBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lID0gbnVsbCxcbiAgICAgICAgICAgICAgZm91bmRXaWxsVXBkYXRlTmFtZSA9IG51bGw7XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICEwICE9PSBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ1xuICAgICAgICAgICAgICA/IChmb3VuZFdpbGxNb3VudE5hbWUgPSBcImNvbXBvbmVudFdpbGxNb3VudFwiKVxuICAgICAgICAgICAgICA6IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICAgICAoZm91bmRXaWxsTW91bnROYW1lID0gXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIpO1xuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAmJlxuICAgICAgICAgICAgITAgIT09XG4gICAgICAgICAgICAgIGluc3RhbmNlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMuX19zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ1xuICAgICAgICAgICAgICA/IChmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lID0gXCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXCIpXG4gICAgICAgICAgICAgIDogXCJmdW5jdGlvblwiID09PVxuICAgICAgICAgICAgICAgICAgdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzICYmXG4gICAgICAgICAgICAgICAgKGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgPVxuICAgICAgICAgICAgICAgICAgXCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiKTtcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxVcGRhdGUgJiZcbiAgICAgICAgICAgICEwICE9PSBpbnN0YW5jZS5jb21wb25lbnRXaWxsVXBkYXRlLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdcbiAgICAgICAgICAgICAgPyAoZm91bmRXaWxsVXBkYXRlTmFtZSA9IFwiY29tcG9uZW50V2lsbFVwZGF0ZVwiKVxuICAgICAgICAgICAgICA6IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlICYmXG4gICAgICAgICAgICAgICAgKGZvdW5kV2lsbFVwZGF0ZU5hbWUgPSBcIlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlXCIpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBudWxsICE9PSBmb3VuZFdpbGxNb3VudE5hbWUgfHxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSB8fFxuICAgICAgICAgICAgICBudWxsICE9PSBmb3VuZFdpbGxVcGRhdGVOYW1lXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdmFyIF9jb21wb25lbnROYW1lID1cbiAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgIG5ld0FwaU5hbWUgPVxuICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgICAgICAgICAgICAgICAgICAgPyBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpXCJcbiAgICAgICAgICAgICAgICAgICAgOiBcImdldFNuYXBzaG90QmVmb3JlVXBkYXRlKClcIjtcbiAgICAgICAgICAgICAgZGlkV2FybkFib3V0TGVnYWN5TGlmZWN5Y2xlc0FuZERlcml2ZWRTdGF0ZS5oYXMoX2NvbXBvbmVudE5hbWUpIHx8XG4gICAgICAgICAgICAgICAgKGRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUuYWRkKFxuICAgICAgICAgICAgICAgICAgX2NvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlVuc2FmZSBsZWdhY3kgbGlmZWN5Y2xlcyB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGNvbXBvbmVudHMgdXNpbmcgbmV3IGNvbXBvbmVudCBBUElzLlxcblxcbiVzIHVzZXMgJXMgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczolcyVzJXNcXG5cXG5UaGUgYWJvdmUgbGlmZWN5Y2xlcyBzaG91bGQgYmUgcmVtb3ZlZC4gTGVhcm4gbW9yZSBhYm91dCB0aGlzIHdhcm5pbmcgaGVyZTpcXG5odHRwczovL3JlYWN0LmRldi9saW5rL3Vuc2FmZS1jb21wb25lbnQtbGlmZWN5Y2xlc1wiLFxuICAgICAgICAgICAgICAgICAgX2NvbXBvbmVudE5hbWUsXG4gICAgICAgICAgICAgICAgICBuZXdBcGlOYW1lLFxuICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gZm91bmRXaWxsTW91bnROYW1lXG4gICAgICAgICAgICAgICAgICAgID8gXCJcXG4gIFwiICsgZm91bmRXaWxsTW91bnROYW1lXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIixcbiAgICAgICAgICAgICAgICAgIG51bGwgIT09IGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBcIlxcbiAgXCIgKyBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIixcbiAgICAgICAgICAgICAgICAgIG51bGwgIT09IGZvdW5kV2lsbFVwZGF0ZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBcIlxcbiAgXCIgKyBmb3VuZFdpbGxVcGRhdGVOYW1lXG4gICAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiO1xuICAgICAgICAgIGluc3RhbmNlLnJlbmRlciB8fFxuICAgICAgICAgICAgKHR5cGUucHJvdG90eXBlICYmIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlbmRlclxuICAgICAgICAgICAgICA/IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIk5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgJXMgaW5zdGFuY2U6IGRpZCB5b3UgYWNjaWRlbnRhbGx5IHJldHVybiBhbiBvYmplY3QgZnJvbSB0aGUgY29uc3RydWN0b3I/XCIsXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIk5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgJXMgaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGByZW5kZXJgLlwiLFxuICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICFpbnN0YW5jZS5nZXRJbml0aWFsU3RhdGUgfHxcbiAgICAgICAgICAgIGluc3RhbmNlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCB8fFxuICAgICAgICAgICAgaW5zdGFuY2Uuc3RhdGUgfHxcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gRGlkIHlvdSBtZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/XCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaW5zdGFuY2UuZ2V0RGVmYXVsdFByb3BzICYmXG4gICAgICAgICAgICAhaW5zdGFuY2UuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcImdldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgZGVmYXVsdFByb3BzIGluc3RlYWQuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaW5zdGFuY2UuY29udGV4dFR5cGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiY29udGV4dFR5cGUgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGUgaW5zdGVhZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0eXBlLmNoaWxkQ29udGV4dFR5cGVzICYmXG4gICAgICAgICAgICAhZGlkV2FybkFib3V0Q2hpbGRDb250ZXh0VHlwZXMuaGFzKHR5cGUpICYmXG4gICAgICAgICAgICAoZGlkV2FybkFib3V0Q2hpbGRDb250ZXh0VHlwZXMuYWRkKHR5cGUpLFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyB1c2VzIHRoZSBsZWdhY3kgY2hpbGRDb250ZXh0VHlwZXMgQVBJIHdoaWNoIHdhcyByZW1vdmVkIGluIFJlYWN0IDE5LiBVc2UgUmVhY3QuY3JlYXRlQ29udGV4dCgpIGluc3RlYWQuIChodHRwczovL3JlYWN0LmRldi9saW5rL2xlZ2FjeS1jb250ZXh0KVwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB0eXBlLmNvbnRleHRUeXBlcyAmJlxuICAgICAgICAgICAgIWRpZFdhcm5BYm91dENvbnRleHRUeXBlcyQxLmhhcyh0eXBlKSAmJlxuICAgICAgICAgICAgKGRpZFdhcm5BYm91dENvbnRleHRUeXBlcyQxLmFkZCh0eXBlKSxcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgdXNlcyB0aGUgbGVnYWN5IGNvbnRleHRUeXBlcyBBUEkgd2hpY2ggd2FzIHJlbW92ZWQgaW4gUmVhY3QgMTkuIFVzZSBSZWFjdC5jcmVhdGVDb250ZXh0KCkgd2l0aCBzdGF0aWMgY29udGV4dFR5cGUgaW5zdGVhZC4gKGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvbGVnYWN5LWNvbnRleHQpXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICkpO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIGNvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/IFRoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0eXBlLnByb3RvdHlwZSAmJlxuICAgICAgICAgICAgdHlwZS5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgJiZcbiAgICAgICAgICAgIFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBpbnN0YW5jZS5zaG91bGRDb21wb25lbnRVcGRhdGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBzaG91bGRDb21wb25lbnRVcGRhdGUoKS4gc2hvdWxkQ29tcG9uZW50VXBkYXRlIHNob3VsZCBub3QgYmUgdXNlZCB3aGVuIGV4dGVuZGluZyBSZWFjdC5QdXJlQ29tcG9uZW50LiBQbGVhc2UgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudCBpZiBzaG91bGRDb21wb25lbnRVcGRhdGUgaXMgdXNlZC5cIixcbiAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiQSBwdXJlIGNvbXBvbmVudFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudERpZFVubW91bnQgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBjb21wb25lbnREaWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgpP1wiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudERpZFJlY2VpdmVQcm9wcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIGNvbXBvbmVudERpZFJlY2VpdmVQcm9wcygpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBsaWZlY3ljbGUgbWV0aG9kLiBJZiB5b3UgbWVhbnQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBpbiByZXNwb25zZSB0byBjaGFuZ2luZyBwcm9wcywgdXNlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKS4gSWYgeW91IG1lYW50IHRvIGZldGNoIGRhdGEgb3IgcnVuIHNpZGUtZWZmZWN0cyBvciBtdXRhdGlvbnMgYWZ0ZXIgUmVhY3QgaGFzIHVwZGF0ZWQgdGhlIFVJLCB1c2UgY29tcG9uZW50RGlkVXBkYXRlKCkuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIGNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT9cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCIlcyBoYXMgYSBtZXRob2QgY2FsbGVkIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpP1wiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHZhciBoYXNNdXRhdGVkUHJvcHMgPSBpbnN0YW5jZS5wcm9wcyAhPT0gcmVzb2x2ZWRQcm9wcztcbiAgICAgICAgICB2b2lkIDAgIT09IGluc3RhbmNlLnByb3BzICYmXG4gICAgICAgICAgICBoYXNNdXRhdGVkUHJvcHMgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3MgdXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIHdhcyBwYXNzZWQuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaW5zdGFuY2UuZGVmYXVsdFByb3BzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlNldHRpbmcgZGVmYXVsdFByb3BzIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgaWdub3JlZC4gSW5zdGVhZCwgZGVmaW5lIGRlZmF1bHRQcm9wcyBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiAlcy5cIixcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50RGlkVXBkYXRlIHx8XG4gICAgICAgICAgICBkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGUuaGFzKHR5cGUpIHx8XG4gICAgICAgICAgICAoZGlkV2FybkFib3V0R2V0U25hcHNob3RCZWZvcmVVcGRhdGVXaXRob3V0RGlkVXBkYXRlLmFkZCh0eXBlKSxcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXM6IGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgc2hvdWxkIGJlIHVzZWQgd2l0aCBjb21wb25lbnREaWRVcGRhdGUoKS4gVGhpcyBjb21wb25lbnQgZGVmaW5lcyBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIG9ubHkuXCIsXG4gICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzOiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoKSBpcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIG1ldGhvZCBhbmQgd2lsbCBiZSBpZ25vcmVkLiBJbnN0ZWFkLCBkZWNsYXJlIGl0IGFzIGEgc3RhdGljIG1ldGhvZC5cIixcbiAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXM6IGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcigpIGlzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgbWV0aG9kIGFuZCB3aWxsIGJlIGlnbm9yZWQuIEluc3RlYWQsIGRlY2xhcmUgaXQgYXMgYSBzdGF0aWMgbWV0aG9kLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiJXM6IGdldFNuYXBzaG90QmVmb3JlVXBkYXRlKCkgaXMgZGVmaW5lZCBhcyBhIHN0YXRpYyBtZXRob2QgYW5kIHdpbGwgYmUgaWdub3JlZC4gSW5zdGVhZCwgZGVjbGFyZSBpdCBhcyBhbiBpbnN0YW5jZSBtZXRob2QuXCIsXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdmFyIHN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7XG4gICAgICAgICAgc3RhdGUgJiZcbiAgICAgICAgICAgIChcIm9iamVjdFwiICE9PSB0eXBlb2Ygc3RhdGUgfHwgaXNBcnJheUltcGwoc3RhdGUpKSAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIiVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbFwiLCBuYW1lKTtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5nZXRDaGlsZENvbnRleHQgJiZcbiAgICAgICAgICAgIFwib2JqZWN0XCIgIT09IHR5cGVvZiB0eXBlLmNoaWxkQ29udGV4dFR5cGVzICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIiVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gdXNlIGdldENoaWxkQ29udGV4dCgpLlwiLFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB2b2lkIDAgIT09IGluc3RhbmNlLnN0YXRlID8gaW5zdGFuY2Uuc3RhdGUgOiBudWxsO1xuICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZXIgPSBjbGFzc0NvbXBvbmVudFVwZGF0ZXI7XG4gICAgICAgICAgaW5zdGFuY2UucHJvcHMgPSByZXNvbHZlZFByb3BzO1xuICAgICAgICAgIGluc3RhbmNlLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAgICAgICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0geyBxdWV1ZTogW10sIHJlcGxhY2U6ICExIH07XG4gICAgICAgICAgaW5zdGFuY2UuX3JlYWN0SW50ZXJuYWxzID0gaW50ZXJuYWxJbnN0YW5jZTtcbiAgICAgICAgICB2YXIgY29udGV4dFR5cGUkanNjb21wJDAgPSB0eXBlLmNvbnRleHRUeXBlO1xuICAgICAgICAgIGluc3RhbmNlLmNvbnRleHQgPVxuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGNvbnRleHRUeXBlJGpzY29tcCQwICYmXG4gICAgICAgICAgICBudWxsICE9PSBjb250ZXh0VHlwZSRqc2NvbXAkMFxuICAgICAgICAgICAgICA/IGNvbnRleHRUeXBlJGpzY29tcCQwLl9jdXJyZW50VmFsdWVcbiAgICAgICAgICAgICAgOiBlbXB0eUNvbnRleHRPYmplY3Q7XG4gICAgICAgICAgaWYgKGluc3RhbmNlLnN0YXRlID09PSByZXNvbHZlZFByb3BzKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50TmFtZSRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0RGlyZWN0bHlBc3NpZ25pbmdQcm9wc1RvU3RhdGUuaGFzKFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lJGpzY29tcCQwXG4gICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgIChkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZS5hZGQoXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byBhc3NpZ24gcHJvcHMgZGlyZWN0bHkgdG8gc3RhdGUgYmVjYXVzZSB1cGRhdGVzIHRvIHByb3BzIHdvbid0IGJlIHJlZmxlY3RlZCBpbiBzdGF0ZS4gSW4gbW9zdCBjYXNlcywgaXQgaXMgYmV0dGVyIHRvIHVzZSBwcm9wcyBkaXJlY3RseS5cIixcbiAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lJGpzY29tcCQwXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gdHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcykge1xuICAgICAgICAgICAgdmFyIHBhcnRpYWxTdGF0ZSA9IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhcbiAgICAgICAgICAgICAgcmVzb2x2ZWRQcm9wcyxcbiAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gcGFydGlhbFN0YXRlKSB7XG4gICAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lJGpzY29tcCQxID1cbiAgICAgICAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgXCJDb21wb25lbnRcIjtcbiAgICAgICAgICAgICAgZGlkV2FybkFib3V0VW5kZWZpbmVkRGVyaXZlZFN0YXRlLmhhcyhjb21wb25lbnROYW1lJGpzY29tcCQxKSB8fFxuICAgICAgICAgICAgICAgIChkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUkanNjb21wJDEpLFxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIiVzLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpOiBBIHZhbGlkIHN0YXRlIG9iamVjdCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLlwiLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9XG4gICAgICAgICAgICAgIG51bGwgPT09IHBhcnRpYWxTdGF0ZSB8fCB2b2lkIDAgPT09IHBhcnRpYWxTdGF0ZVxuICAgICAgICAgICAgICAgID8gaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICAgICAgOiBhc3NpZ24oe30sIGluaXRpYWxTdGF0ZSwgcGFydGlhbFN0YXRlKTtcbiAgICAgICAgICAgIGluc3RhbmNlLnN0YXRlID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB0eXBlLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyAmJlxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgaW5zdGFuY2UuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgJiZcbiAgICAgICAgICAgIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50IHx8XG4gICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBvbGRTdGF0ZSA9IGluc3RhbmNlLnN0YXRlO1xuICAgICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgITAgIT09IGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lJGpzY29tcCQyID1cbiAgICAgICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgICAgICBkaWRXYXJuQWJvdXREZXByZWNhdGVkV2lsbE1vdW50W2NvbXBvbmVudE5hbWUkanNjb21wJDJdIHx8XG4gICAgICAgICAgICAgICAgICAoY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgICAgICBcImNvbXBvbmVudFdpbGxNb3VudCBoYXMgYmVlbiByZW5hbWVkLCBhbmQgaXMgbm90IHJlY29tbWVuZGVkIGZvciB1c2UuIFNlZSBodHRwczovL3JlYWN0LmRldi9saW5rL3Vuc2FmZS1jb21wb25lbnQtbGlmZWN5Y2xlcyBmb3IgZGV0YWlscy5cXG5cXG4qIE1vdmUgY29kZSBmcm9tIGNvbXBvbmVudFdpbGxNb3VudCB0byBjb21wb25lbnREaWRNb3VudCAocHJlZmVycmVkIGluIG1vc3QgY2FzZXMpIG9yIHRoZSBjb25zdHJ1Y3Rvci5cXG5cXG5QbGVhc2UgdXBkYXRlIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50czogJXNcIixcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkMlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIChkaWRXYXJuQWJvdXREZXByZWNhdGVkV2lsbE1vdW50W2NvbXBvbmVudE5hbWUkanNjb21wJDJdID1cbiAgICAgICAgICAgICAgICAgICAgITApKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICAgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgICAgICAgb2xkU3RhdGUgIT09IGluc3RhbmNlLnN0YXRlICYmXG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXMuY29tcG9uZW50V2lsbE1vdW50KCk6IEFzc2lnbmluZyBkaXJlY3RseSB0byB0aGlzLnN0YXRlIGlzIGRlcHJlY2F0ZWQgKGV4Y2VwdCBpbnNpZGUgYSBjb21wb25lbnQncyBjb25zdHJ1Y3RvcikuIFVzZSBzZXRTdGF0ZSBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGNsYXNzQ29tcG9uZW50VXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLnN0YXRlLFxuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG51bGwgIT09IGludGVybmFsSW5zdGFuY2UucXVldWUgJiZcbiAgICAgICAgICAgICAgMCA8IGludGVybmFsSW5zdGFuY2UucXVldWUubGVuZ3RoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdmFyIG9sZFF1ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZSxcbiAgICAgICAgICAgICAgICBvbGRSZXBsYWNlID0gaW50ZXJuYWxJbnN0YW5jZS5yZXBsYWNlO1xuICAgICAgICAgICAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgICAgICAgICAgICAgaW50ZXJuYWxJbnN0YW5jZS5yZXBsYWNlID0gITE7XG4gICAgICAgICAgICAgIGlmIChvbGRSZXBsYWNlICYmIDEgPT09IG9sZFF1ZXVlLmxlbmd0aClcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG9sZFF1ZXVlWzBdO1xuICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgdmFyIG5leHRTdGF0ZSA9IG9sZFJlcGxhY2UgPyBvbGRRdWV1ZVswXSA6IGluc3RhbmNlLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBkb250TXV0YXRlID0gITAsXG4gICAgICAgICAgICAgICAgICAgIGkgPSBvbGRSZXBsYWNlID8gMSA6IDA7XG4gICAgICAgICAgICAgICAgICBpIDwgb2xkUXVldWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbCA9IG9sZFF1ZXVlW2ldLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU3RhdGUkanNjb21wJDAgPVxuICAgICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHBhcnRpYWxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcGFydGlhbC5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnRpYWw7XG4gICAgICAgICAgICAgICAgICBudWxsICE9IHBhcnRpYWxTdGF0ZSRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgICAoZG9udE11dGF0ZVxuICAgICAgICAgICAgICAgICAgICAgID8gKChkb250TXV0YXRlID0gITEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5leHRTdGF0ZSA9IGFzc2lnbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbFN0YXRlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGFzc2lnbihuZXh0U3RhdGUsIHBhcnRpYWxTdGF0ZSRqc2NvbXAkMCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGludGVybmFsSW5zdGFuY2UucXVldWUgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgbmV4dENoaWxkcmVuID0gY2FsbFJlbmRlckluREVWKGluc3RhbmNlKTtcbiAgICAgICAgICBpZiAoMTIgPT09IHJlcXVlc3Quc3RhdHVzKSB0aHJvdyBudWxsO1xuICAgICAgICAgIGluc3RhbmNlLnByb3BzICE9PSByZXNvbHZlZFByb3BzICYmXG4gICAgICAgICAgICAoZGlkV2FybkFib3V0UmVhc3NpZ25pbmdQcm9wcyB8fFxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiSXQgbG9va3MgbGlrZSAlcyBpcyByZWFzc2lnbmluZyBpdHMgb3duIGB0aGlzLnByb3BzYCB3aGlsZSByZW5kZXJpbmcuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBhbmQgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGJ1Z3MuXCIsXG4gICAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiYSBjb21wb25lbnRcIlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSAhMCkpO1xuICAgICAgICAgIHZhciBwcmV2S2V5UGF0aCA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBuZXh0Q2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZS5wcm90b3R5cGUgJiYgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVuZGVyKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50TmFtZSRqc2NvbXAkMyA9XG4gICAgICAgICAgICAgIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWUkanNjb21wJDNdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBoYXZlIGEgcmVuZGVyIG1ldGhvZCwgYnV0IGRvZXNuJ3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4gVGhpcyBpcyBsaWtlbHkgdG8gY2F1c2UgZXJyb3JzLiBDaGFuZ2UgJXMgdG8gZXh0ZW5kIFJlYWN0LkNvbXBvbmVudCBpbnN0ZWFkLlwiLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWUkanNjb21wJDMsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSRqc2NvbXAkM1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAoZGlkV2FybkFib3V0QmFkQ2xhc3NbY29tcG9uZW50TmFtZSRqc2NvbXAkM10gPSAhMCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgdmFsdWUgPSByZW5kZXJXaXRoSG9va3MoXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICB2b2lkIDBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICgxMiA9PT0gcmVxdWVzdC5zdGF0dXMpIHRocm93IG51bGw7XG4gICAgICAgICAgdmFyIGhhc0lkID0gMCAhPT0gbG9jYWxJZENvdW50ZXIsXG4gICAgICAgICAgICBhY3Rpb25TdGF0ZUNvdW50ID0gYWN0aW9uU3RhdGVDb3VudGVyLFxuICAgICAgICAgICAgYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4JGpzY29tcCQwID0gYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4O1xuICAgICAgICAgIGlmICh0eXBlLmNvbnRleHRUeXBlcykge1xuICAgICAgICAgICAgdmFyIF9jb21wb25lbnROYW1lJGpzY29tcCQwID1cbiAgICAgICAgICAgICAgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiVW5rbm93blwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVzW19jb21wb25lbnROYW1lJGpzY29tcCQwXSB8fFxuICAgICAgICAgICAgICAoKGRpZFdhcm5BYm91dENvbnRleHRUeXBlc1tfY29tcG9uZW50TmFtZSRqc2NvbXAkMF0gPSAhMCksXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgXCIlcyB1c2VzIHRoZSBsZWdhY3kgY29udGV4dFR5cGVzIEFQSSB3aGljaCB3YXMgcmVtb3ZlZCBpbiBSZWFjdCAxOS4gVXNlIFJlYWN0LmNyZWF0ZUNvbnRleHQoKSB3aXRoIFJlYWN0LnVzZUNvbnRleHQoKSBpbnN0ZWFkLiAoaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9sZWdhY3ktY29udGV4dClcIixcbiAgICAgICAgICAgICAgICBfY29tcG9uZW50TmFtZSRqc2NvbXAkMFxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdHlwZSAmJlxuICAgICAgICAgICAgdHlwZS5jaGlsZENvbnRleHRUeXBlcyAmJlxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJjaGlsZENvbnRleHRUeXBlcyBjYW5ub3QgYmUgZGVmaW5lZCBvbiBhIGZ1bmN0aW9uIGNvbXBvbmVudC5cXG4gICVzLmNoaWxkQ29udGV4dFR5cGVzID0gLi4uXCIsXG4gICAgICAgICAgICAgIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IFwiQ29tcG9uZW50XCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSB7XG4gICAgICAgICAgICB2YXIgX2NvbXBvbmVudE5hbWUyID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8IFwiVW5rbm93blwiO1xuICAgICAgICAgICAgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLlwiLFxuICAgICAgICAgICAgICAgIF9jb21wb25lbnROYW1lMlxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAoZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdID1cbiAgICAgICAgICAgICAgICAhMCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZS5jb250ZXh0VHlwZSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gdHlwZS5jb250ZXh0VHlwZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdmFyIF9jb21wb25lbnROYW1lMyA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIjtcbiAgICAgICAgICAgIGRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTNdIHx8XG4gICAgICAgICAgICAgIChjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgY29udGV4dFR5cGUuXCIsXG4gICAgICAgICAgICAgICAgX2NvbXBvbmVudE5hbWUzXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIChkaWRXYXJuQWJvdXRDb250ZXh0VHlwZU9uRnVuY3Rpb25Db21wb25lbnRbX2NvbXBvbmVudE5hbWUzXSA9XG4gICAgICAgICAgICAgICAgITApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmluaXNoRnVuY3Rpb25Db21wb25lbnQoXG4gICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGhhc0lkLFxuICAgICAgICAgICAgYWN0aW9uU3RhdGVDb3VudCxcbiAgICAgICAgICAgIGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleCRqc2NvbXAkMFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIGVsc2UgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgICAgaWYgKG51bGwgPT09IHNlZ21lbnQpIHtcbiAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICAgIHByZXZDb250ZXh0ID0gdGFzay5mb3JtYXRDb250ZXh0LFxuICAgICAgICAgICAgcHJldktleVBhdGgkanNjb21wJDAgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gZ2V0Q2hpbGRGb3JtYXRDb250ZXh0KHByZXZDb250ZXh0LCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldkNvbnRleHQ7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIF9jaGlsZHJlbiA9IHB1c2hTdGFydEluc3RhbmNlKFxuICAgICAgICAgICAgc2VnbWVudC5jaHVua3MsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgIHRhc2suaG9pc3RhYmxlU3RhdGUsXG4gICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQsXG4gICAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0LFxuICAgICAgICAgICAgdGFzay5pc0ZhbGxiYWNrXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICAgICAgdmFyIF9wcmV2Q29udGV4dCA9IHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgIF9wcmV2S2V5UGF0aDIgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gZ2V0Q2hpbGRGb3JtYXRDb250ZXh0KF9wcmV2Q29udGV4dCwgdHlwZSwgcHJvcHMpO1xuICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBfY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBfcHJldkNvbnRleHQ7XG4gICAgICAgICAgdGFzay5rZXlQYXRoID0gX3ByZXZLZXlQYXRoMjtcbiAgICAgICAgICBhOiB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gc2VnbWVudC5jaHVua3MsXG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZTtcbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImFyZWFcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImJhc2VcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImJyXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJjb2xcIjpcbiAgICAgICAgICAgICAgY2FzZSBcImVtYmVkXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJoclwiOlxuICAgICAgICAgICAgICBjYXNlIFwiaW1nXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJpbnB1dFwiOlxuICAgICAgICAgICAgICBjYXNlIFwia2V5Z2VuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJtZXRhXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJwYXJhbVwiOlxuICAgICAgICAgICAgICBjYXNlIFwic291cmNlXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJ0cmFja1wiOlxuICAgICAgICAgICAgICBjYXNlIFwid2JyXCI6XG4gICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgY2FzZSBcImJvZHlcIjpcbiAgICAgICAgICAgICAgICBpZiAoX3ByZXZDb250ZXh0Lmluc2VydGlvbk1vZGUgPD0gSFRNTF9IVE1MX01PREUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmhhc0JvZHkgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiaHRtbFwiOlxuICAgICAgICAgICAgICAgIGlmIChfcHJldkNvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gUk9PVF9IVE1MX01PREUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmhhc0h0bWwgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0LnB1c2goZW5kQ2h1bmtGb3JUYWcodHlwZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEVHQUNZX0hJRERFTl9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgICB2YXIgcHJldktleVBhdGgkanNjb21wJDEgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIHByb3BzLmNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkMTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICBjYXNlIFJFQUNUX09GRlNDUkVFTl9UWVBFOlxuICAgICAgICAgICAgaWYgKFwiaGlkZGVuXCIgIT09IHByb3BzLm1vZGUpIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZLZXlQYXRoJGpzY29tcCQyID0gdGFzay5rZXlQYXRoO1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgICB2YXIgX3ByZXZLZXlQYXRoMyA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4sIC0xKTtcbiAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IF9wcmV2S2V5UGF0aDM7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY2FzZSBSRUFDVF9TQ09QRV9UWVBFOlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVhY3RET01TZXJ2ZXIgZG9lcyBub3QgeWV0IHN1cHBvcnQgc2NvcGUgY29tcG9uZW50cy5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgICBhOiBpZiAobnVsbCAhPT0gdGFzay5yZXBsYXkpIHtcbiAgICAgICAgICAgICAgdmFyIF9wcmV2S2V5UGF0aCA9IHRhc2sua2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICAgICAgdmFyIF9jb250ZW50ID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBfY29udGVudCwgLTEpO1xuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IF9wcmV2S2V5UGF0aDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZLZXlQYXRoJGpzY29tcCQzID0gdGFzay5rZXlQYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgcGFyZW50SG9pc3RhYmxlU3RhdGUgPSB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50LFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrID0gcHJvcHMuZmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgY29udGVudCA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrQWJvcnRTZXQgPSBuZXcgU2V0KCksXG4gICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIGZhbGxiYWNrQWJvcnRTZXQpO1xuICAgICAgICAgICAgICBudWxsICE9PSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXMgJiZcbiAgICAgICAgICAgICAgICAobmV3Qm91bmRhcnkudHJhY2tlZENvbnRlbnRLZXlQYXRoID0ga2V5UGF0aCk7XG4gICAgICAgICAgICAgIHZhciBib3VuZGFyeVNlZ21lbnQgPSBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQuY2h1bmtzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQsXG4gICAgICAgICAgICAgICAgITEsXG4gICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcGFyZW50U2VnbWVudC5jaGlsZHJlbi5wdXNoKGJvdW5kYXJ5U2VnbWVudCk7XG4gICAgICAgICAgICAgIHBhcmVudFNlZ21lbnQubGFzdFB1c2hlZFRleHQgPSAhMTtcbiAgICAgICAgICAgICAgdmFyIGNvbnRlbnRSb290U2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAhMSxcbiAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQucGFyZW50Rmx1c2hlZCA9ICEwO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZhbGxiYWNrS2V5UGF0aCA9IFtcbiAgICAgICAgICAgICAgICAgICAga2V5UGF0aFswXSxcbiAgICAgICAgICAgICAgICAgICAgXCJTdXNwZW5zZSBGYWxsYmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBrZXlQYXRoWzJdXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXBsYXlOb2RlID0gW1xuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0tleVBhdGhbMV0sXG4gICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrS2V5UGF0aFsyXSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzLndvcmtpbmdNYXAuc2V0KFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tLZXlQYXRoLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXBsYXlOb2RlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS50cmFja2VkRmFsbGJhY2tOb2RlID0gZmFsbGJhY2tSZXBsYXlOb2RlO1xuICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZFNlZ21lbnQgPSBib3VuZGFyeVNlZ21lbnQ7XG4gICAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gZmFsbGJhY2tLZXlQYXRoO1xuICAgICAgICAgICAgICAgIGJvdW5kYXJ5U2VnbWVudC5zdGF0dXMgPSA2O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGZhbGxiYWNrLCAtMSksXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5U2VnbWVudC5sYXN0UHVzaGVkVGV4dCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5U2VnbWVudC50ZXh0RW1iZWRkZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeVNlZ21lbnQuY2h1bmtzLnB1c2godGV4dFNlcGFyYXRvciksXG4gICAgICAgICAgICAgICAgICAgIChib3VuZGFyeVNlZ21lbnQuc3RhdHVzID0gQ09NUExFVEVEKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgKFxuICAgICAgICAgICAgICAgICAgICAoKGJvdW5kYXJ5U2VnbWVudC5zdGF0dXMgPSAxMiA9PT0gcmVxdWVzdC5zdGF0dXMgPyAzIDogNCksXG4gICAgICAgICAgICAgICAgICAgIHRocm93blZhbHVlKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgKHRhc2suYmxvY2tlZFNlZ21lbnQgPSBwYXJlbnRTZWdtZW50KSxcbiAgICAgICAgICAgICAgICAgICAgKHRhc2sua2V5UGF0aCA9IHByZXZLZXlQYXRoJGpzY29tcCQzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHN1c3BlbmRlZFByaW1hcnlUYXNrID0gY3JlYXRlUmVuZGVyVGFzayhcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICAgIC0xLFxuICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnksXG4gICAgICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQsXG4gICAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS5jb250ZW50U3RhdGUsXG4gICAgICAgICAgICAgICAgICB0YXNrLmFib3J0U2V0LFxuICAgICAgICAgICAgICAgICAga2V5UGF0aCxcbiAgICAgICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHRhc2suY29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHRhc2sudHJlZUNvbnRleHQsXG4gICAgICAgICAgICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICAgICAgICAgICAgdGFzay5pc0ZhbGxiYWNrXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBwdXNoQ29tcG9uZW50U3RhY2soc3VzcGVuZGVkUHJpbWFyeVRhc2spO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaChzdXNwZW5kZWRQcmltYXJ5VGFzayk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFzay5ibG9ja2VkQm91bmRhcnkgPSBuZXdCb3VuZGFyeTtcbiAgICAgICAgICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlID0gbmV3Qm91bmRhcnkuY29udGVudFN0YXRlO1xuICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZFNlZ21lbnQgPSBjb250ZW50Um9vdFNlZ21lbnQ7XG4gICAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gNjtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAocmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBjb250ZW50LCAtMSksXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSb290U2VnbWVudC5sYXN0UHVzaGVkVGV4dCAmJlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSb290U2VnbWVudC50ZXh0RW1iZWRkZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Um9vdFNlZ21lbnQuY2h1bmtzLnB1c2godGV4dFNlcGFyYXRvciksXG4gICAgICAgICAgICAgICAgICAgIChjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gQ09NUExFVEVEKSxcbiAgICAgICAgICAgICAgICAgICAgcXVldWVDb21wbGV0ZWRTZWdtZW50KG5ld0JvdW5kYXJ5LCBjb250ZW50Um9vdFNlZ21lbnQpLFxuICAgICAgICAgICAgICAgICAgICAwID09PSBuZXdCb3VuZGFyeS5wZW5kaW5nVGFza3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICBuZXdCb3VuZGFyeS5zdGF0dXMgPT09IFBFTkRJTkcpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkuc3RhdHVzID0gQ09NUExFVEVEO1xuICAgICAgICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHRocm93blZhbHVlJDIpIHtcbiAgICAgICAgICAgICAgICAgIG5ld0JvdW5kYXJ5LnN0YXR1cyA9IENMSUVOVF9SRU5ERVJFRDtcbiAgICAgICAgICAgICAgICAgIGlmICgxMiA9PT0gcmVxdWVzdC5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFJvb3RTZWdtZW50LnN0YXR1cyA9IDM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IHJlcXVlc3QuZmF0YWxFcnJvcjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICAoY29udGVudFJvb3RTZWdtZW50LnN0YXR1cyA9IDQpLCAoZXJyb3IgPSB0aHJvd25WYWx1ZSQyKTtcbiAgICAgICAgICAgICAgICAgIHZhciB0aHJvd25JbmZvID0gZ2V0VGhyb3duSW5mbyh0YXNrLmNvbXBvbmVudFN0YWNrKTtcbiAgICAgICAgICAgICAgICAgIHZhciBlcnJvckRpZ2VzdCA9IGxvZ1JlY292ZXJhYmxlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB0aHJvd25JbmZvXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgZW5jb2RlRXJyb3JGb3JCb3VuZGFyeShcbiAgICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgIGVycm9yRGlnZXN0LFxuICAgICAgICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgdGhyb3duSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgbmV3Qm91bmRhcnkpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAodGFzay5ibG9ja2VkQm91bmRhcnkgPSBwYXJlbnRCb3VuZGFyeSksXG4gICAgICAgICAgICAgICAgICAgICh0YXNrLmhvaXN0YWJsZVN0YXRlID0gcGFyZW50SG9pc3RhYmxlU3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAodGFzay5ibG9ja2VkU2VnbWVudCA9IHBhcmVudFNlZ21lbnQpLFxuICAgICAgICAgICAgICAgICAgICAodGFzay5rZXlQYXRoID0gcHJldktleVBhdGgkanNjb21wJDMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgc3VzcGVuZGVkRmFsbGJhY2tUYXNrID0gY3JlYXRlUmVuZGVyVGFzayhcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgZmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAtMSxcbiAgICAgICAgICAgICAgICAgIHBhcmVudEJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgYm91bmRhcnlTZWdtZW50LFxuICAgICAgICAgICAgICAgICAgbmV3Qm91bmRhcnkuZmFsbGJhY2tTdGF0ZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrQWJvcnRTZXQsXG4gICAgICAgICAgICAgICAgICBba2V5UGF0aFswXSwgXCJTdXNwZW5zZSBGYWxsYmFja1wiLCBrZXlQYXRoWzJdXSxcbiAgICAgICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHRhc2suY29udGV4dCxcbiAgICAgICAgICAgICAgICAgIHRhc2sudHJlZUNvbnRleHQsXG4gICAgICAgICAgICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICAgICAgICAgICAgITBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHB1c2hDb21wb25lbnRTdGFjayhzdXNwZW5kZWRGYWxsYmFja1Rhc2spO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaChzdXNwZW5kZWRGYWxsYmFja1Rhc2spO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlICYmIG51bGwgIT09IHR5cGUpXG4gICAgICAgICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICAgIGlmIChcInJlZlwiIGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzV2l0aG91dFJlZiA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wcylcbiAgICAgICAgICAgICAgICAgIFwicmVmXCIgIT09IGtleSAmJiAocHJvcHNXaXRob3V0UmVmW2tleV0gPSBwcm9wc1trZXldKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHByb3BzV2l0aG91dFJlZiA9IHByb3BzO1xuICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4kanNjb21wJDAgPSByZW5kZXJXaXRoSG9va3MoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICAgIGtleVBhdGgsXG4gICAgICAgICAgICAgICAgdHlwZS5yZW5kZXIsXG4gICAgICAgICAgICAgICAgcHJvcHNXaXRob3V0UmVmLFxuICAgICAgICAgICAgICAgIHJlZlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBmaW5pc2hGdW5jdGlvbkNvbXBvbmVudChcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAga2V5UGF0aCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAwICE9PSBsb2NhbElkQ291bnRlcixcbiAgICAgICAgICAgICAgICBhY3Rpb25TdGF0ZUNvdW50ZXIsXG4gICAgICAgICAgICAgICAgYWN0aW9uU3RhdGVNYXRjaGluZ0luZGV4XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgICByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGtleVBhdGgsIHR5cGUudHlwZSwgcHJvcHMsIHJlZik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICAgICAgICB2YXIgdmFsdWUkanNjb21wJDAgPSBwcm9wcy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbiRqc2NvbXAkMSA9IHByb3BzLmNoaWxkcmVuO1xuICAgICAgICAgICAgICB2YXIgcHJldlNuYXBzaG90ID0gdGFzay5jb250ZXh0O1xuICAgICAgICAgICAgICB2YXIgcHJldktleVBhdGgkanNjb21wJDQgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgICAgIHZhciBwcmV2VmFsdWUgPSB0eXBlLl9jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlJGpzY29tcCQwO1xuICAgICAgICAgICAgICB2b2lkIDAgIT09IHR5cGUuX2N1cnJlbnRSZW5kZXJlciAmJlxuICAgICAgICAgICAgICAgIG51bGwgIT09IHR5cGUuX2N1cnJlbnRSZW5kZXJlciAmJlxuICAgICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlciAhPT0gcmVuZGVyZXJTaWdpbCAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIkRldGVjdGVkIG11bHRpcGxlIHJlbmRlcmVycyBjb25jdXJyZW50bHkgcmVuZGVyaW5nIHRoZSBzYW1lIGNvbnRleHQgcHJvdmlkZXIuIFRoaXMgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdHlwZS5fY3VycmVudFJlbmRlcmVyID0gcmVuZGVyZXJTaWdpbDtcbiAgICAgICAgICAgICAgdmFyIHByZXZOb2RlID0gY3VycmVudEFjdGl2ZVNuYXBzaG90LFxuICAgICAgICAgICAgICAgIG5ld05vZGUgPSB7XG4gICAgICAgICAgICAgICAgICBwYXJlbnQ6IHByZXZOb2RlLFxuICAgICAgICAgICAgICAgICAgZGVwdGg6IG51bGwgPT09IHByZXZOb2RlID8gMCA6IHByZXZOb2RlLmRlcHRoICsgMSxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHR5cGUsXG4gICAgICAgICAgICAgICAgICBwYXJlbnRWYWx1ZTogcHJldlZhbHVlLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY3VycmVudEFjdGl2ZVNuYXBzaG90ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgICAgdGFzay5jb250ZXh0ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0ga2V5UGF0aDtcbiAgICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuJGpzY29tcCQxLCAtMSk7XG4gICAgICAgICAgICAgIHZhciBwcmV2U25hcHNob3QkanNjb21wJDAgPSBjdXJyZW50QWN0aXZlU25hcHNob3Q7XG4gICAgICAgICAgICAgIGlmIChudWxsID09PSBwcmV2U25hcHNob3QkanNjb21wJDApXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlRyaWVkIHRvIHBvcCBhIENvbnRleHQgYXQgdGhlIHJvb3Qgb2YgdGhlIGFwcC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHByZXZTbmFwc2hvdCRqc2NvbXAkMC5jb250ZXh0ICE9PSB0eXBlICYmXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiVGhlIHBhcmVudCBjb250ZXh0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgY29udGV4dC4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHByZXZTbmFwc2hvdCRqc2NvbXAkMC5jb250ZXh0Ll9jdXJyZW50VmFsdWUgPVxuICAgICAgICAgICAgICAgIHByZXZTbmFwc2hvdCRqc2NvbXAkMC5wYXJlbnRWYWx1ZTtcbiAgICAgICAgICAgICAgdm9pZCAwICE9PSB0eXBlLl9jdXJyZW50UmVuZGVyZXIgJiZcbiAgICAgICAgICAgICAgICBudWxsICE9PSB0eXBlLl9jdXJyZW50UmVuZGVyZXIgJiZcbiAgICAgICAgICAgICAgICB0eXBlLl9jdXJyZW50UmVuZGVyZXIgIT09IHJlbmRlcmVyU2lnaWwgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJEZXRlY3RlZCBtdWx0aXBsZSByZW5kZXJlcnMgY29uY3VycmVudGx5IHJlbmRlcmluZyB0aGUgc2FtZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHR5cGUuX2N1cnJlbnRSZW5kZXJlciA9IHJlbmRlcmVyU2lnaWw7XG4gICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSAoY3VycmVudEFjdGl2ZVNuYXBzaG90ID1cbiAgICAgICAgICAgICAgICBwcmV2U25hcHNob3QkanNjb21wJDAucGFyZW50KTtcbiAgICAgICAgICAgICAgdGFzay5jb250ZXh0ID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwO1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkNDtcbiAgICAgICAgICAgICAgcHJldlNuYXBzaG90ICE9PSB0YXNrLmNvbnRleHQgJiZcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJQb3BwaW5nIHRoZSBjb250ZXh0IHByb3ZpZGVyIGRpZCBub3QgcmV0dXJuIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNuYXBzaG90LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9DT05TVU1FUl9UWVBFOlxuICAgICAgICAgICAgICB2YXIgY29udGV4dCRqc2NvbXAkMCA9IHR5cGUuX2NvbnRleHQsXG4gICAgICAgICAgICAgICAgcmVuZGVyID0gcHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHJlbmRlciAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIkEgY29udGV4dCBjb25zdW1lciB3YXMgcmVuZGVyZWQgd2l0aCBtdWx0aXBsZSBjaGlsZHJlbiwgb3IgYSBjaGlsZCB0aGF0IGlzbid0IGEgZnVuY3Rpb24uIEEgY29udGV4dCBjb25zdW1lciBleHBlY3RzIGEgc2luZ2xlIGNoaWxkIHRoYXQgaXMgYSBmdW5jdGlvbi4gSWYgeW91IGRpZCBwYXNzIGEgZnVuY3Rpb24sIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyB0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgYXJvdW5kIGl0LlwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgdmFyIG5ld0NoaWxkcmVuID0gcmVuZGVyKGNvbnRleHQkanNjb21wJDAuX2N1cnJlbnRWYWx1ZSksXG4gICAgICAgICAgICAgICAgcHJldktleVBhdGgkanNjb21wJDUgPSB0YXNrLmtleVBhdGg7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IGtleVBhdGg7XG4gICAgICAgICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBuZXdDaGlsZHJlbiwgLTEpO1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aCRqc2NvbXAkNTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICAgIHZhciBDb21wb25lbnQgPSBjYWxsTGF6eUluaXRJbkRFVih0eXBlKTtcbiAgICAgICAgICAgICAgaWYgKDEyID09PSByZXF1ZXN0LnN0YXR1cykgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgICAgcmVuZGVyRWxlbWVudChyZXF1ZXN0LCB0YXNrLCBrZXlQYXRoLCBDb21wb25lbnQsIHByb3BzLCByZWYpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB2YXIgaW5mbyA9IFwiXCI7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2b2lkIDAgPT09IHR5cGUgfHxcbiAgICAgICAgICAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiZcbiAgICAgICAgICAgIG51bGwgIT09IHR5cGUgJiZcbiAgICAgICAgICAgIDAgPT09IE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aClcbiAgICAgICAgKVxuICAgICAgICAgIGluZm8gKz1cbiAgICAgICAgICAgIFwiIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlIGl0J3MgZGVmaW5lZCBpbiwgb3IgeW91IG1pZ2h0IGhhdmUgbWl4ZWQgdXAgZGVmYXVsdCBhbmQgbmFtZWQgaW1wb3J0cy5cIjtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgXCJFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6IFwiICtcbiAgICAgICAgICAgICgobnVsbCA9PSB0eXBlID8gdHlwZSA6IHR5cGVvZiB0eXBlKSArIFwiLlwiICsgaW5mbylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVzdW1lTm9kZShyZXF1ZXN0LCB0YXNrLCBzZWdtZW50SWQsIG5vZGUsIGNoaWxkSW5kZXgpIHtcbiAgICAgIHZhciBwcmV2UmVwbGF5ID0gdGFzay5yZXBsYXksXG4gICAgICAgIGJsb2NrZWRCb3VuZGFyeSA9IHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICByZXN1bWVkU2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgMCxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAhMSxcbiAgICAgICAgICAhMVxuICAgICAgICApO1xuICAgICAgcmVzdW1lZFNlZ21lbnQuaWQgPSBzZWdtZW50SWQ7XG4gICAgICByZXN1bWVkU2VnbWVudC5wYXJlbnRGbHVzaGVkID0gITA7XG4gICAgICB0cnkge1xuICAgICAgICAodGFzay5yZXBsYXkgPSBudWxsKSxcbiAgICAgICAgICAodGFzay5ibG9ja2VkU2VnbWVudCA9IHJlc3VtZWRTZWdtZW50KSxcbiAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpLFxuICAgICAgICAgIChyZXN1bWVkU2VnbWVudC5zdGF0dXMgPSBDT01QTEVURUQpLFxuICAgICAgICAgIG51bGwgPT09IGJsb2NrZWRCb3VuZGFyeVxuICAgICAgICAgICAgPyAocmVxdWVzdC5jb21wbGV0ZWRSb290U2VnbWVudCA9IHJlc3VtZWRTZWdtZW50KVxuICAgICAgICAgICAgOiAocXVldWVDb21wbGV0ZWRTZWdtZW50KGJsb2NrZWRCb3VuZGFyeSwgcmVzdW1lZFNlZ21lbnQpLFxuICAgICAgICAgICAgICBibG9ja2VkQm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICAgIHJlcXVlc3QucGFydGlhbEJvdW5kYXJpZXMucHVzaChibG9ja2VkQm91bmRhcnkpKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICh0YXNrLnJlcGxheSA9IHByZXZSZXBsYXkpLCAodGFzay5ibG9ja2VkU2VnbWVudCA9IG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCkge1xuICAgICAgbnVsbCAhPT0gdGFzay5yZXBsYXkgJiYgXCJudW1iZXJcIiA9PT0gdHlwZW9mIHRhc2sucmVwbGF5LnNsb3RzXG4gICAgICAgID8gcmVzdW1lTm9kZShyZXF1ZXN0LCB0YXNrLCB0YXNrLnJlcGxheS5zbG90cywgbm9kZSwgY2hpbGRJbmRleClcbiAgICAgICAgOiAoKHRhc2subm9kZSA9IG5vZGUpLFxuICAgICAgICAgICh0YXNrLmNoaWxkSW5kZXggPSBjaGlsZEluZGV4KSxcbiAgICAgICAgICAobm9kZSA9IHRhc2suY29tcG9uZW50U3RhY2spLFxuICAgICAgICAgIHB1c2hDb21wb25lbnRTdGFjayh0YXNrKSxcbiAgICAgICAgICByZXRyeU5vZGUocmVxdWVzdCwgdGFzayksXG4gICAgICAgICAgKHRhc2suY29tcG9uZW50U3RhY2sgPSBub2RlKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJldHJ5Tm9kZShyZXF1ZXN0LCB0YXNrKSB7XG4gICAgICB2YXIgbm9kZSA9IHRhc2subm9kZSxcbiAgICAgICAgY2hpbGRJbmRleCA9IHRhc2suY2hpbGRJbmRleDtcbiAgICAgIGlmIChudWxsICE9PSBub2RlKSB7XG4gICAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2Ygbm9kZSkge1xuICAgICAgICAgIHN3aXRjaCAobm9kZS4kJHR5cGVvZikge1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgICAgIHZhciB0eXBlID0gbm9kZS50eXBlLFxuICAgICAgICAgICAgICAgIGtleSA9IG5vZGUua2V5LFxuICAgICAgICAgICAgICAgIHByb3BzID0gbm9kZS5wcm9wcztcbiAgICAgICAgICAgICAgbm9kZSA9IHByb3BzLnJlZjtcbiAgICAgICAgICAgICAgdmFyIHJlZiA9IHZvaWQgMCAhPT0gbm9kZSA/IG5vZGUgOiBudWxsLFxuICAgICAgICAgICAgICAgIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSksXG4gICAgICAgICAgICAgICAga2V5T3JJbmRleCA9XG4gICAgICAgICAgICAgICAgICBudWxsID09IGtleSA/ICgtMSA9PT0gY2hpbGRJbmRleCA/IDAgOiBjaGlsZEluZGV4KSA6IGtleSxcbiAgICAgICAgICAgICAgICBrZXlQYXRoID0gW3Rhc2sua2V5UGF0aCwgbmFtZSwga2V5T3JJbmRleF07XG4gICAgICAgICAgICAgIGlmIChudWxsICE9PSB0YXNrLnJlcGxheSkge1xuICAgICAgICAgICAgICAgIHZhciByZXBsYXkgPSB0YXNrLnJlcGxheTtcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4ID0gcmVwbGF5Lm5vZGVzO1xuICAgICAgICAgICAgICAgIGZvciAobm9kZSA9IDA7IG5vZGUgPCBjaGlsZEluZGV4Lmxlbmd0aDsgbm9kZSsrKVxuICAgICAgICAgICAgICAgICAgaWYgKCgoa2V5ID0gY2hpbGRJbmRleFtub2RlXSksIGtleU9ySW5kZXggPT09IGtleVsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKDQgPT09IGtleS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gbmFtZSAmJiBuYW1lICE9PSBrZXlbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCB0aGUgcmVzdW1lIHRvIHJlbmRlciA8XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVswXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI+IGluIHRoaXMgc2xvdCBidXQgaW5zdGVhZCBpdCByZW5kZXJlZCA8XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPi4gVGhlIHRyZWUgZG9lc24ndCBtYXRjaCBzbyBSZWFjdCB3aWxsIGZhbGxiYWNrIHRvIGNsaWVudCByZW5kZXJpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkTm9kZXMgPSBrZXlbMl07XG4gICAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5WzNdO1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSB0YXNrLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgdGFzay5yZXBsYXkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlczogY2hpbGROb2RlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzOiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3M6IDFcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGtleVBhdGgsIHR5cGUsIHByb3BzLCByZWYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxID09PSB0YXNrLnJlcGxheS5wZW5kaW5nVGFza3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMCA8IHRhc2sucmVwbGF5Lm5vZGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNvdWxkbid0IGZpbmQgYWxsIHJlc3VtYWJsZSBzbG90cyBieSBrZXkvaW5kZXggZHVyaW5nIHJlcGxheWluZy4gVGhlIHRyZWUgZG9lc24ndCBtYXRjaCBzbyBSZWFjdCB3aWxsIGZhbGxiYWNrIHRvIGNsaWVudCByZW5kZXJpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0geCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoeCA9PT0gU3VzcGVuc2VFeGNlcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB4LnRoZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFzay5ub2RlID09PSBuYW1lICYmICh0YXNrLnJlcGxheSA9IHJlcGxheSksIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnJlcGxheS5wZW5kaW5nVGFza3MtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzID0gZ2V0VGhyb3duSW5mbyh0YXNrLmNvbXBvbmVudFN0YWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZWRSZXBsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB0YXNrLnJlcGxheSA9IHJlcGxheTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSAhPT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIHRoZSByZXN1bWUgdG8gcmVuZGVyIDxTdXNwZW5zZT4gaW4gdGhpcyBzbG90IGJ1dCBpbnN0ZWFkIGl0IHJlbmRlcmVkIDxcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCBcIlVua25vd25cIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPi4gVGhlIHRyZWUgZG9lc24ndCBtYXRjaCBzbyBSZWFjdCB3aWxsIGZhbGxiYWNrIHRvIGNsaWVudCByZW5kZXJpbmcuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZiA9IGtleVs1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxheSA9IGtleVsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBrZXlbM107XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlPckluZGV4ID0gbnVsbCA9PT0ga2V5WzRdID8gW10gOiBrZXlbNF1bMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBudWxsID09PSBrZXlbNF0gPyBudWxsIDoga2V5WzRdWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZLZXlQYXRoID0gdGFzay5rZXlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1JlcGxheVNldCA9IHRhc2sucmVwbGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRCb3VuZGFyeSA9IHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRIb2lzdGFibGVTdGF0ZSA9IHRhc2suaG9pc3RhYmxlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBwcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzID0gcHJvcHMuZmFsbGJhY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmFsbGJhY2tBYm9ydFNldCA9IG5ldyBTZXQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5ID0gY3JlYXRlU3VzcGVuc2VCb3VuZGFyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrQWJvcnRTZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5wYXJlbnRGbHVzaGVkID0gITA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnkucm9vdFNlZ21lbnRJRCA9IHJlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gcmVzdW1lZEJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5ob2lzdGFibGVTdGF0ZSA9IHJlc3VtZWRCb3VuZGFyeS5jb250ZW50U3RhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBrZXlQYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5yZXBsYXkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzOiByZXBsYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nVGFza3M6IDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNvbnRlbnQsIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPT09IHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPCB0YXNrLnJlcGxheS5ub2Rlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb3VsZG4ndCBmaW5kIGFsbCByZXN1bWFibGUgc2xvdHMgYnkga2V5L2luZGV4IGR1cmluZyByZXBsYXlpbmcuIFRoZSB0cmVlIGRvZXNuJ3QgbWF0Y2ggc28gUmVhY3Qgd2lsbCBmYWxsYmFjayB0byBjbGllbnQgcmVuZGVyaW5nLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5yZXBsYXkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID09PSByZXN1bWVkQm91bmRhcnkucGVuZGluZ1Rhc2tzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnN0YXR1cyA9PT0gUEVORElOR1xuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnkuc3RhdHVzID0gQ09NUExFVEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKHJlc3VtZWRCb3VuZGFyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VtZWRCb3VuZGFyeS5zdGF0dXMgPSBDTElFTlRfUkVOREVSRUQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZE5vZGVzID0gZ2V0VGhyb3duSW5mbyh0YXNrLmNvbXBvbmVudFN0YWNrKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUgPSBsb2dSZWNvdmVyYWJsZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZUVycm9yRm9yQm91bmRhcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gcGFyZW50Qm91bmRhcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXNrLmhvaXN0YWJsZVN0YXRlID0gcGFyZW50SG9pc3RhYmxlU3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXNrLnJlcGxheSA9IHByZXZpb3VzUmVwbGF5U2V0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFzay5rZXlQYXRoID0gcHJldktleVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IGNyZWF0ZVJlcGxheVRhc2soXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgbm9kZXM6IGtleU9ySW5kZXgsIHNsb3RzOiBrZXksIHBlbmRpbmdUYXNrczogMCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEJvdW5kYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVkQm91bmRhcnkuZmFsbGJhY2tTdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tBYm9ydFNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2tleVBhdGhbMF0sIFwiU3VzcGVuc2UgRmFsbGJhY2tcIiwga2V5UGF0aFsyXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDb21wb25lbnRTdGFjayhjaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaChjaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleC5zcGxpY2Uobm9kZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgcmVuZGVyRWxlbWVudChyZXF1ZXN0LCB0YXNrLCBrZXlQYXRoLCB0eXBlLCBwcm9wcywgcmVmKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJQb3J0YWxzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyIHJlbmRlcmVyLiBSZW5kZXIgdGhlbSBjb25kaXRpb25hbGx5IHNvIHRoYXQgdGhleSBvbmx5IGFwcGVhciBvbiB0aGUgY2xpZW50IHJlbmRlci5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICAgIG5vZGUgPSBjYWxsTGF6eUluaXRJbkRFVihub2RlKTtcbiAgICAgICAgICAgICAgaWYgKDEyID09PSByZXF1ZXN0LnN0YXR1cykgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpc0FycmF5SW1wbChub2RlKSkge1xuICAgICAgICAgICAgcmVuZGVyQ2hpbGRyZW5BcnJheShyZXF1ZXN0LCB0YXNrLCBub2RlLCBjaGlsZEluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCA9PT0gbm9kZSB8fCBcIm9iamVjdFwiICE9PSB0eXBlb2Ygbm9kZVxuICAgICAgICAgICAgPyAocHJvcHMgPSBudWxsKVxuICAgICAgICAgICAgOiAoKGNoaWxkTm9kZXMgPVxuICAgICAgICAgICAgICAgIChNQVlCRV9JVEVSQVRPUl9TWU1CT0wgJiYgbm9kZVtNQVlCRV9JVEVSQVRPUl9TWU1CT0xdKSB8fFxuICAgICAgICAgICAgICAgIG5vZGVbXCJAQGl0ZXJhdG9yXCJdKSxcbiAgICAgICAgICAgICAgKHByb3BzID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY2hpbGROb2RlcyA/IGNoaWxkTm9kZXMgOiBudWxsKSk7XG4gICAgICAgICAgaWYgKHByb3BzICYmIChjaGlsZE5vZGVzID0gcHJvcHMuY2FsbChub2RlKSkpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzID09PSBub2RlKSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAtMSAhPT0gY2hpbGRJbmRleCB8fFxuICAgICAgICAgICAgICAgIG51bGwgPT09IHRhc2suY29tcG9uZW50U3RhY2sgfHxcbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB0YXNrLmNvbXBvbmVudFN0YWNrLnR5cGUgfHxcbiAgICAgICAgICAgICAgICBcIltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dXCIgIT09XG4gICAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodGFzay5jb21wb25lbnRTdGFjay50eXBlKSB8fFxuICAgICAgICAgICAgICAgIFwiW29iamVjdCBHZW5lcmF0b3JdXCIgIT09XG4gICAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY2hpbGROb2RlcylcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGRpZFdhcm5BYm91dEdlbmVyYXRvcnMgfHxcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIFwiVXNpbmcgSXRlcmF0b3JzIGFzIGNoaWxkcmVuIGlzIHVuc3VwcG9ydGVkIGFuZCB3aWxsIGxpa2VseSB5aWVsZCB1bmV4cGVjdGVkIHJlc3VsdHMgYmVjYXVzZSBlbnVtZXJhdGluZyBhIGdlbmVyYXRvciBtdXRhdGVzIGl0LiBZb3UgbWF5IGNvbnZlcnQgaXQgdG8gYW4gYXJyYXkgd2l0aCBgQXJyYXkuZnJvbSgpYCBvciB0aGUgYFsuLi5zcHJlYWRdYCBvcGVyYXRvciBiZWZvcmUgcmVuZGVyaW5nLiBZb3UgY2FuIGFsc28gdXNlIGFuIEl0ZXJhYmxlIHRoYXQgY2FuIGl0ZXJhdGUgbXVsdGlwbGUgdGltZXMgb3ZlciB0aGUgc2FtZSBpdGVtcy5cIlxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIChkaWRXYXJuQWJvdXRHZW5lcmF0b3JzID0gITApO1xuICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgIG5vZGUuZW50cmllcyAhPT0gcHJvcHMgfHxcbiAgICAgICAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzIHx8XG4gICAgICAgICAgICAgICAgKGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlVzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHN1cHBvcnRlZC4gVXNlIGFuIGFycmF5IG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC5cIlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKGRpZFdhcm5BYm91dE1hcHMgPSAhMCkpO1xuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXMubmV4dCgpO1xuICAgICAgICAgICAgaWYgKCFub2RlLmRvbmUpIHtcbiAgICAgICAgICAgICAgcHJvcHMgPSBbXTtcbiAgICAgICAgICAgICAgZG8gcHJvcHMucHVzaChub2RlLnZhbHVlKSwgKG5vZGUgPSBjaGlsZE5vZGVzLm5leHQoKSk7XG4gICAgICAgICAgICAgIHdoaWxlICghbm9kZS5kb25lKTtcbiAgICAgICAgICAgICAgcmVuZGVyQ2hpbGRyZW5BcnJheShyZXF1ZXN0LCB0YXNrLCBwcm9wcywgY2hpbGRJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBub2RlLnRoZW4pXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAodGFzay50aGVuYWJsZVN0YXRlID0gbnVsbCksXG4gICAgICAgICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAgdW53cmFwVGhlbmFibGUobm9kZSksXG4gICAgICAgICAgICAgICAgY2hpbGRJbmRleFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChub2RlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUpXG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKFxuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICBub2RlLl9jdXJyZW50VmFsdWUsXG4gICAgICAgICAgICAgIGNoaWxkSW5kZXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY2hpbGRJbmRleCA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChub2RlKTtcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArXG4gICAgICAgICAgICAgIChcIltvYmplY3QgT2JqZWN0XVwiID09PSBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICAgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMobm9kZSkuam9pbihcIiwgXCIpICsgXCJ9XCJcbiAgICAgICAgICAgICAgICA6IGNoaWxkSW5kZXgpICtcbiAgICAgICAgICAgICAgXCIpLiBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFycmF5IGluc3RlYWQuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBub2RlXG4gICAgICAgICAgPyAoKGNoaWxkSW5kZXggPSB0YXNrLmJsb2NrZWRTZWdtZW50KSxcbiAgICAgICAgICAgIG51bGwgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgICAgICAgKGNoaWxkSW5kZXgubGFzdFB1c2hlZFRleHQgPSBwdXNoVGV4dEluc3RhbmNlKFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXguY2h1bmtzLFxuICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4Lmxhc3RQdXNoZWRUZXh0XG4gICAgICAgICAgICAgICkpKVxuICAgICAgICAgIDogXCJudW1iZXJcIiA9PT0gdHlwZW9mIG5vZGUgfHwgXCJiaWdpbnRcIiA9PT0gdHlwZW9mIG5vZGVcbiAgICAgICAgICAgID8gKChjaGlsZEluZGV4ID0gdGFzay5ibG9ja2VkU2VnbWVudCksXG4gICAgICAgICAgICAgIG51bGwgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgICAgICAgICAoY2hpbGRJbmRleC5sYXN0UHVzaGVkVGV4dCA9IHB1c2hUZXh0SW5zdGFuY2UoXG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4LmNodW5rcyxcbiAgICAgICAgICAgICAgICAgIFwiXCIgKyBub2RlLFxuICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkSW5kZXgubGFzdFB1c2hlZFRleHRcbiAgICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgIDogKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG5vZGUgJiZcbiAgICAgICAgICAgICAgICAoKGNoaWxkSW5kZXggPSBub2RlLmRpc3BsYXlOYW1lIHx8IG5vZGUubmFtZSB8fCBcIkNvbXBvbmVudFwiKSxcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkLiBUaGlzIG1heSBoYXBwZW4gaWYgeW91IHJldHVybiAlcyBpbnN0ZWFkIG9mIDwlcyAvPiBmcm9tIHJlbmRlci4gT3IgbWF5YmUgeW91IG1lYW50IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiByZXR1cm4gaXQuXCIsXG4gICAgICAgICAgICAgICAgICBjaGlsZEluZGV4LFxuICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleFxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2Ygbm9kZSAmJlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBcIlN5bWJvbHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkLlxcbiAgJXNcIixcbiAgICAgICAgICAgICAgICAgIFN0cmluZyhub2RlKVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QkanNjb21wJDAsIHRhc2ssIGNoaWxkcmVuLCBjaGlsZEluZGV4KSB7XG4gICAgICB2YXIgcHJldktleVBhdGggPSB0YXNrLmtleVBhdGgsXG4gICAgICAgIHByZXZpb3VzQ29tcG9uZW50U3RhY2sgPSB0YXNrLmNvbXBvbmVudFN0YWNrO1xuICAgICAgcHVzaFNlcnZlckNvbXBvbmVudFN0YWNrKHRhc2ssIHRhc2subm9kZS5fZGVidWdJbmZvKTtcbiAgICAgIGlmIChcbiAgICAgICAgLTEgIT09IGNoaWxkSW5kZXggJiZcbiAgICAgICAgKCh0YXNrLmtleVBhdGggPSBbdGFzay5rZXlQYXRoLCBcIkZyYWdtZW50XCIsIGNoaWxkSW5kZXhdKSxcbiAgICAgICAgbnVsbCAhPT0gdGFzay5yZXBsYXkpXG4gICAgICApIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgcmVwbGF5ID0gdGFzay5yZXBsYXksIHJlcGxheU5vZGVzID0gcmVwbGF5Lm5vZGVzLCBqID0gMDtcbiAgICAgICAgICBqIDwgcmVwbGF5Tm9kZXMubGVuZ3RoO1xuICAgICAgICAgIGorK1xuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgbm9kZSA9IHJlcGxheU5vZGVzW2pdO1xuICAgICAgICAgIGlmIChub2RlWzFdID09PSBjaGlsZEluZGV4KSB7XG4gICAgICAgICAgICBjaGlsZEluZGV4ID0gbm9kZVsyXTtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlWzNdO1xuICAgICAgICAgICAgdGFzay5yZXBsYXkgPSB7IG5vZGVzOiBjaGlsZEluZGV4LCBzbG90czogbm9kZSwgcGVuZGluZ1Rhc2tzOiAxIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QkanNjb21wJDAsIHRhc2ssIGNoaWxkcmVuLCAtMSk7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAxID09PSB0YXNrLnJlcGxheS5wZW5kaW5nVGFza3MgJiZcbiAgICAgICAgICAgICAgICAwIDwgdGFzay5yZXBsYXkubm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZmluZCBhbGwgcmVzdW1hYmxlIHNsb3RzIGJ5IGtleS9pbmRleCBkdXJpbmcgcmVwbGF5aW5nLiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHggJiZcbiAgICAgICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICAgICAgKHggPT09IFN1c3BlbnNlRXhjZXB0aW9uIHx8IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlbilcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHRocm93IHg7XG4gICAgICAgICAgICAgIHRhc2sucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICBjaGlsZHJlbiA9IGdldFRocm93bkluZm8odGFzay5jb21wb25lbnRTdGFjayk7XG4gICAgICAgICAgICAgIGVycm9yZWRSZXBsYXkoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICB0YXNrLmJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXgsXG4gICAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5yZXBsYXkgPSByZXBsYXk7XG4gICAgICAgICAgICByZXBsYXlOb2Rlcy5zcGxpY2UoaiwgMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGg7XG4gICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXBsYXkgPSB0YXNrLnRyZWVDb250ZXh0O1xuICAgICAgcmVwbGF5Tm9kZXMgPSBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICBpZiAoXG4gICAgICAgIG51bGwgIT09IHRhc2sucmVwbGF5ICYmXG4gICAgICAgICgoaiA9IHRhc2sucmVwbGF5LnNsb3RzKSwgbnVsbCAhPT0gaiAmJiBcIm9iamVjdFwiID09PSB0eXBlb2YgailcbiAgICAgICkge1xuICAgICAgICBmb3IgKGNoaWxkSW5kZXggPSAwOyBjaGlsZEluZGV4IDwgcmVwbGF5Tm9kZXM7IGNoaWxkSW5kZXgrKykge1xuICAgICAgICAgIG5vZGUgPSBjaGlsZHJlbltjaGlsZEluZGV4XTtcbiAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KHJlcGxheSwgcmVwbGF5Tm9kZXMsIGNoaWxkSW5kZXgpO1xuICAgICAgICAgIHZhciByZXN1bWVTZWdtZW50SUQgPSBqW2NoaWxkSW5kZXhdO1xuICAgICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiByZXN1bWVTZWdtZW50SURcbiAgICAgICAgICAgID8gKHJlc3VtZU5vZGUoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRCxcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIGNoaWxkSW5kZXhcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGVsZXRlIGpbY2hpbGRJbmRleF0pXG4gICAgICAgICAgICA6IHJlbmRlck5vZGUocmVxdWVzdCRqc2NvbXAkMCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHJlcGxheTtcbiAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldktleVBhdGg7XG4gICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKGogPSAwOyBqIDwgcmVwbGF5Tm9kZXM7IGorKykge1xuICAgICAgICBjaGlsZEluZGV4ID0gY2hpbGRyZW5bal07XG4gICAgICAgIHZhciByZXF1ZXN0ID0gcmVxdWVzdCRqc2NvbXAkMDtcbiAgICAgICAgbm9kZSA9IHRhc2s7XG4gICAgICAgIHJlc3VtZVNlZ21lbnRJRCA9IGNoaWxkSW5kZXg7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBudWxsICE9PSByZXN1bWVTZWdtZW50SUQgJiZcbiAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgcmVzdW1lU2VnbWVudElEICYmXG4gICAgICAgICAgKHJlc3VtZVNlZ21lbnRJRC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFIHx8XG4gICAgICAgICAgICByZXN1bWVTZWdtZW50SUQuJCR0eXBlb2YgPT09IFJFQUNUX1BPUlRBTF9UWVBFKSAmJlxuICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRC5fc3RvcmUgJiZcbiAgICAgICAgICAoKCFyZXN1bWVTZWdtZW50SUQuX3N0b3JlLnZhbGlkYXRlZCAmJiBudWxsID09IHJlc3VtZVNlZ21lbnRJRC5rZXkpIHx8XG4gICAgICAgICAgICAyID09PSByZXN1bWVTZWdtZW50SUQuX3N0b3JlLnZhbGlkYXRlZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKFwib2JqZWN0XCIgIT09IHR5cGVvZiByZXN1bWVTZWdtZW50SUQuX3N0b3JlKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVhY3QgQ29tcG9uZW50IGluIHdhcm5Gb3JNaXNzaW5nS2V5IHNob3VsZCBoYXZlIGEgX3N0b3JlLiBUaGlzIGVycm9yIGlzIGxpa2VseSBjYXVzZWQgYnkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VtZVNlZ21lbnRJRC5fc3RvcmUudmFsaWRhdGVkID0gMTtcbiAgICAgICAgICB2YXIgZGlkV2FybkZvcktleSA9IHJlcXVlc3QuZGlkV2FybkZvcktleTtcbiAgICAgICAgICBudWxsID09IGRpZFdhcm5Gb3JLZXkgJiZcbiAgICAgICAgICAgIChkaWRXYXJuRm9yS2V5ID0gcmVxdWVzdC5kaWRXYXJuRm9yS2V5ID0gbmV3IFdlYWtTZXQoKSk7XG4gICAgICAgICAgcmVxdWVzdCA9IG5vZGUuY29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgaWYgKG51bGwgIT09IHJlcXVlc3QgJiYgIWRpZFdhcm5Gb3JLZXkuaGFzKHJlcXVlc3QpKSB7XG4gICAgICAgICAgICBkaWRXYXJuRm9yS2V5LmFkZChyZXF1ZXN0KTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHJlc3VtZVNlZ21lbnRJRC50eXBlKTtcbiAgICAgICAgICAgIGRpZFdhcm5Gb3JLZXkgPSByZXN1bWVTZWdtZW50SUQuX293bmVyO1xuICAgICAgICAgICAgdmFyIHBhcmVudE93bmVyID0gcmVxdWVzdC5vd25lcjtcbiAgICAgICAgICAgIHJlcXVlc3QgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHBhcmVudE93bmVyICYmIFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBwYXJlbnRPd25lci50eXBlKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHBhcmVudE93bmVyLnR5cGUpO1xuICAgICAgICAgICAgICBuYW1lICYmXG4gICAgICAgICAgICAgICAgKHJlcXVlc3QgPSBcIlxcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGBcIiArIG5hbWUgKyBcImAuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdCB8fFxuICAgICAgICAgICAgICAoY29tcG9uZW50TmFtZSAmJlxuICAgICAgICAgICAgICAgIChyZXF1ZXN0ID1cbiAgICAgICAgICAgICAgICAgIFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgK1xuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZSArXG4gICAgICAgICAgICAgICAgICBcIj4uXCIpKTtcbiAgICAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgbnVsbCAhPSBkaWRXYXJuRm9yS2V5ICYmXG4gICAgICAgICAgICAgIHBhcmVudE93bmVyICE9PSBkaWRXYXJuRm9yS2V5ICYmXG4gICAgICAgICAgICAgICgocGFyZW50T3duZXIgPSBudWxsKSxcbiAgICAgICAgICAgICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGRpZFdhcm5Gb3JLZXkudHlwZVxuICAgICAgICAgICAgICAgID8gKHBhcmVudE93bmVyID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGRpZFdhcm5Gb3JLZXkudHlwZSkpXG4gICAgICAgICAgICAgICAgOiBcInN0cmluZ1wiID09PSB0eXBlb2YgZGlkV2FybkZvcktleS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAocGFyZW50T3duZXIgPSBkaWRXYXJuRm9yS2V5Lm5hbWUpLFxuICAgICAgICAgICAgICBwYXJlbnRPd25lciAmJlxuICAgICAgICAgICAgICAgIChjb21wb25lbnROYW1lID1cbiAgICAgICAgICAgICAgICAgIFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgcGFyZW50T3duZXIgKyBcIi5cIikpO1xuICAgICAgICAgICAgZGlkV2FybkZvcktleSA9IG5vZGUuY29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgICBub2RlLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgICAgICAgICBwYXJlbnQ6IG5vZGUuY29tcG9uZW50U3RhY2ssXG4gICAgICAgICAgICAgIHR5cGU6IHJlc3VtZVNlZ21lbnRJRC50eXBlLFxuICAgICAgICAgICAgICBvd25lcjogcmVzdW1lU2VnbWVudElELl9vd25lcixcbiAgICAgICAgICAgICAgc3RhY2s6IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLiVzJXMgU2VlIGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsXG4gICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBub2RlLmNvbXBvbmVudFN0YWNrID0gZGlkV2FybkZvcktleTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHB1c2hUcmVlQ29udGV4dChyZXBsYXksIHJlcGxheU5vZGVzLCBqKTtcbiAgICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0JGpzY29tcCQwLCB0YXNrLCBjaGlsZEluZGV4LCBqKTtcbiAgICAgIH1cbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSByZXBsYXk7XG4gICAgICB0YXNrLmtleVBhdGggPSBwcmV2S2V5UGF0aDtcbiAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgIH1cbiAgICBmdW5jdGlvbiB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgYm91bmRhcnkpIHtcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXM7XG4gICAgICBudWxsICE9PSByZXF1ZXN0ICYmXG4gICAgICAgICgoYm91bmRhcnkgPSBib3VuZGFyeS50cmFja2VkQ29udGVudEtleVBhdGgpLFxuICAgICAgICBudWxsICE9PSBib3VuZGFyeSAmJlxuICAgICAgICAgICgoYm91bmRhcnkgPSByZXF1ZXN0LndvcmtpbmdNYXAuZ2V0KGJvdW5kYXJ5KSksXG4gICAgICAgICAgdm9pZCAwICE9PSBib3VuZGFyeSAmJlxuICAgICAgICAgICAgKChib3VuZGFyeS5sZW5ndGggPSA0KSwgKGJvdW5kYXJ5WzJdID0gW10pLCAoYm91bmRhcnlbM10gPSBudWxsKSkpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3Bhd25OZXdTdXNwZW5kZWRSZXBsYXlUYXNrKHJlcXVlc3QsIHRhc2ssIHRoZW5hYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybiBjcmVhdGVSZXBsYXlUYXNrKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICB0aGVuYWJsZVN0YXRlLFxuICAgICAgICB0YXNrLnJlcGxheSxcbiAgICAgICAgdGFzay5ub2RlLFxuICAgICAgICB0YXNrLmNoaWxkSW5kZXgsXG4gICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICB0YXNrLmFib3J0U2V0LFxuICAgICAgICB0YXNrLmtleVBhdGgsXG4gICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICB0YXNrLmlzRmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHNwYXduTmV3U3VzcGVuZGVkUmVuZGVyVGFzayhyZXF1ZXN0LCB0YXNrLCB0aGVuYWJsZVN0YXRlKSB7XG4gICAgICB2YXIgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQsXG4gICAgICAgIG5ld1NlZ21lbnQgPSBjcmVhdGVQZW5kaW5nU2VnbWVudChcbiAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgIHNlZ21lbnQuY2h1bmtzLmxlbmd0aCxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0LFxuICAgICAgICAgICEwXG4gICAgICAgICk7XG4gICAgICBzZWdtZW50LmNoaWxkcmVuLnB1c2gobmV3U2VnbWVudCk7XG4gICAgICBzZWdtZW50Lmxhc3RQdXNoZWRUZXh0ID0gITE7XG4gICAgICByZXR1cm4gY3JlYXRlUmVuZGVyVGFzayhcbiAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgdGhlbmFibGVTdGF0ZSxcbiAgICAgICAgdGFzay5ub2RlLFxuICAgICAgICB0YXNrLmNoaWxkSW5kZXgsXG4gICAgICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICBuZXdTZWdtZW50LFxuICAgICAgICB0YXNrLmhvaXN0YWJsZVN0YXRlLFxuICAgICAgICB0YXNrLmFib3J0U2V0LFxuICAgICAgICB0YXNrLmtleVBhdGgsXG4gICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgdGFzay5jb250ZXh0LFxuICAgICAgICB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgICB0YXNrLmlzRmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgbm9kZSwgY2hpbGRJbmRleCkge1xuICAgICAgdmFyIHByZXZpb3VzRm9ybWF0Q29udGV4dCA9IHRhc2suZm9ybWF0Q29udGV4dCxcbiAgICAgICAgcHJldmlvdXNDb250ZXh0ID0gdGFzay5jb250ZXh0LFxuICAgICAgICBwcmV2aW91c0tleVBhdGggPSB0YXNrLmtleVBhdGgsXG4gICAgICAgIHByZXZpb3VzVHJlZUNvbnRleHQgPSB0YXNrLnRyZWVDb250ZXh0LFxuICAgICAgICBwcmV2aW91c0NvbXBvbmVudFN0YWNrID0gdGFzay5jb21wb25lbnRTdGFjayxcbiAgICAgICAgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQ7XG4gICAgICBpZiAobnVsbCA9PT0gc2VnbWVudClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChyZXNldEhvb2tzU3RhdGUoKSxcbiAgICAgICAgICAgIChub2RlID1cbiAgICAgICAgICAgICAgdGhyb3duVmFsdWUgPT09IFN1c3BlbnNlRXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgPyBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpXG4gICAgICAgICAgICAgICAgOiB0aHJvd25WYWx1ZSksXG4gICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygbm9kZSAmJiBudWxsICE9PSBub2RlKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG5vZGUudGhlbikge1xuICAgICAgICAgICAgICBjaGlsZEluZGV4ID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgICAgICByZXF1ZXN0ID0gc3Bhd25OZXdTdXNwZW5kZWRSZXBsYXlUYXNrKFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgdGFzayxcbiAgICAgICAgICAgICAgICBjaGlsZEluZGV4XG4gICAgICAgICAgICAgICkucGluZztcbiAgICAgICAgICAgICAgbm9kZS50aGVuKHJlcXVlc3QsIHJlcXVlc3QpO1xuICAgICAgICAgICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBwcmV2aW91c0Zvcm1hdENvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5rZXlQYXRoID0gcHJldmlvdXNLZXlQYXRoO1xuICAgICAgICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldmlvdXNUcmVlQ29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5jb21wb25lbnRTdGFjayA9IHByZXZpb3VzQ29tcG9uZW50U3RhY2s7XG4gICAgICAgICAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIiA9PT0gbm9kZS5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgIG5vZGUgPSBnZXRUaGVuYWJsZVN0YXRlQWZ0ZXJTdXNwZW5kaW5nKCk7XG4gICAgICAgICAgICAgIG5vZGUgPSBzcGF3bk5ld1N1c3BlbmRlZFJlcGxheVRhc2socmVxdWVzdCwgdGFzaywgbm9kZSk7XG4gICAgICAgICAgICAgIHJlcXVlc3QucGluZ2VkVGFza3MucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IHByZXZpb3VzS2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHByZXZpb3VzVHJlZUNvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHByZXZpb3VzQ29udGV4dCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB2YXIgY2hpbGRyZW5MZW5ndGggPSBzZWdtZW50LmNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgICBjaHVua0xlbmd0aCA9IHNlZ21lbnQuY2h1bmtzLmxlbmd0aDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUsIGNoaWxkSW5kZXgpO1xuICAgICAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSQzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHJlc2V0SG9va3NTdGF0ZSgpLFxuICAgICAgICAgICAgKHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoID0gY2hpbGRyZW5MZW5ndGgpLFxuICAgICAgICAgICAgKHNlZ21lbnQuY2h1bmtzLmxlbmd0aCA9IGNodW5rTGVuZ3RoKSxcbiAgICAgICAgICAgIChub2RlID1cbiAgICAgICAgICAgICAgdGhyb3duVmFsdWUkMyA9PT0gU3VzcGVuc2VFeGNlcHRpb25cbiAgICAgICAgICAgICAgICA/IGdldFN1c3BlbmRlZFRoZW5hYmxlKClcbiAgICAgICAgICAgICAgICA6IHRocm93blZhbHVlJDMpLFxuICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiYgbnVsbCAhPT0gbm9kZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBub2RlLnRoZW4pIHtcbiAgICAgICAgICAgICAgY2hpbGRJbmRleCA9IGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKTtcbiAgICAgICAgICAgICAgcmVxdWVzdCA9IHNwYXduTmV3U3VzcGVuZGVkUmVuZGVyVGFzayhcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgICAgICAgY2hpbGRJbmRleFxuICAgICAgICAgICAgICApLnBpbmc7XG4gICAgICAgICAgICAgIG5vZGUudGhlbihyZXF1ZXN0LCByZXF1ZXN0KTtcbiAgICAgICAgICAgICAgdGFzay5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2sua2V5UGF0aCA9IHByZXZpb3VzS2V5UGF0aDtcbiAgICAgICAgICAgICAgdGFzay50cmVlQ29udGV4dCA9IHByZXZpb3VzVHJlZUNvbnRleHQ7XG4gICAgICAgICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHByZXZpb3VzQ29udGV4dCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIgPT09IG5vZGUubWVzc2FnZSkge1xuICAgICAgICAgICAgICBub2RlID0gZ2V0VGhlbmFibGVTdGF0ZUFmdGVyU3VzcGVuZGluZygpO1xuICAgICAgICAgICAgICBub2RlID0gc3Bhd25OZXdTdXNwZW5kZWRSZW5kZXJUYXNrKHJlcXVlc3QsIHRhc2ssIG5vZGUpO1xuICAgICAgICAgICAgICByZXF1ZXN0LnBpbmdlZFRhc2tzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgIHRhc2suZm9ybWF0Q29udGV4dCA9IHByZXZpb3VzRm9ybWF0Q29udGV4dDtcbiAgICAgICAgICAgICAgdGFzay5jb250ZXh0ID0gcHJldmlvdXNDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmtleVBhdGggPSBwcmV2aW91c0tleVBhdGg7XG4gICAgICAgICAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwcmV2aW91c1RyZWVDb250ZXh0O1xuICAgICAgICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gcHJldmlvdXNDb21wb25lbnRTdGFjaztcbiAgICAgICAgICAgICAgc3dpdGNoQ29udGV4dChwcmV2aW91c0NvbnRleHQpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0YXNrLmZvcm1hdENvbnRleHQgPSBwcmV2aW91c0Zvcm1hdENvbnRleHQ7XG4gICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7XG4gICAgICB0YXNrLmtleVBhdGggPSBwcmV2aW91c0tleVBhdGg7XG4gICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldmlvdXNUcmVlQ29udGV4dDtcbiAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcbiAgICAgIHRocm93IG5vZGU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVycm9yZWRSZXBsYXkoXG4gICAgICByZXF1ZXN0LFxuICAgICAgYm91bmRhcnksXG4gICAgICBlcnJvcixcbiAgICAgIGVycm9ySW5mbyxcbiAgICAgIHJlcGxheU5vZGVzLFxuICAgICAgcmVzdW1lU2xvdHNcbiAgICApIHtcbiAgICAgIHZhciBlcnJvckRpZ2VzdCA9IGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgICBhYm9ydFJlbWFpbmluZ1JlcGxheU5vZGVzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgcmVwbGF5Tm9kZXMsXG4gICAgICAgIHJlc3VtZVNsb3RzLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgZXJyb3JEaWdlc3QsXG4gICAgICAgIGVycm9ySW5mbyxcbiAgICAgICAgITFcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFib3J0VGFza1NvZnQodGFzaykge1xuICAgICAgdmFyIGJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gICAgICB0YXNrID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgIG51bGwgIT09IHRhc2sgJiYgKCh0YXNrLnN0YXR1cyA9IDMpLCBmaW5pc2hlZFRhc2sodGhpcywgYm91bmRhcnksIHRhc2spKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWJvcnRSZW1haW5pbmdSZXBsYXlOb2RlcyhcbiAgICAgIHJlcXVlc3QkanNjb21wJDAsXG4gICAgICBib3VuZGFyeSxcbiAgICAgIG5vZGVzLFxuICAgICAgc2xvdHMsXG4gICAgICBlcnJvciRqc2NvbXAkMCxcbiAgICAgIGVycm9yRGlnZXN0JGpzY29tcCQwLFxuICAgICAgZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgYWJvcnRlZFxuICAgICkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldO1xuICAgICAgICBpZiAoNCA9PT0gbm9kZS5sZW5ndGgpXG4gICAgICAgICAgYWJvcnRSZW1haW5pbmdSZXBsYXlOb2RlcyhcbiAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAsXG4gICAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICAgIG5vZGVbMl0sXG4gICAgICAgICAgICBub2RlWzNdLFxuICAgICAgICAgICAgZXJyb3IkanNjb21wJDAsXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGVycm9ySW5mbyRqc2NvbXAkMCxcbiAgICAgICAgICAgIGFib3J0ZWRcbiAgICAgICAgICApO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgcmVxdWVzdCA9IHJlcXVlc3QkanNjb21wJDA7XG4gICAgICAgICAgbm9kZSA9IG5vZGVbNV07XG4gICAgICAgICAgdmFyIGVycm9yID0gZXJyb3IkanNjb21wJDAsXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCA9IGVycm9yRGlnZXN0JGpzY29tcCQwLFxuICAgICAgICAgICAgZXJyb3JJbmZvID0gZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgICAgICAgd2FzQWJvcnRlZCA9IGFib3J0ZWQsXG4gICAgICAgICAgICByZXN1bWVkQm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIG5ldyBTZXQoKSk7XG4gICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgICAgICByZXN1bWVkQm91bmRhcnkucm9vdFNlZ21lbnRJRCA9IG5vZGU7XG4gICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LnN0YXR1cyA9IENMSUVOVF9SRU5ERVJFRDtcbiAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgcmVzdW1lZEJvdW5kYXJ5LFxuICAgICAgICAgICAgZXJyb3JEaWdlc3QsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIGVycm9ySW5mbyxcbiAgICAgICAgICAgIHdhc0Fib3J0ZWRcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlc3VtZWRCb3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKHJlc3VtZWRCb3VuZGFyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGVzLmxlbmd0aCA9IDA7XG4gICAgICBpZiAobnVsbCAhPT0gc2xvdHMpIHtcbiAgICAgICAgaWYgKG51bGwgPT09IGJvdW5kYXJ5KVxuICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgXCJXZSBzaG91bGQgbm90IGhhdmUgYW55IHJlc3VtYWJsZSBub2RlcyBpbiB0aGUgc2hlbGwuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuXCJcbiAgICAgICAgICApO1xuICAgICAgICBib3VuZGFyeS5zdGF0dXMgIT09IENMSUVOVF9SRU5ERVJFRCAmJlxuICAgICAgICAgICgoYm91bmRhcnkuc3RhdHVzID0gQ0xJRU5UX1JFTkRFUkVEKSxcbiAgICAgICAgICBlbmNvZGVFcnJvckZvckJvdW5kYXJ5KFxuICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICBlcnJvckRpZ2VzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgIGVycm9yJGpzY29tcCQwLFxuICAgICAgICAgICAgZXJyb3JJbmZvJGpzY29tcCQwLFxuICAgICAgICAgICAgYWJvcnRlZFxuICAgICAgICAgICksXG4gICAgICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSkpO1xuICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHNsb3RzKVxuICAgICAgICAgIGZvciAodmFyIGluZGV4IGluIHNsb3RzKSBkZWxldGUgc2xvdHNbaW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhYm9ydFRhc2sodGFzaywgcmVxdWVzdCwgZXJyb3IpIHtcbiAgICAgIHZhciBib3VuZGFyeSA9IHRhc2suYmxvY2tlZEJvdW5kYXJ5LFxuICAgICAgICBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgICAgIGlmIChudWxsICE9PSBzZWdtZW50KSB7XG4gICAgICAgIGlmICg2ID09PSBzZWdtZW50LnN0YXR1cykgcmV0dXJuO1xuICAgICAgICBzZWdtZW50LnN0YXR1cyA9IDM7XG4gICAgICB9XG4gICAgICBzZWdtZW50ID0gZ2V0VGhyb3duSW5mbyh0YXNrLmNvbXBvbmVudFN0YWNrKTtcbiAgICAgIGlmIChudWxsID09PSBib3VuZGFyeSkge1xuICAgICAgICBpZiAoMTMgIT09IHJlcXVlc3Quc3RhdHVzICYmIHJlcXVlc3Quc3RhdHVzICE9PSBDTE9TRUQpIHtcbiAgICAgICAgICBib3VuZGFyeSA9IHRhc2sucmVwbGF5O1xuICAgICAgICAgIGlmIChudWxsID09PSBib3VuZGFyeSkge1xuICAgICAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwgc2VnbWVudCk7XG4gICAgICAgICAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgYm91bmRhcnkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgMCA9PT0gYm91bmRhcnkucGVuZGluZ1Rhc2tzICYmXG4gICAgICAgICAgICAwIDwgYm91bmRhcnkubm9kZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAoKHRhc2sgPSBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCBzZWdtZW50KSksXG4gICAgICAgICAgICBhYm9ydFJlbWFpbmluZ1JlcGxheU5vZGVzKFxuICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBib3VuZGFyeS5ub2RlcyxcbiAgICAgICAgICAgICAgYm91bmRhcnkuc2xvdHMsXG4gICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICB0YXNrLFxuICAgICAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgKSk7XG4gICAgICAgICAgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzLS07XG4gICAgICAgICAgMCA9PT0gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzICYmIGNvbXBsZXRlU2hlbGwocmVxdWVzdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZVxuICAgICAgICBib3VuZGFyeS5wZW5kaW5nVGFza3MtLSxcbiAgICAgICAgICBib3VuZGFyeS5zdGF0dXMgIT09IENMSUVOVF9SRU5ERVJFRCAmJlxuICAgICAgICAgICAgKChib3VuZGFyeS5zdGF0dXMgPSBDTElFTlRfUkVOREVSRUQpLFxuICAgICAgICAgICAgKHRhc2sgPSBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yLCBzZWdtZW50KSksXG4gICAgICAgICAgICAoYm91bmRhcnkuc3RhdHVzID0gQ0xJRU5UX1JFTkRFUkVEKSxcbiAgICAgICAgICAgIGVuY29kZUVycm9yRm9yQm91bmRhcnkoYm91bmRhcnksIHRhc2ssIGVycm9yLCBzZWdtZW50LCAhMCksXG4gICAgICAgICAgICB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgYm91bmRhcnkpLFxuICAgICAgICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KSksXG4gICAgICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5mb3JFYWNoKGZ1bmN0aW9uIChmYWxsYmFja1Rhc2spIHtcbiAgICAgICAgICAgIHJldHVybiBhYm9ydFRhc2soZmFsbGJhY2tUYXNrLCByZXF1ZXN0LCBlcnJvcik7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpO1xuICAgICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MtLTtcbiAgICAgIDAgPT09IHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzICYmIGNvbXBsZXRlQWxsKHJlcXVlc3QpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzYWZlbHlFbWl0RWFybHlQcmVsb2FkcyhyZXF1ZXN0LCBzaGVsbENvbXBsZXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgIG9uSGVhZGVycyA9IHJlbmRlclN0YXRlLm9uSGVhZGVycztcbiAgICAgICAgaWYgKG9uSGVhZGVycykge1xuICAgICAgICAgIHZhciBoZWFkZXJzID0gcmVuZGVyU3RhdGUuaGVhZGVycztcbiAgICAgICAgICBpZiAoaGVhZGVycykge1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuaGVhZGVycyA9IG51bGw7XG4gICAgICAgICAgICB2YXIgbGlua0hlYWRlciA9IGhlYWRlcnMucHJlY29ubmVjdHM7XG4gICAgICAgICAgICBoZWFkZXJzLmZvbnRQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAobGlua0hlYWRlciAmJiAobGlua0hlYWRlciArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAobGlua0hlYWRlciArPSBoZWFkZXJzLmZvbnRQcmVsb2FkcykpO1xuICAgICAgICAgICAgaGVhZGVycy5oaWdoSW1hZ2VQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAobGlua0hlYWRlciAmJiAobGlua0hlYWRlciArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAobGlua0hlYWRlciArPSBoZWFkZXJzLmhpZ2hJbWFnZVByZWxvYWRzKSk7XG4gICAgICAgICAgICBpZiAoIXNoZWxsQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgdmFyIHF1ZXVlSXRlciA9IHJlbmRlclN0YXRlLnN0eWxlcy52YWx1ZXMoKSxcbiAgICAgICAgICAgICAgICBxdWV1ZVN0ZXAgPSBxdWV1ZUl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgICBiOiBmb3IgKFxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICAwIDwgaGVhZGVycy5yZW1haW5pbmdDYXBhY2l0eSAmJiAhcXVldWVTdGVwLmRvbmU7XG4gICAgICAgICAgICAgICAgcXVldWVTdGVwID0gcXVldWVJdGVyLm5leHQoKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICAgIHZhciBzaGVldEl0ZXIgPSBxdWV1ZVN0ZXAudmFsdWUuc2hlZXRzLnZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBzaGVldFN0ZXAgPSBzaGVldEl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgMCA8IGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgJiYgIXNoZWV0U3RlcC5kb25lO1xuICAgICAgICAgICAgICAgICAgc2hlZXRTdGVwID0gc2hlZXRJdGVyLm5leHQoKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgdmFyIHNoZWV0ID0gc2hlZXRTdGVwLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcyA9IHNoZWV0LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICBrZXkgPSBwcm9wcy5ocmVmLFxuICAgICAgICAgICAgICAgICAgICBwcm9wcyRqc2NvbXAkMCA9IHNoZWV0LnByb3BzO1xuICAgICAgICAgICAgICAgICAgdmFyIGhlYWRlciA9IGdldFByZWxvYWRBc0hlYWRlcihcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMkanNjb21wJDAuaHJlZixcbiAgICAgICAgICAgICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IHByb3BzJGpzY29tcCQwLmNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgIGludGVncml0eTogcHJvcHMkanNjb21wJDAuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiBwcm9wcyRqc2NvbXAkMC5ub25jZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcyRqc2NvbXAkMC50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgIGZldGNoUHJpb3JpdHk6IHByb3BzJGpzY29tcCQwLmZldGNoUHJpb3JpdHksXG4gICAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IHByb3BzJGpzY29tcCQwLnJlZmVycmVyUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICAgIG1lZGlhOiBwcm9wcyRqc2NvbXAkMC5tZWRpYVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKDAgPD0gKGhlYWRlcnMucmVtYWluaW5nQ2FwYWNpdHkgLT0gaGVhZGVyLmxlbmd0aCArIDIpKVxuICAgICAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUucmVzZXRzLnN0eWxlW2tleV0gPSBQUkVMT0FEX05PX0NSRURTKSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5rSGVhZGVyICYmIChsaW5rSGVhZGVyICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgKGxpbmtIZWFkZXIgKz0gaGVhZGVyKSxcbiAgICAgICAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUucmVzZXRzLnN0eWxlW2tleV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHByb3BzLmNyb3NzT3JpZ2luIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuaW50ZWdyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gW3Byb3BzLmNyb3NzT3JpZ2luLCBwcm9wcy5pbnRlZ3JpdHldXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogUFJFTE9BRF9OT19DUkVEUyk7XG4gICAgICAgICAgICAgICAgICBlbHNlIGJyZWFrIGI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGlua0hlYWRlciA/IG9uSGVhZGVycyh7IExpbms6IGxpbmtIZWFkZXIgfSkgOiBvbkhlYWRlcnMoe30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwge30pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBjb21wbGV0ZVNoZWxsKHJlcXVlc3QpIHtcbiAgICAgIG51bGwgPT09IHJlcXVlc3QudHJhY2tlZFBvc3Rwb25lcyAmJiBzYWZlbHlFbWl0RWFybHlQcmVsb2FkcyhyZXF1ZXN0LCAhMCk7XG4gICAgICByZXF1ZXN0Lm9uU2hlbGxFcnJvciA9IG5vb3A7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5vblNoZWxsUmVhZHk7XG4gICAgICByZXF1ZXN0KCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNvbXBsZXRlQWxsKHJlcXVlc3QpIHtcbiAgICAgIHNhZmVseUVtaXRFYXJseVByZWxvYWRzKFxuICAgICAgICByZXF1ZXN0LFxuICAgICAgICBudWxsID09PSByZXF1ZXN0LnRyYWNrZWRQb3N0cG9uZXNcbiAgICAgICAgICA/ICEwXG4gICAgICAgICAgOiBudWxsID09PSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50IHx8XG4gICAgICAgICAgICAgIHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQuc3RhdHVzICE9PSBQT1NUUE9ORURcbiAgICAgICk7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5vbkFsbFJlYWR5O1xuICAgICAgcmVxdWVzdCgpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYm91bmRhcnksIHNlZ21lbnQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgMCA9PT0gc2VnbWVudC5jaHVua3MubGVuZ3RoICYmXG4gICAgICAgIDEgPT09IHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoICYmXG4gICAgICAgIG51bGwgPT09IHNlZ21lbnQuY2hpbGRyZW5bMF0uYm91bmRhcnkgJiZcbiAgICAgICAgLTEgPT09IHNlZ21lbnQuY2hpbGRyZW5bMF0uaWRcbiAgICAgICkge1xuICAgICAgICB2YXIgY2hpbGRTZWdtZW50ID0gc2VnbWVudC5jaGlsZHJlblswXTtcbiAgICAgICAgY2hpbGRTZWdtZW50LmlkID0gc2VnbWVudC5pZDtcbiAgICAgICAgY2hpbGRTZWdtZW50LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgICAgY2hpbGRTZWdtZW50LnN0YXR1cyA9PT0gQ09NUExFVEVEICYmXG4gICAgICAgICAgcXVldWVDb21wbGV0ZWRTZWdtZW50KGJvdW5kYXJ5LCBjaGlsZFNlZ21lbnQpO1xuICAgICAgfSBlbHNlIGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZpbmlzaGVkVGFzayhyZXF1ZXN0LCBib3VuZGFyeSwgc2VnbWVudCkge1xuICAgICAgaWYgKG51bGwgPT09IGJvdW5kYXJ5KSB7XG4gICAgICAgIGlmIChudWxsICE9PSBzZWdtZW50ICYmIHNlZ21lbnQucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICAgIGlmIChudWxsICE9PSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50KVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIFwiVGhlcmUgY2FuIG9ubHkgYmUgb25lIHJvb3Qgc2VnbWVudC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gc2VnbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MtLTtcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzICYmIGNvbXBsZXRlU2hlbGwocmVxdWVzdCk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgYm91bmRhcnkucGVuZGluZ1Rhc2tzLS0sXG4gICAgICAgICAgYm91bmRhcnkuc3RhdHVzICE9PSBDTElFTlRfUkVOREVSRUQgJiZcbiAgICAgICAgICAgICgwID09PSBib3VuZGFyeS5wZW5kaW5nVGFza3NcbiAgICAgICAgICAgICAgPyAoYm91bmRhcnkuc3RhdHVzID09PSBQRU5ESU5HICYmIChib3VuZGFyeS5zdGF0dXMgPSBDT01QTEVURUQpLFxuICAgICAgICAgICAgICAgIG51bGwgIT09IHNlZ21lbnQgJiZcbiAgICAgICAgICAgICAgICAgIHNlZ21lbnQucGFyZW50Rmx1c2hlZCAmJlxuICAgICAgICAgICAgICAgICAgc2VnbWVudC5zdGF0dXMgPT09IENPTVBMRVRFRCAmJlxuICAgICAgICAgICAgICAgICAgcXVldWVDb21wbGV0ZWRTZWdtZW50KGJvdW5kYXJ5LCBzZWdtZW50KSxcbiAgICAgICAgICAgICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSksXG4gICAgICAgICAgICAgICAgYm91bmRhcnkuc3RhdHVzID09PSBDT01QTEVURUQgJiZcbiAgICAgICAgICAgICAgICAgIChib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgIGFib3J0VGFza1NvZnQsXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCkpKVxuICAgICAgICAgICAgICA6IG51bGwgIT09IHNlZ21lbnQgJiZcbiAgICAgICAgICAgICAgICBzZWdtZW50LnBhcmVudEZsdXNoZWQgJiZcbiAgICAgICAgICAgICAgICBzZWdtZW50LnN0YXR1cyA9PT0gQ09NUExFVEVEICYmXG4gICAgICAgICAgICAgICAgKHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgc2VnbWVudCksXG4gICAgICAgICAgICAgICAgMSA9PT0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpKSk7XG4gICAgICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcy0tO1xuICAgICAgMCA9PT0gcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MgJiYgY29tcGxldGVBbGwocmVxdWVzdCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlcmZvcm1Xb3JrKHJlcXVlc3QkanNjb21wJDEpIHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVxdWVzdCRqc2NvbXAkMS5zdGF0dXMgIT09IENMT1NFRCAmJlxuICAgICAgICAxMyAhPT0gcmVxdWVzdCRqc2NvbXAkMS5zdGF0dXNcbiAgICAgICkge1xuICAgICAgICB2YXIgcHJldkNvbnRleHQgPSBjdXJyZW50QWN0aXZlU25hcHNob3QsXG4gICAgICAgICAgcHJldkRpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5IO1xuICAgICAgICBSZWFjdFNoYXJlZEludGVybmFscy5IID0gSG9va3NEaXNwYXRjaGVyO1xuICAgICAgICB2YXIgcHJldkFzeW5jRGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkEgPSBEZWZhdWx0QXN5bmNEaXNwYXRjaGVyO1xuICAgICAgICB2YXIgcHJldlJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdDtcbiAgICAgICAgY3VycmVudFJlcXVlc3QgPSByZXF1ZXN0JGpzY29tcCQxO1xuICAgICAgICB2YXIgcHJldkdldEN1cnJlbnRTdGFja0ltcGwgPSBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2s7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjayA9IGdldEN1cnJlbnRTdGFja0luREVWO1xuICAgICAgICB2YXIgcHJldlJlc3VtYWJsZVN0YXRlID0gY3VycmVudFJlc3VtYWJsZVN0YXRlO1xuICAgICAgICBjdXJyZW50UmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0JGpzY29tcCQxLnJlc3VtYWJsZVN0YXRlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBwaW5nZWRUYXNrcyA9IHJlcXVlc3QkanNjb21wJDEucGluZ2VkVGFza3MsXG4gICAgICAgICAgICBpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwaW5nZWRUYXNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSByZXF1ZXN0JGpzY29tcCQxLFxuICAgICAgICAgICAgICB0YXNrID0gcGluZ2VkVGFza3NbaV0sXG4gICAgICAgICAgICAgIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICAgICAgICAgICAgaWYgKG51bGwgPT09IHNlZ21lbnQpIHtcbiAgICAgICAgICAgICAgdmFyIHByZXZUYXNrSW5ERVYgPSB2b2lkIDAsXG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCA9IHJlcXVlc3Q7XG4gICAgICAgICAgICAgIHJlcXVlc3QgPSB0YXNrO1xuICAgICAgICAgICAgICBpZiAoMCAhPT0gcmVxdWVzdC5yZXBsYXkucGVuZGluZ1Rhc2tzKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoQ29udGV4dChyZXF1ZXN0LmNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHByZXZUYXNrSW5ERVYgPSBjdXJyZW50VGFza0luREVWO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrSW5ERVYgPSByZXF1ZXN0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgcmVxdWVzdC5yZXBsYXkuc2xvdHNcbiAgICAgICAgICAgICAgICAgICAgPyByZXN1bWVOb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LnJlcGxheS5zbG90cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY2hpbGRJbmRleFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgOiByZXRyeU5vZGUocmVxdWVzdCRqc2NvbXAkMCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIDEgPT09IHJlcXVlc3QucmVwbGF5LnBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAwIDwgcmVxdWVzdC5yZXBsYXkubm9kZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIFwiQ291bGRuJ3QgZmluZCBhbGwgcmVzdW1hYmxlIHNsb3RzIGJ5IGtleS9pbmRleCBkdXJpbmcgcmVwbGF5aW5nLiBUaGUgdHJlZSBkb2Vzbid0IG1hdGNoIHNvIFJlYWN0IHdpbGwgZmFsbGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgcmVxdWVzdC5yZXBsYXkucGVuZGluZ1Rhc2tzLS07XG4gICAgICAgICAgICAgICAgICByZXF1ZXN0LmFib3J0U2V0LmRlbGV0ZShyZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICAgIGZpbmlzaGVkVGFzayhyZXF1ZXN0JGpzY29tcCQwLCByZXF1ZXN0LmJsb2NrZWRCb3VuZGFyeSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAodGhyb3duVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0SG9va3NTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgdmFyIHggPVxuICAgICAgICAgICAgICAgICAgICB0aHJvd25WYWx1ZSA9PT0gU3VzcGVuc2VFeGNlcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IGdldFN1c3BlbmRlZFRoZW5hYmxlKClcbiAgICAgICAgICAgICAgICAgICAgICA6IHRocm93blZhbHVlO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgeCAmJlxuICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB4ICYmXG4gICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgudGhlblxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwaW5nID0gcmVxdWVzdC5waW5nO1xuICAgICAgICAgICAgICAgICAgICB4LnRoZW4ocGluZywgcGluZyk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudGhlbmFibGVTdGF0ZSA9IGdldFRoZW5hYmxlU3RhdGVBZnRlclN1c3BlbmRpbmcoKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5LnBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFib3J0U2V0LmRlbGV0ZShyZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9ySW5mbyA9IGdldFRocm93bkluZm8ocmVxdWVzdC5jb21wb25lbnRTdGFjayk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yZWRSZXBsYXkoXG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmJsb2NrZWRCb3VuZGFyeSxcbiAgICAgICAgICAgICAgICAgICAgICAxMiA9PT0gcmVxdWVzdCRqc2NvbXAkMC5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVxdWVzdCRqc2NvbXAkMC5mYXRhbEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHgsXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3JJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5Lm5vZGVzLFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucmVwbGF5LnNsb3RzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAucGVuZGluZ1Jvb3RUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAwID09PSByZXF1ZXN0JGpzY29tcCQwLnBlbmRpbmdSb290VGFza3MgJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVNoZWxsKHJlcXVlc3QkanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0JGpzY29tcCQwLmFsbFBlbmRpbmdUYXNrcy0tO1xuICAgICAgICAgICAgICAgICAgICAwID09PSByZXF1ZXN0JGpzY29tcCQwLmFsbFBlbmRpbmdUYXNrcyAmJlxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlQWxsKHJlcXVlc3QkanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGFza0luREVWID0gcHJldlRhc2tJbkRFVjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDAgPSBwcmV2VGFza0luREVWID0gdm9pZCAwO1xuICAgICAgICAgICAgICB2YXIgdGFzayRqc2NvbXAkMCA9IHRhc2ssXG4gICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMCA9IHNlZ21lbnQ7XG4gICAgICAgICAgICAgIGlmIChzZWdtZW50JGpzY29tcCQwLnN0YXR1cyA9PT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDAuc3RhdHVzID0gNjtcbiAgICAgICAgICAgICAgICBzd2l0Y2hDb250ZXh0KHRhc2skanNjb21wJDAuY29udGV4dCk7XG4gICAgICAgICAgICAgICAgcmVxdWVzdCRqc2NvbXAkMCA9IGN1cnJlbnRUYXNrSW5ERVY7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhc2tJbkRFViA9IHRhc2skanNjb21wJDA7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gc2VnbWVudCRqc2NvbXAkMC5jaGlsZHJlbi5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICBjaHVua0xlbmd0aCA9IHNlZ21lbnQkanNjb21wJDAuY2h1bmtzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgcmV0cnlOb2RlKHJlcXVlc3QsIHRhc2skanNjb21wJDApLFxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLmxhc3RQdXNoZWRUZXh0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMC50ZXh0RW1iZWRkZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLmNodW5rcy5wdXNoKHRleHRTZXBhcmF0b3IpLFxuICAgICAgICAgICAgICAgICAgICB0YXNrJGpzY29tcCQwLmFib3J0U2V0LmRlbGV0ZSh0YXNrJGpzY29tcCQwKSxcbiAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQkanNjb21wJDAuc3RhdHVzID0gQ09NUExFVEVEKSxcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRUYXNrKFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgICAgdGFzayRqc2NvbXAkMC5ibG9ja2VkQm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgc2VnbWVudCRqc2NvbXAkMFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHRocm93blZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICByZXNldEhvb2tzU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDAuY2hpbGRyZW4ubGVuZ3RoID0gY2hpbGRyZW5MZW5ndGg7XG4gICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLmNodW5rcy5sZW5ndGggPSBjaHVua0xlbmd0aDtcbiAgICAgICAgICAgICAgICAgIHZhciB4JGpzY29tcCQwID1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3duVmFsdWUgPT09IFN1c3BlbnNlRXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpXG4gICAgICAgICAgICAgICAgICAgICAgOiAxMiA9PT0gcmVxdWVzdC5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVxdWVzdC5mYXRhbEVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRocm93blZhbHVlO1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgeCRqc2NvbXAkMCAmJlxuICAgICAgICAgICAgICAgICAgICBudWxsICE9PSB4JGpzY29tcCQwICYmXG4gICAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHgkanNjb21wJDAudGhlblxuICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnQkanNjb21wJDAuc3RhdHVzID0gUEVORElORztcbiAgICAgICAgICAgICAgICAgICAgdGFzayRqc2NvbXAkMC50aGVuYWJsZVN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgICBnZXRUaGVuYWJsZVN0YXRlQWZ0ZXJTdXNwZW5kaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwaW5nJGpzY29tcCQwID0gdGFzayRqc2NvbXAkMC5waW5nO1xuICAgICAgICAgICAgICAgICAgICB4JGpzY29tcCQwLnRoZW4ocGluZyRqc2NvbXAkMCwgcGluZyRqc2NvbXAkMCk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JJbmZvJGpzY29tcCQwID0gZ2V0VGhyb3duSW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICB0YXNrJGpzY29tcCQwLmNvbXBvbmVudFN0YWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2skanNjb21wJDAuYWJvcnRTZXQuZGVsZXRlKHRhc2skanNjb21wJDApO1xuICAgICAgICAgICAgICAgICAgICBzZWdtZW50JGpzY29tcCQwLnN0YXR1cyA9IDQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHRhc2skanNjb21wJDAuYmxvY2tlZEJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgICAgICBwcmV2VGFza0luREVWID0gbG9nUmVjb3ZlcmFibGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHgkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3JJbmZvJGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIG51bGwgPT09IGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgPyBmYXRhbEVycm9yKHJlcXVlc3QsIHgkanNjb21wJDApXG4gICAgICAgICAgICAgICAgICAgICAgOiAoYm91bmRhcnkucGVuZGluZ1Rhc2tzLS0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeS5zdGF0dXMgIT09IENMSUVOVF9SRU5ERVJFRCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGJvdW5kYXJ5LnN0YXR1cyA9IENMSUVOVF9SRU5ERVJFRCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZUVycm9yRm9yQm91bmRhcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlRhc2tJbkRFVixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ySW5mbyRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB1bnRyYWNrQm91bmRhcnkocmVxdWVzdCwgYm91bmRhcnkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSkpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MtLTtcbiAgICAgICAgICAgICAgICAgICAgMCA9PT0gcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MgJiYgY29tcGxldGVBbGwocmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrSW5ERVYgPSByZXF1ZXN0JGpzY29tcCQwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwaW5nZWRUYXNrcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgbnVsbCAhPT0gcmVxdWVzdCRqc2NvbXAkMS5kZXN0aW5hdGlvbiAmJlxuICAgICAgICAgICAgZmx1c2hDb21wbGV0ZWRRdWV1ZXMoXG4gICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDEsXG4gICAgICAgICAgICAgIHJlcXVlc3QkanNjb21wJDEuZGVzdGluYXRpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0JGpzY29tcCQxLCBlcnJvciwge30pLFxuICAgICAgICAgICAgZmF0YWxFcnJvcihyZXF1ZXN0JGpzY29tcCQxLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgKGN1cnJlbnRSZXN1bWFibGVTdGF0ZSA9IHByZXZSZXN1bWFibGVTdGF0ZSksXG4gICAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IHByZXZEaXNwYXRjaGVyKSxcbiAgICAgICAgICAgIChSZWFjdFNoYXJlZEludGVybmFscy5BID0gcHJldkFzeW5jRGlzcGF0Y2hlciksXG4gICAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuZ2V0Q3VycmVudFN0YWNrID0gcHJldkdldEN1cnJlbnRTdGFja0ltcGwpLFxuICAgICAgICAgICAgcHJldkRpc3BhdGNoZXIgPT09IEhvb2tzRGlzcGF0Y2hlciAmJiBzd2l0Y2hDb250ZXh0KHByZXZDb250ZXh0KSxcbiAgICAgICAgICAgIChjdXJyZW50UmVxdWVzdCA9IHByZXZSZXF1ZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKSB7XG4gICAgICBzZWdtZW50LnBhcmVudEZsdXNoZWQgPSAhMDtcbiAgICAgIHN3aXRjaCAoc2VnbWVudC5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBQRU5ESU5HOlxuICAgICAgICAgIHNlZ21lbnQuaWQgPSByZXF1ZXN0Lm5leHRTZWdtZW50SWQrKztcbiAgICAgICAgY2FzZSBQT1NUUE9ORUQ6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChob2lzdGFibGVTdGF0ZSA9IHNlZ21lbnQuaWQpLFxuICAgICAgICAgICAgKHNlZ21lbnQubGFzdFB1c2hlZFRleHQgPSAhMSksXG4gICAgICAgICAgICAoc2VnbWVudC50ZXh0RW1iZWRkZWQgPSAhMSksXG4gICAgICAgICAgICAocmVxdWVzdCA9IHJlcXVlc3QucmVuZGVyU3RhdGUpLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcGxhY2Vob2xkZXIxKSxcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlcXVlc3QucGxhY2Vob2xkZXJQcmVmaXgpLFxuICAgICAgICAgICAgKHJlcXVlc3QgPSBzdHJpbmdUb0NodW5rKGhvaXN0YWJsZVN0YXRlLnRvU3RyaW5nKDE2KSkpLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVxdWVzdCksXG4gICAgICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBwbGFjZWhvbGRlcjIpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBDT01QTEVURUQ6XG4gICAgICAgICAgc2VnbWVudC5zdGF0dXMgPSBGTFVTSEVEO1xuICAgICAgICAgIHZhciByID0gITAsXG4gICAgICAgICAgICBjaHVua3MgPSBzZWdtZW50LmNodW5rcyxcbiAgICAgICAgICAgIGNodW5rSWR4ID0gMDtcbiAgICAgICAgICBzZWdtZW50ID0gc2VnbWVudC5jaGlsZHJlbjtcbiAgICAgICAgICBmb3IgKHZhciBjaGlsZElkeCA9IDA7IGNoaWxkSWR4IDwgc2VnbWVudC5sZW5ndGg7IGNoaWxkSWR4KyspIHtcbiAgICAgICAgICAgIGZvciAociA9IHNlZ21lbnRbY2hpbGRJZHhdOyBjaHVua0lkeCA8IHIuaW5kZXg7IGNodW5rSWR4KyspXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNodW5rc1tjaHVua0lkeF0pO1xuICAgICAgICAgICAgciA9IGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgciwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKDsgY2h1bmtJZHggPCBjaHVua3MubGVuZ3RoIC0gMTsgY2h1bmtJZHgrKylcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNodW5rc1tjaHVua0lkeF0pO1xuICAgICAgICAgIGNodW5rSWR4IDwgY2h1bmtzLmxlbmd0aCAmJlxuICAgICAgICAgICAgKHIgPSB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjaHVua3NbY2h1bmtJZHhdKSk7XG4gICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkFib3J0ZWQsIGVycm9yZWQgb3IgYWxyZWFkeSBmbHVzaGVkIGJvdW5kYXJpZXMgc2hvdWxkIG5vdCBiZSBmbHVzaGVkIGFnYWluLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSkge1xuICAgICAgdmFyIGJvdW5kYXJ5ID0gc2VnbWVudC5ib3VuZGFyeTtcbiAgICAgIGlmIChudWxsID09PSBib3VuZGFyeSlcbiAgICAgICAgcmV0dXJuIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCA9ICEwO1xuICAgICAgaWYgKGJvdW5kYXJ5LnN0YXR1cyA9PT0gQ0xJRU5UX1JFTkRFUkVEKSB7XG4gICAgICAgIHZhciBlcnJvckRpZ2VzdCA9IGJvdW5kYXJ5LmVycm9yRGlnZXN0LFxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGJvdW5kYXJ5LmVycm9yTWVzc2FnZSxcbiAgICAgICAgICBlcnJvclN0YWNrID0gYm91bmRhcnkuZXJyb3JTdGFjaztcbiAgICAgICAgYm91bmRhcnkgPSBib3VuZGFyeS5lcnJvckNvbXBvbmVudFN0YWNrO1xuICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMSk7XG4gICAgICAgIGVycm9yRGlnZXN0ICYmXG4gICAgICAgICAgKHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMUEpLFxuICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIoZXJyb3JEaWdlc3QpKVxuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVDaHVuayhcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3JBdHRySW50ZXJzdGl0aWFsXG4gICAgICAgICAgKSk7XG4gICAgICAgIGVycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICh3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFCKSxcbiAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKGVycm9yTWVzc2FnZSkpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvckF0dHJJbnRlcnN0aXRpYWxcbiAgICAgICAgICApKTtcbiAgICAgICAgZXJyb3JTdGFjayAmJlxuICAgICAgICAgICh3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnlFcnJvcjFDKSxcbiAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKGVycm9yU3RhY2spKVxuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVDaHVuayhcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3JBdHRySW50ZXJzdGl0aWFsXG4gICAgICAgICAgKSk7XG4gICAgICAgIGJvdW5kYXJ5ICYmXG4gICAgICAgICAgKHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMUQpLFxuICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIoYm91bmRhcnkpKVxuICAgICAgICAgICksXG4gICAgICAgICAgd3JpdGVDaHVuayhcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3JBdHRySW50ZXJzdGl0aWFsXG4gICAgICAgICAgKSk7XG4gICAgICAgIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMik7XG4gICAgICAgIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgfSBlbHNlIGlmIChib3VuZGFyeS5zdGF0dXMgIT09IENPTVBMRVRFRClcbiAgICAgICAgYm91bmRhcnkuc3RhdHVzID09PSBQRU5ESU5HICYmXG4gICAgICAgICAgKGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQgPSByZXF1ZXN0Lm5leHRTZWdtZW50SWQrKyksXG4gICAgICAgICAgMCA8IGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCAmJlxuICAgICAgICAgICAgcmVxdWVzdC5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KSxcbiAgICAgICAgICB3cml0ZVN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoXG4gICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgIHJlcXVlc3QucmVuZGVyU3RhdGUsXG4gICAgICAgICAgICBib3VuZGFyeS5yb290U2VnbWVudElEXG4gICAgICAgICAgKSxcbiAgICAgICAgICBob2lzdGFibGVTdGF0ZSAmJlxuICAgICAgICAgICAgKChib3VuZGFyeSA9IGJvdW5kYXJ5LmZhbGxiYWNrU3RhdGUpLFxuICAgICAgICAgICAgYm91bmRhcnkuc3R5bGVzLmZvckVhY2goaG9pc3RTdHlsZVF1ZXVlRGVwZW5kZW5jeSwgaG9pc3RhYmxlU3RhdGUpLFxuICAgICAgICAgICAgYm91bmRhcnkuc3R5bGVzaGVldHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgaG9pc3RTdHlsZXNoZWV0RGVwZW5kZW5jeSxcbiAgICAgICAgICAgICAgaG9pc3RhYmxlU3RhdGVcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCwgaG9pc3RhYmxlU3RhdGUpO1xuICAgICAgZWxzZSBpZiAoYm91bmRhcnkuYnl0ZVNpemUgPiByZXF1ZXN0LnByb2dyZXNzaXZlQ2h1bmtTaXplKVxuICAgICAgICAoYm91bmRhcnkucm9vdFNlZ21lbnRJRCA9IHJlcXVlc3QubmV4dFNlZ21lbnRJZCsrKSxcbiAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSksXG4gICAgICAgICAgd3JpdGVTdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KFxuICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICAgICAgYm91bmRhcnkucm9vdFNlZ21lbnRJRFxuICAgICAgICAgICksXG4gICAgICAgICAgZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaG9pc3RhYmxlU3RhdGUgJiZcbiAgICAgICAgICAoKHNlZ21lbnQgPSBib3VuZGFyeS5jb250ZW50U3RhdGUpLFxuICAgICAgICAgIHNlZ21lbnQuc3R5bGVzLmZvckVhY2goaG9pc3RTdHlsZVF1ZXVlRGVwZW5kZW5jeSwgaG9pc3RhYmxlU3RhdGUpLFxuICAgICAgICAgIHNlZ21lbnQuc3R5bGVzaGVldHMuZm9yRWFjaChcbiAgICAgICAgICAgIGhvaXN0U3R5bGVzaGVldERlcGVuZGVuY3ksXG4gICAgICAgICAgICBob2lzdGFibGVTdGF0ZVxuICAgICAgICAgICkpO1xuICAgICAgICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkpO1xuICAgICAgICBzZWdtZW50ID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gICAgICAgIGlmICgxICE9PSBzZWdtZW50Lmxlbmd0aClcbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiQSBwcmV2aW91c2x5IHVudmlzaXRlZCBib3VuZGFyeSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcm9vdCBzZWdtZW50LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50WzBdLCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU3VzcGVuc2VCb3VuZGFyeSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoU2VnbWVudENvbnRhaW5lcihcbiAgICAgIHJlcXVlc3QsXG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIHNlZ21lbnQsXG4gICAgICBob2lzdGFibGVTdGF0ZVxuICAgICkge1xuICAgICAgd3JpdGVTdGFydFNlZ21lbnQoXG4gICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICByZXF1ZXN0LnJlbmRlclN0YXRlLFxuICAgICAgICBzZWdtZW50LnBhcmVudEZvcm1hdENvbnRleHQsXG4gICAgICAgIHNlZ21lbnQuaWRcbiAgICAgICk7XG4gICAgICBmbHVzaFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQsIGhvaXN0YWJsZVN0YXRlKTtcbiAgICAgIHJldHVybiB3cml0ZUVuZFNlZ21lbnQoZGVzdGluYXRpb24sIHNlZ21lbnQucGFyZW50Rm9ybWF0Q29udGV4dCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoQ29tcGxldGVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5KSB7XG4gICAgICBmb3IgKFxuICAgICAgICB2YXIgY29tcGxldGVkU2VnbWVudHMgPSBib3VuZGFyeS5jb21wbGV0ZWRTZWdtZW50cywgaSA9IDA7XG4gICAgICAgIGkgPCBjb21wbGV0ZWRTZWdtZW50cy5sZW5ndGg7XG4gICAgICAgIGkrK1xuICAgICAgKVxuICAgICAgICBmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50c1tpXVxuICAgICAgICApO1xuICAgICAgY29tcGxldGVkU2VnbWVudHMubGVuZ3RoID0gMDtcbiAgICAgIHdyaXRlSG9pc3RhYmxlc0ZvckJvdW5kYXJ5KFxuICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgYm91bmRhcnkuY29udGVudFN0YXRlLFxuICAgICAgICByZXF1ZXN0LnJlbmRlclN0YXRlXG4gICAgICApO1xuICAgICAgY29tcGxldGVkU2VnbWVudHMgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlO1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICBpID0gYm91bmRhcnkucm9vdFNlZ21lbnRJRDtcbiAgICAgIGJvdW5kYXJ5ID0gYm91bmRhcnkuY29udGVudFN0YXRlO1xuICAgICAgdmFyIHJlcXVpcmVzU3R5bGVJbnNlcnRpb24gPSByZXF1ZXN0LnN0eWxlc1RvSG9pc3Q7XG4gICAgICByZXF1ZXN0LnN0eWxlc1RvSG9pc3QgPSAhMTtcbiAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlcXVlc3Quc3RhcnRJbmxpbmVTY3JpcHQpO1xuICAgICAgcmVxdWlyZXNTdHlsZUluc2VydGlvblxuICAgICAgICA/IChjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgJiBTZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uKSA9PT1cbiAgICAgICAgICBOb3RoaW5nU2VudFxuICAgICAgICAgID8gKChjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgPVxuICAgICAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgfFxuICAgICAgICAgICAgICBTZW50U3R5bGVJbnNlcnRpb25GdW5jdGlvbiB8XG4gICAgICAgICAgICAgIFNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24pLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVdpdGhTdHlsZXNTY3JpcHQxRnVsbEJvdGgpKVxuICAgICAgICAgIDogKGNvbXBsZXRlZFNlZ21lbnRzLmluc3RydWN0aW9ucyAmIFNlbnRTdHlsZUluc2VydGlvbkZ1bmN0aW9uKSA9PT1cbiAgICAgICAgICAgICAgTm90aGluZ1NlbnRcbiAgICAgICAgICAgID8gKChjb21wbGV0ZWRTZWdtZW50cy5pbnN0cnVjdGlvbnMgfD0gU2VudFN0eWxlSW5zZXJ0aW9uRnVuY3Rpb24pLFxuICAgICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlQm91bmRhcnlXaXRoU3R5bGVzU2NyaXB0MUZ1bGxQYXJ0aWFsXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICA6IHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNvbXBsZXRlQm91bmRhcnlXaXRoU3R5bGVzU2NyaXB0MVBhcnRpYWwpXG4gICAgICAgIDogKGNvbXBsZXRlZFNlZ21lbnRzLmluc3RydWN0aW9ucyAmIFNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24pID09PVxuICAgICAgICAgICAgTm90aGluZ1NlbnRcbiAgICAgICAgICA/ICgoY29tcGxldGVkU2VnbWVudHMuaW5zdHJ1Y3Rpb25zIHw9IFNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24pLFxuICAgICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFGdWxsKSlcbiAgICAgICAgICA6IHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQxUGFydGlhbCk7XG4gICAgICBjb21wbGV0ZWRTZWdtZW50cyA9IHN0cmluZ1RvQ2h1bmsoaS50b1N0cmluZygxNikpO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVxdWVzdC5ib3VuZGFyeVByZWZpeCk7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZWRTZWdtZW50cyk7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0Mik7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnNlZ21lbnRQcmVmaXgpO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVkU2VnbWVudHMpO1xuICAgICAgcmVxdWlyZXNTdHlsZUluc2VydGlvblxuICAgICAgICA/ICh3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0M2EpLFxuICAgICAgICAgIHdyaXRlU3R5bGVSZXNvdXJjZURlcGVuZGVuY2llc0luSlMoZGVzdGluYXRpb24sIGJvdW5kYXJ5KSlcbiAgICAgICAgOiB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0M2IpO1xuICAgICAgYm91bmRhcnkgPSB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0RW5kKTtcbiAgICAgIHJldHVybiB3cml0ZUJvb3RzdHJhcChkZXN0aW5hdGlvbiwgcmVxdWVzdCkgJiYgYm91bmRhcnk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoUGFydGlhbGx5Q29tcGxldGVkU2VnbWVudChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIGJvdW5kYXJ5LFxuICAgICAgc2VnbWVudFxuICAgICkge1xuICAgICAgaWYgKHNlZ21lbnQuc3RhdHVzID09PSBGTFVTSEVEKSByZXR1cm4gITA7XG4gICAgICB2YXIgaG9pc3RhYmxlU3RhdGUgPSBib3VuZGFyeS5jb250ZW50U3RhdGUsXG4gICAgICAgIHNlZ21lbnRJRCA9IHNlZ21lbnQuaWQ7XG4gICAgICBpZiAoLTEgPT09IHNlZ21lbnRJRCkge1xuICAgICAgICBpZiAoLTEgPT09IChzZWdtZW50LmlkID0gYm91bmRhcnkucm9vdFNlZ21lbnRJRCkpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICBcIkEgcm9vdCBzZWdtZW50IElEIG11c3QgaGF2ZSBiZWVuIGFzc2lnbmVkIGJ5IG5vdy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC5cIlxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiBmbHVzaFNlZ21lbnRDb250YWluZXIoXG4gICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgIGhvaXN0YWJsZVN0YXRlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc2VnbWVudElEID09PSBib3VuZGFyeS5yb290U2VnbWVudElEKVxuICAgICAgICByZXR1cm4gZmx1c2hTZWdtZW50Q29udGFpbmVyKFxuICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgc2VnbWVudCxcbiAgICAgICAgICBob2lzdGFibGVTdGF0ZVxuICAgICAgICApO1xuICAgICAgZmx1c2hTZWdtZW50Q29udGFpbmVyKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50LCBob2lzdGFibGVTdGF0ZSk7XG4gICAgICBib3VuZGFyeSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGU7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlcXVlc3Quc3RhcnRJbmxpbmVTY3JpcHQpO1xuICAgICAgKGJvdW5kYXJ5Lmluc3RydWN0aW9ucyAmIFNlbnRDb21wbGV0ZVNlZ21lbnRGdW5jdGlvbikgPT09IE5vdGhpbmdTZW50XG4gICAgICAgID8gKChib3VuZGFyeS5pbnN0cnVjdGlvbnMgfD0gU2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uKSxcbiAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZVNlZ21lbnRTY3JpcHQxRnVsbCkpXG4gICAgICAgIDogd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVTZWdtZW50U2NyaXB0MVBhcnRpYWwpO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVxdWVzdC5zZWdtZW50UHJlZml4KTtcbiAgICAgIHNlZ21lbnRJRCA9IHN0cmluZ1RvQ2h1bmsoc2VnbWVudElELnRvU3RyaW5nKDE2KSk7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzZWdtZW50SUQpO1xuICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVTZWdtZW50U2NyaXB0Mik7XG4gICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnBsYWNlaG9sZGVyUHJlZml4KTtcbiAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHNlZ21lbnRJRCk7XG4gICAgICBkZXN0aW5hdGlvbiA9IHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNvbXBsZXRlU2VnbWVudFNjcmlwdEVuZCk7XG4gICAgICByZXR1cm4gZGVzdGluYXRpb247XG4gICAgfVxuICAgIGZ1bmN0aW9uIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKSB7XG4gICAgICBjdXJyZW50VmlldyA9IG5ldyBVaW50OEFycmF5KDIwNDgpO1xuICAgICAgd3JpdHRlbkJ5dGVzID0gMDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghKDAgPCByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MpKSB7XG4gICAgICAgICAgdmFyIGksXG4gICAgICAgICAgICBjb21wbGV0ZWRSb290U2VnbWVudCA9IHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQ7XG4gICAgICAgICAgaWYgKG51bGwgIT09IGNvbXBsZXRlZFJvb3RTZWdtZW50KSB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkUm9vdFNlZ21lbnQuc3RhdHVzID09PSBQT1NUUE9ORUQpIHJldHVybjtcbiAgICAgICAgICAgIHZhciByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGUsXG4gICAgICAgICAgICAgIGh0bWxDaHVua3MgPSByZW5kZXJTdGF0ZS5odG1sQ2h1bmtzLFxuICAgICAgICAgICAgICBoZWFkQ2h1bmtzID0gcmVuZGVyU3RhdGUuaGVhZENodW5rcyxcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMDtcbiAgICAgICAgICAgIGlmIChodG1sQ2h1bmtzKSB7XG4gICAgICAgICAgICAgIGZvciAoaSRqc2NvbXAkMCA9IDA7IGkkanNjb21wJDAgPCBodG1sQ2h1bmtzLmxlbmd0aDsgaSRqc2NvbXAkMCsrKVxuICAgICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGh0bWxDaHVua3NbaSRqc2NvbXAkMF0pO1xuICAgICAgICAgICAgICBpZiAoaGVhZENodW5rcylcbiAgICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgICAgaSRqc2NvbXAkMCA9IDA7XG4gICAgICAgICAgICAgICAgICBpJGpzY29tcCQwIDwgaGVhZENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICBpJGpzY29tcCQwKytcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBoZWFkQ2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0Q2h1bmtGb3JUYWcoXCJoZWFkXCIpKSxcbiAgICAgICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGVuZE9mU3RhcnRUYWcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkQ2h1bmtzKVxuICAgICAgICAgICAgICBmb3IgKGkkanNjb21wJDAgPSAwOyBpJGpzY29tcCQwIDwgaGVhZENodW5rcy5sZW5ndGg7IGkkanNjb21wJDArKylcbiAgICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBoZWFkQ2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgIHZhciBjaGFyc2V0Q2h1bmtzID0gcmVuZGVyU3RhdGUuY2hhcnNldENodW5rcztcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGkkanNjb21wJDAgPSAwO1xuICAgICAgICAgICAgICBpJGpzY29tcCQwIDwgY2hhcnNldENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaGFyc2V0Q2h1bmtzW2kkanNjb21wJDBdKTtcbiAgICAgICAgICAgIGNoYXJzZXRDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWNvbm5lY3RzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUucHJlY29ubmVjdHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHZhciB2aWV3cG9ydENodW5rcyA9IHJlbmRlclN0YXRlLnZpZXdwb3J0Q2h1bmtzO1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCA9IDA7XG4gICAgICAgICAgICAgIGkkanNjb21wJDAgPCB2aWV3cG9ydENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCB2aWV3cG9ydENodW5rc1tpJGpzY29tcCQwXSk7XG4gICAgICAgICAgICB2aWV3cG9ydENodW5rcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuZm9udFByZWxvYWRzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuZm9udFByZWxvYWRzLmNsZWFyKCk7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5oaWdoSW1hZ2VQcmVsb2Fkcy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzLmNsZWFyKCk7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5zdHlsZXMuZm9yRWFjaChmbHVzaFN0eWxlc0luUHJlYW1ibGUsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIHZhciBpbXBvcnRNYXBDaHVua3MgPSByZW5kZXJTdGF0ZS5pbXBvcnRNYXBDaHVua3M7XG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBpJGpzY29tcCQwID0gMDtcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCA8IGltcG9ydE1hcENodW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBpbXBvcnRNYXBDaHVua3NbaSRqc2NvbXAkMF0pO1xuICAgICAgICAgICAgaW1wb3J0TWFwQ2h1bmtzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICByZW5kZXJTdGF0ZS5ib290c3RyYXBTY3JpcHRzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUuc2NyaXB0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLnNjcmlwdHMuY2xlYXIoKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmJ1bGtQcmVsb2Fkcy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmJ1bGtQcmVsb2Fkcy5jbGVhcigpO1xuICAgICAgICAgICAgdmFyIGhvaXN0YWJsZUNodW5rcyA9IHJlbmRlclN0YXRlLmhvaXN0YWJsZUNodW5rcztcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGkkanNjb21wJDAgPSAwO1xuICAgICAgICAgICAgICBpJGpzY29tcCQwIDwgaG9pc3RhYmxlQ2h1bmtzLmxlbmd0aDtcbiAgICAgICAgICAgICAgaSRqc2NvbXAkMCsrXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGhvaXN0YWJsZUNodW5rc1tpJGpzY29tcCQwXSk7XG4gICAgICAgICAgICBob2lzdGFibGVDaHVua3MubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGh0bWxDaHVua3MgJiZcbiAgICAgICAgICAgICAgbnVsbCA9PT0gaGVhZENodW5rcyAmJlxuICAgICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBlbmRDaHVua0ZvclRhZyhcImhlYWRcIikpO1xuICAgICAgICAgICAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBjb21wbGV0ZWRSb290U2VnbWVudCwgbnVsbCk7XG4gICAgICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHdyaXRlQm9vdHN0cmFwKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlbmRlclN0YXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIHJlbmRlclN0YXRlJGpzY29tcCQwID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgICAgICBjb21wbGV0ZWRSb290U2VnbWVudCA9IDA7XG4gICAgICAgICAgdmFyIHZpZXdwb3J0Q2h1bmtzJGpzY29tcCQwID0gcmVuZGVyU3RhdGUkanNjb21wJDAudmlld3BvcnRDaHVua3M7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50ID0gMDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50IDwgdmlld3BvcnRDaHVua3MkanNjb21wJDAubGVuZ3RoO1xuICAgICAgICAgICAgY29tcGxldGVkUm9vdFNlZ21lbnQrK1xuICAgICAgICAgIClcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICB2aWV3cG9ydENodW5rcyRqc2NvbXAkMFtjb21wbGV0ZWRSb290U2VnbWVudF1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdmlld3BvcnRDaHVua3MkanNjb21wJDAubGVuZ3RoID0gMDtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wcmVjb25uZWN0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5wcmVjb25uZWN0cy5jbGVhcigpO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLmZvbnRQcmVsb2Fkcy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5mb250UHJlbG9hZHMuY2xlYXIoKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5oaWdoSW1hZ2VQcmVsb2Fkcy5mb3JFYWNoKFxuICAgICAgICAgICAgZmx1c2hSZXNvdXJjZSxcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5oaWdoSW1hZ2VQcmVsb2Fkcy5jbGVhcigpO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLnN0eWxlcy5mb3JFYWNoKHByZWxvYWRMYXRlU3R5bGVzLCBkZXN0aW5hdGlvbik7XG4gICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAuc2NyaXB0cy5mb3JFYWNoKGZsdXNoUmVzb3VyY2UsIGRlc3RpbmF0aW9uKTtcbiAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMC5zY3JpcHRzLmNsZWFyKCk7XG4gICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAuYnVsa1ByZWxvYWRzLmZvckVhY2goZmx1c2hSZXNvdXJjZSwgZGVzdGluYXRpb24pO1xuICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLmJ1bGtQcmVsb2Fkcy5jbGVhcigpO1xuICAgICAgICAgIHZhciBob2lzdGFibGVDaHVua3MkanNjb21wJDAgPSByZW5kZXJTdGF0ZSRqc2NvbXAkMC5ob2lzdGFibGVDaHVua3M7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50ID0gMDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50IDwgaG9pc3RhYmxlQ2h1bmtzJGpzY29tcCQwLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbXBsZXRlZFJvb3RTZWdtZW50KytcbiAgICAgICAgICApXG4gICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgaG9pc3RhYmxlQ2h1bmtzJGpzY29tcCQwW2NvbXBsZXRlZFJvb3RTZWdtZW50XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBob2lzdGFibGVDaHVua3MkanNjb21wJDAubGVuZ3RoID0gMDtcbiAgICAgICAgICB2YXIgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzID0gcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXM7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzW2ldO1xuICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAgPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQxID0gcmVxdWVzdC5yZW5kZXJTdGF0ZSxcbiAgICAgICAgICAgICAgaWQgPSBib3VuZGFyeS5yb290U2VnbWVudElELFxuICAgICAgICAgICAgICBlcnJvckRpZ2VzdCA9IGJvdW5kYXJ5LmVycm9yRGlnZXN0LFxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBib3VuZGFyeS5lcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICAgIGVycm9yU3RhY2sgPSBib3VuZGFyeS5lcnJvclN0YWNrLFxuICAgICAgICAgICAgICBlcnJvckNvbXBvbmVudFN0YWNrID0gYm91bmRhcnkuZXJyb3JDb21wb25lbnRTdGFjaztcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLFxuICAgICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMS5zdGFydElubGluZVNjcmlwdFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5pbnN0cnVjdGlvbnMgJiBTZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24pID09PVxuICAgICAgICAgICAgTm90aGluZ1NlbnRcbiAgICAgICAgICAgICAgPyAoKHJlc3VtYWJsZVN0YXRlLmluc3RydWN0aW9ucyB8PSBTZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24pLFxuICAgICAgICAgICAgICAgIHdyaXRlQ2h1bmsocmVuZGVyU3RhdGUkanNjb21wJDAsIGNsaWVudFJlbmRlclNjcmlwdDFGdWxsKSlcbiAgICAgICAgICAgICAgOiB3cml0ZUNodW5rKHJlbmRlclN0YXRlJGpzY29tcCQwLCBjbGllbnRSZW5kZXJTY3JpcHQxUGFydGlhbCk7XG4gICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICByZW5kZXJTdGF0ZSRqc2NvbXAkMCxcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDEuYm91bmRhcnlQcmVmaXhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB3cml0ZUNodW5rKHJlbmRlclN0YXRlJGpzY29tcCQwLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICAgICAgd3JpdGVDaHVuayhyZW5kZXJTdGF0ZSRqc2NvbXAkMCwgY2xpZW50UmVuZGVyU2NyaXB0MUEpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBlcnJvckRpZ2VzdCB8fFxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgZXJyb3JTdGFjayB8fFxuICAgICAgICAgICAgICBlcnJvckNvbXBvbmVudFN0YWNrXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKFxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoZXJyb3JEaWdlc3QgfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGVycm9yTWVzc2FnZSB8fCBlcnJvclN0YWNrIHx8IGVycm9yQ29tcG9uZW50U3RhY2spXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKFxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoZXJyb3JNZXNzYWdlIHx8IFwiXCIpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChlcnJvclN0YWNrIHx8IGVycm9yQ29tcG9uZW50U3RhY2spXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgY2xpZW50UmVuZGVyRXJyb3JTY3JpcHRBcmdJbnRlcnN0aXRpYWxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB3cml0ZUNodW5rKFxuICAgICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgICBzdHJpbmdUb0NodW5rKFxuICAgICAgICAgICAgICAgICAgICBlc2NhcGVKU1N0cmluZ3NGb3JJbnN0cnVjdGlvblNjcmlwdHMoZXJyb3JTdGFjayB8fCBcIlwiKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBlcnJvckNvbXBvbmVudFN0YWNrICYmXG4gICAgICAgICAgICAgICh3cml0ZUNodW5rKFxuICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlJGpzY29tcCQwLFxuICAgICAgICAgICAgICAgIGNsaWVudFJlbmRlckVycm9yU2NyaXB0QXJnSW50ZXJzdGl0aWFsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHdyaXRlQ2h1bmsoXG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgICAgc3RyaW5nVG9DaHVuayhcbiAgICAgICAgICAgICAgICAgIGVzY2FwZUpTU3RyaW5nc0Zvckluc3RydWN0aW9uU2NyaXB0cyhlcnJvckNvbXBvbmVudFN0YWNrKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gd3JpdGVDaHVua0FuZFJldHVybihcbiAgICAgICAgICAgICAgcmVuZGVyU3RhdGUkanNjb21wJDAsXG4gICAgICAgICAgICAgIGNsaWVudFJlbmRlclNjcmlwdEVuZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSB7XG4gICAgICAgICAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgICB2YXIgY29tcGxldGVkQm91bmRhcmllcyA9IHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcztcbiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIWZsdXNoQ29tcGxldGVkQm91bmRhcnkoXG4gICAgICAgICAgICAgICAgcmVxdWVzdCxcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWRCb3VuZGFyaWVzW2ldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICBjb21wbGV0ZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNvbXBsZXRlZEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICAgIGNvbXBsZXRlV3JpdGluZyhkZXN0aW5hdGlvbik7XG4gICAgICAgICAgY3VycmVudFZpZXcgPSBuZXcgVWludDhBcnJheSgyMDQ4KTtcbiAgICAgICAgICB3cml0dGVuQnl0ZXMgPSAwO1xuICAgICAgICAgIHZhciBwYXJ0aWFsQm91bmRhcmllcyA9IHJlcXVlc3QucGFydGlhbEJvdW5kYXJpZXM7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBhcnRpYWxCb3VuZGFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhOiB7XG4gICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcyA9IHJlcXVlc3Q7XG4gICAgICAgICAgICAgIGJvdW5kYXJ5ID0gZGVzdGluYXRpb247XG4gICAgICAgICAgICAgIHZhciBib3VuZGFyeSRqc2NvbXAkMCA9IHBhcnRpYWxCb3VuZGFyaWVzW2ldLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkkanNjb21wJDAuY29tcGxldGVkU2VnbWVudHM7XG4gICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gMDtcbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPCBjb21wbGV0ZWRTZWdtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KytcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICFmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQoXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcyxcbiAgICAgICAgICAgICAgICAgICAgYm91bmRhcnksXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5JGpzY29tcCQwLFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRTZWdtZW50c1tKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQrKztcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZFNlZ21lbnRzLnNwbGljZSgwLCBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9ICExO1xuICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbXBsZXRlZFNlZ21lbnRzLnNwbGljZSgwLCBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpO1xuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSB3cml0ZUhvaXN0YWJsZXNGb3JCb3VuZGFyeShcbiAgICAgICAgICAgICAgICBib3VuZGFyeSxcbiAgICAgICAgICAgICAgICBib3VuZGFyeSRqc2NvbXAkMC5jb250ZW50U3RhdGUsXG4gICAgICAgICAgICAgICAgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnJlbmRlclN0YXRlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIUpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCkge1xuICAgICAgICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICBwYXJ0aWFsQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGFydGlhbEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICAgIHZhciBsYXJnZUJvdW5kYXJpZXMgPSByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXM7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxhcmdlQm91bmRhcmllcy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIWZsdXNoQ29tcGxldGVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIGxhcmdlQm91bmRhcmllc1tpXSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICBsYXJnZUJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbGFyZ2VCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MgJiZcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5waW5nZWRUYXNrcy5sZW5ndGggJiZcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMubGVuZ3RoICYmXG4gICAgICAgIDAgPT09IHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGhcbiAgICAgICAgICA/ICgocmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9ICExKSxcbiAgICAgICAgICAgIChpID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSksXG4gICAgICAgICAgICBpLmhhc0JvZHkgJiYgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgZW5kQ2h1bmtGb3JUYWcoXCJib2R5XCIpKSxcbiAgICAgICAgICAgIGkuaGFzSHRtbCAmJiB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBlbmRDaHVua0ZvclRhZyhcImh0bWxcIikpLFxuICAgICAgICAgICAgY29tcGxldGVXcml0aW5nKGRlc3RpbmF0aW9uKSxcbiAgICAgICAgICAgIDAgIT09IHJlcXVlc3QuYWJvcnRhYmxlVGFza3Muc2l6ZSAmJlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGhlcmUgd2FzIHN0aWxsIGFib3J0YWJsZSB0YXNrIGF0IHRoZSByb290IHdoZW4gd2UgY2xvc2VkLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LlwiXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAocmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQpLFxuICAgICAgICAgICAgZGVzdGluYXRpb24uY2xvc2UoKSxcbiAgICAgICAgICAgIChyZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbCkpXG4gICAgICAgICAgOiBjb21wbGV0ZVdyaXRpbmcoZGVzdGluYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBzdGFydFdvcmsocmVxdWVzdCkge1xuICAgICAgcmVxdWVzdC5mbHVzaFNjaGVkdWxlZCA9IG51bGwgIT09IHJlcXVlc3QuZGVzdGluYXRpb247XG4gICAgICBzY2hlZHVsZU1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBwZXJmb3JtV29yayhyZXF1ZXN0KTtcbiAgICAgIH0pO1xuICAgICAgc2NoZWR1bGVXb3JrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgMTAgPT09IHJlcXVlc3Quc3RhdHVzICYmIChyZXF1ZXN0LnN0YXR1cyA9IDExKTtcbiAgICAgICAgbnVsbCA9PT0gcmVxdWVzdC50cmFja2VkUG9zdHBvbmVzICYmXG4gICAgICAgICAgc2FmZWx5RW1pdEVhcmx5UHJlbG9hZHMocmVxdWVzdCwgMCA9PT0gcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbnF1ZXVlRmx1c2gocmVxdWVzdCkge1xuICAgICAgITEgPT09IHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgJiZcbiAgICAgICAgMCA9PT0gcmVxdWVzdC5waW5nZWRUYXNrcy5sZW5ndGggJiZcbiAgICAgICAgbnVsbCAhPT0gcmVxdWVzdC5kZXN0aW5hdGlvbiAmJlxuICAgICAgICAoKHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgPSAhMCksXG4gICAgICAgIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGRlc3RpbmF0aW9uID0gcmVxdWVzdC5kZXN0aW5hdGlvbjtcbiAgICAgICAgICBkZXN0aW5hdGlvblxuICAgICAgICAgICAgPyBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCBkZXN0aW5hdGlvbilcbiAgICAgICAgICAgIDogKHJlcXVlc3QuZmx1c2hTY2hlZHVsZWQgPSAhMSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc3RhcnRGbG93aW5nKHJlcXVlc3QsIGRlc3RpbmF0aW9uKSB7XG4gICAgICBpZiAoMTMgPT09IHJlcXVlc3Quc3RhdHVzKVxuICAgICAgICAocmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQpLFxuICAgICAgICAgIGNsb3NlV2l0aEVycm9yKGRlc3RpbmF0aW9uLCByZXF1ZXN0LmZhdGFsRXJyb3IpO1xuICAgICAgZWxzZSBpZiAocmVxdWVzdC5zdGF0dXMgIT09IENMT1NFRCAmJiBudWxsID09PSByZXF1ZXN0LmRlc3RpbmF0aW9uKSB7XG4gICAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCBkZXN0aW5hdGlvbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciwge30pLCBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhYm9ydChyZXF1ZXN0LCByZWFzb24pIHtcbiAgICAgIGlmICgxMSA9PT0gcmVxdWVzdC5zdGF0dXMgfHwgMTAgPT09IHJlcXVlc3Quc3RhdHVzKSByZXF1ZXN0LnN0YXR1cyA9IDEyO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGFib3J0YWJsZVRhc2tzID0gcmVxdWVzdC5hYm9ydGFibGVUYXNrcztcbiAgICAgICAgaWYgKDAgPCBhYm9ydGFibGVUYXNrcy5zaXplKSB7XG4gICAgICAgICAgdmFyIGVycm9yID1cbiAgICAgICAgICAgIHZvaWQgMCA9PT0gcmVhc29uXG4gICAgICAgICAgICAgID8gRXJyb3IoXCJUaGUgcmVuZGVyIHdhcyBhYm9ydGVkIGJ5IHRoZSBzZXJ2ZXIgd2l0aG91dCBhIHJlYXNvbi5cIilcbiAgICAgICAgICAgICAgOiBcIm9iamVjdFwiID09PSB0eXBlb2YgcmVhc29uICYmXG4gICAgICAgICAgICAgICAgICBudWxsICE9PSByZWFzb24gJiZcbiAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlYXNvbi50aGVuXG4gICAgICAgICAgICAgICAgPyBFcnJvcihcIlRoZSByZW5kZXIgd2FzIGFib3J0ZWQgYnkgdGhlIHNlcnZlciB3aXRoIGEgcHJvbWlzZS5cIilcbiAgICAgICAgICAgICAgICA6IHJlYXNvbjtcbiAgICAgICAgICByZXF1ZXN0LmZhdGFsRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICBhYm9ydGFibGVUYXNrcy5mb3JFYWNoKGZ1bmN0aW9uICh0YXNrKSB7XG4gICAgICAgICAgICByZXR1cm4gYWJvcnRUYXNrKHRhc2ssIHJlcXVlc3QsIGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhYm9ydGFibGVUYXNrcy5jbGVhcigpO1xuICAgICAgICB9XG4gICAgICAgIG51bGwgIT09IHJlcXVlc3QuZGVzdGluYXRpb24gJiZcbiAgICAgICAgICBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCByZXF1ZXN0LmRlc3RpbmF0aW9uKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yJDQpIHtcbiAgICAgICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvciQ0LCB7fSksIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IkNCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVuc3VyZUNvcnJlY3RJc29tb3JwaGljUmVhY3RWZXJzaW9uKCkge1xuICAgICAgdmFyIGlzb21vcnBoaWNSZWFjdFBhY2thZ2VWZXJzaW9uID0gUmVhY3QudmVyc2lvbjtcbiAgICAgIGlmIChcIjE5LjAuMFwiICE9PSBpc29tb3JwaGljUmVhY3RQYWNrYWdlVmVyc2lvbilcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgJ0luY29tcGF0aWJsZSBSZWFjdCB2ZXJzaW9uczogVGhlIFwicmVhY3RcIiBhbmQgXCJyZWFjdC1kb21cIiBwYWNrYWdlcyBtdXN0IGhhdmUgdGhlIGV4YWN0IHNhbWUgdmVyc2lvbi4gSW5zdGVhZCBnb3Q6XFxuICAtIHJlYWN0OiAgICAgICcgK1xuICAgICAgICAgICAgKGlzb21vcnBoaWNSZWFjdFBhY2thZ2VWZXJzaW9uICtcbiAgICAgICAgICAgICAgXCJcXG4gIC0gcmVhY3QtZG9tOiAgMTkuMC4wXFxuTGVhcm4gbW9yZTogaHR0cHM6Ly9yZWFjdC5kZXYvd2FybmluZ3MvdmVyc2lvbi1taXNtYXRjaFwiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB2YXIgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIiksXG4gICAgICBSZWFjdERPTSA9IHJlcXVpcmUoXCJyZWFjdC1kb21cIiksXG4gICAgICBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIiksXG4gICAgICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksXG4gICAgICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICAgICAgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxcbiAgICAgIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksXG4gICAgICBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLFxuICAgICAgUkVBQ1RfQ09OU1VNRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxcbiAgICAgIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLFxuICAgICAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxcbiAgICAgIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFxuICAgICAgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksXG4gICAgICBSRUFDVF9TQ09QRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpLFxuICAgICAgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKSxcbiAgICAgIFJFQUNUX09GRlNDUkVFTl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKSxcbiAgICAgIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpLFxuICAgICAgUkVBQ1RfTUVNT19DQUNIRV9TRU5USU5FTCA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpLFxuICAgICAgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yLFxuICAgICAgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5LFxuICAgICAganN4UHJvcHNQYXJlbnRzID0gbmV3IFdlYWtNYXAoKSxcbiAgICAgIGpzeENoaWxkcmVuUGFyZW50cyA9IG5ldyBXZWFrTWFwKCksXG4gICAgICBDTElFTlRfUkVGRVJFTkNFX1RBRyA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpLFxuICAgICAgdGFza1F1ZXVlID0gW107XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGFzayA9IHRhc2tRdWV1ZS5zaGlmdCgpO1xuICAgICAgdGFzayAmJiB0YXNrKCk7XG4gICAgfTtcbiAgICB2YXIgTG9jYWxQcm9taXNlID0gUHJvbWlzZSxcbiAgICAgIHNjaGVkdWxlTWljcm90YXNrID1cbiAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcXVldWVNaWNyb3Rhc2tcbiAgICAgICAgICA/IHF1ZXVlTWljcm90YXNrXG4gICAgICAgICAgOiBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgTG9jYWxQcm9taXNlLnJlc29sdmUobnVsbClcbiAgICAgICAgICAgICAgICAudGhlbihjYWxsYmFjaylcbiAgICAgICAgICAgICAgICAuY2F0Y2goaGFuZGxlRXJyb3JJbk5leHRUaWNrKTtcbiAgICAgICAgICAgIH0sXG4gICAgICBjdXJyZW50VmlldyA9IG51bGwsXG4gICAgICB3cml0dGVuQnl0ZXMgPSAwLFxuICAgICAgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKSxcbiAgICAgIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24sXG4gICAgICBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IFJlZ0V4cChcbiAgICAgICAgXCJeWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRdWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MF0qJFwiXG4gICAgICApLFxuICAgICAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9LFxuICAgICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge30sXG4gICAgICB1bml0bGVzc051bWJlcnMgPSBuZXcgU2V0KFxuICAgICAgICBcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IGFzcGVjdFJhdGlvIGJvcmRlckltYWdlT3V0c2V0IGJvcmRlckltYWdlU2xpY2UgYm9yZGVySW1hZ2VXaWR0aCBib3hGbGV4IGJveEZsZXhHcm91cCBib3hPcmRpbmFsR3JvdXAgY29sdW1uQ291bnQgY29sdW1ucyBmbGV4IGZsZXhHcm93IGZsZXhQb3NpdGl2ZSBmbGV4U2hyaW5rIGZsZXhOZWdhdGl2ZSBmbGV4T3JkZXIgZ3JpZEFyZWEgZ3JpZFJvdyBncmlkUm93RW5kIGdyaWRSb3dTcGFuIGdyaWRSb3dTdGFydCBncmlkQ29sdW1uIGdyaWRDb2x1bW5FbmQgZ3JpZENvbHVtblNwYW4gZ3JpZENvbHVtblN0YXJ0IGZvbnRXZWlnaHQgbGluZUNsYW1wIGxpbmVIZWlnaHQgb3BhY2l0eSBvcmRlciBvcnBoYW5zIHNjYWxlIHRhYlNpemUgd2lkb3dzIHpJbmRleCB6b29tIGZpbGxPcGFjaXR5IGZsb29kT3BhY2l0eSBzdG9wT3BhY2l0eSBzdHJva2VEYXNoYXJyYXkgc3Ryb2tlRGFzaG9mZnNldCBzdHJva2VNaXRlcmxpbWl0IHN0cm9rZU9wYWNpdHkgc3Ryb2tlV2lkdGggTW96QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgTW96Qm94RmxleCBNb3pCb3hGbGV4R3JvdXAgTW96TGluZUNsYW1wIG1zQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgbXNGbGV4IG1zWm9vbSBtc0ZsZXhHcm93IG1zRmxleE5lZ2F0aXZlIG1zRmxleE9yZGVyIG1zRmxleFBvc2l0aXZlIG1zRmxleFNocmluayBtc0dyaWRDb2x1bW4gbXNHcmlkQ29sdW1uU3BhbiBtc0dyaWRSb3cgbXNHcmlkUm93U3BhbiBXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBXZWJraXRCb3hGbGV4IFdlYktpdEJveEZsZXhHcm91cCBXZWJraXRCb3hPcmRpbmFsR3JvdXAgV2Via2l0Q29sdW1uQ291bnQgV2Via2l0Q29sdW1ucyBXZWJraXRGbGV4IFdlYmtpdEZsZXhHcm93IFdlYmtpdEZsZXhQb3NpdGl2ZSBXZWJraXRGbGV4U2hyaW5rIFdlYmtpdExpbmVDbGFtcFwiLnNwbGl0KFxuICAgICAgICAgIFwiIFwiXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBhbGlhc2VzID0gbmV3IE1hcChbXG4gICAgICAgIFtcImFjY2VwdENoYXJzZXRcIiwgXCJhY2NlcHQtY2hhcnNldFwiXSxcbiAgICAgICAgW1wiaHRtbEZvclwiLCBcImZvclwiXSxcbiAgICAgICAgW1wiaHR0cEVxdWl2XCIsIFwiaHR0cC1lcXVpdlwiXSxcbiAgICAgICAgW1wiY3Jvc3NPcmlnaW5cIiwgXCJjcm9zc29yaWdpblwiXSxcbiAgICAgICAgW1wiYWNjZW50SGVpZ2h0XCIsIFwiYWNjZW50LWhlaWdodFwiXSxcbiAgICAgICAgW1wiYWxpZ25tZW50QmFzZWxpbmVcIiwgXCJhbGlnbm1lbnQtYmFzZWxpbmVcIl0sXG4gICAgICAgIFtcImFyYWJpY0Zvcm1cIiwgXCJhcmFiaWMtZm9ybVwiXSxcbiAgICAgICAgW1wiYmFzZWxpbmVTaGlmdFwiLCBcImJhc2VsaW5lLXNoaWZ0XCJdLFxuICAgICAgICBbXCJjYXBIZWlnaHRcIiwgXCJjYXAtaGVpZ2h0XCJdLFxuICAgICAgICBbXCJjbGlwUGF0aFwiLCBcImNsaXAtcGF0aFwiXSxcbiAgICAgICAgW1wiY2xpcFJ1bGVcIiwgXCJjbGlwLXJ1bGVcIl0sXG4gICAgICAgIFtcImNvbG9ySW50ZXJwb2xhdGlvblwiLCBcImNvbG9yLWludGVycG9sYXRpb25cIl0sXG4gICAgICAgIFtcImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNcIiwgXCJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnNcIl0sXG4gICAgICAgIFtcImNvbG9yUHJvZmlsZVwiLCBcImNvbG9yLXByb2ZpbGVcIl0sXG4gICAgICAgIFtcImNvbG9yUmVuZGVyaW5nXCIsIFwiY29sb3ItcmVuZGVyaW5nXCJdLFxuICAgICAgICBbXCJkb21pbmFudEJhc2VsaW5lXCIsIFwiZG9taW5hbnQtYmFzZWxpbmVcIl0sXG4gICAgICAgIFtcImVuYWJsZUJhY2tncm91bmRcIiwgXCJlbmFibGUtYmFja2dyb3VuZFwiXSxcbiAgICAgICAgW1wiZmlsbE9wYWNpdHlcIiwgXCJmaWxsLW9wYWNpdHlcIl0sXG4gICAgICAgIFtcImZpbGxSdWxlXCIsIFwiZmlsbC1ydWxlXCJdLFxuICAgICAgICBbXCJmbG9vZENvbG9yXCIsIFwiZmxvb2QtY29sb3JcIl0sXG4gICAgICAgIFtcImZsb29kT3BhY2l0eVwiLCBcImZsb29kLW9wYWNpdHlcIl0sXG4gICAgICAgIFtcImZvbnRGYW1pbHlcIiwgXCJmb250LWZhbWlseVwiXSxcbiAgICAgICAgW1wiZm9udFNpemVcIiwgXCJmb250LXNpemVcIl0sXG4gICAgICAgIFtcImZvbnRTaXplQWRqdXN0XCIsIFwiZm9udC1zaXplLWFkanVzdFwiXSxcbiAgICAgICAgW1wiZm9udFN0cmV0Y2hcIiwgXCJmb250LXN0cmV0Y2hcIl0sXG4gICAgICAgIFtcImZvbnRTdHlsZVwiLCBcImZvbnQtc3R5bGVcIl0sXG4gICAgICAgIFtcImZvbnRWYXJpYW50XCIsIFwiZm9udC12YXJpYW50XCJdLFxuICAgICAgICBbXCJmb250V2VpZ2h0XCIsIFwiZm9udC13ZWlnaHRcIl0sXG4gICAgICAgIFtcImdseXBoTmFtZVwiLCBcImdseXBoLW5hbWVcIl0sXG4gICAgICAgIFtcImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsXCIsIFwiZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbFwiXSxcbiAgICAgICAgW1wiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsXCIsIFwiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWxcIl0sXG4gICAgICAgIFtcImhvcml6QWR2WFwiLCBcImhvcml6LWFkdi14XCJdLFxuICAgICAgICBbXCJob3Jpek9yaWdpblhcIiwgXCJob3Jpei1vcmlnaW4teFwiXSxcbiAgICAgICAgW1wiaW1hZ2VSZW5kZXJpbmdcIiwgXCJpbWFnZS1yZW5kZXJpbmdcIl0sXG4gICAgICAgIFtcImxldHRlclNwYWNpbmdcIiwgXCJsZXR0ZXItc3BhY2luZ1wiXSxcbiAgICAgICAgW1wibGlnaHRpbmdDb2xvclwiLCBcImxpZ2h0aW5nLWNvbG9yXCJdLFxuICAgICAgICBbXCJtYXJrZXJFbmRcIiwgXCJtYXJrZXItZW5kXCJdLFxuICAgICAgICBbXCJtYXJrZXJNaWRcIiwgXCJtYXJrZXItbWlkXCJdLFxuICAgICAgICBbXCJtYXJrZXJTdGFydFwiLCBcIm1hcmtlci1zdGFydFwiXSxcbiAgICAgICAgW1wib3ZlcmxpbmVQb3NpdGlvblwiLCBcIm92ZXJsaW5lLXBvc2l0aW9uXCJdLFxuICAgICAgICBbXCJvdmVybGluZVRoaWNrbmVzc1wiLCBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXSxcbiAgICAgICAgW1wicGFpbnRPcmRlclwiLCBcInBhaW50LW9yZGVyXCJdLFxuICAgICAgICBbXCJwYW5vc2UtMVwiLCBcInBhbm9zZS0xXCJdLFxuICAgICAgICBbXCJwb2ludGVyRXZlbnRzXCIsIFwicG9pbnRlci1ldmVudHNcIl0sXG4gICAgICAgIFtcInJlbmRlcmluZ0ludGVudFwiLCBcInJlbmRlcmluZy1pbnRlbnRcIl0sXG4gICAgICAgIFtcInNoYXBlUmVuZGVyaW5nXCIsIFwic2hhcGUtcmVuZGVyaW5nXCJdLFxuICAgICAgICBbXCJzdG9wQ29sb3JcIiwgXCJzdG9wLWNvbG9yXCJdLFxuICAgICAgICBbXCJzdG9wT3BhY2l0eVwiLCBcInN0b3Atb3BhY2l0eVwiXSxcbiAgICAgICAgW1wic3RyaWtldGhyb3VnaFBvc2l0aW9uXCIsIFwic3RyaWtldGhyb3VnaC1wb3NpdGlvblwiXSxcbiAgICAgICAgW1wic3RyaWtldGhyb3VnaFRoaWNrbmVzc1wiLCBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJdLFxuICAgICAgICBbXCJzdHJva2VEYXNoYXJyYXlcIiwgXCJzdHJva2UtZGFzaGFycmF5XCJdLFxuICAgICAgICBbXCJzdHJva2VEYXNob2Zmc2V0XCIsIFwic3Ryb2tlLWRhc2hvZmZzZXRcIl0sXG4gICAgICAgIFtcInN0cm9rZUxpbmVjYXBcIiwgXCJzdHJva2UtbGluZWNhcFwiXSxcbiAgICAgICAgW1wic3Ryb2tlTGluZWpvaW5cIiwgXCJzdHJva2UtbGluZWpvaW5cIl0sXG4gICAgICAgIFtcInN0cm9rZU1pdGVybGltaXRcIiwgXCJzdHJva2UtbWl0ZXJsaW1pdFwiXSxcbiAgICAgICAgW1wic3Ryb2tlT3BhY2l0eVwiLCBcInN0cm9rZS1vcGFjaXR5XCJdLFxuICAgICAgICBbXCJzdHJva2VXaWR0aFwiLCBcInN0cm9rZS13aWR0aFwiXSxcbiAgICAgICAgW1widGV4dEFuY2hvclwiLCBcInRleHQtYW5jaG9yXCJdLFxuICAgICAgICBbXCJ0ZXh0RGVjb3JhdGlvblwiLCBcInRleHQtZGVjb3JhdGlvblwiXSxcbiAgICAgICAgW1widGV4dFJlbmRlcmluZ1wiLCBcInRleHQtcmVuZGVyaW5nXCJdLFxuICAgICAgICBbXCJ0cmFuc2Zvcm1PcmlnaW5cIiwgXCJ0cmFuc2Zvcm0tb3JpZ2luXCJdLFxuICAgICAgICBbXCJ1bmRlcmxpbmVQb3NpdGlvblwiLCBcInVuZGVybGluZS1wb3NpdGlvblwiXSxcbiAgICAgICAgW1widW5kZXJsaW5lVGhpY2tuZXNzXCIsIFwidW5kZXJsaW5lLXRoaWNrbmVzc1wiXSxcbiAgICAgICAgW1widW5pY29kZUJpZGlcIiwgXCJ1bmljb2RlLWJpZGlcIl0sXG4gICAgICAgIFtcInVuaWNvZGVSYW5nZVwiLCBcInVuaWNvZGUtcmFuZ2VcIl0sXG4gICAgICAgIFtcInVuaXRzUGVyRW1cIiwgXCJ1bml0cy1wZXItZW1cIl0sXG4gICAgICAgIFtcInZBbHBoYWJldGljXCIsIFwidi1hbHBoYWJldGljXCJdLFxuICAgICAgICBbXCJ2SGFuZ2luZ1wiLCBcInYtaGFuZ2luZ1wiXSxcbiAgICAgICAgW1widklkZW9ncmFwaGljXCIsIFwidi1pZGVvZ3JhcGhpY1wiXSxcbiAgICAgICAgW1widk1hdGhlbWF0aWNhbFwiLCBcInYtbWF0aGVtYXRpY2FsXCJdLFxuICAgICAgICBbXCJ2ZWN0b3JFZmZlY3RcIiwgXCJ2ZWN0b3ItZWZmZWN0XCJdLFxuICAgICAgICBbXCJ2ZXJ0QWR2WVwiLCBcInZlcnQtYWR2LXlcIl0sXG4gICAgICAgIFtcInZlcnRPcmlnaW5YXCIsIFwidmVydC1vcmlnaW4teFwiXSxcbiAgICAgICAgW1widmVydE9yaWdpbllcIiwgXCJ2ZXJ0LW9yaWdpbi15XCJdLFxuICAgICAgICBbXCJ3b3JkU3BhY2luZ1wiLCBcIndvcmQtc3BhY2luZ1wiXSxcbiAgICAgICAgW1wid3JpdGluZ01vZGVcIiwgXCJ3cml0aW5nLW1vZGVcIl0sXG4gICAgICAgIFtcInhtbG5zWGxpbmtcIiwgXCJ4bWxuczp4bGlua1wiXSxcbiAgICAgICAgW1wieEhlaWdodFwiLCBcIngtaGVpZ2h0XCJdXG4gICAgICBdKSxcbiAgICAgIGhhc1JlYWRPbmx5VmFsdWUgPSB7XG4gICAgICAgIGJ1dHRvbjogITAsXG4gICAgICAgIGNoZWNrYm94OiAhMCxcbiAgICAgICAgaW1hZ2U6ICEwLFxuICAgICAgICBoaWRkZW46ICEwLFxuICAgICAgICByYWRpbzogITAsXG4gICAgICAgIHJlc2V0OiAhMCxcbiAgICAgICAgc3VibWl0OiAhMFxuICAgICAgfSxcbiAgICAgIGFyaWFQcm9wZXJ0aWVzID0ge1xuICAgICAgICBcImFyaWEtY3VycmVudFwiOiAwLFxuICAgICAgICBcImFyaWEtZGVzY3JpcHRpb25cIjogMCxcbiAgICAgICAgXCJhcmlhLWRldGFpbHNcIjogMCxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogMCxcbiAgICAgICAgXCJhcmlhLWludmFsaWRcIjogMCxcbiAgICAgICAgXCJhcmlhLWtleXNob3J0Y3V0c1wiOiAwLFxuICAgICAgICBcImFyaWEtbGFiZWxcIjogMCxcbiAgICAgICAgXCJhcmlhLXJvbGVkZXNjcmlwdGlvblwiOiAwLFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IDAsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiAwLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogMCxcbiAgICAgICAgXCJhcmlhLWxldmVsXCI6IDAsXG4gICAgICAgIFwiYXJpYS1tb2RhbFwiOiAwLFxuICAgICAgICBcImFyaWEtbXVsdGlsaW5lXCI6IDAsXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogMCxcbiAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IDAsXG4gICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiAwLFxuICAgICAgICBcImFyaWEtcHJlc3NlZFwiOiAwLFxuICAgICAgICBcImFyaWEtcmVhZG9ubHlcIjogMCxcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiAwLFxuICAgICAgICBcImFyaWEtc29ydFwiOiAwLFxuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IDAsXG4gICAgICAgIFwiYXJpYS12YWx1ZW5vd1wiOiAwLFxuICAgICAgICBcImFyaWEtdmFsdWV0ZXh0XCI6IDAsXG4gICAgICAgIFwiYXJpYS1hdG9taWNcIjogMCxcbiAgICAgICAgXCJhcmlhLWJ1c3lcIjogMCxcbiAgICAgICAgXCJhcmlhLWxpdmVcIjogMCxcbiAgICAgICAgXCJhcmlhLXJlbGV2YW50XCI6IDAsXG4gICAgICAgIFwiYXJpYS1kcm9wZWZmZWN0XCI6IDAsXG4gICAgICAgIFwiYXJpYS1ncmFiYmVkXCI6IDAsXG4gICAgICAgIFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6IDAsXG4gICAgICAgIFwiYXJpYS1jb2xjb3VudFwiOiAwLFxuICAgICAgICBcImFyaWEtY29saW5kZXhcIjogMCxcbiAgICAgICAgXCJhcmlhLWNvbHNwYW5cIjogMCxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IDAsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiAwLFxuICAgICAgICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IDAsXG4gICAgICAgIFwiYXJpYS1mbG93dG9cIjogMCxcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogMCxcbiAgICAgICAgXCJhcmlhLW93bnNcIjogMCxcbiAgICAgICAgXCJhcmlhLXBvc2luc2V0XCI6IDAsXG4gICAgICAgIFwiYXJpYS1yb3djb3VudFwiOiAwLFxuICAgICAgICBcImFyaWEtcm93aW5kZXhcIjogMCxcbiAgICAgICAgXCJhcmlhLXJvd3NwYW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXNldHNpemVcIjogMFxuICAgICAgfSxcbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMSA9IHt9LFxuICAgICAgckFSSUEkMSA9IFJlZ0V4cChcbiAgICAgICAgXCJeKGFyaWEpLVs6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBdKiRcIlxuICAgICAgKSxcbiAgICAgIHJBUklBQ2FtZWwkMSA9IFJlZ0V4cChcbiAgICAgICAgXCJeKGFyaWEpW0EtWl1bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFxcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQwXSokXCJcbiAgICAgICksXG4gICAgICBkaWRXYXJuVmFsdWVOdWxsID0gITEsXG4gICAgICBwb3NzaWJsZVN0YW5kYXJkTmFtZXMgPSB7XG4gICAgICAgIGFjY2VwdDogXCJhY2NlcHRcIixcbiAgICAgICAgYWNjZXB0Y2hhcnNldDogXCJhY2NlcHRDaGFyc2V0XCIsXG4gICAgICAgIFwiYWNjZXB0LWNoYXJzZXRcIjogXCJhY2NlcHRDaGFyc2V0XCIsXG4gICAgICAgIGFjY2Vzc2tleTogXCJhY2Nlc3NLZXlcIixcbiAgICAgICAgYWN0aW9uOiBcImFjdGlvblwiLFxuICAgICAgICBhbGxvd2Z1bGxzY3JlZW46IFwiYWxsb3dGdWxsU2NyZWVuXCIsXG4gICAgICAgIGFsdDogXCJhbHRcIixcbiAgICAgICAgYXM6IFwiYXNcIixcbiAgICAgICAgYXN5bmM6IFwiYXN5bmNcIixcbiAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwiYXV0b0NhcGl0YWxpemVcIixcbiAgICAgICAgYXV0b2NvbXBsZXRlOiBcImF1dG9Db21wbGV0ZVwiLFxuICAgICAgICBhdXRvY29ycmVjdDogXCJhdXRvQ29ycmVjdFwiLFxuICAgICAgICBhdXRvZm9jdXM6IFwiYXV0b0ZvY3VzXCIsXG4gICAgICAgIGF1dG9wbGF5OiBcImF1dG9QbGF5XCIsXG4gICAgICAgIGF1dG9zYXZlOiBcImF1dG9TYXZlXCIsXG4gICAgICAgIGNhcHR1cmU6IFwiY2FwdHVyZVwiLFxuICAgICAgICBjZWxscGFkZGluZzogXCJjZWxsUGFkZGluZ1wiLFxuICAgICAgICBjZWxsc3BhY2luZzogXCJjZWxsU3BhY2luZ1wiLFxuICAgICAgICBjaGFsbGVuZ2U6IFwiY2hhbGxlbmdlXCIsXG4gICAgICAgIGNoYXJzZXQ6IFwiY2hhclNldFwiLFxuICAgICAgICBjaGVja2VkOiBcImNoZWNrZWRcIixcbiAgICAgICAgY2hpbGRyZW46IFwiY2hpbGRyZW5cIixcbiAgICAgICAgY2l0ZTogXCJjaXRlXCIsXG4gICAgICAgIGNsYXNzOiBcImNsYXNzTmFtZVwiLFxuICAgICAgICBjbGFzc2lkOiBcImNsYXNzSURcIixcbiAgICAgICAgY2xhc3NuYW1lOiBcImNsYXNzTmFtZVwiLFxuICAgICAgICBjb2xzOiBcImNvbHNcIixcbiAgICAgICAgY29sc3BhbjogXCJjb2xTcGFuXCIsXG4gICAgICAgIGNvbnRlbnQ6IFwiY29udGVudFwiLFxuICAgICAgICBjb250ZW50ZWRpdGFibGU6IFwiY29udGVudEVkaXRhYmxlXCIsXG4gICAgICAgIGNvbnRleHRtZW51OiBcImNvbnRleHRNZW51XCIsXG4gICAgICAgIGNvbnRyb2xzOiBcImNvbnRyb2xzXCIsXG4gICAgICAgIGNvbnRyb2xzbGlzdDogXCJjb250cm9sc0xpc3RcIixcbiAgICAgICAgY29vcmRzOiBcImNvb3Jkc1wiLFxuICAgICAgICBjcm9zc29yaWdpbjogXCJjcm9zc09yaWdpblwiLFxuICAgICAgICBkYW5nZXJvdXNseXNldGlubmVyaHRtbDogXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiLFxuICAgICAgICBkYXRhOiBcImRhdGFcIixcbiAgICAgICAgZGF0ZXRpbWU6IFwiZGF0ZVRpbWVcIixcbiAgICAgICAgZGVmYXVsdDogXCJkZWZhdWx0XCIsXG4gICAgICAgIGRlZmF1bHRjaGVja2VkOiBcImRlZmF1bHRDaGVja2VkXCIsXG4gICAgICAgIGRlZmF1bHR2YWx1ZTogXCJkZWZhdWx0VmFsdWVcIixcbiAgICAgICAgZGVmZXI6IFwiZGVmZXJcIixcbiAgICAgICAgZGlyOiBcImRpclwiLFxuICAgICAgICBkaXNhYmxlZDogXCJkaXNhYmxlZFwiLFxuICAgICAgICBkaXNhYmxlcGljdHVyZWlucGljdHVyZTogXCJkaXNhYmxlUGljdHVyZUluUGljdHVyZVwiLFxuICAgICAgICBkaXNhYmxlcmVtb3RlcGxheWJhY2s6IFwiZGlzYWJsZVJlbW90ZVBsYXliYWNrXCIsXG4gICAgICAgIGRvd25sb2FkOiBcImRvd25sb2FkXCIsXG4gICAgICAgIGRyYWdnYWJsZTogXCJkcmFnZ2FibGVcIixcbiAgICAgICAgZW5jdHlwZTogXCJlbmNUeXBlXCIsXG4gICAgICAgIGVudGVya2V5aGludDogXCJlbnRlcktleUhpbnRcIixcbiAgICAgICAgZmV0Y2hwcmlvcml0eTogXCJmZXRjaFByaW9yaXR5XCIsXG4gICAgICAgIGZvcjogXCJodG1sRm9yXCIsXG4gICAgICAgIGZvcm06IFwiZm9ybVwiLFxuICAgICAgICBmb3JtbWV0aG9kOiBcImZvcm1NZXRob2RcIixcbiAgICAgICAgZm9ybWFjdGlvbjogXCJmb3JtQWN0aW9uXCIsXG4gICAgICAgIGZvcm1lbmN0eXBlOiBcImZvcm1FbmNUeXBlXCIsXG4gICAgICAgIGZvcm1ub3ZhbGlkYXRlOiBcImZvcm1Ob1ZhbGlkYXRlXCIsXG4gICAgICAgIGZvcm10YXJnZXQ6IFwiZm9ybVRhcmdldFwiLFxuICAgICAgICBmcmFtZWJvcmRlcjogXCJmcmFtZUJvcmRlclwiLFxuICAgICAgICBoZWFkZXJzOiBcImhlYWRlcnNcIixcbiAgICAgICAgaGVpZ2h0OiBcImhlaWdodFwiLFxuICAgICAgICBoaWRkZW46IFwiaGlkZGVuXCIsXG4gICAgICAgIGhpZ2g6IFwiaGlnaFwiLFxuICAgICAgICBocmVmOiBcImhyZWZcIixcbiAgICAgICAgaHJlZmxhbmc6IFwiaHJlZkxhbmdcIixcbiAgICAgICAgaHRtbGZvcjogXCJodG1sRm9yXCIsXG4gICAgICAgIGh0dHBlcXVpdjogXCJodHRwRXF1aXZcIixcbiAgICAgICAgXCJodHRwLWVxdWl2XCI6IFwiaHR0cEVxdWl2XCIsXG4gICAgICAgIGljb246IFwiaWNvblwiLFxuICAgICAgICBpZDogXCJpZFwiLFxuICAgICAgICBpbWFnZXNpemVzOiBcImltYWdlU2l6ZXNcIixcbiAgICAgICAgaW1hZ2VzcmNzZXQ6IFwiaW1hZ2VTcmNTZXRcIixcbiAgICAgICAgaW5lcnQ6IFwiaW5lcnRcIixcbiAgICAgICAgaW5uZXJodG1sOiBcImlubmVySFRNTFwiLFxuICAgICAgICBpbnB1dG1vZGU6IFwiaW5wdXRNb2RlXCIsXG4gICAgICAgIGludGVncml0eTogXCJpbnRlZ3JpdHlcIixcbiAgICAgICAgaXM6IFwiaXNcIixcbiAgICAgICAgaXRlbWlkOiBcIml0ZW1JRFwiLFxuICAgICAgICBpdGVtcHJvcDogXCJpdGVtUHJvcFwiLFxuICAgICAgICBpdGVtcmVmOiBcIml0ZW1SZWZcIixcbiAgICAgICAgaXRlbXNjb3BlOiBcIml0ZW1TY29wZVwiLFxuICAgICAgICBpdGVtdHlwZTogXCJpdGVtVHlwZVwiLFxuICAgICAgICBrZXlwYXJhbXM6IFwia2V5UGFyYW1zXCIsXG4gICAgICAgIGtleXR5cGU6IFwia2V5VHlwZVwiLFxuICAgICAgICBraW5kOiBcImtpbmRcIixcbiAgICAgICAgbGFiZWw6IFwibGFiZWxcIixcbiAgICAgICAgbGFuZzogXCJsYW5nXCIsXG4gICAgICAgIGxpc3Q6IFwibGlzdFwiLFxuICAgICAgICBsb29wOiBcImxvb3BcIixcbiAgICAgICAgbG93OiBcImxvd1wiLFxuICAgICAgICBtYW5pZmVzdDogXCJtYW5pZmVzdFwiLFxuICAgICAgICBtYXJnaW53aWR0aDogXCJtYXJnaW5XaWR0aFwiLFxuICAgICAgICBtYXJnaW5oZWlnaHQ6IFwibWFyZ2luSGVpZ2h0XCIsXG4gICAgICAgIG1heDogXCJtYXhcIixcbiAgICAgICAgbWF4bGVuZ3RoOiBcIm1heExlbmd0aFwiLFxuICAgICAgICBtZWRpYTogXCJtZWRpYVwiLFxuICAgICAgICBtZWRpYWdyb3VwOiBcIm1lZGlhR3JvdXBcIixcbiAgICAgICAgbWV0aG9kOiBcIm1ldGhvZFwiLFxuICAgICAgICBtaW46IFwibWluXCIsXG4gICAgICAgIG1pbmxlbmd0aDogXCJtaW5MZW5ndGhcIixcbiAgICAgICAgbXVsdGlwbGU6IFwibXVsdGlwbGVcIixcbiAgICAgICAgbXV0ZWQ6IFwibXV0ZWRcIixcbiAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgIG5vbW9kdWxlOiBcIm5vTW9kdWxlXCIsXG4gICAgICAgIG5vbmNlOiBcIm5vbmNlXCIsXG4gICAgICAgIG5vdmFsaWRhdGU6IFwibm9WYWxpZGF0ZVwiLFxuICAgICAgICBvcGVuOiBcIm9wZW5cIixcbiAgICAgICAgb3B0aW11bTogXCJvcHRpbXVtXCIsXG4gICAgICAgIHBhdHRlcm46IFwicGF0dGVyblwiLFxuICAgICAgICBwbGFjZWhvbGRlcjogXCJwbGFjZWhvbGRlclwiLFxuICAgICAgICBwbGF5c2lubGluZTogXCJwbGF5c0lubGluZVwiLFxuICAgICAgICBwb3N0ZXI6IFwicG9zdGVyXCIsXG4gICAgICAgIHByZWxvYWQ6IFwicHJlbG9hZFwiLFxuICAgICAgICBwcm9maWxlOiBcInByb2ZpbGVcIixcbiAgICAgICAgcmFkaW9ncm91cDogXCJyYWRpb0dyb3VwXCIsXG4gICAgICAgIHJlYWRvbmx5OiBcInJlYWRPbmx5XCIsXG4gICAgICAgIHJlZmVycmVycG9saWN5OiBcInJlZmVycmVyUG9saWN5XCIsXG4gICAgICAgIHJlbDogXCJyZWxcIixcbiAgICAgICAgcmVxdWlyZWQ6IFwicmVxdWlyZWRcIixcbiAgICAgICAgcmV2ZXJzZWQ6IFwicmV2ZXJzZWRcIixcbiAgICAgICAgcm9sZTogXCJyb2xlXCIsXG4gICAgICAgIHJvd3M6IFwicm93c1wiLFxuICAgICAgICByb3dzcGFuOiBcInJvd1NwYW5cIixcbiAgICAgICAgc2FuZGJveDogXCJzYW5kYm94XCIsXG4gICAgICAgIHNjb3BlOiBcInNjb3BlXCIsXG4gICAgICAgIHNjb3BlZDogXCJzY29wZWRcIixcbiAgICAgICAgc2Nyb2xsaW5nOiBcInNjcm9sbGluZ1wiLFxuICAgICAgICBzZWFtbGVzczogXCJzZWFtbGVzc1wiLFxuICAgICAgICBzZWxlY3RlZDogXCJzZWxlY3RlZFwiLFxuICAgICAgICBzaGFwZTogXCJzaGFwZVwiLFxuICAgICAgICBzaXplOiBcInNpemVcIixcbiAgICAgICAgc2l6ZXM6IFwic2l6ZXNcIixcbiAgICAgICAgc3BhbjogXCJzcGFuXCIsXG4gICAgICAgIHNwZWxsY2hlY2s6IFwic3BlbGxDaGVja1wiLFxuICAgICAgICBzcmM6IFwic3JjXCIsXG4gICAgICAgIHNyY2RvYzogXCJzcmNEb2NcIixcbiAgICAgICAgc3JjbGFuZzogXCJzcmNMYW5nXCIsXG4gICAgICAgIHNyY3NldDogXCJzcmNTZXRcIixcbiAgICAgICAgc3RhcnQ6IFwic3RhcnRcIixcbiAgICAgICAgc3RlcDogXCJzdGVwXCIsXG4gICAgICAgIHN0eWxlOiBcInN0eWxlXCIsXG4gICAgICAgIHN1bW1hcnk6IFwic3VtbWFyeVwiLFxuICAgICAgICB0YWJpbmRleDogXCJ0YWJJbmRleFwiLFxuICAgICAgICB0YXJnZXQ6IFwidGFyZ2V0XCIsXG4gICAgICAgIHRpdGxlOiBcInRpdGxlXCIsXG4gICAgICAgIHR5cGU6IFwidHlwZVwiLFxuICAgICAgICB1c2VtYXA6IFwidXNlTWFwXCIsXG4gICAgICAgIHZhbHVlOiBcInZhbHVlXCIsXG4gICAgICAgIHdpZHRoOiBcIndpZHRoXCIsXG4gICAgICAgIHdtb2RlOiBcIndtb2RlXCIsXG4gICAgICAgIHdyYXA6IFwid3JhcFwiLFxuICAgICAgICBhYm91dDogXCJhYm91dFwiLFxuICAgICAgICBhY2NlbnRoZWlnaHQ6IFwiYWNjZW50SGVpZ2h0XCIsXG4gICAgICAgIFwiYWNjZW50LWhlaWdodFwiOiBcImFjY2VudEhlaWdodFwiLFxuICAgICAgICBhY2N1bXVsYXRlOiBcImFjY3VtdWxhdGVcIixcbiAgICAgICAgYWRkaXRpdmU6IFwiYWRkaXRpdmVcIixcbiAgICAgICAgYWxpZ25tZW50YmFzZWxpbmU6IFwiYWxpZ25tZW50QmFzZWxpbmVcIixcbiAgICAgICAgXCJhbGlnbm1lbnQtYmFzZWxpbmVcIjogXCJhbGlnbm1lbnRCYXNlbGluZVwiLFxuICAgICAgICBhbGxvd3Jlb3JkZXI6IFwiYWxsb3dSZW9yZGVyXCIsXG4gICAgICAgIGFscGhhYmV0aWM6IFwiYWxwaGFiZXRpY1wiLFxuICAgICAgICBhbXBsaXR1ZGU6IFwiYW1wbGl0dWRlXCIsXG4gICAgICAgIGFyYWJpY2Zvcm06IFwiYXJhYmljRm9ybVwiLFxuICAgICAgICBcImFyYWJpYy1mb3JtXCI6IFwiYXJhYmljRm9ybVwiLFxuICAgICAgICBhc2NlbnQ6IFwiYXNjZW50XCIsXG4gICAgICAgIGF0dHJpYnV0ZW5hbWU6IFwiYXR0cmlidXRlTmFtZVwiLFxuICAgICAgICBhdHRyaWJ1dGV0eXBlOiBcImF0dHJpYnV0ZVR5cGVcIixcbiAgICAgICAgYXV0b3JldmVyc2U6IFwiYXV0b1JldmVyc2VcIixcbiAgICAgICAgYXppbXV0aDogXCJhemltdXRoXCIsXG4gICAgICAgIGJhc2VmcmVxdWVuY3k6IFwiYmFzZUZyZXF1ZW5jeVwiLFxuICAgICAgICBiYXNlbGluZXNoaWZ0OiBcImJhc2VsaW5lU2hpZnRcIixcbiAgICAgICAgXCJiYXNlbGluZS1zaGlmdFwiOiBcImJhc2VsaW5lU2hpZnRcIixcbiAgICAgICAgYmFzZXByb2ZpbGU6IFwiYmFzZVByb2ZpbGVcIixcbiAgICAgICAgYmJveDogXCJiYm94XCIsXG4gICAgICAgIGJlZ2luOiBcImJlZ2luXCIsXG4gICAgICAgIGJpYXM6IFwiYmlhc1wiLFxuICAgICAgICBieTogXCJieVwiLFxuICAgICAgICBjYWxjbW9kZTogXCJjYWxjTW9kZVwiLFxuICAgICAgICBjYXBoZWlnaHQ6IFwiY2FwSGVpZ2h0XCIsXG4gICAgICAgIFwiY2FwLWhlaWdodFwiOiBcImNhcEhlaWdodFwiLFxuICAgICAgICBjbGlwOiBcImNsaXBcIixcbiAgICAgICAgY2xpcHBhdGg6IFwiY2xpcFBhdGhcIixcbiAgICAgICAgXCJjbGlwLXBhdGhcIjogXCJjbGlwUGF0aFwiLFxuICAgICAgICBjbGlwcGF0aHVuaXRzOiBcImNsaXBQYXRoVW5pdHNcIixcbiAgICAgICAgY2xpcHJ1bGU6IFwiY2xpcFJ1bGVcIixcbiAgICAgICAgXCJjbGlwLXJ1bGVcIjogXCJjbGlwUnVsZVwiLFxuICAgICAgICBjb2xvcjogXCJjb2xvclwiLFxuICAgICAgICBjb2xvcmludGVycG9sYXRpb246IFwiY29sb3JJbnRlcnBvbGF0aW9uXCIsXG4gICAgICAgIFwiY29sb3ItaW50ZXJwb2xhdGlvblwiOiBcImNvbG9ySW50ZXJwb2xhdGlvblwiLFxuICAgICAgICBjb2xvcmludGVycG9sYXRpb25maWx0ZXJzOiBcImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNcIixcbiAgICAgICAgXCJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnNcIjogXCJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzXCIsXG4gICAgICAgIGNvbG9ycHJvZmlsZTogXCJjb2xvclByb2ZpbGVcIixcbiAgICAgICAgXCJjb2xvci1wcm9maWxlXCI6IFwiY29sb3JQcm9maWxlXCIsXG4gICAgICAgIGNvbG9ycmVuZGVyaW5nOiBcImNvbG9yUmVuZGVyaW5nXCIsXG4gICAgICAgIFwiY29sb3ItcmVuZGVyaW5nXCI6IFwiY29sb3JSZW5kZXJpbmdcIixcbiAgICAgICAgY29udGVudHNjcmlwdHR5cGU6IFwiY29udGVudFNjcmlwdFR5cGVcIixcbiAgICAgICAgY29udGVudHN0eWxldHlwZTogXCJjb250ZW50U3R5bGVUeXBlXCIsXG4gICAgICAgIGN1cnNvcjogXCJjdXJzb3JcIixcbiAgICAgICAgY3g6IFwiY3hcIixcbiAgICAgICAgY3k6IFwiY3lcIixcbiAgICAgICAgZDogXCJkXCIsXG4gICAgICAgIGRhdGF0eXBlOiBcImRhdGF0eXBlXCIsXG4gICAgICAgIGRlY2VsZXJhdGU6IFwiZGVjZWxlcmF0ZVwiLFxuICAgICAgICBkZXNjZW50OiBcImRlc2NlbnRcIixcbiAgICAgICAgZGlmZnVzZWNvbnN0YW50OiBcImRpZmZ1c2VDb25zdGFudFwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiZGlyZWN0aW9uXCIsXG4gICAgICAgIGRpc3BsYXk6IFwiZGlzcGxheVwiLFxuICAgICAgICBkaXZpc29yOiBcImRpdmlzb3JcIixcbiAgICAgICAgZG9taW5hbnRiYXNlbGluZTogXCJkb21pbmFudEJhc2VsaW5lXCIsXG4gICAgICAgIFwiZG9taW5hbnQtYmFzZWxpbmVcIjogXCJkb21pbmFudEJhc2VsaW5lXCIsXG4gICAgICAgIGR1cjogXCJkdXJcIixcbiAgICAgICAgZHg6IFwiZHhcIixcbiAgICAgICAgZHk6IFwiZHlcIixcbiAgICAgICAgZWRnZW1vZGU6IFwiZWRnZU1vZGVcIixcbiAgICAgICAgZWxldmF0aW9uOiBcImVsZXZhdGlvblwiLFxuICAgICAgICBlbmFibGViYWNrZ3JvdW5kOiBcImVuYWJsZUJhY2tncm91bmRcIixcbiAgICAgICAgXCJlbmFibGUtYmFja2dyb3VuZFwiOiBcImVuYWJsZUJhY2tncm91bmRcIixcbiAgICAgICAgZW5kOiBcImVuZFwiLFxuICAgICAgICBleHBvbmVudDogXCJleHBvbmVudFwiLFxuICAgICAgICBleHRlcm5hbHJlc291cmNlc3JlcXVpcmVkOiBcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcbiAgICAgICAgZmlsbDogXCJmaWxsXCIsXG4gICAgICAgIGZpbGxvcGFjaXR5OiBcImZpbGxPcGFjaXR5XCIsXG4gICAgICAgIFwiZmlsbC1vcGFjaXR5XCI6IFwiZmlsbE9wYWNpdHlcIixcbiAgICAgICAgZmlsbHJ1bGU6IFwiZmlsbFJ1bGVcIixcbiAgICAgICAgXCJmaWxsLXJ1bGVcIjogXCJmaWxsUnVsZVwiLFxuICAgICAgICBmaWx0ZXI6IFwiZmlsdGVyXCIsXG4gICAgICAgIGZpbHRlcnJlczogXCJmaWx0ZXJSZXNcIixcbiAgICAgICAgZmlsdGVydW5pdHM6IFwiZmlsdGVyVW5pdHNcIixcbiAgICAgICAgZmxvb2RvcGFjaXR5OiBcImZsb29kT3BhY2l0eVwiLFxuICAgICAgICBcImZsb29kLW9wYWNpdHlcIjogXCJmbG9vZE9wYWNpdHlcIixcbiAgICAgICAgZmxvb2Rjb2xvcjogXCJmbG9vZENvbG9yXCIsXG4gICAgICAgIFwiZmxvb2QtY29sb3JcIjogXCJmbG9vZENvbG9yXCIsXG4gICAgICAgIGZvY3VzYWJsZTogXCJmb2N1c2FibGVcIixcbiAgICAgICAgZm9udGZhbWlseTogXCJmb250RmFtaWx5XCIsXG4gICAgICAgIFwiZm9udC1mYW1pbHlcIjogXCJmb250RmFtaWx5XCIsXG4gICAgICAgIGZvbnRzaXplOiBcImZvbnRTaXplXCIsXG4gICAgICAgIFwiZm9udC1zaXplXCI6IFwiZm9udFNpemVcIixcbiAgICAgICAgZm9udHNpemVhZGp1c3Q6IFwiZm9udFNpemVBZGp1c3RcIixcbiAgICAgICAgXCJmb250LXNpemUtYWRqdXN0XCI6IFwiZm9udFNpemVBZGp1c3RcIixcbiAgICAgICAgZm9udHN0cmV0Y2g6IFwiZm9udFN0cmV0Y2hcIixcbiAgICAgICAgXCJmb250LXN0cmV0Y2hcIjogXCJmb250U3RyZXRjaFwiLFxuICAgICAgICBmb250c3R5bGU6IFwiZm9udFN0eWxlXCIsXG4gICAgICAgIFwiZm9udC1zdHlsZVwiOiBcImZvbnRTdHlsZVwiLFxuICAgICAgICBmb250dmFyaWFudDogXCJmb250VmFyaWFudFwiLFxuICAgICAgICBcImZvbnQtdmFyaWFudFwiOiBcImZvbnRWYXJpYW50XCIsXG4gICAgICAgIGZvbnR3ZWlnaHQ6IFwiZm9udFdlaWdodFwiLFxuICAgICAgICBcImZvbnQtd2VpZ2h0XCI6IFwiZm9udFdlaWdodFwiLFxuICAgICAgICBmb3JtYXQ6IFwiZm9ybWF0XCIsXG4gICAgICAgIGZyb206IFwiZnJvbVwiLFxuICAgICAgICBmeDogXCJmeFwiLFxuICAgICAgICBmeTogXCJmeVwiLFxuICAgICAgICBnMTogXCJnMVwiLFxuICAgICAgICBnMjogXCJnMlwiLFxuICAgICAgICBnbHlwaG5hbWU6IFwiZ2x5cGhOYW1lXCIsXG4gICAgICAgIFwiZ2x5cGgtbmFtZVwiOiBcImdseXBoTmFtZVwiLFxuICAgICAgICBnbHlwaG9yaWVudGF0aW9uaG9yaXpvbnRhbDogXCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbFwiLFxuICAgICAgICBcImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWxcIjogXCJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbFwiLFxuICAgICAgICBnbHlwaG9yaWVudGF0aW9udmVydGljYWw6IFwiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsXCIsXG4gICAgICAgIFwiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWxcIjogXCJnbHlwaE9yaWVudGF0aW9uVmVydGljYWxcIixcbiAgICAgICAgZ2x5cGhyZWY6IFwiZ2x5cGhSZWZcIixcbiAgICAgICAgZ3JhZGllbnR0cmFuc2Zvcm06IFwiZ3JhZGllbnRUcmFuc2Zvcm1cIixcbiAgICAgICAgZ3JhZGllbnR1bml0czogXCJncmFkaWVudFVuaXRzXCIsXG4gICAgICAgIGhhbmdpbmc6IFwiaGFuZ2luZ1wiLFxuICAgICAgICBob3JpemFkdng6IFwiaG9yaXpBZHZYXCIsXG4gICAgICAgIFwiaG9yaXotYWR2LXhcIjogXCJob3JpekFkdlhcIixcbiAgICAgICAgaG9yaXpvcmlnaW54OiBcImhvcml6T3JpZ2luWFwiLFxuICAgICAgICBcImhvcml6LW9yaWdpbi14XCI6IFwiaG9yaXpPcmlnaW5YXCIsXG4gICAgICAgIGlkZW9ncmFwaGljOiBcImlkZW9ncmFwaGljXCIsXG4gICAgICAgIGltYWdlcmVuZGVyaW5nOiBcImltYWdlUmVuZGVyaW5nXCIsXG4gICAgICAgIFwiaW1hZ2UtcmVuZGVyaW5nXCI6IFwiaW1hZ2VSZW5kZXJpbmdcIixcbiAgICAgICAgaW4yOiBcImluMlwiLFxuICAgICAgICBpbjogXCJpblwiLFxuICAgICAgICBpbmxpc3Q6IFwiaW5saXN0XCIsXG4gICAgICAgIGludGVyY2VwdDogXCJpbnRlcmNlcHRcIixcbiAgICAgICAgazE6IFwiazFcIixcbiAgICAgICAgazI6IFwiazJcIixcbiAgICAgICAgazM6IFwiazNcIixcbiAgICAgICAgazQ6IFwiazRcIixcbiAgICAgICAgazogXCJrXCIsXG4gICAgICAgIGtlcm5lbG1hdHJpeDogXCJrZXJuZWxNYXRyaXhcIixcbiAgICAgICAga2VybmVsdW5pdGxlbmd0aDogXCJrZXJuZWxVbml0TGVuZ3RoXCIsXG4gICAgICAgIGtlcm5pbmc6IFwia2VybmluZ1wiLFxuICAgICAgICBrZXlwb2ludHM6IFwia2V5UG9pbnRzXCIsXG4gICAgICAgIGtleXNwbGluZXM6IFwia2V5U3BsaW5lc1wiLFxuICAgICAgICBrZXl0aW1lczogXCJrZXlUaW1lc1wiLFxuICAgICAgICBsZW5ndGhhZGp1c3Q6IFwibGVuZ3RoQWRqdXN0XCIsXG4gICAgICAgIGxldHRlcnNwYWNpbmc6IFwibGV0dGVyU3BhY2luZ1wiLFxuICAgICAgICBcImxldHRlci1zcGFjaW5nXCI6IFwibGV0dGVyU3BhY2luZ1wiLFxuICAgICAgICBsaWdodGluZ2NvbG9yOiBcImxpZ2h0aW5nQ29sb3JcIixcbiAgICAgICAgXCJsaWdodGluZy1jb2xvclwiOiBcImxpZ2h0aW5nQ29sb3JcIixcbiAgICAgICAgbGltaXRpbmdjb25lYW5nbGU6IFwibGltaXRpbmdDb25lQW5nbGVcIixcbiAgICAgICAgbG9jYWw6IFwibG9jYWxcIixcbiAgICAgICAgbWFya2VyZW5kOiBcIm1hcmtlckVuZFwiLFxuICAgICAgICBcIm1hcmtlci1lbmRcIjogXCJtYXJrZXJFbmRcIixcbiAgICAgICAgbWFya2VyaGVpZ2h0OiBcIm1hcmtlckhlaWdodFwiLFxuICAgICAgICBtYXJrZXJtaWQ6IFwibWFya2VyTWlkXCIsXG4gICAgICAgIFwibWFya2VyLW1pZFwiOiBcIm1hcmtlck1pZFwiLFxuICAgICAgICBtYXJrZXJzdGFydDogXCJtYXJrZXJTdGFydFwiLFxuICAgICAgICBcIm1hcmtlci1zdGFydFwiOiBcIm1hcmtlclN0YXJ0XCIsXG4gICAgICAgIG1hcmtlcnVuaXRzOiBcIm1hcmtlclVuaXRzXCIsXG4gICAgICAgIG1hcmtlcndpZHRoOiBcIm1hcmtlcldpZHRoXCIsXG4gICAgICAgIG1hc2s6IFwibWFza1wiLFxuICAgICAgICBtYXNrY29udGVudHVuaXRzOiBcIm1hc2tDb250ZW50VW5pdHNcIixcbiAgICAgICAgbWFza3VuaXRzOiBcIm1hc2tVbml0c1wiLFxuICAgICAgICBtYXRoZW1hdGljYWw6IFwibWF0aGVtYXRpY2FsXCIsXG4gICAgICAgIG1vZGU6IFwibW9kZVwiLFxuICAgICAgICBudW1vY3RhdmVzOiBcIm51bU9jdGF2ZXNcIixcbiAgICAgICAgb2Zmc2V0OiBcIm9mZnNldFwiLFxuICAgICAgICBvcGFjaXR5OiBcIm9wYWNpdHlcIixcbiAgICAgICAgb3BlcmF0b3I6IFwib3BlcmF0b3JcIixcbiAgICAgICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICAgICAgb3JpZW50OiBcIm9yaWVudFwiLFxuICAgICAgICBvcmllbnRhdGlvbjogXCJvcmllbnRhdGlvblwiLFxuICAgICAgICBvcmlnaW46IFwib3JpZ2luXCIsXG4gICAgICAgIG92ZXJmbG93OiBcIm92ZXJmbG93XCIsXG4gICAgICAgIG92ZXJsaW5lcG9zaXRpb246IFwib3ZlcmxpbmVQb3NpdGlvblwiLFxuICAgICAgICBcIm92ZXJsaW5lLXBvc2l0aW9uXCI6IFwib3ZlcmxpbmVQb3NpdGlvblwiLFxuICAgICAgICBvdmVybGluZXRoaWNrbmVzczogXCJvdmVybGluZVRoaWNrbmVzc1wiLFxuICAgICAgICBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiOiBcIm92ZXJsaW5lVGhpY2tuZXNzXCIsXG4gICAgICAgIHBhaW50b3JkZXI6IFwicGFpbnRPcmRlclwiLFxuICAgICAgICBcInBhaW50LW9yZGVyXCI6IFwicGFpbnRPcmRlclwiLFxuICAgICAgICBwYW5vc2UxOiBcInBhbm9zZTFcIixcbiAgICAgICAgXCJwYW5vc2UtMVwiOiBcInBhbm9zZTFcIixcbiAgICAgICAgcGF0aGxlbmd0aDogXCJwYXRoTGVuZ3RoXCIsXG4gICAgICAgIHBhdHRlcm5jb250ZW50dW5pdHM6IFwicGF0dGVybkNvbnRlbnRVbml0c1wiLFxuICAgICAgICBwYXR0ZXJudHJhbnNmb3JtOiBcInBhdHRlcm5UcmFuc2Zvcm1cIixcbiAgICAgICAgcGF0dGVybnVuaXRzOiBcInBhdHRlcm5Vbml0c1wiLFxuICAgICAgICBwb2ludGVyZXZlbnRzOiBcInBvaW50ZXJFdmVudHNcIixcbiAgICAgICAgXCJwb2ludGVyLWV2ZW50c1wiOiBcInBvaW50ZXJFdmVudHNcIixcbiAgICAgICAgcG9pbnRzOiBcInBvaW50c1wiLFxuICAgICAgICBwb2ludHNhdHg6IFwicG9pbnRzQXRYXCIsXG4gICAgICAgIHBvaW50c2F0eTogXCJwb2ludHNBdFlcIixcbiAgICAgICAgcG9pbnRzYXR6OiBcInBvaW50c0F0WlwiLFxuICAgICAgICBwb3BvdmVyOiBcInBvcG92ZXJcIixcbiAgICAgICAgcG9wb3ZlcnRhcmdldDogXCJwb3BvdmVyVGFyZ2V0XCIsXG4gICAgICAgIHBvcG92ZXJ0YXJnZXRhY3Rpb246IFwicG9wb3ZlclRhcmdldEFjdGlvblwiLFxuICAgICAgICBwcmVmaXg6IFwicHJlZml4XCIsXG4gICAgICAgIHByZXNlcnZlYWxwaGE6IFwicHJlc2VydmVBbHBoYVwiLFxuICAgICAgICBwcmVzZXJ2ZWFzcGVjdHJhdGlvOiBcInByZXNlcnZlQXNwZWN0UmF0aW9cIixcbiAgICAgICAgcHJpbWl0aXZldW5pdHM6IFwicHJpbWl0aXZlVW5pdHNcIixcbiAgICAgICAgcHJvcGVydHk6IFwicHJvcGVydHlcIixcbiAgICAgICAgcjogXCJyXCIsXG4gICAgICAgIHJhZGl1czogXCJyYWRpdXNcIixcbiAgICAgICAgcmVmeDogXCJyZWZYXCIsXG4gICAgICAgIHJlZnk6IFwicmVmWVwiLFxuICAgICAgICByZW5kZXJpbmdpbnRlbnQ6IFwicmVuZGVyaW5nSW50ZW50XCIsXG4gICAgICAgIFwicmVuZGVyaW5nLWludGVudFwiOiBcInJlbmRlcmluZ0ludGVudFwiLFxuICAgICAgICByZXBlYXRjb3VudDogXCJyZXBlYXRDb3VudFwiLFxuICAgICAgICByZXBlYXRkdXI6IFwicmVwZWF0RHVyXCIsXG4gICAgICAgIHJlcXVpcmVkZXh0ZW5zaW9uczogXCJyZXF1aXJlZEV4dGVuc2lvbnNcIixcbiAgICAgICAgcmVxdWlyZWRmZWF0dXJlczogXCJyZXF1aXJlZEZlYXR1cmVzXCIsXG4gICAgICAgIHJlc291cmNlOiBcInJlc291cmNlXCIsXG4gICAgICAgIHJlc3RhcnQ6IFwicmVzdGFydFwiLFxuICAgICAgICByZXN1bHQ6IFwicmVzdWx0XCIsXG4gICAgICAgIHJlc3VsdHM6IFwicmVzdWx0c1wiLFxuICAgICAgICByb3RhdGU6IFwicm90YXRlXCIsXG4gICAgICAgIHJ4OiBcInJ4XCIsXG4gICAgICAgIHJ5OiBcInJ5XCIsXG4gICAgICAgIHNjYWxlOiBcInNjYWxlXCIsXG4gICAgICAgIHNlY3VyaXR5OiBcInNlY3VyaXR5XCIsXG4gICAgICAgIHNlZWQ6IFwic2VlZFwiLFxuICAgICAgICBzaGFwZXJlbmRlcmluZzogXCJzaGFwZVJlbmRlcmluZ1wiLFxuICAgICAgICBcInNoYXBlLXJlbmRlcmluZ1wiOiBcInNoYXBlUmVuZGVyaW5nXCIsXG4gICAgICAgIHNsb3BlOiBcInNsb3BlXCIsXG4gICAgICAgIHNwYWNpbmc6IFwic3BhY2luZ1wiLFxuICAgICAgICBzcGVjdWxhcmNvbnN0YW50OiBcInNwZWN1bGFyQ29uc3RhbnRcIixcbiAgICAgICAgc3BlY3VsYXJleHBvbmVudDogXCJzcGVjdWxhckV4cG9uZW50XCIsXG4gICAgICAgIHNwZWVkOiBcInNwZWVkXCIsXG4gICAgICAgIHNwcmVhZG1ldGhvZDogXCJzcHJlYWRNZXRob2RcIixcbiAgICAgICAgc3RhcnRvZmZzZXQ6IFwic3RhcnRPZmZzZXRcIixcbiAgICAgICAgc3RkZGV2aWF0aW9uOiBcInN0ZERldmlhdGlvblwiLFxuICAgICAgICBzdGVtaDogXCJzdGVtaFwiLFxuICAgICAgICBzdGVtdjogXCJzdGVtdlwiLFxuICAgICAgICBzdGl0Y2h0aWxlczogXCJzdGl0Y2hUaWxlc1wiLFxuICAgICAgICBzdG9wY29sb3I6IFwic3RvcENvbG9yXCIsXG4gICAgICAgIFwic3RvcC1jb2xvclwiOiBcInN0b3BDb2xvclwiLFxuICAgICAgICBzdG9wb3BhY2l0eTogXCJzdG9wT3BhY2l0eVwiLFxuICAgICAgICBcInN0b3Atb3BhY2l0eVwiOiBcInN0b3BPcGFjaXR5XCIsXG4gICAgICAgIHN0cmlrZXRocm91Z2hwb3NpdGlvbjogXCJzdHJpa2V0aHJvdWdoUG9zaXRpb25cIixcbiAgICAgICAgXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCI6IFwic3RyaWtldGhyb3VnaFBvc2l0aW9uXCIsXG4gICAgICAgIHN0cmlrZXRocm91Z2h0aGlja25lc3M6IFwic3RyaWtldGhyb3VnaFRoaWNrbmVzc1wiLFxuICAgICAgICBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCI6IFwic3RyaWtldGhyb3VnaFRoaWNrbmVzc1wiLFxuICAgICAgICBzdHJpbmc6IFwic3RyaW5nXCIsXG4gICAgICAgIHN0cm9rZTogXCJzdHJva2VcIixcbiAgICAgICAgc3Ryb2tlZGFzaGFycmF5OiBcInN0cm9rZURhc2hhcnJheVwiLFxuICAgICAgICBcInN0cm9rZS1kYXNoYXJyYXlcIjogXCJzdHJva2VEYXNoYXJyYXlcIixcbiAgICAgICAgc3Ryb2tlZGFzaG9mZnNldDogXCJzdHJva2VEYXNob2Zmc2V0XCIsXG4gICAgICAgIFwic3Ryb2tlLWRhc2hvZmZzZXRcIjogXCJzdHJva2VEYXNob2Zmc2V0XCIsXG4gICAgICAgIHN0cm9rZWxpbmVjYXA6IFwic3Ryb2tlTGluZWNhcFwiLFxuICAgICAgICBcInN0cm9rZS1saW5lY2FwXCI6IFwic3Ryb2tlTGluZWNhcFwiLFxuICAgICAgICBzdHJva2VsaW5lam9pbjogXCJzdHJva2VMaW5lam9pblwiLFxuICAgICAgICBcInN0cm9rZS1saW5lam9pblwiOiBcInN0cm9rZUxpbmVqb2luXCIsXG4gICAgICAgIHN0cm9rZW1pdGVybGltaXQ6IFwic3Ryb2tlTWl0ZXJsaW1pdFwiLFxuICAgICAgICBcInN0cm9rZS1taXRlcmxpbWl0XCI6IFwic3Ryb2tlTWl0ZXJsaW1pdFwiLFxuICAgICAgICBzdHJva2V3aWR0aDogXCJzdHJva2VXaWR0aFwiLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBcInN0cm9rZVdpZHRoXCIsXG4gICAgICAgIHN0cm9rZW9wYWNpdHk6IFwic3Ryb2tlT3BhY2l0eVwiLFxuICAgICAgICBcInN0cm9rZS1vcGFjaXR5XCI6IFwic3Ryb2tlT3BhY2l0eVwiLFxuICAgICAgICBzdXBwcmVzc2NvbnRlbnRlZGl0YWJsZXdhcm5pbmc6IFwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIsXG4gICAgICAgIHN1cHByZXNzaHlkcmF0aW9ud2FybmluZzogXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIixcbiAgICAgICAgc3VyZmFjZXNjYWxlOiBcInN1cmZhY2VTY2FsZVwiLFxuICAgICAgICBzeXN0ZW1sYW5ndWFnZTogXCJzeXN0ZW1MYW5ndWFnZVwiLFxuICAgICAgICB0YWJsZXZhbHVlczogXCJ0YWJsZVZhbHVlc1wiLFxuICAgICAgICB0YXJnZXR4OiBcInRhcmdldFhcIixcbiAgICAgICAgdGFyZ2V0eTogXCJ0YXJnZXRZXCIsXG4gICAgICAgIHRleHRhbmNob3I6IFwidGV4dEFuY2hvclwiLFxuICAgICAgICBcInRleHQtYW5jaG9yXCI6IFwidGV4dEFuY2hvclwiLFxuICAgICAgICB0ZXh0ZGVjb3JhdGlvbjogXCJ0ZXh0RGVjb3JhdGlvblwiLFxuICAgICAgICBcInRleHQtZGVjb3JhdGlvblwiOiBcInRleHREZWNvcmF0aW9uXCIsXG4gICAgICAgIHRleHRsZW5ndGg6IFwidGV4dExlbmd0aFwiLFxuICAgICAgICB0ZXh0cmVuZGVyaW5nOiBcInRleHRSZW5kZXJpbmdcIixcbiAgICAgICAgXCJ0ZXh0LXJlbmRlcmluZ1wiOiBcInRleHRSZW5kZXJpbmdcIixcbiAgICAgICAgdG86IFwidG9cIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICB0cmFuc2Zvcm1vcmlnaW46IFwidHJhbnNmb3JtT3JpZ2luXCIsXG4gICAgICAgIFwidHJhbnNmb3JtLW9yaWdpblwiOiBcInRyYW5zZm9ybU9yaWdpblwiLFxuICAgICAgICB0eXBlb2Y6IFwidHlwZW9mXCIsXG4gICAgICAgIHUxOiBcInUxXCIsXG4gICAgICAgIHUyOiBcInUyXCIsXG4gICAgICAgIHVuZGVybGluZXBvc2l0aW9uOiBcInVuZGVybGluZVBvc2l0aW9uXCIsXG4gICAgICAgIFwidW5kZXJsaW5lLXBvc2l0aW9uXCI6IFwidW5kZXJsaW5lUG9zaXRpb25cIixcbiAgICAgICAgdW5kZXJsaW5ldGhpY2tuZXNzOiBcInVuZGVybGluZVRoaWNrbmVzc1wiLFxuICAgICAgICBcInVuZGVybGluZS10aGlja25lc3NcIjogXCJ1bmRlcmxpbmVUaGlja25lc3NcIixcbiAgICAgICAgdW5pY29kZTogXCJ1bmljb2RlXCIsXG4gICAgICAgIHVuaWNvZGViaWRpOiBcInVuaWNvZGVCaWRpXCIsXG4gICAgICAgIFwidW5pY29kZS1iaWRpXCI6IFwidW5pY29kZUJpZGlcIixcbiAgICAgICAgdW5pY29kZXJhbmdlOiBcInVuaWNvZGVSYW5nZVwiLFxuICAgICAgICBcInVuaWNvZGUtcmFuZ2VcIjogXCJ1bmljb2RlUmFuZ2VcIixcbiAgICAgICAgdW5pdHNwZXJlbTogXCJ1bml0c1BlckVtXCIsXG4gICAgICAgIFwidW5pdHMtcGVyLWVtXCI6IFwidW5pdHNQZXJFbVwiLFxuICAgICAgICB1bnNlbGVjdGFibGU6IFwidW5zZWxlY3RhYmxlXCIsXG4gICAgICAgIHZhbHBoYWJldGljOiBcInZBbHBoYWJldGljXCIsXG4gICAgICAgIFwidi1hbHBoYWJldGljXCI6IFwidkFscGhhYmV0aWNcIixcbiAgICAgICAgdmFsdWVzOiBcInZhbHVlc1wiLFxuICAgICAgICB2ZWN0b3JlZmZlY3Q6IFwidmVjdG9yRWZmZWN0XCIsXG4gICAgICAgIFwidmVjdG9yLWVmZmVjdFwiOiBcInZlY3RvckVmZmVjdFwiLFxuICAgICAgICB2ZXJzaW9uOiBcInZlcnNpb25cIixcbiAgICAgICAgdmVydGFkdnk6IFwidmVydEFkdllcIixcbiAgICAgICAgXCJ2ZXJ0LWFkdi15XCI6IFwidmVydEFkdllcIixcbiAgICAgICAgdmVydG9yaWdpbng6IFwidmVydE9yaWdpblhcIixcbiAgICAgICAgXCJ2ZXJ0LW9yaWdpbi14XCI6IFwidmVydE9yaWdpblhcIixcbiAgICAgICAgdmVydG9yaWdpbnk6IFwidmVydE9yaWdpbllcIixcbiAgICAgICAgXCJ2ZXJ0LW9yaWdpbi15XCI6IFwidmVydE9yaWdpbllcIixcbiAgICAgICAgdmhhbmdpbmc6IFwidkhhbmdpbmdcIixcbiAgICAgICAgXCJ2LWhhbmdpbmdcIjogXCJ2SGFuZ2luZ1wiLFxuICAgICAgICB2aWRlb2dyYXBoaWM6IFwidklkZW9ncmFwaGljXCIsXG4gICAgICAgIFwidi1pZGVvZ3JhcGhpY1wiOiBcInZJZGVvZ3JhcGhpY1wiLFxuICAgICAgICB2aWV3Ym94OiBcInZpZXdCb3hcIixcbiAgICAgICAgdmlld3RhcmdldDogXCJ2aWV3VGFyZ2V0XCIsXG4gICAgICAgIHZpc2liaWxpdHk6IFwidmlzaWJpbGl0eVwiLFxuICAgICAgICB2bWF0aGVtYXRpY2FsOiBcInZNYXRoZW1hdGljYWxcIixcbiAgICAgICAgXCJ2LW1hdGhlbWF0aWNhbFwiOiBcInZNYXRoZW1hdGljYWxcIixcbiAgICAgICAgdm9jYWI6IFwidm9jYWJcIixcbiAgICAgICAgd2lkdGhzOiBcIndpZHRoc1wiLFxuICAgICAgICB3b3Jkc3BhY2luZzogXCJ3b3JkU3BhY2luZ1wiLFxuICAgICAgICBcIndvcmQtc3BhY2luZ1wiOiBcIndvcmRTcGFjaW5nXCIsXG4gICAgICAgIHdyaXRpbmdtb2RlOiBcIndyaXRpbmdNb2RlXCIsXG4gICAgICAgIFwid3JpdGluZy1tb2RlXCI6IFwid3JpdGluZ01vZGVcIixcbiAgICAgICAgeDE6IFwieDFcIixcbiAgICAgICAgeDI6IFwieDJcIixcbiAgICAgICAgeDogXCJ4XCIsXG4gICAgICAgIHhjaGFubmVsc2VsZWN0b3I6IFwieENoYW5uZWxTZWxlY3RvclwiLFxuICAgICAgICB4aGVpZ2h0OiBcInhIZWlnaHRcIixcbiAgICAgICAgXCJ4LWhlaWdodFwiOiBcInhIZWlnaHRcIixcbiAgICAgICAgeGxpbmthY3R1YXRlOiBcInhsaW5rQWN0dWF0ZVwiLFxuICAgICAgICBcInhsaW5rOmFjdHVhdGVcIjogXCJ4bGlua0FjdHVhdGVcIixcbiAgICAgICAgeGxpbmthcmNyb2xlOiBcInhsaW5rQXJjcm9sZVwiLFxuICAgICAgICBcInhsaW5rOmFyY3JvbGVcIjogXCJ4bGlua0FyY3JvbGVcIixcbiAgICAgICAgeGxpbmtocmVmOiBcInhsaW5rSHJlZlwiLFxuICAgICAgICBcInhsaW5rOmhyZWZcIjogXCJ4bGlua0hyZWZcIixcbiAgICAgICAgeGxpbmtyb2xlOiBcInhsaW5rUm9sZVwiLFxuICAgICAgICBcInhsaW5rOnJvbGVcIjogXCJ4bGlua1JvbGVcIixcbiAgICAgICAgeGxpbmtzaG93OiBcInhsaW5rU2hvd1wiLFxuICAgICAgICBcInhsaW5rOnNob3dcIjogXCJ4bGlua1Nob3dcIixcbiAgICAgICAgeGxpbmt0aXRsZTogXCJ4bGlua1RpdGxlXCIsXG4gICAgICAgIFwieGxpbms6dGl0bGVcIjogXCJ4bGlua1RpdGxlXCIsXG4gICAgICAgIHhsaW5rdHlwZTogXCJ4bGlua1R5cGVcIixcbiAgICAgICAgXCJ4bGluazp0eXBlXCI6IFwieGxpbmtUeXBlXCIsXG4gICAgICAgIHhtbGJhc2U6IFwieG1sQmFzZVwiLFxuICAgICAgICBcInhtbDpiYXNlXCI6IFwieG1sQmFzZVwiLFxuICAgICAgICB4bWxsYW5nOiBcInhtbExhbmdcIixcbiAgICAgICAgXCJ4bWw6bGFuZ1wiOiBcInhtbExhbmdcIixcbiAgICAgICAgeG1sbnM6IFwieG1sbnNcIixcbiAgICAgICAgXCJ4bWw6c3BhY2VcIjogXCJ4bWxTcGFjZVwiLFxuICAgICAgICB4bWxuc3hsaW5rOiBcInhtbG5zWGxpbmtcIixcbiAgICAgICAgXCJ4bWxuczp4bGlua1wiOiBcInhtbG5zWGxpbmtcIixcbiAgICAgICAgeG1sc3BhY2U6IFwieG1sU3BhY2VcIixcbiAgICAgICAgeTE6IFwieTFcIixcbiAgICAgICAgeTI6IFwieTJcIixcbiAgICAgICAgeTogXCJ5XCIsXG4gICAgICAgIHljaGFubmVsc2VsZWN0b3I6IFwieUNoYW5uZWxTZWxlY3RvclwiLFxuICAgICAgICB6OiBcInpcIixcbiAgICAgICAgem9vbWFuZHBhbjogXCJ6b29tQW5kUGFuXCJcbiAgICAgIH0sXG4gICAgICB3YXJuZWRQcm9wZXJ0aWVzID0ge30sXG4gICAgICBFVkVOVF9OQU1FX1JFR0VYID0gL15vbi4vLFxuICAgICAgSU5WQUxJRF9FVkVOVF9OQU1FX1JFR0VYID0gL15vblteQS1aXS8sXG4gICAgICByQVJJQSA9IFJlZ0V4cChcbiAgICAgICAgXCJeKGFyaWEpLVs6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUwMEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUxRkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUyRkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVGRkZEXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBdKiRcIlxuICAgICAgKSxcbiAgICAgIHJBUklBQ2FtZWwgPSBSZWdFeHAoXG4gICAgICAgIFwiXihhcmlhKVtBLVpdWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MF0qJFwiXG4gICAgICApLFxuICAgICAgYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuID0gL14oPzp3ZWJraXR8bW96fG8pW0EtWl0vLFxuICAgICAgbXNQYXR0ZXJuJDEgPSAvXi1tcy0vLFxuICAgICAgaHlwaGVuUGF0dGVybiA9IC8tKC4pL2csXG4gICAgICBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLyxcbiAgICAgIHdhcm5lZFN0eWxlTmFtZXMgPSB7fSxcbiAgICAgIHdhcm5lZFN0eWxlVmFsdWVzID0ge30sXG4gICAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9ICExLFxuICAgICAgd2FybmVkRm9ySW5maW5pdHlWYWx1ZSA9ICExLFxuICAgICAgbWF0Y2hIdG1sUmVnRXhwID0gL1tcIicmPD5dLyxcbiAgICAgIHVwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nLFxuICAgICAgbXNQYXR0ZXJuID0gL15tcy0vLFxuICAgICAgaXNKYXZhU2NyaXB0UHJvdG9jb2wgPVxuICAgICAgICAvXltcXHUwMDAwLVxcdTAwMUYgXSpqW1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnZbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qc1tcXHJcXG5cXHRdKmNbXFxyXFxuXFx0XSpyW1xcclxcblxcdF0qaVtcXHJcXG5cXHRdKnBbXFxyXFxuXFx0XSp0W1xcclxcblxcdF0qOi9pLFxuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPVxuICAgICAgICBSZWFjdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsXG4gICAgICBSZWFjdERPTVNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0RE9NLl9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIE5vdFBlbmRpbmcgPSBPYmplY3QuZnJlZXplKHtcbiAgICAgICAgcGVuZGluZzogITEsXG4gICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgIG1ldGhvZDogbnVsbCxcbiAgICAgICAgYWN0aW9uOiBudWxsXG4gICAgICB9KSxcbiAgICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLmQ7XG4gICAgUmVhY3RET01TaGFyZWRJbnRlcm5hbHMuZCA9IHtcbiAgICAgIGY6IHByZXZpb3VzRGlzcGF0Y2hlci5mLFxuICAgICAgcjogcHJldmlvdXNEaXNwYXRjaGVyLnIsXG4gICAgICBEOiBmdW5jdGlvbiAoaHJlZikge1xuICAgICAgICB2YXIgcmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0ID8gY3VycmVudFJlcXVlc3QgOiBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmICYmIGhyZWYpIHtcbiAgICAgICAgICAgIGlmICghcmVzdW1hYmxlU3RhdGUuZG5zUmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYpKSB7XG4gICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmRuc1Jlc291cmNlc1tocmVmXSA9IEVYSVNUUztcbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUgPSByZW5kZXJTdGF0ZS5oZWFkZXJzO1xuICAgICAgICAgICAgICB2YXIgaGVhZGVyLCBKU0NvbXBpbGVyX3RlbXA7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoSlNDb21waWxlcl90ZW1wID1cbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlICYmIDAgPCByZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICAgICAgICAgICAgICAoKGhlYWRlciA9XG4gICAgICAgICAgICAgICAgICAgIFwiPFwiICtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlSHJlZkZvckxpbmtIZWFkZXJVUkxDb250ZXh0KGhyZWYpICtcbiAgICAgICAgICAgICAgICAgICAgXCI+OyByZWw9ZG5zLXByZWZldGNoXCIpLFxuICAgICAgICAgICAgICAgICAgMCA8PSAocmVzdW1hYmxlU3RhdGUucmVtYWluaW5nQ2FwYWNpdHkgLT0gaGVhZGVyLmxlbmd0aCArIDIpKTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wXG4gICAgICAgICAgICAgICAgPyAoKHJlbmRlclN0YXRlLnJlc2V0cy5kbnNbaHJlZl0gPSBFWElTVFMpLFxuICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUucHJlY29ubmVjdHMgJiZcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLnByZWNvbm5lY3RzICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUucHJlY29ubmVjdHMgKz0gaGVhZGVyKSlcbiAgICAgICAgICAgICAgICA6ICgoaGVhZGVyID0gW10pLFxuICAgICAgICAgICAgICAgICAgcHVzaExpbmtJbXBsKGhlYWRlciwgeyBocmVmOiBocmVmLCByZWw6IFwiZG5zLXByZWZldGNoXCIgfSksXG4gICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5wcmVjb25uZWN0cy5hZGQoaGVhZGVyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnF1ZXVlRmx1c2gocmVxdWVzdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgcHJldmlvdXNEaXNwYXRjaGVyLkQoaHJlZik7XG4gICAgICB9LFxuICAgICAgQzogZnVuY3Rpb24gKGhyZWYsIGNyb3NzT3JpZ2luKSB7XG4gICAgICAgIHZhciByZXF1ZXN0ID0gY3VycmVudFJlcXVlc3QgPyBjdXJyZW50UmVxdWVzdCA6IG51bGw7XG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiYgaHJlZikge1xuICAgICAgICAgICAgdmFyIGJ1Y2tldCA9XG4gICAgICAgICAgICAgIFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgPyBcImNyZWRlbnRpYWxzXCJcbiAgICAgICAgICAgICAgICA6IFwic3RyaW5nXCIgPT09IHR5cGVvZiBjcm9zc09yaWdpblxuICAgICAgICAgICAgICAgICAgPyBcImFub255bW91c1wiXG4gICAgICAgICAgICAgICAgICA6IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgaWYgKCFyZXN1bWFibGVTdGF0ZS5jb25uZWN0UmVzb3VyY2VzW2J1Y2tldF0uaGFzT3duUHJvcGVydHkoaHJlZikpIHtcbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuY29ubmVjdFJlc291cmNlc1tidWNrZXRdW2hyZWZdID0gRVhJU1RTO1xuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSA9IHJlbmRlclN0YXRlLmhlYWRlcnM7XG4gICAgICAgICAgICAgIHZhciBoZWFkZXIsIEpTQ29tcGlsZXJfdGVtcDtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX3RlbXAgPVxuICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUgJiYgMCA8IHJlc3VtYWJsZVN0YXRlLnJlbWFpbmluZ0NhcGFjaXR5KVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAgPVxuICAgICAgICAgICAgICAgICAgXCI8XCIgK1xuICAgICAgICAgICAgICAgICAgZXNjYXBlSHJlZkZvckxpbmtIZWFkZXJVUkxDb250ZXh0KGhyZWYpICtcbiAgICAgICAgICAgICAgICAgIFwiPjsgcmVsPXByZWNvbm5lY3RcIjtcbiAgICAgICAgICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGNyb3NzT3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgZXNjYXBlZENyb3NzT3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlU3RyaW5nRm9yTGlua0hlYWRlclF1b3RlZFBhcmFtVmFsdWVDb250ZXh0KFxuICAgICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgIFwiY3Jvc3NPcmlnaW5cIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wICs9XG4gICAgICAgICAgICAgICAgICAgICc7IGNyb3Nzb3JpZ2luPVwiJyArIGVzY2FwZWRDcm9zc09yaWdpbiArICdcIic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICAgICAgICAgICAgICAoKGhlYWRlciA9IEpTQ29tcGlsZXJfdGVtcCksXG4gICAgICAgICAgICAgICAgICAwIDw9IChyZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSAtPSBoZWFkZXIubGVuZ3RoICsgMikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcFxuICAgICAgICAgICAgICAgID8gKChyZW5kZXJTdGF0ZS5yZXNldHMuY29ubmVjdFtidWNrZXRdW2hyZWZdID0gRVhJU1RTKSxcbiAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLnByZWNvbm5lY3RzICYmXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5wcmVjb25uZWN0cyArPSBcIiwgXCIpLFxuICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLnByZWNvbm5lY3RzICs9IGhlYWRlcikpXG4gICAgICAgICAgICAgICAgOiAoKGJ1Y2tldCA9IFtdKSxcbiAgICAgICAgICAgICAgICAgIHB1c2hMaW5rSW1wbChidWNrZXQsIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInByZWNvbm5lY3RcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgICAgICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWNvbm5lY3RzLmFkZChidWNrZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcmV2aW91c0Rpc3BhdGNoZXIuQyhocmVmLCBjcm9zc09yaWdpbik7XG4gICAgICB9LFxuICAgICAgTDogZnVuY3Rpb24gKGhyZWYsIGFzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciByZXF1ZXN0ID0gY3VycmVudFJlcXVlc3QgPyBjdXJyZW50UmVxdWVzdCA6IG51bGw7XG4gICAgICAgIGlmIChyZXF1ZXN0KSB7XG4gICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gcmVxdWVzdC5yZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIHJlbmRlclN0YXRlID0gcmVxdWVzdC5yZW5kZXJTdGF0ZTtcbiAgICAgICAgICBpZiAoYXMgJiYgaHJlZikge1xuICAgICAgICAgICAgc3dpdGNoIChhcykge1xuICAgICAgICAgICAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgdmFyIGltYWdlU3JjU2V0ID0gb3B0aW9ucy5pbWFnZVNyY1NldDtcbiAgICAgICAgICAgICAgICAgIHZhciBpbWFnZVNpemVzID0gb3B0aW9ucy5pbWFnZVNpemVzO1xuICAgICAgICAgICAgICAgICAgdmFyIGZldGNoUHJpb3JpdHkgPSBvcHRpb25zLmZldGNoUHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBpbWFnZVNyY1NldFxuICAgICAgICAgICAgICAgICAgPyBpbWFnZVNyY1NldCArIFwiXFxuXCIgKyAoaW1hZ2VTaXplcyB8fCBcIlwiKVxuICAgICAgICAgICAgICAgICAgOiBocmVmO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS5pbWFnZVJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUuaW1hZ2VSZXNvdXJjZXNba2V5XSA9IFBSRUxPQURfTk9fQ1JFRFM7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUgPSByZW5kZXJTdGF0ZS5oZWFkZXJzO1xuICAgICAgICAgICAgICAgIHZhciBoZWFkZXI7XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUgJiZcbiAgICAgICAgICAgICAgICAwIDwgcmVzdW1hYmxlU3RhdGUucmVtYWluaW5nQ2FwYWNpdHkgJiZcbiAgICAgICAgICAgICAgICBcImhpZ2hcIiA9PT0gZmV0Y2hQcmlvcml0eSAmJlxuICAgICAgICAgICAgICAgICgoaGVhZGVyID0gZ2V0UHJlbG9hZEFzSGVhZGVyKGhyZWYsIGFzLCBvcHRpb25zKSksXG4gICAgICAgICAgICAgICAgMCA8PSAocmVzdW1hYmxlU3RhdGUucmVtYWluaW5nQ2FwYWNpdHkgLT0gaGVhZGVyLmxlbmd0aCArIDIpKVxuICAgICAgICAgICAgICAgICAgPyAoKHJlbmRlclN0YXRlLnJlc2V0cy5pbWFnZVtrZXldID0gUFJFTE9BRF9OT19DUkVEUyksXG4gICAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzICYmXG4gICAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLmhpZ2hJbWFnZVByZWxvYWRzICs9IFwiLCBcIiksXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5oaWdoSW1hZ2VQcmVsb2FkcyArPSBoZWFkZXIpKVxuICAgICAgICAgICAgICAgICAgOiAoKHJlc3VtYWJsZVN0YXRlID0gW10pLFxuICAgICAgICAgICAgICAgICAgICBwdXNoTGlua0ltcGwoXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWw6IFwicHJlbG9hZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBpbWFnZVNyY1NldCA/IHZvaWQgMCA6IGhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBhc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFwiaGlnaFwiID09PSBmZXRjaFByaW9yaXR5XG4gICAgICAgICAgICAgICAgICAgICAgPyByZW5kZXJTdGF0ZS5oaWdoSW1hZ2VQcmVsb2Fkcy5hZGQocmVzdW1hYmxlU3RhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgOiAocmVuZGVyU3RhdGUuYnVsa1ByZWxvYWRzLmFkZChyZXN1bWFibGVTdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5pbWFnZXMuc2V0KGtleSwgcmVzdW1hYmxlU3RhdGUpKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJzdHlsZVwiOlxuICAgICAgICAgICAgICAgIGlmIChyZXN1bWFibGVTdGF0ZS5zdHlsZVJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShocmVmKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGltYWdlU3JjU2V0ID0gW107XG4gICAgICAgICAgICAgICAgcHVzaExpbmtJbXBsKFxuICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQsXG4gICAgICAgICAgICAgICAgICBhc3NpZ24oeyByZWw6IFwicHJlbG9hZFwiLCBocmVmOiBocmVmLCBhczogYXMgfSwgb3B0aW9ucylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzW2hyZWZdID1cbiAgICAgICAgICAgICAgICAgICFvcHRpb25zIHx8XG4gICAgICAgICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuY3Jvc3NPcmlnaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5KVxuICAgICAgICAgICAgICAgICAgICA/IFBSRUxPQURfTk9fQ1JFRFNcbiAgICAgICAgICAgICAgICAgICAgOiBbb3B0aW9ucy5jcm9zc09yaWdpbiwgb3B0aW9ucy5pbnRlZ3JpdHldO1xuICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWxvYWRzLnN0eWxlc2hlZXRzLnNldChocmVmLCBpbWFnZVNyY1NldCk7XG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuYnVsa1ByZWxvYWRzLmFkZChpbWFnZVNyY1NldCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQgPSBbXTtcbiAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5zY3JpcHRzLnNldChocmVmLCBpbWFnZVNyY1NldCk7XG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuYnVsa1ByZWxvYWRzLmFkZChpbWFnZVNyY1NldCk7XG4gICAgICAgICAgICAgICAgcHVzaExpbmtJbXBsKFxuICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQsXG4gICAgICAgICAgICAgICAgICBhc3NpZ24oeyByZWw6IFwicHJlbG9hZFwiLCBocmVmOiBocmVmLCBhczogYXMgfSwgb3B0aW9ucylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlc1tocmVmXSA9XG4gICAgICAgICAgICAgICAgICAhb3B0aW9ucyB8fFxuICAgICAgICAgICAgICAgICAgKFwic3RyaW5nXCIgIT09IHR5cGVvZiBvcHRpb25zLmNyb3NzT3JpZ2luICYmXG4gICAgICAgICAgICAgICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSlcbiAgICAgICAgICAgICAgICAgICAgPyBQUkVMT0FEX05PX0NSRURTXG4gICAgICAgICAgICAgICAgICAgIDogW29wdGlvbnMuY3Jvc3NPcmlnaW4sIG9wdGlvbnMuaW50ZWdyaXR5XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAocmVzdW1hYmxlU3RhdGUudW5rbm93blJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShhcykpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKChpbWFnZVNyY1NldCA9IHJlc3VtYWJsZVN0YXRlLnVua25vd25SZXNvdXJjZXNbYXNdKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTcmNTZXQuaGFzT3duUHJvcGVydHkoaHJlZikpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgIChpbWFnZVNyY1NldCA9IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLnVua25vd25SZXNvdXJjZXNbYXNdID0gaW1hZ2VTcmNTZXQpO1xuICAgICAgICAgICAgICAgIGltYWdlU3JjU2V0W2hyZWZdID0gUFJFTE9BRF9OT19DUkVEUztcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAocmVzdW1hYmxlU3RhdGUgPSByZW5kZXJTdGF0ZS5oZWFkZXJzKSAmJlxuICAgICAgICAgICAgICAgICAgMCA8IHJlc3VtYWJsZVN0YXRlLnJlbWFpbmluZ0NhcGFjaXR5ICYmXG4gICAgICAgICAgICAgICAgICBcImZvbnRcIiA9PT0gYXMgJiZcbiAgICAgICAgICAgICAgICAgICgoa2V5ID0gZ2V0UHJlbG9hZEFzSGVhZGVyKGhyZWYsIGFzLCBvcHRpb25zKSksXG4gICAgICAgICAgICAgICAgICAwIDw9IChyZXN1bWFibGVTdGF0ZS5yZW1haW5pbmdDYXBhY2l0eSAtPSBrZXkubGVuZ3RoICsgMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKHJlbmRlclN0YXRlLnJlc2V0cy5mb250W2hyZWZdID0gUFJFTE9BRF9OT19DUkVEUyksXG4gICAgICAgICAgICAgICAgICAgIHJlc3VtYWJsZVN0YXRlLmZvbnRQcmVsb2FkcyAmJlxuICAgICAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5mb250UHJlbG9hZHMgKz0gXCIsIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VtYWJsZVN0YXRlLmZvbnRQcmVsb2FkcyArPSBrZXkpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIHN3aXRjaCAoXG4gICAgICAgICAgICAgICAgICAgICgocmVzdW1hYmxlU3RhdGUgPSBbXSksXG4gICAgICAgICAgICAgICAgICAgIChocmVmID0gYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgIHsgcmVsOiBcInByZWxvYWRcIiwgaHJlZjogaHJlZiwgYXM6IGFzIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICAgICAgcHVzaExpbmtJbXBsKHJlc3VtYWJsZVN0YXRlLCBocmVmKSxcbiAgICAgICAgICAgICAgICAgICAgYXMpXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZvbnRcIjpcbiAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5mb250UHJlbG9hZHMuYWRkKHJlc3VtYWJsZVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5idWxrUHJlbG9hZHMuYWRkKHJlc3VtYWJsZVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBwcmV2aW91c0Rpc3BhdGNoZXIuTChocmVmLCBhcywgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgbTogZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdCA/IGN1cnJlbnRSZXF1ZXN0IDogbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlO1xuICAgICAgICAgIGlmIChocmVmKSB7XG4gICAgICAgICAgICB2YXIgYXMgPVxuICAgICAgICAgICAgICBvcHRpb25zICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmFzID8gb3B0aW9ucy5hcyA6IFwic2NyaXB0XCI7XG4gICAgICAgICAgICBzd2l0Y2ggKGFzKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVzdW1hYmxlU3RhdGUubW9kdWxlU2NyaXB0UmVzb3VyY2VzLmhhc093blByb3BlcnR5KGhyZWYpKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGFzID0gW107XG4gICAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUubW9kdWxlU2NyaXB0UmVzb3VyY2VzW2hyZWZdID1cbiAgICAgICAgICAgICAgICAgICFvcHRpb25zIHx8XG4gICAgICAgICAgICAgICAgICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuY3Jvc3NPcmlnaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5KVxuICAgICAgICAgICAgICAgICAgICA/IFBSRUxPQURfTk9fQ1JFRFNcbiAgICAgICAgICAgICAgICAgICAgOiBbb3B0aW9ucy5jcm9zc09yaWdpbiwgb3B0aW9ucy5pbnRlZ3JpdHldO1xuICAgICAgICAgICAgICAgIHJlbmRlclN0YXRlLnByZWxvYWRzLm1vZHVsZVNjcmlwdHMuc2V0KGhyZWYsIGFzKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAocmVzdW1hYmxlU3RhdGUubW9kdWxlVW5rbm93blJlc291cmNlcy5oYXNPd25Qcm9wZXJ0eShhcykpIHtcbiAgICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZXMgPSByZXN1bWFibGVTdGF0ZS51bmtub3duUmVzb3VyY2VzW2FzXTtcbiAgICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZikpIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgIChyZXNvdXJjZXMgPSB7fSksXG4gICAgICAgICAgICAgICAgICAgIChyZXN1bWFibGVTdGF0ZS5tb2R1bGVVbmtub3duUmVzb3VyY2VzW2FzXSA9IHJlc291cmNlcyk7XG4gICAgICAgICAgICAgICAgYXMgPSBbXTtcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNbaHJlZl0gPSBQUkVMT0FEX05PX0NSRURTO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHVzaExpbmtJbXBsKFxuICAgICAgICAgICAgICBhcyxcbiAgICAgICAgICAgICAgYXNzaWduKHsgcmVsOiBcIm1vZHVsZXByZWxvYWRcIiwgaHJlZjogaHJlZiB9LCBvcHRpb25zKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlbmRlclN0YXRlLmJ1bGtQcmVsb2Fkcy5hZGQoYXMpO1xuICAgICAgICAgICAgZW5xdWV1ZUZsdXNoKHJlcXVlc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHByZXZpb3VzRGlzcGF0Y2hlci5tKGhyZWYsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIFg6IGZ1bmN0aW9uIChzcmMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdCA/IGN1cnJlbnRSZXF1ZXN0IDogbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlO1xuICAgICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZVN0YXRlID0gcmVzdW1hYmxlU3RhdGUuc2NyaXB0UmVzb3VyY2VzLmhhc093blByb3BlcnR5KFxuICAgICAgICAgICAgICBzcmNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgPyByZXN1bWFibGVTdGF0ZS5zY3JpcHRSZXNvdXJjZXNbc3JjXVxuICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIHJlc291cmNlU3RhdGUgIT09IEVYSVNUUyAmJlxuICAgICAgICAgICAgICAoKHJlc3VtYWJsZVN0YXRlLnNjcmlwdFJlc291cmNlc1tzcmNdID0gRVhJU1RTKSxcbiAgICAgICAgICAgICAgKG9wdGlvbnMgPSBhc3NpZ24oeyBzcmM6IHNyYywgYXN5bmM6ICEwIH0sIG9wdGlvbnMpKSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VTdGF0ZSAmJlxuICAgICAgICAgICAgICAgICgyID09PSByZXNvdXJjZVN0YXRlLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgYWRvcHRQcmVsb2FkQ3JlZGVudGlhbHMob3B0aW9ucywgcmVzb3VyY2VTdGF0ZSksXG4gICAgICAgICAgICAgICAgKHNyYyA9IHJlbmRlclN0YXRlLnByZWxvYWRzLnNjcmlwdHMuZ2V0KHNyYykpKSAmJlxuICAgICAgICAgICAgICAgIChzcmMubGVuZ3RoID0gMCksXG4gICAgICAgICAgICAgIChzcmMgPSBbXSksXG4gICAgICAgICAgICAgIHJlbmRlclN0YXRlLnNjcmlwdHMuYWRkKHNyYyksXG4gICAgICAgICAgICAgIHB1c2hTY3JpcHRJbXBsKHNyYywgb3B0aW9ucyksXG4gICAgICAgICAgICAgIGVucXVldWVGbHVzaChyZXF1ZXN0KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgcHJldmlvdXNEaXNwYXRjaGVyLlgoc3JjLCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICBTOiBmdW5jdGlvbiAoaHJlZiwgcHJlY2VkZW5jZSwgb3B0aW9ucykge1xuICAgICAgICB2YXIgcmVxdWVzdCA9IGN1cnJlbnRSZXF1ZXN0ID8gY3VycmVudFJlcXVlc3QgOiBudWxsO1xuICAgICAgICBpZiAocmVxdWVzdCkge1xuICAgICAgICAgIHZhciByZXN1bWFibGVTdGF0ZSA9IHJlcXVlc3QucmVzdW1hYmxlU3RhdGUsXG4gICAgICAgICAgICByZW5kZXJTdGF0ZSA9IHJlcXVlc3QucmVuZGVyU3RhdGU7XG4gICAgICAgICAgaWYgKGhyZWYpIHtcbiAgICAgICAgICAgIHByZWNlZGVuY2UgPSBwcmVjZWRlbmNlIHx8IFwiZGVmYXVsdFwiO1xuICAgICAgICAgICAgdmFyIHN0eWxlUXVldWUgPSByZW5kZXJTdGF0ZS5zdHlsZXMuZ2V0KHByZWNlZGVuY2UpLFxuICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlID0gcmVzdW1hYmxlU3RhdGUuc3R5bGVSZXNvdXJjZXMuaGFzT3duUHJvcGVydHkoaHJlZilcbiAgICAgICAgICAgICAgICA/IHJlc3VtYWJsZVN0YXRlLnN0eWxlUmVzb3VyY2VzW2hyZWZdXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XG4gICAgICAgICAgICByZXNvdXJjZVN0YXRlICE9PSBFWElTVFMgJiZcbiAgICAgICAgICAgICAgKChyZXN1bWFibGVTdGF0ZS5zdHlsZVJlc291cmNlc1tocmVmXSA9IEVYSVNUUyksXG4gICAgICAgICAgICAgIHN0eWxlUXVldWUgfHxcbiAgICAgICAgICAgICAgICAoKHN0eWxlUXVldWUgPSB7XG4gICAgICAgICAgICAgICAgICBwcmVjZWRlbmNlOiBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHByZWNlZGVuY2UpKSxcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgIGhyZWZzOiBbXSxcbiAgICAgICAgICAgICAgICAgIHNoZWV0czogbmV3IE1hcCgpXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgcmVuZGVyU3RhdGUuc3R5bGVzLnNldChwcmVjZWRlbmNlLCBzdHlsZVF1ZXVlKSksXG4gICAgICAgICAgICAgIChwcmVjZWRlbmNlID0ge1xuICAgICAgICAgICAgICAgIHN0YXRlOiBQRU5ESU5HJDEsXG4gICAgICAgICAgICAgICAgcHJvcHM6IGFzc2lnbihcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVsOiBcInN0eWxlc2hlZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgICAgICAgICAgICAgXCJkYXRhLXByZWNlZGVuY2VcIjogcHJlY2VkZW5jZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlICYmXG4gICAgICAgICAgICAgICAgKDIgPT09IHJlc291cmNlU3RhdGUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICBhZG9wdFByZWxvYWRDcmVkZW50aWFscyhwcmVjZWRlbmNlLnByb3BzLCByZXNvdXJjZVN0YXRlKSxcbiAgICAgICAgICAgICAgICAocmVuZGVyU3RhdGUgPSByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5zdHlsZXNoZWV0cy5nZXQoaHJlZikpICYmXG4gICAgICAgICAgICAgICAgMCA8IHJlbmRlclN0YXRlLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgPyAocmVuZGVyU3RhdGUubGVuZ3RoID0gMClcbiAgICAgICAgICAgICAgICAgIDogKHByZWNlZGVuY2Uuc3RhdGUgPSBQUkVMT0FERUQpKSxcbiAgICAgICAgICAgICAgc3R5bGVRdWV1ZS5zaGVldHMuc2V0KGhyZWYsIHByZWNlZGVuY2UpLFxuICAgICAgICAgICAgICBlbnF1ZXVlRmx1c2gocmVxdWVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHByZXZpb3VzRGlzcGF0Y2hlci5TKGhyZWYsIHByZWNlZGVuY2UsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIE06IGZ1bmN0aW9uIChzcmMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIHJlcXVlc3QgPSBjdXJyZW50UmVxdWVzdCA/IGN1cnJlbnRSZXF1ZXN0IDogbnVsbDtcbiAgICAgICAgaWYgKHJlcXVlc3QpIHtcbiAgICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSByZXF1ZXN0LnJlc3VtYWJsZVN0YXRlLFxuICAgICAgICAgICAgcmVuZGVyU3RhdGUgPSByZXF1ZXN0LnJlbmRlclN0YXRlO1xuICAgICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZVN0YXRlID1cbiAgICAgICAgICAgICAgcmVzdW1hYmxlU3RhdGUubW9kdWxlU2NyaXB0UmVzb3VyY2VzLmhhc093blByb3BlcnR5KHNyYylcbiAgICAgICAgICAgICAgICA/IHJlc3VtYWJsZVN0YXRlLm1vZHVsZVNjcmlwdFJlc291cmNlc1tzcmNdXG4gICAgICAgICAgICAgICAgOiB2b2lkIDA7XG4gICAgICAgICAgICByZXNvdXJjZVN0YXRlICE9PSBFWElTVFMgJiZcbiAgICAgICAgICAgICAgKChyZXN1bWFibGVTdGF0ZS5tb2R1bGVTY3JpcHRSZXNvdXJjZXNbc3JjXSA9IEVYSVNUUyksXG4gICAgICAgICAgICAgIChvcHRpb25zID0gYXNzaWduKFxuICAgICAgICAgICAgICAgIHsgc3JjOiBzcmMsIHR5cGU6IFwibW9kdWxlXCIsIGFzeW5jOiAhMCB9LFxuICAgICAgICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgIHJlc291cmNlU3RhdGUgJiZcbiAgICAgICAgICAgICAgICAoMiA9PT0gcmVzb3VyY2VTdGF0ZS5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGFkb3B0UHJlbG9hZENyZWRlbnRpYWxzKG9wdGlvbnMsIHJlc291cmNlU3RhdGUpLFxuICAgICAgICAgICAgICAgIChzcmMgPSByZW5kZXJTdGF0ZS5wcmVsb2Fkcy5tb2R1bGVTY3JpcHRzLmdldChzcmMpKSkgJiZcbiAgICAgICAgICAgICAgICAoc3JjLmxlbmd0aCA9IDApLFxuICAgICAgICAgICAgICAoc3JjID0gW10pLFxuICAgICAgICAgICAgICByZW5kZXJTdGF0ZS5zY3JpcHRzLmFkZChzcmMpLFxuICAgICAgICAgICAgICBwdXNoU2NyaXB0SW1wbChzcmMsIG9wdGlvbnMpLFxuICAgICAgICAgICAgICBlbnF1ZXVlRmx1c2gocmVxdWVzdCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHByZXZpb3VzRGlzcGF0Y2hlci5NKHNyYywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgTm90aGluZ1NlbnQgPSAwLFxuICAgICAgU2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uID0gMSxcbiAgICAgIFNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24gPSAyLFxuICAgICAgU2VudENsaWVudFJlbmRlckZ1bmN0aW9uID0gNCxcbiAgICAgIFNlbnRTdHlsZUluc2VydGlvbkZ1bmN0aW9uID0gOCxcbiAgICAgIEVYSVNUUyA9IG51bGwsXG4gICAgICBQUkVMT0FEX05PX0NSRURTID0gW107XG4gICAgT2JqZWN0LmZyZWV6ZShQUkVMT0FEX05PX0NSRURTKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPjwvdGVtcGxhdGU+Jyk7XG4gICAgdmFyIHN0YXJ0SW5saW5lU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiPHNjcmlwdD5cIiksXG4gICAgICBlbmRJbmxpbmVTY3JpcHQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYy9zY3JpcHQ+XCIpLFxuICAgICAgc3RhcnRTY3JpcHRTcmMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgc3JjPVwiJyksXG4gICAgICBzdGFydE1vZHVsZVNyYyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiJyksXG4gICAgICBzY3JpcHROb25jZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIgbm9uY2U9XCInKSxcbiAgICAgIHNjcmlwdEludGVnaXJ0eSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIgaW50ZWdyaXR5PVwiJyksXG4gICAgICBzY3JpcHRDcm9zc09yaWdpbiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIgY3Jvc3NvcmlnaW49XCInKSxcbiAgICAgIGVuZEFzeW5jU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBhc3luYz1cIlwiPlxceDNjL3NjcmlwdD4nKSxcbiAgICAgIHNjcmlwdFJlZ2V4ID0gLyg8XFwvfDwpKHMpKGNyaXB0KS9naSxcbiAgICAgIGltcG9ydE1hcFNjcmlwdFN0YXJ0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAnPHNjcmlwdCB0eXBlPVwiaW1wb3J0bWFwXCI+J1xuICAgICAgKSxcbiAgICAgIGltcG9ydE1hcFNjcmlwdEVuZCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIlxceDNjL3NjcmlwdD5cIik7XG4gICAgdmFyIGRpZFdhcm5Gb3JOZXdCb29sZWFuUHJvcHNXaXRoRW1wdHlWYWx1ZSA9IHt9O1xuICAgIHZhciBST09UX0hUTUxfTU9ERSA9IDAsXG4gICAgICBIVE1MX0hUTUxfTU9ERSA9IDEsXG4gICAgICBIVE1MX01PREUgPSAyLFxuICAgICAgU1ZHX01PREUgPSAzLFxuICAgICAgTUFUSE1MX01PREUgPSA0LFxuICAgICAgSFRNTF9UQUJMRV9NT0RFID0gNSxcbiAgICAgIEhUTUxfVEFCTEVfQk9EWV9NT0RFID0gNixcbiAgICAgIEhUTUxfVEFCTEVfUk9XX01PREUgPSA3LFxuICAgICAgSFRNTF9DT0xHUk9VUF9NT0RFID0gOCxcbiAgICAgIHRleHRTZXBhcmF0b3IgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYyEtLSAtLVxceDNlXCIpLFxuICAgICAgc3R5bGVOYW1lQ2FjaGUgPSBuZXcgTWFwKCksXG4gICAgICBzdHlsZUF0dHJpYnV0ZVN0YXJ0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCcgc3R5bGU9XCInKSxcbiAgICAgIHN0eWxlQXNzaWduID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiOlwiKSxcbiAgICAgIHN0eWxlU2VwYXJhdG9yID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiO1wiKSxcbiAgICAgIGF0dHJpYnV0ZVNlcGFyYXRvciA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIiBcIiksXG4gICAgICBhdHRyaWJ1dGVBc3NpZ24gPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJz1cIicpLFxuICAgICAgYXR0cmlidXRlRW5kID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIicpLFxuICAgICAgYXR0cmlidXRlRW1wdHlTdHJpbmcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJz1cIlwiJyksXG4gICAgICBhY3Rpb25KYXZhU2NyaXB0VVJMID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICBlc2NhcGVUZXh0Rm9yQnJvd3NlcihcbiAgICAgICAgICBcImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdSZWFjdCBmb3JtIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuJylcIlxuICAgICAgICApXG4gICAgICApLFxuICAgICAgc3RhcnRIaWRkZW5JbnB1dENodW5rID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8aW5wdXQgdHlwZT1cImhpZGRlblwiJyksXG4gICAgICBlbmRPZlN0YXJ0VGFnID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiPlwiKSxcbiAgICAgIGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIi8+XCIpLFxuICAgICAgZGlkV2FybkRlZmF1bHRJbnB1dFZhbHVlID0gITEsXG4gICAgICBkaWRXYXJuRGVmYXVsdENoZWNrZWQgPSAhMSxcbiAgICAgIGRpZFdhcm5EZWZhdWx0U2VsZWN0VmFsdWUgPSAhMSxcbiAgICAgIGRpZFdhcm5EZWZhdWx0VGV4dGFyZWFWYWx1ZSA9ICExLFxuICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9ICExLFxuICAgICAgZGlkV2FybkludmFsaWRPcHRpb25Jbm5lckhUTUwgPSAhMSxcbiAgICAgIGRpZFdhcm5TZWxlY3RlZFNldE9uT3B0aW9uID0gITEsXG4gICAgICBkaWRXYXJuRm9ybUFjdGlvblR5cGUgPSAhMSxcbiAgICAgIGRpZFdhcm5Gb3JtQWN0aW9uTmFtZSA9ICExLFxuICAgICAgZGlkV2FybkZvcm1BY3Rpb25UYXJnZXQgPSAhMSxcbiAgICAgIGRpZFdhcm5Gb3JtQWN0aW9uTWV0aG9kID0gITEsXG4gICAgICBzZWxlY3RlZE1hcmtlckF0dHJpYnV0ZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnIHNlbGVjdGVkPVwiXCInKSxcbiAgICAgIGZvcm1SZXBsYXlpbmdSdW50aW1lU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAnYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLGZ1bmN0aW9uKGEpe2lmKCFhLmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciBjPWEudGFyZ2V0LGQ9YS5zdWJtaXR0ZXIsZT1jLmFjdGlvbixiPWQ7aWYoZCl7dmFyIGY9ZC5nZXRBdHRyaWJ1dGUoXCJmb3JtQWN0aW9uXCIpO251bGwhPWYmJihlPWYsYj1udWxsKX1cImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKFxcJ1JlYWN0IGZvcm0gdW5leHBlY3RlZGx5IHN1Ym1pdHRlZC5cXCcpXCI9PT1lJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGI/KGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpLGEubmFtZT1iLm5hbWUsYS52YWx1ZT1iLnZhbHVlLGIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKSxiPW5ldyBGb3JtRGF0YShjKSxhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSkpOmI9bmV3IEZvcm1EYXRhKGMpLGE9Yy5vd25lckRvY3VtZW50fHxjLChhLiQkcmVhY3RGb3JtUmVwbGF5PWEuJCRyZWFjdEZvcm1SZXBsYXl8fFtdKS5wdXNoKGMsZCxiKSl9fSk7J1xuICAgICAgKSxcbiAgICAgIGZvcm1TdGF0ZU1hcmtlcklzTWF0Y2hpbmcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYyEtLUYhLS1cXHgzZVwiKSxcbiAgICAgIGZvcm1TdGF0ZU1hcmtlcklzTm90TWF0Y2hpbmcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYyEtLUYtLVxceDNlXCIpLFxuICAgICAgc3R5bGVSZWdleCA9IC8oPFxcL3w8KShzKSh0eWxlKS9naSxcbiAgICAgIGxlYWRpbmdOZXdsaW5lID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiXFxuXCIpLFxuICAgICAgVkFMSURfVEFHX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC8sXG4gICAgICB2YWxpZGF0ZWRUYWdDYWNoZSA9IG5ldyBNYXAoKSxcbiAgICAgIGRvY3R5cGVDaHVuayA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwhRE9DVFlQRSBodG1sPlwiKSxcbiAgICAgIGVuZFRhZ0NhY2hlID0gbmV3IE1hcCgpLFxuICAgICAgcGxhY2Vob2xkZXIxID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGVtcGxhdGUgaWQ9XCInKSxcbiAgICAgIHBsYWNlaG9sZGVyMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+PC90ZW1wbGF0ZT4nKSxcbiAgICAgIHN0YXJ0Q29tcGxldGVkU3VzcGVuc2VCb3VuZGFyeSA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIlxceDNjIS0tJC0tXFx4M2VcIiksXG4gICAgICBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5MSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcbiAgICAgICAgJ1xceDNjIS0tJD8tLVxceDNlPHRlbXBsYXRlIGlkPVwiJ1xuICAgICAgKSxcbiAgICAgIHN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj48L3RlbXBsYXRlPicpLFxuICAgICAgc3RhcnRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkgPVxuICAgICAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYyEtLSQhLS1cXHgzZVwiKSxcbiAgICAgIGVuZFN1c3BlbnNlQm91bmRhcnkgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJcXHgzYyEtLS8kLS1cXHgzZVwiKSxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMSA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjx0ZW1wbGF0ZVwiKSxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yQXR0ckludGVyc3RpdGlhbCA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCInKSxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMUEgPVxuICAgICAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyBkYXRhLWRnc3Q9XCInKSxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMUIgPVxuICAgICAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyBkYXRhLW1zZz1cIicpLFxuICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3IxQyA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnIGRhdGEtc3Rjaz1cIicpLFxuICAgICAgY2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5RXJyb3IxRCA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnIGRhdGEtY3N0Y2s9XCInKSxcbiAgICAgIGNsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeUVycm9yMiA9XG4gICAgICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIj48L3RlbXBsYXRlPlwiKSxcbiAgICAgIHN0YXJ0U2VnbWVudEhUTUwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxkaXYgaGlkZGVuIGlkPVwiJyksXG4gICAgICBzdGFydFNlZ21lbnRIVE1MMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+JyksXG4gICAgICBlbmRTZWdtZW50SFRNTCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwvZGl2PlwiKSxcbiAgICAgIHN0YXJ0U2VnbWVudFNWRyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcbiAgICAgICAgJzxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiBpZD1cIidcbiAgICAgICksXG4gICAgICBzdGFydFNlZ21lbnRTVkcyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKSxcbiAgICAgIGVuZFNlZ21lbnRTVkcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCI8L3N2Zz5cIiksXG4gICAgICBzdGFydFNlZ21lbnRNYXRoTUwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXG4gICAgICAgICc8bWF0aCBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPVwiJ1xuICAgICAgKSxcbiAgICAgIHN0YXJ0U2VnbWVudE1hdGhNTDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpLFxuICAgICAgZW5kU2VnbWVudE1hdGhNTCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwvbWF0aD5cIiksXG4gICAgICBzdGFydFNlZ21lbnRUYWJsZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRhYmxlIGhpZGRlbiBpZD1cIicpLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGUyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKSxcbiAgICAgIGVuZFNlZ21lbnRUYWJsZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwvdGFibGU+XCIpLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVCb2R5ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9XCInXG4gICAgICApLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVCb2R5MiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+JyksXG4gICAgICBlbmRTZWdtZW50VGFibGVCb2R5ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiPC90Ym9keT48L3RhYmxlPlwiKSxcbiAgICAgIHN0YXJ0U2VnbWVudFRhYmxlUm93ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGFibGUgaGlkZGVuPjx0ciBpZD1cIicpLFxuICAgICAgc3RhcnRTZWdtZW50VGFibGVSb3cyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKSxcbiAgICAgIGVuZFNlZ21lbnRUYWJsZVJvdyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIjwvdHI+PC90YWJsZT5cIiksXG4gICAgICBzdGFydFNlZ21lbnRDb2xHcm91cCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcbiAgICAgICAgJzx0YWJsZSBoaWRkZW4+PGNvbGdyb3VwIGlkPVwiJ1xuICAgICAgKSxcbiAgICAgIHN0YXJ0U2VnbWVudENvbEdyb3VwMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+JyksXG4gICAgICBlbmRTZWdtZW50Q29sR3JvdXAgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIpLFxuICAgICAgY29tcGxldGVTZWdtZW50U2NyaXB0MUZ1bGwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXG4gICAgICAgICckUlM9ZnVuY3Rpb24oYSxiKXthPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2I9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Zm9yKGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTthLmZpcnN0Q2hpbGQ7KWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYS5maXJzdENoaWxkLGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX07JFJTKFwiJ1xuICAgICAgKSxcbiAgICAgIGNvbXBsZXRlU2VnbWVudFNjcmlwdDFQYXJ0aWFsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCckUlMoXCInKSxcbiAgICAgIGNvbXBsZXRlU2VnbWVudFNjcmlwdDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiLFwiJyksXG4gICAgICBjb21wbGV0ZVNlZ21lbnRTY3JpcHRFbmQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiKVxceDNjL3NjcmlwdD4nKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzx0ZW1wbGF0ZSBkYXRhLXJzaT1cIlwiIGRhdGEtc2lkPVwiJyk7XG4gICAgc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBkYXRhLXBpZD1cIicpO1xuICAgIHZhciBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MUZ1bGwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXG4gICAgICAgICckUkM9ZnVuY3Rpb24oYixjLGUpe2M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYyk7Yy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpO3ZhciBhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2lmKGEpe2I9YS5wcmV2aW91c1NpYmxpbmc7aWYoZSliLmRhdGE9XCIkIVwiLGEuc2V0QXR0cmlidXRlKFwiZGF0YS1kZ3N0XCIsZSk7ZWxzZXtlPWIucGFyZW50Tm9kZTthPWIubmV4dFNpYmxpbmc7dmFyIGY9MDtkb3tpZihhJiY4PT09YS5ub2RlVHlwZSl7dmFyIGQ9YS5kYXRhO2lmKFwiLyRcIj09PWQpaWYoMD09PWYpYnJlYWs7ZWxzZSBmLS07ZWxzZVwiJFwiIT09ZCYmXCIkP1wiIT09ZCYmXCIkIVwiIT09ZHx8ZisrfWQ9YS5uZXh0U2libGluZztlLnJlbW92ZUNoaWxkKGEpO2E9ZH13aGlsZShhKTtmb3IoO2MuZmlyc3RDaGlsZDspZS5pbnNlcnRCZWZvcmUoYy5maXJzdENoaWxkLGEpO2IuZGF0YT1cIiRcIn1iLl9yZWFjdFJldHJ5JiZiLl9yZWFjdFJldHJ5KCl9fTskUkMoXCInXG4gICAgICApLFxuICAgICAgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFQYXJ0aWFsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCckUkMoXCInKSxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlXaXRoU3R5bGVzU2NyaXB0MUZ1bGxCb3RoID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAnJFJDPWZ1bmN0aW9uKGIsYyxlKXtjPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGMpO2MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKTt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtpZihhKXtiPWEucHJldmlvdXNTaWJsaW5nO2lmKGUpYi5kYXRhPVwiJCFcIixhLnNldEF0dHJpYnV0ZShcImRhdGEtZGdzdFwiLGUpO2Vsc2V7ZT1iLnBhcmVudE5vZGU7YT1iLm5leHRTaWJsaW5nO3ZhciBmPTA7ZG97aWYoYSYmOD09PWEubm9kZVR5cGUpe3ZhciBkPWEuZGF0YTtpZihcIi8kXCI9PT1kKWlmKDA9PT1mKWJyZWFrO2Vsc2UgZi0tO2Vsc2VcIiRcIiE9PWQmJlwiJD9cIiE9PWQmJlwiJCFcIiE9PWR8fGYrK31kPWEubmV4dFNpYmxpbmc7ZS5yZW1vdmVDaGlsZChhKTthPWR9d2hpbGUoYSk7Zm9yKDtjLmZpcnN0Q2hpbGQ7KWUuaW5zZXJ0QmVmb3JlKGMuZmlyc3RDaGlsZCxhKTtiLmRhdGE9XCIkXCJ9Yi5fcmVhY3RSZXRyeSYmYi5fcmVhY3RSZXRyeSgpfX07JFJNPW5ldyBNYXA7XFxuJFJSPWZ1bmN0aW9uKHQsdSx5KXtmdW5jdGlvbiB2KG4pe3RoaXMuX3A9bnVsbDtuKCl9Zm9yKHZhciB3PSRSQyxwPSRSTSxxPW5ldyBNYXAscj1kb2N1bWVudCxnLGIsaD1yLnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaW5rW2RhdGEtcHJlY2VkZW5jZV0sc3R5bGVbZGF0YS1wcmVjZWRlbmNlXVwiKSx4PVtdLGs9MDtiPWhbaysrXTspXCJub3QgYWxsXCI9PT1iLmdldEF0dHJpYnV0ZShcIm1lZGlhXCIpP3gucHVzaChiKTooXCJMSU5LXCI9PT1iLnRhZ05hbWUmJnAuc2V0KGIuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSxiKSxxLnNldChiLmRhdGFzZXQucHJlY2VkZW5jZSxnPWIpKTtiPTA7aD1bXTt2YXIgbCxhO2ZvcihrPSEwOzspe2lmKGspe3ZhciBlPXlbYisrXTtpZighZSl7az0hMTtiPTA7Y29udGludWV9dmFyIGM9ITEsbT0wO3ZhciBkPWVbbSsrXTtpZihhPXAuZ2V0KGQpKXt2YXIgZj1hLl9wO2M9ITB9ZWxzZXthPXIuY3JlYXRlRWxlbWVudChcImxpbmtcIik7YS5ocmVmPVxcbmQ7YS5yZWw9XCJzdHlsZXNoZWV0XCI7Zm9yKGEuZGF0YXNldC5wcmVjZWRlbmNlPWw9ZVttKytdO2Y9ZVttKytdOylhLnNldEF0dHJpYnV0ZShmLGVbbSsrXSk7Zj1hLl9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG4seil7YS5vbmxvYWQ9di5iaW5kKGEsbik7YS5vbmVycm9yPXYuYmluZChhLHopfSk7cC5zZXQoZCxhKX1kPWEuZ2V0QXR0cmlidXRlKFwibWVkaWFcIik7IWZ8fGQmJiFtYXRjaE1lZGlhKGQpLm1hdGNoZXN8fGgucHVzaChmKTtpZihjKWNvbnRpbnVlfWVsc2V7YT14W2IrK107aWYoIWEpYnJlYWs7bD1hLmdldEF0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKTthLnJlbW92ZUF0dHJpYnV0ZShcIm1lZGlhXCIpfWM9cS5nZXQobCl8fGc7Yz09PWcmJihnPWEpO3Euc2V0KGwsYSk7Yz9jLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYy5uZXh0U2libGluZyk6KGM9ci5oZWFkLGMuaW5zZXJ0QmVmb3JlKGEsYy5maXJzdENoaWxkKSl9UHJvbWlzZS5hbGwoaCkudGhlbih3LmJpbmQobnVsbCxcXG50LHUsXCJcIiksdy5iaW5kKG51bGwsdCx1LFwiUmVzb3VyY2UgZmFpbGVkIHRvIGxvYWRcIikpfTskUlIoXCInXG4gICAgICApLFxuICAgICAgY29tcGxldGVCb3VuZGFyeVdpdGhTdHlsZXNTY3JpcHQxRnVsbFBhcnRpYWwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXG4gICAgICAgICckUk09bmV3IE1hcDtcXG4kUlI9ZnVuY3Rpb24odCx1LHkpe2Z1bmN0aW9uIHYobil7dGhpcy5fcD1udWxsO24oKX1mb3IodmFyIHc9JFJDLHA9JFJNLHE9bmV3IE1hcCxyPWRvY3VtZW50LGcsYixoPXIucXVlcnlTZWxlY3RvckFsbChcImxpbmtbZGF0YS1wcmVjZWRlbmNlXSxzdHlsZVtkYXRhLXByZWNlZGVuY2VdXCIpLHg9W10saz0wO2I9aFtrKytdOylcIm5vdCBhbGxcIj09PWIuZ2V0QXR0cmlidXRlKFwibWVkaWFcIik/eC5wdXNoKGIpOihcIkxJTktcIj09PWIudGFnTmFtZSYmcC5zZXQoYi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLGIpLHEuc2V0KGIuZGF0YXNldC5wcmVjZWRlbmNlLGc9YikpO2I9MDtoPVtdO3ZhciBsLGE7Zm9yKGs9ITA7Oyl7aWYoayl7dmFyIGU9eVtiKytdO2lmKCFlKXtrPSExO2I9MDtjb250aW51ZX12YXIgYz0hMSxtPTA7dmFyIGQ9ZVttKytdO2lmKGE9cC5nZXQoZCkpe3ZhciBmPWEuX3A7Yz0hMH1lbHNle2E9ci5jcmVhdGVFbGVtZW50KFwibGlua1wiKTthLmhyZWY9XFxuZDthLnJlbD1cInN0eWxlc2hlZXRcIjtmb3IoYS5kYXRhc2V0LnByZWNlZGVuY2U9bD1lW20rK107Zj1lW20rK107KWEuc2V0QXR0cmlidXRlKGYsZVttKytdKTtmPWEuX3A9bmV3IFByb21pc2UoZnVuY3Rpb24obix6KXthLm9ubG9hZD12LmJpbmQoYSxuKTthLm9uZXJyb3I9di5iaW5kKGEseil9KTtwLnNldChkLGEpfWQ9YS5nZXRBdHRyaWJ1dGUoXCJtZWRpYVwiKTshZnx8ZCYmIW1hdGNoTWVkaWEoZCkubWF0Y2hlc3x8aC5wdXNoKGYpO2lmKGMpY29udGludWV9ZWxzZXthPXhbYisrXTtpZighYSlicmVhaztsPWEuZ2V0QXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpO2EucmVtb3ZlQXR0cmlidXRlKFwibWVkaWFcIil9Yz1xLmdldChsKXx8ZztjPT09ZyYmKGc9YSk7cS5zZXQobCxhKTtjP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxjLm5leHRTaWJsaW5nKTooYz1yLmhlYWQsYy5pbnNlcnRCZWZvcmUoYSxjLmZpcnN0Q2hpbGQpKX1Qcm9taXNlLmFsbChoKS50aGVuKHcuYmluZChudWxsLFxcbnQsdSxcIlwiKSx3LmJpbmQobnVsbCx0LHUsXCJSZXNvdXJjZSBmYWlsZWQgdG8gbG9hZFwiKSl9OyRSUihcIidcbiAgICAgICksXG4gICAgICBjb21wbGV0ZUJvdW5kYXJ5V2l0aFN0eWxlc1NjcmlwdDFQYXJ0aWFsID1cbiAgICAgICAgc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCckUlIoXCInKSxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIixcIicpLFxuICAgICAgY29tcGxldGVCb3VuZGFyeVNjcmlwdDNhID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiwnKSxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQzYiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCInKSxcbiAgICAgIGNvbXBsZXRlQm91bmRhcnlTY3JpcHRFbmQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCIpXFx4M2Mvc2NyaXB0PlwiKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzx0ZW1wbGF0ZSBkYXRhLXJjaT1cIlwiIGRhdGEtYmlkPVwiJyk7XG4gICAgc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGVtcGxhdGUgZGF0YS1ycmk9XCJcIiBkYXRhLWJpZD1cIicpO1xuICAgIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIgZGF0YS1zaWQ9XCInKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiIGRhdGEtc3R5PVwiJyk7XG4gICAgdmFyIGNsaWVudFJlbmRlclNjcmlwdDFGdWxsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFxuICAgICAgICAnJFJYPWZ1bmN0aW9uKGIsYyxkLGUsZil7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7YSYmKGI9YS5wcmV2aW91c1NpYmxpbmcsYi5kYXRhPVwiJCFcIixhPWEuZGF0YXNldCxjJiYoYS5kZ3N0PWMpLGQmJihhLm1zZz1kKSxlJiYoYS5zdGNrPWUpLGYmJihhLmNzdGNrPWYpLGIuX3JlYWN0UmV0cnkmJmIuX3JlYWN0UmV0cnkoKSl9OzskUlgoXCInXG4gICAgICApLFxuICAgICAgY2xpZW50UmVuZGVyU2NyaXB0MVBhcnRpYWwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyRSWChcIicpLFxuICAgICAgY2xpZW50UmVuZGVyU2NyaXB0MUEgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiJyksXG4gICAgICBjbGllbnRSZW5kZXJFcnJvclNjcmlwdEFyZ0ludGVyc3RpdGlhbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIixcIiksXG4gICAgICBjbGllbnRSZW5kZXJTY3JpcHRFbmQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCIpXFx4M2Mvc2NyaXB0PlwiKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzx0ZW1wbGF0ZSBkYXRhLXJ4aT1cIlwiIGRhdGEtYmlkPVwiJyk7XG4gICAgc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBkYXRhLWRnc3Q9XCInKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiIGRhdGEtbXNnPVwiJyk7XG4gICAgc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBkYXRhLXN0Y2s9XCInKTtcbiAgICBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiIGRhdGEtY3N0Y2s9XCInKTtcbiAgICB2YXIgcmVnZXhGb3JKU1N0cmluZ3NJbkluc3RydWN0aW9uU2NyaXB0cyA9IC9bPFxcdTIwMjhcXHUyMDI5XS9nLFxuICAgICAgcmVnZXhGb3JKU1N0cmluZ3NJblNjcmlwdHMgPSAvWyY+PFxcdTIwMjhcXHUyMDI5XS9nLFxuICAgICAgbGF0ZVN0eWxlVGFnUmVzb3VyY2VPcGVuMSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcbiAgICAgICAgJzxzdHlsZSBtZWRpYT1cIm5vdCBhbGxcIiBkYXRhLXByZWNlZGVuY2U9XCInXG4gICAgICApLFxuICAgICAgbGF0ZVN0eWxlVGFnUmVzb3VyY2VPcGVuMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIgZGF0YS1ocmVmPVwiJyksXG4gICAgICBsYXRlU3R5bGVUYWdSZXNvdXJjZU9wZW4zID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKSxcbiAgICAgIGxhdGVTdHlsZVRhZ1RlbXBsYXRlQ2xvc2UgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCI8L3N0eWxlPlwiKSxcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0JvdW5kYXJ5SGFzU3R5bGVzVG9Ib2lzdCA9ICExLFxuICAgICAgZGVzdGluYXRpb25IYXNDYXBhY2l0eSA9ICEwLFxuICAgICAgc3R5bGVzaGVldEZsdXNoaW5nUXVldWUgPSBbXSxcbiAgICAgIHN0eWxlVGFnUmVzb3VyY2VPcGVuMSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcbiAgICAgICAgJzxzdHlsZSBkYXRhLXByZWNlZGVuY2U9XCInXG4gICAgICApLFxuICAgICAgc3R5bGVUYWdSZXNvdXJjZU9wZW4yID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBkYXRhLWhyZWY9XCInKSxcbiAgICAgIHNwYWNlU2VwYXJhdG9yID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKFwiIFwiKSxcbiAgICAgIHN0eWxlVGFnUmVzb3VyY2VPcGVuMyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+JyksXG4gICAgICBzdHlsZVRhZ1Jlc291cmNlQ2xvc2UgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCI8L3N0eWxlPlwiKSxcbiAgICAgIGFycmF5Rmlyc3RPcGVuQnJhY2tldCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIltcIiksXG4gICAgICBhcnJheVN1YnNlcXVlbnRPcGVuQnJhY2tldCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhcIixbXCIpLFxuICAgICAgYXJyYXlJbnRlcnN0aXRpYWwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCIsXCIpLFxuICAgICAgYXJyYXlDbG9zZUJyYWNrZXQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoXCJdXCIpLFxuICAgICAgUEVORElORyQxID0gMCxcbiAgICAgIFBSRUxPQURFRCA9IDEsXG4gICAgICBQUkVBTUJMRSA9IDIsXG4gICAgICBMQVRFID0gMyxcbiAgICAgIHJlZ2V4Rm9ySHJlZkluTGlua0hlYWRlclVSTENvbnRleHQgPSAvWzw+XFxyXFxuXS9nLFxuICAgICAgcmVnZXhGb3JMaW5rSGVhZGVyUXVvdGVkUGFyYW1WYWx1ZUNvbnRleHQgPSAvW1wiJzssXFxyXFxuXS9nLFxuICAgICAgYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgZW1wdHlDb250ZXh0T2JqZWN0ID0ge307XG4gICAgT2JqZWN0LmZyZWV6ZShlbXB0eUNvbnRleHRPYmplY3QpO1xuICAgIHZhciByZW5kZXJlclNpZ2lsID0ge307XG4gICAgdmFyIGN1cnJlbnRBY3RpdmVTbmFwc2hvdCA9IG51bGwsXG4gICAgICBkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50ID0ge30sXG4gICAgICBkaWRXYXJuQWJvdXREZXByZWNhdGVkV2lsbE1vdW50ID0ge307XG4gICAgdmFyIGRpZFdhcm5BYm91dFVuaW5pdGlhbGl6ZWRTdGF0ZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0R2V0U25hcHNob3RCZWZvcmVVcGRhdGVXaXRob3V0RGlkVXBkYXRlID0gbmV3IFNldCgpO1xuICAgIHZhciBkaWRXYXJuQWJvdXRMZWdhY3lMaWZlY3ljbGVzQW5kRGVyaXZlZFN0YXRlID0gbmV3IFNldCgpO1xuICAgIHZhciBkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0VW5kZWZpbmVkRGVyaXZlZFN0YXRlID0gbmV3IFNldCgpO1xuICAgIHZhciBkaWRXYXJuQWJvdXRDb250ZXh0VHlwZXMkMSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2FybkFib3V0Q2hpbGRDb250ZXh0VHlwZXMgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGRpZFdhcm5BYm91dEludmFsaWRhdGVDb250ZXh0VHlwZSA9IG5ldyBTZXQoKTtcbiAgICB2YXIgZGlkV2Fybk9uSW52YWxpZENhbGxiYWNrID0gbmV3IFNldCgpO1xuICAgIHZhciBjbGFzc0NvbXBvbmVudFVwZGF0ZXIgPSB7XG4gICAgICAgIGlzTW91bnRlZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoaW5zdCwgcGF5bG9hZCwgY2FsbGJhY2spIHtcbiAgICAgICAgICB2YXIgaW50ZXJuYWxzID0gaW5zdC5fcmVhY3RJbnRlcm5hbHM7XG4gICAgICAgICAgbnVsbCA9PT0gaW50ZXJuYWxzLnF1ZXVlXG4gICAgICAgICAgICA/IHdhcm5Ob29wKGluc3QsIFwic2V0U3RhdGVcIilcbiAgICAgICAgICAgIDogKGludGVybmFscy5xdWV1ZS5wdXNoKHBheWxvYWQpLFxuICAgICAgICAgICAgICB2b2lkIDAgIT09IGNhbGxiYWNrICYmXG4gICAgICAgICAgICAgICAgbnVsbCAhPT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAgICAgICB3YXJuT25JbnZhbGlkQ2FsbGJhY2soY2FsbGJhY2spKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKGluc3QsIHBheWxvYWQsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgaW5zdCA9IGluc3QuX3JlYWN0SW50ZXJuYWxzO1xuICAgICAgICAgIGluc3QucmVwbGFjZSA9ICEwO1xuICAgICAgICAgIGluc3QucXVldWUgPSBbcGF5bG9hZF07XG4gICAgICAgICAgdm9pZCAwICE9PSBjYWxsYmFjayAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAgIHdhcm5PbkludmFsaWRDYWxsYmFjayhjYWxsYmFjayk7XG4gICAgICAgIH0sXG4gICAgICAgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKGluc3QsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgbnVsbCA9PT0gaW5zdC5fcmVhY3RJbnRlcm5hbHMucXVldWVcbiAgICAgICAgICAgID8gd2Fybk5vb3AoaW5zdCwgXCJmb3JjZVVwZGF0ZVwiKVxuICAgICAgICAgICAgOiB2b2lkIDAgIT09IGNhbGxiYWNrICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGNhbGxiYWNrICYmXG4gICAgICAgICAgICAgIHdhcm5PbkludmFsaWRDYWxsYmFjayhjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlbXB0eVRyZWVDb250ZXh0ID0geyBpZDogMSwgb3ZlcmZsb3c6IFwiXCIgfSxcbiAgICAgIGNsejMyID0gTWF0aC5jbHozMiA/IE1hdGguY2x6MzIgOiBjbHozMkZhbGxiYWNrLFxuICAgICAgbG9nID0gTWF0aC5sb2csXG4gICAgICBMTjIgPSBNYXRoLkxOMixcbiAgICAgIFN1c3BlbnNlRXhjZXB0aW9uID0gRXJyb3IoXG4gICAgICAgIFwiU3VzcGVuc2UgRXhjZXB0aW9uOiBUaGlzIGlzIG5vdCBhIHJlYWwgZXJyb3IhIEl0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIGB1c2VgIHRvIGludGVycnVwdCB0aGUgY3VycmVudCByZW5kZXIuIFlvdSBtdXN0IGVpdGhlciByZXRocm93IGl0IGltbWVkaWF0ZWx5LCBvciBtb3ZlIHRoZSBgdXNlYCBjYWxsIG91dHNpZGUgb2YgdGhlIGB0cnkvY2F0Y2hgIGJsb2NrLiBDYXB0dXJpbmcgd2l0aG91dCByZXRocm93aW5nIHdpbGwgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yLlxcblxcblRvIGhhbmRsZSBhc3luYyBlcnJvcnMsIHdyYXAgeW91ciBjb21wb25lbnQgaW4gYW4gZXJyb3IgYm91bmRhcnksIG9yIGNhbGwgdGhlIHByb21pc2UncyBgLmNhdGNoYCBtZXRob2QgYW5kIHBhc3MgdGhlIHJlc3VsdCB0byBgdXNlYFwiXG4gICAgICApLFxuICAgICAgc3VzcGVuZGVkVGhlbmFibGUgPSBudWxsLFxuICAgICAgb2JqZWN0SXMgPSBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiBpcyxcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IG51bGwsXG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdUYXNrID0gbnVsbCxcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ1JlcXVlc3QgPSBudWxsLFxuICAgICAgY3VycmVudGx5UmVuZGVyaW5nS2V5UGF0aCA9IG51bGwsXG4gICAgICBmaXJzdFdvcmtJblByb2dyZXNzSG9vayA9IG51bGwsXG4gICAgICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsLFxuICAgICAgaXNSZVJlbmRlciA9ICExLFxuICAgICAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9ICExLFxuICAgICAgbG9jYWxJZENvdW50ZXIgPSAwLFxuICAgICAgYWN0aW9uU3RhdGVDb3VudGVyID0gMCxcbiAgICAgIGFjdGlvblN0YXRlTWF0Y2hpbmdJbmRleCA9IC0xLFxuICAgICAgdGhlbmFibGVJbmRleENvdW50ZXIgPSAwLFxuICAgICAgdGhlbmFibGVTdGF0ZSA9IG51bGwsXG4gICAgICByZW5kZXJQaGFzZVVwZGF0ZXMgPSBudWxsLFxuICAgICAgbnVtYmVyT2ZSZVJlbmRlcnMgPSAwLFxuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gITEsXG4gICAgICBjdXJyZW50SG9va05hbWVJbkRldixcbiAgICAgIEhvb2tzRGlzcGF0Y2hlciA9IHtcbiAgICAgICAgcmVhZENvbnRleHQ6IHJlYWRDb250ZXh0LFxuICAgICAgICB1c2U6IGZ1bmN0aW9uICh1c2FibGUpIHtcbiAgICAgICAgICBpZiAobnVsbCAhPT0gdXNhYmxlICYmIFwib2JqZWN0XCIgPT09IHR5cGVvZiB1c2FibGUpIHtcbiAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB1c2FibGUudGhlbilcbiAgICAgICAgICAgICAgcmV0dXJuIHVud3JhcFRoZW5hYmxlKHVzYWJsZSk7XG4gICAgICAgICAgICBpZiAodXNhYmxlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUpXG4gICAgICAgICAgICAgIHJldHVybiByZWFkQ29udGV4dCh1c2FibGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgIFwiQW4gdW5zdXBwb3J0ZWQgdHlwZSB3YXMgcGFzc2VkIHRvIHVzZSgpOiBcIiArIFN0cmluZyh1c2FibGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgICBjdXJyZW50SG9va05hbWVJbkRldiA9IFwidXNlQ29udGV4dFwiO1xuICAgICAgICAgIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5fY3VycmVudFZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICB1c2VNZW1vOiB1c2VNZW1vLFxuICAgICAgICB1c2VSZWR1Y2VyOiB1c2VSZWR1Y2VyLFxuICAgICAgICB1c2VSZWY6IGZ1bmN0aW9uIChpbml0aWFsVmFsdWUpIHtcbiAgICAgICAgICBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQgPSByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gICAgICAgICAgdmFyIHByZXZpb3VzUmVmID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG4gICAgICAgICAgcmV0dXJuIG51bGwgPT09IHByZXZpb3VzUmVmXG4gICAgICAgICAgICA/ICgoaW5pdGlhbFZhbHVlID0geyBjdXJyZW50OiBpbml0aWFsVmFsdWUgfSksXG4gICAgICAgICAgICAgIE9iamVjdC5zZWFsKGluaXRpYWxWYWx1ZSksXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZSA9IGluaXRpYWxWYWx1ZSkpXG4gICAgICAgICAgICA6IHByZXZpb3VzUmVmO1xuICAgICAgICB9LFxuICAgICAgICB1c2VTdGF0ZTogZnVuY3Rpb24gKGluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgIGN1cnJlbnRIb29rTmFtZUluRGV2ID0gXCJ1c2VTdGF0ZVwiO1xuICAgICAgICAgIHJldHVybiB1c2VSZWR1Y2VyKGJhc2ljU3RhdGVSZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuICAgICAgICB9LFxuICAgICAgICB1c2VJbnNlcnRpb25FZmZlY3Q6IG5vb3AkMSxcbiAgICAgICAgdXNlTGF5b3V0RWZmZWN0OiBub29wJDEsXG4gICAgICAgIHVzZUNhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGRlcHMpIHtcbiAgICAgICAgICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2s7XG4gICAgICAgICAgfSwgZGVwcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUltcGVyYXRpdmVIYW5kbGU6IG5vb3AkMSxcbiAgICAgICAgdXNlRWZmZWN0OiBub29wJDEsXG4gICAgICAgIHVzZURlYnVnVmFsdWU6IG5vb3AkMSxcbiAgICAgICAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgICAgICAgICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gaW5pdGlhbFZhbHVlID8gaW5pdGlhbFZhbHVlIDogdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZVRyYW5zaXRpb246IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgcmV0dXJuIFshMSwgdW5zdXBwb3J0ZWRTdGFydFRyYW5zaXRpb25dO1xuICAgICAgICB9LFxuICAgICAgICB1c2VJZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciB0cmVlSWQgPSBjdXJyZW50bHlSZW5kZXJpbmdUYXNrLnRyZWVDb250ZXh0O1xuICAgICAgICAgIHZhciBvdmVyZmxvdyA9IHRyZWVJZC5vdmVyZmxvdztcbiAgICAgICAgICB0cmVlSWQgPSB0cmVlSWQuaWQ7XG4gICAgICAgICAgdHJlZUlkID1cbiAgICAgICAgICAgICh0cmVlSWQgJiB+KDEgPDwgKDMyIC0gY2x6MzIodHJlZUlkKSAtIDEpKSkudG9TdHJpbmcoMzIpICsgb3ZlcmZsb3c7XG4gICAgICAgICAgdmFyIHJlc3VtYWJsZVN0YXRlID0gY3VycmVudFJlc3VtYWJsZVN0YXRlO1xuICAgICAgICAgIGlmIChudWxsID09PSByZXN1bWFibGVTdGF0ZSlcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICBcIkludmFsaWQgaG9vayBjYWxsLiBIb29rcyBjYW4gb25seSBiZSBjYWxsZWQgaW5zaWRlIG9mIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gY29tcG9uZW50LlwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG92ZXJmbG93ID0gbG9jYWxJZENvdW50ZXIrKztcbiAgICAgICAgICB0cmVlSWQgPSBcIjpcIiArIHJlc3VtYWJsZVN0YXRlLmlkUHJlZml4ICsgXCJSXCIgKyB0cmVlSWQ7XG4gICAgICAgICAgMCA8IG92ZXJmbG93ICYmICh0cmVlSWQgKz0gXCJIXCIgKyBvdmVyZmxvdy50b1N0cmluZygzMikpO1xuICAgICAgICAgIHJldHVybiB0cmVlSWQgKyBcIjpcIjtcbiAgICAgICAgfSxcbiAgICAgICAgdXNlU3luY0V4dGVybmFsU3RvcmU6IGZ1bmN0aW9uIChcbiAgICAgICAgICBzdWJzY3JpYmUsXG4gICAgICAgICAgZ2V0U25hcHNob3QsXG4gICAgICAgICAgZ2V0U2VydmVyU25hcHNob3RcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHZvaWQgMCA9PT0gZ2V0U2VydmVyU25hcHNob3QpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgXCJNaXNzaW5nIGdldFNlcnZlclNuYXBzaG90LCB3aGljaCBpcyByZXF1aXJlZCBmb3Igc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFdpbGwgcmV2ZXJ0IHRvIGNsaWVudCByZW5kZXJpbmcuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGdldFNlcnZlclNuYXBzaG90KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUNhY2hlUmVmcmVzaDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB1bnN1cHBvcnRlZFJlZnJlc2g7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZU1lbW9DYWNoZTogZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgICBmb3IgKHZhciBkYXRhID0gQXJyYXkoc2l6ZSksIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKVxuICAgICAgICAgICAgZGF0YVtpXSA9IFJFQUNUX01FTU9fQ0FDSEVfU0VOVElORUw7XG4gICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpO1xuICAgICAgICAgIHJldHVybiBOb3RQZW5kaW5nO1xuICAgICAgICB9LFxuICAgICAgICB1c2VPcHRpbWlzdGljOiBmdW5jdGlvbiAocGFzc3Rocm91Z2gpIHtcbiAgICAgICAgICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gICAgICAgICAgcmV0dXJuIFtwYXNzdGhyb3VnaCwgdW5zdXBwb3J0ZWRTZXRPcHRpbWlzdGljU3RhdGVdO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIEhvb2tzRGlzcGF0Y2hlci51c2VGb3JtU3RhdGUgPSB1c2VBY3Rpb25TdGF0ZTtcbiAgICBIb29rc0Rpc3BhdGNoZXIudXNlQWN0aW9uU3RhdGUgPSB1c2VBY3Rpb25TdGF0ZTtcbiAgICB2YXIgY3VycmVudFJlc3VtYWJsZVN0YXRlID0gbnVsbCxcbiAgICAgIGN1cnJlbnRUYXNrSW5ERVYgPSBudWxsLFxuICAgICAgRGVmYXVsdEFzeW5jRGlzcGF0Y2hlciA9IHtcbiAgICAgICAgZ2V0Q2FjaGVGb3JUeXBlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgICAgICB9LFxuICAgICAgICBnZXRPd25lcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBudWxsID09PSBjdXJyZW50VGFza0luREVWXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogY3VycmVudFRhc2tJbkRFVi5jb21wb25lbnRTdGFjaztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRpc2FibGVkRGVwdGggPSAwLFxuICAgICAgcHJldkxvZyxcbiAgICAgIHByZXZJbmZvLFxuICAgICAgcHJldldhcm4sXG4gICAgICBwcmV2RXJyb3IsXG4gICAgICBwcmV2R3JvdXAsXG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQsXG4gICAgICBwcmV2R3JvdXBFbmQ7XG4gICAgZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gITA7XG4gICAgdmFyIHByZWZpeCxcbiAgICAgIHN1ZmZpeCxcbiAgICAgIHJlZW50cnkgPSAhMTtcbiAgICB2YXIgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyAoXG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBXZWFrTWFwID8gV2Vha01hcCA6IE1hcFxuICAgICkoKTtcbiAgICB2YXIgY2FsbENvbXBvbmVudCA9IHtcbiAgICAgICAgXCJyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVcIjogZnVuY3Rpb24gKENvbXBvbmVudCwgcHJvcHMsIHNlY29uZEFyZykge1xuICAgICAgICAgIHJldHVybiBDb21wb25lbnQocHJvcHMsIHNlY29uZEFyZyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjYWxsQ29tcG9uZW50SW5ERVYgPVxuICAgICAgICBjYWxsQ29tcG9uZW50W1wicmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lXCJdLmJpbmQoY2FsbENvbXBvbmVudCksXG4gICAgICBjYWxsUmVuZGVyID0ge1xuICAgICAgICBcInJlYWN0LXN0YWNrLWJvdHRvbS1mcmFtZVwiOiBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjYWxsUmVuZGVySW5ERVYgPSBjYWxsUmVuZGVyW1wicmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lXCJdLmJpbmQoY2FsbFJlbmRlciksXG4gICAgICBjYWxsTGF6eUluaXQgPSB7XG4gICAgICAgIFwicmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lXCI6IGZ1bmN0aW9uIChsYXp5KSB7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Ll9pbml0O1xuICAgICAgICAgIHJldHVybiBpbml0KGxhenkuX3BheWxvYWQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2FsbExhenlJbml0SW5ERVYgPVxuICAgICAgICBjYWxsTGF6eUluaXRbXCJyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVcIl0uYmluZChjYWxsTGF6eUluaXQpLFxuICAgICAgQ0xJRU5UX1JFTkRFUkVEID0gNCxcbiAgICAgIFBFTkRJTkcgPSAwLFxuICAgICAgQ09NUExFVEVEID0gMSxcbiAgICAgIEZMVVNIRUQgPSAyLFxuICAgICAgUE9TVFBPTkVEID0gNSxcbiAgICAgIENMT1NFRCA9IDE0LFxuICAgICAgY3VycmVudFJlcXVlc3QgPSBudWxsLFxuICAgICAgZGlkV2FybkFib3V0QmFkQ2xhc3MgPSB7fSxcbiAgICAgIGRpZFdhcm5BYm91dENvbnRleHRUeXBlcyA9IHt9LFxuICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVPbkZ1bmN0aW9uQ29tcG9uZW50ID0ge30sXG4gICAgICBkaWRXYXJuQWJvdXRHZXREZXJpdmVkU3RhdGVPbkZ1bmN0aW9uQ29tcG9uZW50ID0ge30sXG4gICAgICBkaWRXYXJuQWJvdXRSZWFzc2lnbmluZ1Byb3BzID0gITEsXG4gICAgICBkaWRXYXJuQWJvdXRHZW5lcmF0b3JzID0gITEsXG4gICAgICBkaWRXYXJuQWJvdXRNYXBzID0gITE7XG4gICAgZW5zdXJlQ29ycmVjdElzb21vcnBoaWNSZWFjdFZlcnNpb24oKTtcbiAgICBlbnN1cmVDb3JyZWN0SXNvbW9ycGhpY1JlYWN0VmVyc2lvbigpO1xuICAgIGV4cG9ydHMucHJlcmVuZGVyID0gZnVuY3Rpb24gKGNoaWxkcmVuLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgb25IZWFkZXJzID0gb3B0aW9ucyA/IG9wdGlvbnMub25IZWFkZXJzIDogdm9pZCAwLFxuICAgICAgICAgIG9uSGVhZGVyc0ltcGw7XG4gICAgICAgIG9uSGVhZGVycyAmJlxuICAgICAgICAgIChvbkhlYWRlcnNJbXBsID0gZnVuY3Rpb24gKGhlYWRlcnNEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICBvbkhlYWRlcnMobmV3IEhlYWRlcnMoaGVhZGVyc0Rlc2NyaXB0b3IpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgdmFyIHJlc291cmNlcyA9IGNyZWF0ZVJlc3VtYWJsZVN0YXRlKFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMuaWRlbnRpZmllclByZWZpeCA6IHZvaWQgMCxcbiAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLnVuc3RhYmxlX2V4dGVybmFsUnVudGltZVNyYyA6IHZvaWQgMCxcbiAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLmJvb3RzdHJhcFNjcmlwdENvbnRlbnQgOiB2b2lkIDAsXG4gICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5ib290c3RyYXBTY3JpcHRzIDogdm9pZCAwLFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMuYm9vdHN0cmFwTW9kdWxlcyA6IHZvaWQgMFxuICAgICAgICAgICksXG4gICAgICAgICAgcmVxdWVzdCA9IGNyZWF0ZVByZXJlbmRlclJlcXVlc3QoXG4gICAgICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgICAgIHJlc291cmNlcyxcbiAgICAgICAgICAgIGNyZWF0ZVJlbmRlclN0YXRlKFxuICAgICAgICAgICAgICByZXNvdXJjZXMsXG4gICAgICAgICAgICAgIHZvaWQgMCxcbiAgICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMudW5zdGFibGVfZXh0ZXJuYWxSdW50aW1lU3JjIDogdm9pZCAwLFxuICAgICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5pbXBvcnRNYXAgOiB2b2lkIDAsXG4gICAgICAgICAgICAgIG9uSGVhZGVyc0ltcGwsXG4gICAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1heEhlYWRlcnNMZW5ndGggOiB2b2lkIDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjcmVhdGVSb290Rm9ybWF0Q29udGV4dChvcHRpb25zID8gb3B0aW9ucy5uYW1lc3BhY2VVUkkgOiB2b2lkIDApLFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMucHJvZ3Jlc3NpdmVDaHVua1NpemUgOiB2b2lkIDAsXG4gICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5vbkVycm9yIDogdm9pZCAwLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHByZWx1ZGU6IG5ldyBSZWFkYWJsZVN0cmVhbShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJieXRlc1wiLFxuICAgICAgICAgICAgICAgICAgICBwdWxsOiBmdW5jdGlvbiAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Rmxvd2luZyhyZXF1ZXN0LCBjb250cm9sbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsOiBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgYWJvcnQocmVxdWVzdCwgcmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHsgaGlnaFdhdGVyTWFyazogMCB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgcmVqZWN0LFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMub25Qb3N0cG9uZSA6IHZvaWQgMFxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgICAgICAgdmFyIHNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsO1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkgYWJvcnQocmVxdWVzdCwgc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGFib3J0KHJlcXVlc3QsIHNpZ25hbC5yZWFzb24pO1xuICAgICAgICAgICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRXb3JrKHJlcXVlc3QpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBleHBvcnRzLnJlbmRlclRvUmVhZGFibGVTdHJlYW0gPSBmdW5jdGlvbiAoY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHZhciBvbkZhdGFsRXJyb3IsXG4gICAgICAgICAgb25BbGxSZWFkeSxcbiAgICAgICAgICBhbGxSZWFkeSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXMsIHJlaikge1xuICAgICAgICAgICAgb25BbGxSZWFkeSA9IHJlcztcbiAgICAgICAgICAgIG9uRmF0YWxFcnJvciA9IHJlajtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBvbkhlYWRlcnMgPSBvcHRpb25zID8gb3B0aW9ucy5vbkhlYWRlcnMgOiB2b2lkIDAsXG4gICAgICAgICAgb25IZWFkZXJzSW1wbDtcbiAgICAgICAgb25IZWFkZXJzICYmXG4gICAgICAgICAgKG9uSGVhZGVyc0ltcGwgPSBmdW5jdGlvbiAoaGVhZGVyc0Rlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIG9uSGVhZGVycyhuZXcgSGVhZGVycyhoZWFkZXJzRGVzY3JpcHRvcikpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB2YXIgcmVzdW1hYmxlU3RhdGUgPSBjcmVhdGVSZXN1bWFibGVTdGF0ZShcbiAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLmlkZW50aWZpZXJQcmVmaXggOiB2b2lkIDAsXG4gICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy51bnN0YWJsZV9leHRlcm5hbFJ1bnRpbWVTcmMgOiB2b2lkIDAsXG4gICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5ib290c3RyYXBTY3JpcHRDb250ZW50IDogdm9pZCAwLFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMuYm9vdHN0cmFwU2NyaXB0cyA6IHZvaWQgMCxcbiAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLmJvb3RzdHJhcE1vZHVsZXMgOiB2b2lkIDBcbiAgICAgICAgICApLFxuICAgICAgICAgIHJlcXVlc3QgPSBjcmVhdGVSZXF1ZXN0KFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgIGNyZWF0ZVJlbmRlclN0YXRlKFxuICAgICAgICAgICAgICByZXN1bWFibGVTdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDAsXG4gICAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLnVuc3RhYmxlX2V4dGVybmFsUnVudGltZVNyYyA6IHZvaWQgMCxcbiAgICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMuaW1wb3J0TWFwIDogdm9pZCAwLFxuICAgICAgICAgICAgICBvbkhlYWRlcnNJbXBsLFxuICAgICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5tYXhIZWFkZXJzTGVuZ3RoIDogdm9pZCAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY3JlYXRlUm9vdEZvcm1hdENvbnRleHQob3B0aW9ucyA/IG9wdGlvbnMubmFtZXNwYWNlVVJJIDogdm9pZCAwKSxcbiAgICAgICAgICAgIG9wdGlvbnMgPyBvcHRpb25zLnByb2dyZXNzaXZlQ2h1bmtTaXplIDogdm9pZCAwLFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMub25FcnJvciA6IHZvaWQgMCxcbiAgICAgICAgICAgIG9uQWxsUmVhZHksXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBzdHJlYW0gPSBuZXcgUmVhZGFibGVTdHJlYW0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJieXRlc1wiLFxuICAgICAgICAgICAgICAgICAgcHVsbDogZnVuY3Rpb24gKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRGbG93aW5nKHJlcXVlc3QsIGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgYWJvcnQocmVxdWVzdCwgcmVhc29uKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgaGlnaFdhdGVyTWFyazogMCB9XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHN0cmVhbS5hbGxSZWFkeSA9IGFsbFJlYWR5O1xuICAgICAgICAgICAgICByZXNvbHZlKHN0cmVhbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGFsbFJlYWR5LmNhdGNoKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkZhdGFsRXJyb3IsXG4gICAgICAgICAgICBvcHRpb25zID8gb3B0aW9ucy5vblBvc3Rwb25lIDogdm9pZCAwLFxuICAgICAgICAgICAgb3B0aW9ucyA/IG9wdGlvbnMuZm9ybVN0YXRlIDogdm9pZCAwXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zaWduYWwpIHtcbiAgICAgICAgICB2YXIgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XG4gICAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSBhYm9ydChyZXF1ZXN0LCBzaWduYWwucmVhc29uKTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgYWJvcnQocmVxdWVzdCwgc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgbGlzdGVuZXIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgbGlzdGVuZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGFydFdvcmsocmVxdWVzdCk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGV4cG9ydHMudmVyc2lvbiA9IFwiMTkuMC4wXCI7XG4gIH0pKCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-dom/cjs/react-dom-server.browser.development.js\n"));
/***/ }),
/***/ "./node_modules/react-dom/server.browser.js":
/*!**************************************************!*\
!*** ./node_modules/react-dom/server.browser.js ***!
\**************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nvar l, s;\nif (false) {} else {\n l = __webpack_require__(/*! ./cjs/react-dom-server-legacy.browser.development.js */ \"./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js\");\n s = __webpack_require__(/*! ./cjs/react-dom-server.browser.development.js */ \"./node_modules/react-dom/cjs/react-dom-server.browser.development.js\");\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToReadableStream = s.renderToReadableStream;\nif (s.resume) {\n exports.resume = s.resume;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3NlcnZlci5icm93c2VyLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0EsSUFBSSxLQUFxQyxFQUFFLEVBRzFDLENBQUM7QUFDRixNQUFNLG1CQUFPLENBQUMseUlBQXNEO0FBQ3BFLE1BQU0sbUJBQU8sQ0FBQywySEFBK0M7QUFDN0Q7O0FBRUEsZUFBZTtBQUNmLHNCQUFzQjtBQUN0Qiw0QkFBNEI7QUFDNUIsOEJBQThCO0FBQzlCO0FBQ0EsRUFBRSxjQUFjO0FBQ2hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vc2VydmVyLmJyb3dzZXIuanM/OTY2MiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciBsLCBzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbCA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS1zZXJ2ZXItbGVnYWN5LmJyb3dzZXIucHJvZHVjdGlvbi5qcycpO1xuICBzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIGwgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20tc2VydmVyLWxlZ2FjeS5icm93c2VyLmRldmVsb3BtZW50LmpzJyk7XG4gIHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20tc2VydmVyLmJyb3dzZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cblxuZXhwb3J0cy52ZXJzaW9uID0gbC52ZXJzaW9uO1xuZXhwb3J0cy5yZW5kZXJUb1N0cmluZyA9IGwucmVuZGVyVG9TdHJpbmc7XG5leHBvcnRzLnJlbmRlclRvU3RhdGljTWFya3VwID0gbC5yZW5kZXJUb1N0YXRpY01hcmt1cDtcbmV4cG9ydHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbSA9IHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtcbmlmIChzLnJlc3VtZSkge1xuICBleHBvcnRzLnJlc3VtZSA9IHMucmVzdW1lO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-dom/server.browser.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/components/Context.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/components/Context.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReactReduxContext: function() { return /* binding */ ReactReduxContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst ReactReduxContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\n\nif (true) {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ReactReduxContext);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Db250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEwQjtBQUNuQix1Q0FBdUMsMERBQW1COztBQUVqRSxJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7O0FBRUEsK0RBQWUsaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL0NvbnRleHQuanM/NGJlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGNvbnN0IFJlYWN0UmVkdXhDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFJlYWN0UmVkdXhDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1JlYWN0UmVkdXgnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlZHV4Q29udGV4dDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/components/Context.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/components/Provider.js":
/*!************************************************************!*\
!*** ./node_modules/react-redux/es/components/Provider.js ***!
\************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ \"./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n\n\n\n\n\nfunction Provider({\n store,\n context,\n children,\n serverState\n}) {\n const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {\n const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined\n };\n }, [store, serverState]);\n const previousState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => store.getState(), [store]);\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Provider);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Qcm92aWRlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBdUM7QUFDTztBQUNhO0FBQ29COztBQUUvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELHVCQUF1Qiw4Q0FBTztBQUM5Qix5QkFBeUIsdUVBQWtCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsd0JBQXdCLDhDQUFPO0FBQy9CLEVBQUUsMkZBQXlCO0FBQzNCO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsNkJBQTZCLHVEQUFpQixFQUFFOztBQUVoRCxzQkFBc0IsMERBQW1CO0FBQ3pDO0FBQ0EsR0FBRztBQUNIOztBQUVBLCtEQUFlLFFBQVEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2NvbXBvbmVudHMvUHJvdmlkZXIuanM/ZGJiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCB7IGNyZWF0ZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uL3V0aWxzL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IH0gZnJvbSAnLi4vdXRpbHMvdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCc7XG5cbmZ1bmN0aW9uIFByb3ZpZGVyKHtcbiAgc3RvcmUsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICBzZXJ2ZXJTdGF0ZVxufSkge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBjcmVhdGVTdWJzY3JpcHRpb24oc3RvcmUpO1xuICAgIHJldHVybiB7XG4gICAgICBzdG9yZSxcbiAgICAgIHN1YnNjcmlwdGlvbixcbiAgICAgIGdldFNlcnZlclN0YXRlOiBzZXJ2ZXJTdGF0ZSA/ICgpID0+IHNlcnZlclN0YXRlIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgfSwgW3N0b3JlLCBzZXJ2ZXJTdGF0ZV0pO1xuICBjb25zdCBwcmV2aW91c1N0YXRlID0gdXNlTWVtbygoKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLCBbc3RvcmVdKTtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgc3Vic2NyaXB0aW9uXG4gICAgfSA9IGNvbnRleHRWYWx1ZTtcbiAgICBzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSA9IHN1YnNjcmlwdGlvbi5ub3RpZnlOZXN0ZWRTdWJzO1xuICAgIHN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKTtcblxuICAgIGlmIChwcmV2aW91c1N0YXRlICE9PSBzdG9yZS5nZXRTdGF0ZSgpKSB7XG4gICAgICBzdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3VicygpO1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgIHN1YnNjcmlwdGlvbi5vblN0YXRlQ2hhbmdlID0gdW5kZWZpbmVkO1xuICAgIH07XG4gIH0sIFtjb250ZXh0VmFsdWUsIHByZXZpb3VzU3RhdGVdKTtcbiAgY29uc3QgQ29udGV4dCA9IGNvbnRleHQgfHwgUmVhY3RSZWR1eENvbnRleHQ7IC8vIEB0cy1pZ25vcmUgJ0FueUFjdGlvbicgaXMgYXNzaWduYWJsZSB0byB0aGUgY29uc3RyYWludCBvZiB0eXBlICdBJywgYnV0ICdBJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlXG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlXG4gIH0sIGNoaWxkcmVuKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvdmlkZXI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/components/Provider.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/components/connect.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/components/connect.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeConnect: function() { return /* binding */ initializeConnect; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ \"./node_modules/react-redux/node_modules/react-is/index.js\");\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_is__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../connect/selectorFactory */ \"./node_modules/react-redux/es/connect/selectorFactory.js\");\n/* harmony import */ var _connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../connect/mapDispatchToProps */ \"./node_modules/react-redux/es/connect/mapDispatchToProps.js\");\n/* harmony import */ var _connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../connect/mapStateToProps */ \"./node_modules/react-redux/es/connect/mapStateToProps.js\");\n/* harmony import */ var _connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../connect/mergeProps */ \"./node_modules/react-redux/es/connect/mergeProps.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/Subscription */ \"./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/shallowEqual */ \"./node_modules/react-redux/es/utils/shallowEqual.js\");\n/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/warning */ \"./node_modules/react-redux/es/utils/warning.js\");\n/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ \"./node_modules/react-redux/es/utils/useSyncExternalStore.js\");\n\n\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\n\n\n\n\n\n\n\n\n\n\n\n\n\nlet useSyncExternalStore = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__.notInitialized;\nconst initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n areStatePropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n areMergedPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = _Context__WEBPACK_IMPORTED_MODULE_13__.ReactReduxContext\n} = {}) {\n if (true) {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n (0,_utils_warning__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = (0,_connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__.mapStateToPropsFactory)(mapStateToProps);\n const initMapDispatchToProps = (0,_connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__.mapDispatchToPropsFactory)(mapDispatchToProps);\n const initMergeProps = (0,_connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__.mergePropsFactory)(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useContext)(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if ( true && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return (0,_connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_9__.createSubscription)(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n const lastWrapperProps = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(wrapperProps);\n const childPropsFromStoreUpdate = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n const renderIsScheduled = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);\n const isProcessingDispatch = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);\n const isMounted = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);\n const latestSubscriptionCallbackError = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n react__WEBPACK_IMPORTED_MODULE_3___default().createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = (0,react__WEBPACK_IMPORTED_MODULE_3__.useMemo)(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = react__WEBPACK_IMPORTED_MODULE_3___default().memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = react__WEBPACK_IMPORTED_MODULE_3___default().forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default().createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent);\n }\n\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (connect);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9jb25uZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDMEM7QUFDcEc7O0FBRUE7QUFDbUQ7QUFDUTtBQUNNO0FBQ0Q7QUFDVTtBQUNOO0FBQ1Y7QUFDQztBQUNvQjtBQUM5QjtBQUNWO0FBQ087QUFDaUI7QUFDL0QsMkJBQTJCLHdFQUFjO0FBQ2xDO0FBQ1A7QUFDQSxHQUFHOztBQUVIO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsNEZBQXlCO0FBQzNCLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0EsK0JBQStCO0FBQy9COztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7OztBQUdGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUEscUJBQXFCLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlCQUF5Qix1REFBZ0I7QUFDekM7QUFDQSw0QkFBNEIsMERBQW1CLFVBQVUsOEVBQVEsR0FBRztBQUNwRTtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOERBQVk7QUFDekI7O0FBRUEsV0FBVyw4REFBWTtBQUN2Qjs7QUFFQTtBQUNBOztBQUVBLCtEQUFlLE9BQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2NvbXBvbmVudHMvY29ubmVjdC5qcz84NWE4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJyZWFjdFJlZHV4Rm9yd2FyZGVkUmVmXCJdO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5pbXBvcnQgaG9pc3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc1ZhbGlkRWxlbWVudFR5cGUsIGlzQ29udGV4dENvbnN1bWVyIH0gZnJvbSAncmVhY3QtaXMnO1xuaW1wb3J0IGRlZmF1bHRTZWxlY3RvckZhY3RvcnkgZnJvbSAnLi4vY29ubmVjdC9zZWxlY3RvckZhY3RvcnknO1xuaW1wb3J0IHsgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2Nvbm5lY3QvbWFwRGlzcGF0Y2hUb1Byb3BzJztcbmltcG9ydCB7IG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcnkgfSBmcm9tICcuLi9jb25uZWN0L21hcFN0YXRlVG9Qcm9wcyc7XG5pbXBvcnQgeyBtZXJnZVByb3BzRmFjdG9yeSB9IGZyb20gJy4uL2Nvbm5lY3QvbWVyZ2VQcm9wcyc7XG5pbXBvcnQgeyBjcmVhdGVTdWJzY3JpcHRpb24gfSBmcm9tICcuLi91dGlscy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCB9IGZyb20gJy4uL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QnO1xuaW1wb3J0IHNoYWxsb3dFcXVhbCBmcm9tICcuLi91dGlscy9zaGFsbG93RXF1YWwnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnLi4vdXRpbHMvd2FybmluZyc7XG5pbXBvcnQgeyBSZWFjdFJlZHV4Q29udGV4dCB9IGZyb20gJy4vQ29udGV4dCc7XG5pbXBvcnQgeyBub3RJbml0aWFsaXplZCB9IGZyb20gJy4uL3V0aWxzL3VzZVN5bmNFeHRlcm5hbFN0b3JlJztcbmxldCB1c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IG5vdEluaXRpYWxpemVkO1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVDb25uZWN0ID0gZm4gPT4ge1xuICB1c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IGZuO1xufTsgLy8gRGVmaW5lIHNvbWUgY29uc3RhbnQgYXJyYXlzIGp1c3QgdG8gYXZvaWQgcmUtY3JlYXRpbmcgdGhlc2VcblxuY29uc3QgRU1QVFlfQVJSQVkgPSBbbnVsbCwgMF07XG5jb25zdCBOT19TVUJTQ1JJUFRJT05fQVJSQVkgPSBbbnVsbCwgbnVsbF07IC8vIEF0dGVtcHRzIHRvIHN0cmluZ2lmeSB3aGF0ZXZlciBub3QtcmVhbGx5LWEtY29tcG9uZW50IHZhbHVlIHdlIHdlcmUgZ2l2ZW5cbi8vIGZvciBsb2dnaW5nIGluIGFuIGVycm9yIG1lc3NhZ2VcblxuY29uc3Qgc3RyaW5naWZ5Q29tcG9uZW50ID0gQ29tcCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KENvbXApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gU3RyaW5nKENvbXApO1xuICB9XG59O1xuXG4vLyBUaGlzIGlzIFwianVzdFwiIGEgYHVzZUxheW91dEVmZmVjdGAsIGJ1dCB3aXRoIHR3byBtb2RpZmljYXRpb25zOlxuLy8gLSB3ZSBuZWVkIHRvIGZhbGwgYmFjayB0byBgdXNlRWZmZWN0YCBpbiBTU1IgdG8gYXZvaWQgYW5ub3lpbmcgd2FybmluZ3Ncbi8vIC0gd2UgZXh0cmFjdCB0aGlzIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gYXZvaWQgY2xvc2luZyBvdmVyIHZhbHVlc1xuLy8gICBhbmQgY2F1c2luZyBtZW1vcnkgbGVha3NcbmZ1bmN0aW9uIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3RXaXRoQXJncyhlZmZlY3RGdW5jLCBlZmZlY3RBcmdzLCBkZXBlbmRlbmNpZXMpIHtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiBlZmZlY3RGdW5jKC4uLmVmZmVjdEFyZ3MpLCBkZXBlbmRlbmNpZXMpO1xufSAvLyBFZmZlY3QgY2FsbGJhY2ssIGV4dHJhY3RlZDogYXNzaWduIHRoZSBsYXRlc3QgcHJvcHMgdmFsdWVzIHRvIHJlZnMgZm9yIGxhdGVyIHVzYWdlXG5cblxuZnVuY3Rpb24gY2FwdHVyZVdyYXBwZXJQcm9wcyhsYXN0V3JhcHBlclByb3BzLCBsYXN0Q2hpbGRQcm9wcywgcmVuZGVySXNTY2hlZHVsZWQsIHdyYXBwZXJQcm9wcywgLy8gYWN0dWFsQ2hpbGRQcm9wczogdW5rbm93bixcbmNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUsIG5vdGlmeU5lc3RlZFN1YnMpIHtcbiAgLy8gV2Ugd2FudCB0byBjYXB0dXJlIHRoZSB3cmFwcGVyIHByb3BzIGFuZCBjaGlsZCBwcm9wcyB3ZSB1c2VkIGZvciBsYXRlciBjb21wYXJpc29uc1xuICBsYXN0V3JhcHBlclByb3BzLmN1cnJlbnQgPSB3cmFwcGVyUHJvcHM7XG4gIHJlbmRlcklzU2NoZWR1bGVkLmN1cnJlbnQgPSBmYWxzZTsgLy8gSWYgdGhlIHJlbmRlciB3YXMgZnJvbSBhIHN0b3JlIHVwZGF0ZSwgY2xlYXIgb3V0IHRoYXQgcmVmZXJlbmNlIGFuZCBjYXNjYWRlIHRoZSBzdWJzY3JpYmVyIHVwZGF0ZVxuXG4gIGlmIChjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLmN1cnJlbnQpIHtcbiAgICBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLmN1cnJlbnQgPSBudWxsO1xuICAgIG5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgfVxufSAvLyBFZmZlY3QgY2FsbGJhY2ssIGV4dHJhY3RlZDogc3Vic2NyaWJlIHRvIHRoZSBSZWR1eCBzdG9yZSBvciBuZWFyZXN0IGNvbm5lY3RlZCBhbmNlc3Rvcixcbi8vIGNoZWNrIGZvciB1cGRhdGVzIGFmdGVyIGRpc3BhdGNoZWQgYWN0aW9ucywgYW5kIHRyaWdnZXIgcmUtcmVuZGVycy5cblxuXG5mdW5jdGlvbiBzdWJzY3JpYmVVcGRhdGVzKHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcywgc3RvcmUsIHN1YnNjcmlwdGlvbiwgY2hpbGRQcm9wc1NlbGVjdG9yLCBsYXN0V3JhcHBlclByb3BzLCBsYXN0Q2hpbGRQcm9wcywgcmVuZGVySXNTY2hlZHVsZWQsIGlzTW91bnRlZCwgY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZSwgbm90aWZ5TmVzdGVkU3VicywgLy8gZm9yY2VDb21wb25lbnRVcGRhdGVEaXNwYXRjaDogUmVhY3QuRGlzcGF0Y2g8YW55PixcbmFkZGl0aW9uYWxTdWJzY3JpYmVMaXN0ZW5lcikge1xuICAvLyBJZiB3ZSdyZSBub3Qgc3Vic2NyaWJlZCB0byB0aGUgc3RvcmUsIG5vdGhpbmcgdG8gZG8gaGVyZVxuICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuICgpID0+IHt9OyAvLyBDYXB0dXJlIHZhbHVlcyBmb3IgY2hlY2tpbmcgaWYgYW5kIHdoZW4gdGhpcyBjb21wb25lbnQgdW5tb3VudHNcblxuICBsZXQgZGlkVW5zdWJzY3JpYmUgPSBmYWxzZTtcbiAgbGV0IGxhc3RUaHJvd25FcnJvciA9IG51bGw7IC8vIFdlJ2xsIHJ1biB0aGlzIGNhbGxiYWNrIGV2ZXJ5IHRpbWUgYSBzdG9yZSBzdWJzY3JpcHRpb24gdXBkYXRlIHByb3BhZ2F0ZXMgdG8gdGhpcyBjb21wb25lbnRcblxuICBjb25zdCBjaGVja0ZvclVwZGF0ZXMgPSAoKSA9PiB7XG4gICAgaWYgKGRpZFVuc3Vic2NyaWJlIHx8ICFpc01vdW50ZWQuY3VycmVudCkge1xuICAgICAgLy8gRG9uJ3QgcnVuIHN0YWxlIGxpc3RlbmVycy5cbiAgICAgIC8vIFJlZHV4IGRvZXNuJ3QgZ3VhcmFudGVlIHVuc3Vic2NyaXB0aW9ucyBoYXBwZW4gdW50aWwgbmV4dCBkaXNwYXRjaC5cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFRPRE8gV2UncmUgY3VycmVudGx5IGNhbGxpbmcgZ2V0U3RhdGUgb3Vyc2VsdmVzIGhlcmUsIHJhdGhlciB0aGFuIGxldHRpbmcgYHVTRVNgIGRvIGl0XG5cblxuICAgIGNvbnN0IGxhdGVzdFN0b3JlU3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGxldCBuZXdDaGlsZFByb3BzLCBlcnJvcjtcblxuICAgIHRyeSB7XG4gICAgICAvLyBBY3R1YWxseSBydW4gdGhlIHNlbGVjdG9yIHdpdGggdGhlIG1vc3QgcmVjZW50IHN0b3JlIHN0YXRlIGFuZCB3cmFwcGVyIHByb3BzXG4gICAgICAvLyB0byBkZXRlcm1pbmUgd2hhdCB0aGUgY2hpbGQgcHJvcHMgc2hvdWxkIGJlXG4gICAgICBuZXdDaGlsZFByb3BzID0gY2hpbGRQcm9wc1NlbGVjdG9yKGxhdGVzdFN0b3JlU3RhdGUsIGxhc3RXcmFwcGVyUHJvcHMuY3VycmVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyb3IgPSBlO1xuICAgICAgbGFzdFRocm93bkVycm9yID0gZTtcbiAgICB9XG5cbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICBsYXN0VGhyb3duRXJyb3IgPSBudWxsO1xuICAgIH0gLy8gSWYgdGhlIGNoaWxkIHByb3BzIGhhdmVuJ3QgY2hhbmdlZCwgbm90aGluZyB0byBkbyBoZXJlIC0gY2FzY2FkZSB0aGUgc3Vic2NyaXB0aW9uIHVwZGF0ZVxuXG5cbiAgICBpZiAobmV3Q2hpbGRQcm9wcyA9PT0gbGFzdENoaWxkUHJvcHMuY3VycmVudCkge1xuICAgICAgaWYgKCFyZW5kZXJJc1NjaGVkdWxlZC5jdXJyZW50KSB7XG4gICAgICAgIG5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2F2ZSByZWZlcmVuY2VzIHRvIHRoZSBuZXcgY2hpbGQgcHJvcHMuICBOb3RlIHRoYXQgd2UgdHJhY2sgdGhlIFwiY2hpbGQgcHJvcHMgZnJvbSBzdG9yZSB1cGRhdGVcIlxuICAgICAgLy8gYXMgYSByZWYgaW5zdGVhZCBvZiBhIHVzZVN0YXRlL3VzZVJlZHVjZXIgYmVjYXVzZSB3ZSBuZWVkIGEgd2F5IHRvIGRldGVybWluZSBpZiB0aGF0IHZhbHVlIGhhc1xuICAgICAgLy8gYmVlbiBwcm9jZXNzZWQuICBJZiB0aGlzIHdlbnQgaW50byB1c2VTdGF0ZS91c2VSZWR1Y2VyLCB3ZSBjb3VsZG4ndCBjbGVhciBvdXQgdGhlIHZhbHVlIHdpdGhvdXRcbiAgICAgIC8vIGZvcmNpbmcgYW5vdGhlciByZS1yZW5kZXIsIHdoaWNoIHdlIGRvbid0IHdhbnQuXG4gICAgICBsYXN0Q2hpbGRQcm9wcy5jdXJyZW50ID0gbmV3Q2hpbGRQcm9wcztcbiAgICAgIGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUuY3VycmVudCA9IG5ld0NoaWxkUHJvcHM7XG4gICAgICByZW5kZXJJc1NjaGVkdWxlZC5jdXJyZW50ID0gdHJ1ZTsgLy8gVE9ETyBUaGlzIGlzIGhhY2t5IGFuZCBub3QgaG93IGB1U0VTYCBpcyBtZWFudCB0byBiZSB1c2VkXG4gICAgICAvLyBUcmlnZ2VyIHRoZSBSZWFjdCBgdXNlU3luY0V4dGVybmFsU3RvcmVgIHN1YnNjcmliZXJcblxuICAgICAgYWRkaXRpb25hbFN1YnNjcmliZUxpc3RlbmVyKCk7XG4gICAgfVxuICB9OyAvLyBBY3R1YWxseSBzdWJzY3JpYmUgdG8gdGhlIG5lYXJlc3QgY29ubmVjdGVkIGFuY2VzdG9yIChvciBzdG9yZSlcblxuXG4gIHN1YnNjcmlwdGlvbi5vblN0YXRlQ2hhbmdlID0gY2hlY2tGb3JVcGRhdGVzO1xuICBzdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7IC8vIFB1bGwgZGF0YSBmcm9tIHRoZSBzdG9yZSBhZnRlciBmaXJzdCByZW5kZXIgaW4gY2FzZSB0aGUgc3RvcmUgaGFzXG4gIC8vIGNoYW5nZWQgc2luY2Ugd2UgYmVnYW4uXG5cbiAgY2hlY2tGb3JVcGRhdGVzKCk7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmVXcmFwcGVyID0gKCkgPT4ge1xuICAgIGRpZFVuc3Vic2NyaWJlID0gdHJ1ZTtcbiAgICBzdWJzY3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICBzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSA9IG51bGw7XG5cbiAgICBpZiAobGFzdFRocm93bkVycm9yKSB7XG4gICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgY2F1Z2h0IGFuIGVycm9yIGR1ZSB0byBhIGJhZCBtYXBTdGF0ZSBmdW5jdGlvbiwgYnV0IHRoZVxuICAgICAgLy8gcGFyZW50IHJlLXJlbmRlcmVkIHdpdGhvdXQgdGhpcyBjb21wb25lbnQgYW5kIHdlJ3JlIGFib3V0IHRvIHVubW91bnQuXG4gICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYXMgbG9uZyBhcyB3ZSBkbyB0b3AtZG93biBzdWJzY3JpcHRpb25zIGNvcnJlY3RseSwgYnV0XG4gICAgICAvLyBpZiB3ZSBldmVyIGRvIHRob3NlIHdyb25nLCB0aGlzIHRocm93IHdpbGwgc3VyZmFjZSB0aGUgZXJyb3IgaW4gb3VyIHRlc3RzLlxuICAgICAgLy8gSW4gdGhhdCBjYXNlLCB0aHJvdyB0aGUgZXJyb3IgZnJvbSBoZXJlIHNvIGl0IGRvZXNuJ3QgZ2V0IGxvc3QuXG4gICAgICB0aHJvdyBsYXN0VGhyb3duRXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1bnN1YnNjcmliZVdyYXBwZXI7XG59IC8vIFJlZHVjZXIgaW5pdGlhbCBzdGF0ZSBjcmVhdGlvbiBmb3Igb3VyIHVwZGF0ZSByZWR1Y2VyXG5cblxuY29uc3QgaW5pdFN0YXRlVXBkYXRlcyA9ICgpID0+IEVNUFRZX0FSUkFZO1xuXG5mdW5jdGlvbiBzdHJpY3RFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhID09PSBiO1xufVxuLyoqXHJcbiAqIEluZmVycyB0aGUgdHlwZSBvZiBwcm9wcyB0aGF0IGEgY29ubmVjdG9yIHdpbGwgaW5qZWN0IGludG8gYSBjb21wb25lbnQuXHJcbiAqL1xuXG5cbmxldCBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRQdXJlT3B0aW9uID0gZmFsc2U7XG4vKipcclxuICogQ29ubmVjdHMgYSBSZWFjdCBjb21wb25lbnQgdG8gYSBSZWR1eCBzdG9yZS5cclxuICpcclxuICogLSBXaXRob3V0IGFyZ3VtZW50cywganVzdCB3cmFwcyB0aGUgY29tcG9uZW50LCB3aXRob3V0IGNoYW5naW5nIHRoZSBiZWhhdmlvciAvIHByb3BzXHJcbiAqXHJcbiAqIC0gSWYgMiBwYXJhbXMgYXJlIHBhc3NlZCAoM3JkIHBhcmFtLCBtZXJnZVByb3BzLCBpcyBza2lwcGVkKSwgZGVmYXVsdCBiZWhhdmlvclxyXG4gKiBpcyB0byBvdmVycmlkZSBvd25Qcm9wcyAoYXMgc3RhdGVkIGluIHRoZSBkb2NzKSwgc28gd2hhdCByZW1haW5zIGlzIGV2ZXJ5dGhpbmcgdGhhdCdzXHJcbiAqIG5vdCBhIHN0YXRlIG9yIGRpc3BhdGNoIHByb3BcclxuICpcclxuICogLSBXaGVuIDNyZCBwYXJhbSBpcyBwYXNzZWQsIHdlIGRvbid0IGtub3cgaWYgb3duUHJvcHMgcHJvcGFnYXRlIGFuZCB3aGV0aGVyIHRoZXlcclxuICogc2hvdWxkIGJlIHZhbGlkIGNvbXBvbmVudCBwcm9wcywgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIG1lcmdlUHJvcHMgaW1wbGVtZW50YXRpb24uXHJcbiAqIEFzIHN1Y2gsIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZXh0ZW5kIG93blByb3BzIGludGVyZmFjZSBmcm9tIHN0YXRlIG9yXHJcbiAqIGRpc3BhdGNoIHByb3BzIG9yIGJvdGggd2hlbiBhcHBsaWNhYmxlXHJcbiAqXHJcbiAqIEBwYXJhbSBtYXBTdGF0ZVRvUHJvcHMgQSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIHZhbHVlcyBmcm9tIHN0YXRlXHJcbiAqIEBwYXJhbSBtYXBEaXNwYXRjaFRvUHJvcHMgU2V0dXAgZm9yIGRpc3BhdGNoaW5nIGFjdGlvbnNcclxuICogQHBhcmFtIG1lcmdlUHJvcHMgT3B0aW9uYWwgY2FsbGJhY2sgdG8gbWVyZ2Ugc3RhdGUgYW5kIGRpc3BhdGNoIHByb3BzIHRvZ2V0aGVyXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBjb25uZWN0aW9uXHJcbiAqXHJcbiAqL1xuXG5mdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCB7XG4gIC8vIFRoZSBgcHVyZWAgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWQsIHNvIFRTIGRvZXNuJ3QgbGlrZSB1cyBkZXN0cnVjdHVyaW5nIHRoaXMgdG8gY2hlY2sgaXRzIGV4aXN0ZW5jZS5cbiAgLy8gQHRzLWlnbm9yZVxuICBwdXJlLFxuICBhcmVTdGF0ZXNFcXVhbCA9IHN0cmljdEVxdWFsLFxuICBhcmVPd25Qcm9wc0VxdWFsID0gc2hhbGxvd0VxdWFsLFxuICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBzaGFsbG93RXF1YWwsXG4gIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBzaGFsbG93RXF1YWwsXG4gIC8vIHVzZSBSZWFjdCdzIGZvcndhcmRSZWYgdG8gZXhwb3NlIGEgcmVmIG9mIHRoZSB3cmFwcGVkIGNvbXBvbmVudFxuICBmb3J3YXJkUmVmID0gZmFsc2UsXG4gIC8vIHRoZSBjb250ZXh0IGNvbnN1bWVyIHRvIHVzZVxuICBjb250ZXh0ID0gUmVhY3RSZWR1eENvbnRleHRcbn0gPSB7fSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChwdXJlICE9PSB1bmRlZmluZWQgJiYgIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZFB1cmVPcHRpb24pIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZFB1cmVPcHRpb24gPSB0cnVlO1xuICAgICAgd2FybmluZygnVGhlIGBwdXJlYCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gYGNvbm5lY3RgIGlzIG5vdyBhbHdheXMgYSBcInB1cmUvbWVtb2l6ZWRcIiBjb21wb25lbnQnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBDb250ZXh0ID0gY29udGV4dDtcbiAgY29uc3QgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcnkobWFwU3RhdGVUb1Byb3BzKTtcbiAgY29uc3QgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcnkobWFwRGlzcGF0Y2hUb1Byb3BzKTtcbiAgY29uc3QgaW5pdE1lcmdlUHJvcHMgPSBtZXJnZVByb3BzRmFjdG9yeShtZXJnZVByb3BzKTtcbiAgY29uc3Qgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzID0gQm9vbGVhbihtYXBTdGF0ZVRvUHJvcHMpO1xuXG4gIGNvbnN0IHdyYXBXaXRoQ29ubmVjdCA9IFdyYXBwZWRDb21wb25lbnQgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFpc1ZhbGlkRWxlbWVudFR5cGUoV3JhcHBlZENvbXBvbmVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIGNvbXBvbmVudCB0byB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgY29ubmVjdC4gSW5zdGVhZCByZWNlaXZlZCAke3N0cmluZ2lmeUNvbXBvbmVudChXcmFwcGVkQ29tcG9uZW50KX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB3cmFwcGVkQ29tcG9uZW50TmFtZSA9IFdyYXBwZWRDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gYENvbm5lY3QoJHt3cmFwcGVkQ29tcG9uZW50TmFtZX0pYDtcbiAgICBjb25zdCBzZWxlY3RvckZhY3RvcnlPcHRpb25zID0ge1xuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzLFxuICAgICAgZGlzcGxheU5hbWUsXG4gICAgICB3cmFwcGVkQ29tcG9uZW50TmFtZSxcbiAgICAgIFdyYXBwZWRDb21wb25lbnQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpbml0TWFwU3RhdGVUb1Byb3BzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICAgIGluaXRNZXJnZVByb3BzLFxuICAgICAgYXJlU3RhdGVzRXF1YWwsXG4gICAgICBhcmVTdGF0ZVByb3BzRXF1YWwsXG4gICAgICBhcmVPd25Qcm9wc0VxdWFsLFxuICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBDb25uZWN0RnVuY3Rpb24ocHJvcHMpIHtcbiAgICAgIGNvbnN0IFtwcm9wc0NvbnRleHQsIHJlYWN0UmVkdXhGb3J3YXJkZWRSZWYsIHdyYXBwZXJQcm9wc10gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgLy8gRGlzdGluZ3Vpc2ggYmV0d2VlbiBhY3R1YWwgXCJkYXRhXCIgcHJvcHMgdGhhdCB3ZXJlIHBhc3NlZCB0byB0aGUgd3JhcHBlciBjb21wb25lbnQsXG4gICAgICAgIC8vIGFuZCB2YWx1ZXMgbmVlZGVkIHRvIGNvbnRyb2wgYmVoYXZpb3IgKGZvcndhcmRlZCByZWZzLCBhbHRlcm5hdGUgY29udGV4dCBpbnN0YW5jZXMpLlxuICAgICAgICAvLyBUbyBtYWludGFpbiB0aGUgd3JhcHBlclByb3BzIG9iamVjdCByZWZlcmVuY2UsIG1lbW9pemUgdGhpcyBkZXN0cnVjdHVyaW5nLlxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcmVhY3RSZWR1eEZvcndhcmRlZFJlZlxuICAgICAgICB9ID0gcHJvcHMsXG4gICAgICAgICAgICAgIHdyYXBwZXJQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gICAgICAgIHJldHVybiBbcHJvcHMuY29udGV4dCwgcmVhY3RSZWR1eEZvcndhcmRlZFJlZiwgd3JhcHBlclByb3BzXTtcbiAgICAgIH0sIFtwcm9wc10pO1xuICAgICAgY29uc3QgQ29udGV4dFRvVXNlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIC8vIFVzZXJzIG1heSBvcHRpb25hbGx5IHBhc3MgaW4gYSBjdXN0b20gY29udGV4dCBpbnN0YW5jZSB0byB1c2UgaW5zdGVhZCBvZiBvdXIgUmVhY3RSZWR1eENvbnRleHQuXG4gICAgICAgIC8vIE1lbW9pemUgdGhlIGNoZWNrIHRoYXQgZGV0ZXJtaW5lcyB3aGljaCBjb250ZXh0IGluc3RhbmNlIHdlIHNob3VsZCB1c2UuXG4gICAgICAgIHJldHVybiBwcm9wc0NvbnRleHQgJiYgcHJvcHNDb250ZXh0LkNvbnN1bWVyICYmIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaXNDb250ZXh0Q29uc3VtZXIoIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KHByb3BzQ29udGV4dC5Db25zdW1lciwgbnVsbCkpID8gcHJvcHNDb250ZXh0IDogQ29udGV4dDtcbiAgICAgIH0sIFtwcm9wc0NvbnRleHQsIENvbnRleHRdKTsgLy8gUmV0cmlldmUgdGhlIHN0b3JlIGFuZCBhbmNlc3RvciBzdWJzY3JpcHRpb24gdmlhIGNvbnRleHQsIGlmIGF2YWlsYWJsZVxuXG4gICAgICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VDb250ZXh0KENvbnRleHRUb1VzZSk7IC8vIFRoZSBzdG9yZSBfbXVzdF8gZXhpc3QgYXMgZWl0aGVyIGEgcHJvcCBvciBpbiBjb250ZXh0LlxuICAgICAgLy8gV2UnbGwgY2hlY2sgdG8gc2VlIGlmIGl0IF9sb29rc18gbGlrZSBhIFJlZHV4IHN0b3JlIGZpcnN0LlxuICAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gcGFzcyB0aHJvdWdoIGEgYHN0b3JlYCBwcm9wIHRoYXQgaXMganVzdCBhIHBsYWluIHZhbHVlLlxuXG4gICAgICBjb25zdCBkaWRTdG9yZUNvbWVGcm9tUHJvcHMgPSBCb29sZWFuKHByb3BzLnN0b3JlKSAmJiBCb29sZWFuKHByb3BzLnN0b3JlLmdldFN0YXRlKSAmJiBCb29sZWFuKHByb3BzLnN0b3JlLmRpc3BhdGNoKTtcbiAgICAgIGNvbnN0IGRpZFN0b3JlQ29tZUZyb21Db250ZXh0ID0gQm9vbGVhbihjb250ZXh0VmFsdWUpICYmIEJvb2xlYW4oY29udGV4dFZhbHVlLnN0b3JlKTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWRpZFN0b3JlQ29tZUZyb21Qcm9wcyAmJiAhZGlkU3RvcmVDb21lRnJvbUNvbnRleHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBcInN0b3JlXCIgaW4gdGhlIGNvbnRleHQgb2YgYCArIGBcIiR7ZGlzcGxheU5hbWV9XCIuIEVpdGhlciB3cmFwIHRoZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sIGAgKyBgb3IgcGFzcyBhIGN1c3RvbSBSZWFjdCBjb250ZXh0IHByb3ZpZGVyIHRvIDxQcm92aWRlcj4gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGAgKyBgUmVhY3QgY29udGV4dCBjb25zdW1lciB0byAke2Rpc3BsYXlOYW1lfSBpbiBjb25uZWN0IG9wdGlvbnMuYCk7XG4gICAgICB9IC8vIEJhc2VkIG9uIHRoZSBwcmV2aW91cyBjaGVjaywgb25lIG9mIHRoZXNlIG11c3QgYmUgdHJ1ZVxuXG5cbiAgICAgIGNvbnN0IHN0b3JlID0gZGlkU3RvcmVDb21lRnJvbVByb3BzID8gcHJvcHMuc3RvcmUgOiBjb250ZXh0VmFsdWUuc3RvcmU7XG4gICAgICBjb25zdCBnZXRTZXJ2ZXJTdGF0ZSA9IGRpZFN0b3JlQ29tZUZyb21Db250ZXh0ID8gY29udGV4dFZhbHVlLmdldFNlcnZlclN0YXRlIDogc3RvcmUuZ2V0U3RhdGU7XG4gICAgICBjb25zdCBjaGlsZFByb3BzU2VsZWN0b3IgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgLy8gVGhlIGNoaWxkIHByb3BzIHNlbGVjdG9yIG5lZWRzIHRoZSBzdG9yZSByZWZlcmVuY2UgYXMgYW4gaW5wdXQuXG4gICAgICAgIC8vIFJlLWNyZWF0ZSB0aGlzIHNlbGVjdG9yIHdoZW5ldmVyIHRoZSBzdG9yZSBjaGFuZ2VzLlxuICAgICAgICByZXR1cm4gZGVmYXVsdFNlbGVjdG9yRmFjdG9yeShzdG9yZS5kaXNwYXRjaCwgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyk7XG4gICAgICB9LCBbc3RvcmVdKTtcbiAgICAgIGNvbnN0IFtzdWJzY3JpcHRpb24sIG5vdGlmeU5lc3RlZFN1YnNdID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm4gTk9fU1VCU0NSSVBUSU9OX0FSUkFZOyAvLyBUaGlzIFN1YnNjcmlwdGlvbidzIHNvdXJjZSBzaG91bGQgbWF0Y2ggd2hlcmUgc3RvcmUgY2FtZSBmcm9tOiBwcm9wcyB2cy4gY29udGV4dC4gQSBjb21wb25lbnRcbiAgICAgICAgLy8gY29ubmVjdGVkIHRvIHRoZSBzdG9yZSB2aWEgcHJvcHMgc2hvdWxkbid0IHVzZSBzdWJzY3JpcHRpb24gZnJvbSBjb250ZXh0LCBvciB2aWNlIHZlcnNhLlxuXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNyZWF0ZVN1YnNjcmlwdGlvbihzdG9yZSwgZGlkU3RvcmVDb21lRnJvbVByb3BzID8gdW5kZWZpbmVkIDogY29udGV4dFZhbHVlLnN1YnNjcmlwdGlvbik7IC8vIGBub3RpZnlOZXN0ZWRTdWJzYCBpcyBkdXBsaWNhdGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlzIHVubW91bnRlZCBpblxuICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcCwgd2hlcmUgYHN1YnNjcmlwdGlvbmAgd2lsbCB0aGVuIGJlIG51bGwuIFRoaXMgY2FuXG4gICAgICAgIC8vIHByb2JhYmx5IGJlIGF2b2lkZWQgaWYgU3Vic2NyaXB0aW9uJ3MgbGlzdGVuZXJzIGxvZ2ljIGlzIGNoYW5nZWQgdG8gbm90IGNhbGwgbGlzdGVuZXJzXG4gICAgICAgIC8vIHRoYXQgaGF2ZSBiZWVuIHVuc3Vic2NyaWJlZCBpbiB0aGUgIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AuXG5cbiAgICAgICAgY29uc3Qgbm90aWZ5TmVzdGVkU3VicyA9IHN1YnNjcmlwdGlvbi5ub3RpZnlOZXN0ZWRTdWJzLmJpbmQoc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgcmV0dXJuIFtzdWJzY3JpcHRpb24sIG5vdGlmeU5lc3RlZFN1YnNdO1xuICAgICAgfSwgW3N0b3JlLCBkaWRTdG9yZUNvbWVGcm9tUHJvcHMsIGNvbnRleHRWYWx1ZV0pOyAvLyBEZXRlcm1pbmUgd2hhdCB7c3RvcmUsIHN1YnNjcmlwdGlvbn0gdmFsdWUgc2hvdWxkIGJlIHB1dCBpbnRvIG5lc3RlZCBjb250ZXh0LCBpZiBuZWNlc3NhcnksXG4gICAgICAvLyBhbmQgbWVtb2l6ZSB0aGF0IHZhbHVlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNvbnRleHQgdXBkYXRlcy5cblxuICAgICAgY29uc3Qgb3ZlcnJpZGRlbkNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoZGlkU3RvcmVDb21lRnJvbVByb3BzKSB7XG4gICAgICAgICAgLy8gVGhpcyBjb21wb25lbnQgaXMgZGlyZWN0bHkgc3Vic2NyaWJlZCB0byBhIHN0b3JlIGZyb20gcHJvcHMuXG4gICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCBkZXNjZW5kYW50cyByZWFkaW5nIGZyb20gdGhpcyBzdG9yZSAtIHBhc3MgZG93biB3aGF0ZXZlclxuICAgICAgICAgIC8vIHRoZSBleGlzdGluZyBjb250ZXh0IHZhbHVlIGlzIGZyb20gdGhlIG5lYXJlc3QgY29ubmVjdGVkIGFuY2VzdG9yLlxuICAgICAgICAgIHJldHVybiBjb250ZXh0VmFsdWU7XG4gICAgICAgIH0gLy8gT3RoZXJ3aXNlLCBwdXQgdGhpcyBjb21wb25lbnQncyBzdWJzY3JpcHRpb24gaW5zdGFuY2UgaW50byBjb250ZXh0LCBzbyB0aGF0XG4gICAgICAgIC8vIGNvbm5lY3RlZCBkZXNjZW5kYW50cyB3b24ndCB1cGRhdGUgdW50aWwgYWZ0ZXIgdGhpcyBjb21wb25lbnQgaXMgZG9uZVxuXG5cbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBjb250ZXh0VmFsdWUsIHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25cbiAgICAgICAgfSk7XG4gICAgICB9LCBbZGlkU3RvcmVDb21lRnJvbVByb3BzLCBjb250ZXh0VmFsdWUsIHN1YnNjcmlwdGlvbl0pOyAvLyBTZXQgdXAgcmVmcyB0byBjb29yZGluYXRlIHZhbHVlcyBiZXR3ZWVuIHRoZSBzdWJzY3JpcHRpb24gZWZmZWN0IGFuZCB0aGUgcmVuZGVyIGxvZ2ljXG5cbiAgICAgIGNvbnN0IGxhc3RDaGlsZFByb3BzID0gdXNlUmVmKCk7XG4gICAgICBjb25zdCBsYXN0V3JhcHBlclByb3BzID0gdXNlUmVmKHdyYXBwZXJQcm9wcyk7XG4gICAgICBjb25zdCBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlID0gdXNlUmVmKCk7XG4gICAgICBjb25zdCByZW5kZXJJc1NjaGVkdWxlZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgICBjb25zdCBpc1Byb2Nlc3NpbmdEaXNwYXRjaCA9IHVzZVJlZihmYWxzZSk7XG4gICAgICBjb25zdCBpc01vdW50ZWQgPSB1c2VSZWYoZmFsc2UpO1xuICAgICAgY29uc3QgbGF0ZXN0U3Vic2NyaXB0aW9uQ2FsbGJhY2tFcnJvciA9IHVzZVJlZigpO1xuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlzTW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICBpc01vdW50ZWQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgfSwgW10pO1xuICAgICAgY29uc3QgYWN0dWFsQ2hpbGRQcm9wc1NlbGVjdG9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gKCkgPT4ge1xuICAgICAgICAgIC8vIFRyaWNreSBsb2dpYyBoZXJlOlxuICAgICAgICAgIC8vIC0gVGhpcyByZW5kZXIgbWF5IGhhdmUgYmVlbiB0cmlnZ2VyZWQgYnkgYSBSZWR1eCBzdG9yZSB1cGRhdGUgdGhhdCBwcm9kdWNlZCBuZXcgY2hpbGQgcHJvcHNcbiAgICAgICAgICAvLyAtIEhvd2V2ZXIsIHdlIG1heSBoYXZlIGdvdHRlbiBuZXcgd3JhcHBlciBwcm9wcyBhZnRlciB0aGF0XG4gICAgICAgICAgLy8gSWYgd2UgaGF2ZSBuZXcgY2hpbGQgcHJvcHMsIGFuZCB0aGUgc2FtZSB3cmFwcGVyIHByb3BzLCB3ZSBrbm93IHdlIHNob3VsZCB1c2UgdGhlIG5ldyBjaGlsZCBwcm9wcyBhcy1pcy5cbiAgICAgICAgICAvLyBCdXQsIGlmIHdlIGhhdmUgbmV3IHdyYXBwZXIgcHJvcHMsIHRob3NlIG1pZ2h0IGNoYW5nZSB0aGUgY2hpbGQgcHJvcHMsIHNvIHdlIGhhdmUgdG8gcmVjYWxjdWxhdGUgdGhpbmdzLlxuICAgICAgICAgIC8vIFNvLCB3ZSdsbCB1c2UgdGhlIGNoaWxkIHByb3BzIGZyb20gc3RvcmUgdXBkYXRlIG9ubHkgaWYgdGhlIHdyYXBwZXIgcHJvcHMgYXJlIHRoZSBzYW1lIGFzIGxhc3QgdGltZS5cbiAgICAgICAgICBpZiAoY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZS5jdXJyZW50ICYmIHdyYXBwZXJQcm9wcyA9PT0gbGFzdFdyYXBwZXJQcm9wcy5jdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZS5jdXJyZW50O1xuICAgICAgICAgIH0gLy8gVE9ETyBXZSdyZSByZWFkaW5nIHRoZSBzdG9yZSBkaXJlY3RseSBpbiByZW5kZXIoKSBoZXJlLiBCYWQgaWRlYT9cbiAgICAgICAgICAvLyBUaGlzIHdpbGwgbGlrZWx5IGNhdXNlIEJhZCBUaGluZ3MgKFRNKSB0byBoYXBwZW4gaW4gQ29uY3VycmVudCBNb2RlLlxuICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBkbyB0aGlzIGJlY2F1c2Ugb24gcmVuZGVycyBfbm90XyBjYXVzZWQgYnkgc3RvcmUgdXBkYXRlcywgd2UgbmVlZCB0aGUgbGF0ZXN0IHN0b3JlIHN0YXRlXG4gICAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIGNoaWxkIHByb3BzIHNob3VsZCBiZS5cblxuXG4gICAgICAgICAgcmV0dXJuIGNoaWxkUHJvcHNTZWxlY3RvcihzdG9yZS5nZXRTdGF0ZSgpLCB3cmFwcGVyUHJvcHMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzZWxlY3RvcjtcbiAgICAgIH0sIFtzdG9yZSwgd3JhcHBlclByb3BzXSk7IC8vIFdlIG5lZWQgdGhpcyB0byBleGVjdXRlIHN5bmNocm9ub3VzbHkgZXZlcnkgdGltZSB3ZSByZS1yZW5kZXIuIEhvd2V2ZXIsIFJlYWN0IHdhcm5zXG4gICAgICAvLyBhYm91dCB1c2VMYXlvdXRFZmZlY3QgaW4gU1NSLCBzbyB3ZSB0cnkgdG8gZGV0ZWN0IGVudmlyb25tZW50IGFuZCBmYWxsIGJhY2sgdG9cbiAgICAgIC8vIGp1c3QgdXNlRWZmZWN0IGluc3RlYWQgdG8gYXZvaWQgdGhlIHdhcm5pbmcsIHNpbmNlIG5laXRoZXIgd2lsbCBydW4gYW55d2F5LlxuXG4gICAgICBjb25zdCBzdWJzY3JpYmVGb3JSZWFjdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpYmUgPSByZWFjdExpc3RlbmVyID0+IHtcbiAgICAgICAgICBpZiAoIXN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdWJzY3JpYmVVcGRhdGVzKHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcywgc3RvcmUsIHN1YnNjcmlwdGlvbiwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNoaWxkUHJvcHNTZWxlY3RvciwgbGFzdFdyYXBwZXJQcm9wcywgbGFzdENoaWxkUHJvcHMsIHJlbmRlcklzU2NoZWR1bGVkLCBpc01vdW50ZWQsIGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUsIG5vdGlmeU5lc3RlZFN1YnMsIHJlYWN0TGlzdGVuZXIpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBzdWJzY3JpYmU7XG4gICAgICB9LCBbc3Vic2NyaXB0aW9uXSk7XG4gICAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0V2l0aEFyZ3MoY2FwdHVyZVdyYXBwZXJQcm9wcywgW2xhc3RXcmFwcGVyUHJvcHMsIGxhc3RDaGlsZFByb3BzLCByZW5kZXJJc1NjaGVkdWxlZCwgd3JhcHBlclByb3BzLCBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLCBub3RpZnlOZXN0ZWRTdWJzXSk7XG4gICAgICBsZXQgYWN0dWFsQ2hpbGRQcm9wcztcblxuICAgICAgdHJ5IHtcbiAgICAgICAgYWN0dWFsQ2hpbGRQcm9wcyA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlKCAvLyBUT0RPIFdlJ3JlIHBhc3NpbmcgdGhyb3VnaCBhIGJpZyB3cmFwcGVyIHRoYXQgZG9lcyBhIGJ1bmNoIG9mIGV4dHJhIHNpZGUgZWZmZWN0cyBiZXNpZGVzIHN1YnNjcmliaW5nXG4gICAgICAgIHN1YnNjcmliZUZvclJlYWN0LCAvLyBUT0RPIFRoaXMgaXMgaW5jcmVkaWJseSBoYWNreS4gV2UndmUgYWxyZWFkeSBwcm9jZXNzZWQgdGhlIHN0b3JlIHVwZGF0ZSBhbmQgY2FsY3VsYXRlZCBuZXcgY2hpbGQgcHJvcHMsXG4gICAgICAgIC8vIFRPRE8gYW5kIHdlJ3JlIGp1c3QgcGFzc2luZyB0aGF0IHRocm91Z2ggc28gaXQgdHJpZ2dlcnMgYSByZS1yZW5kZXIgZm9yIHVzIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYHVTRVNgLlxuICAgICAgICBhY3R1YWxDaGlsZFByb3BzU2VsZWN0b3IsIGdldFNlcnZlclN0YXRlID8gKCkgPT4gY2hpbGRQcm9wc1NlbGVjdG9yKGdldFNlcnZlclN0YXRlKCksIHdyYXBwZXJQcm9wcykgOiBhY3R1YWxDaGlsZFByb3BzU2VsZWN0b3IpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChsYXRlc3RTdWJzY3JpcHRpb25DYWxsYmFja0Vycm9yLmN1cnJlbnQpIHtcbiAgICAgICAgICA7XG4gICAgICAgICAgZXJyLm1lc3NhZ2UgKz0gYFxcblRoZSBlcnJvciBtYXkgYmUgY29ycmVsYXRlZCB3aXRoIHRoaXMgcHJldmlvdXMgZXJyb3I6XFxuJHtsYXRlc3RTdWJzY3JpcHRpb25DYWxsYmFja0Vycm9yLmN1cnJlbnQuc3RhY2t9XFxuXFxuYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxhdGVzdFN1YnNjcmlwdGlvbkNhbGxiYWNrRXJyb3IuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBsYXN0Q2hpbGRQcm9wcy5jdXJyZW50ID0gYWN0dWFsQ2hpbGRQcm9wcztcbiAgICAgIH0pOyAvLyBOb3cgdGhhdCBhbGwgdGhhdCdzIGRvbmUsIHdlIGNhbiBmaW5hbGx5IHRyeSB0byBhY3R1YWxseSByZW5kZXIgdGhlIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgIC8vIFdlIG1lbW9pemUgdGhlIGVsZW1lbnRzIGZvciB0aGUgcmVuZGVyZWQgY2hpbGQgY29tcG9uZW50IGFzIGFuIG9wdGltaXphdGlvbi5cblxuICAgICAgY29uc3QgcmVuZGVyZWRXcmFwcGVkQ29tcG9uZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLyojX19QVVJFX18qL1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9leHRlbmRzKHt9LCBhY3R1YWxDaGlsZFByb3BzLCB7XG4gICAgICAgICAgICByZWY6IHJlYWN0UmVkdXhGb3J3YXJkZWRSZWZcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH0sIFtyZWFjdFJlZHV4Rm9yd2FyZGVkUmVmLCBXcmFwcGVkQ29tcG9uZW50LCBhY3R1YWxDaGlsZFByb3BzXSk7IC8vIElmIFJlYWN0IHNlZXMgdGhlIGV4YWN0IHNhbWUgZWxlbWVudCByZWZlcmVuY2UgYXMgbGFzdCB0aW1lLCBpdCBiYWlscyBvdXQgb2YgcmUtcmVuZGVyaW5nXG4gICAgICAvLyB0aGF0IGNoaWxkLCBzYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIFJlYWN0Lm1lbW8oKSBvciByZXR1cm5lZCBmYWxzZSBmcm9tIHNob3VsZENvbXBvbmVudFVwZGF0ZS5cblxuICAgICAgY29uc3QgcmVuZGVyZWRDaGlsZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBjb21wb25lbnQgaXMgc3Vic2NyaWJlZCB0byBzdG9yZSB1cGRhdGVzLCB3ZSBuZWVkIHRvIHBhc3MgaXRzIG93blxuICAgICAgICAgIC8vIHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBkb3duIHRvIG91ciBkZXNjZW5kYW50cy4gVGhhdCBtZWFucyByZW5kZXJpbmcgdGhlIHNhbWVcbiAgICAgICAgICAvLyBDb250ZXh0IGluc3RhbmNlLCBhbmQgcHV0dGluZyBhIGRpZmZlcmVudCB2YWx1ZSBpbnRvIHRoZSBjb250ZXh0LlxuICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0VG9Vc2UuUHJvdmlkZXIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBvdmVycmlkZGVuQ29udGV4dFZhbHVlXG4gICAgICAgICAgfSwgcmVuZGVyZWRXcmFwcGVkQ29tcG9uZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZW5kZXJlZFdyYXBwZWRDb21wb25lbnQ7XG4gICAgICB9LCBbQ29udGV4dFRvVXNlLCByZW5kZXJlZFdyYXBwZWRDb21wb25lbnQsIG92ZXJyaWRkZW5Db250ZXh0VmFsdWVdKTtcbiAgICAgIHJldHVybiByZW5kZXJlZENoaWxkO1xuICAgIH1cblxuICAgIGNvbnN0IF9Db25uZWN0ID0gUmVhY3QubWVtbyhDb25uZWN0RnVuY3Rpb24pO1xuXG4gICAgLy8gQWRkIGEgaGFja3kgY2FzdCB0byBnZXQgdGhlIHJpZ2h0IG91dHB1dCB0eXBlXG4gICAgY29uc3QgQ29ubmVjdCA9IF9Db25uZWN0O1xuICAgIENvbm5lY3QuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IENvbm5lY3RGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuXG4gICAgaWYgKGZvcndhcmRSZWYpIHtcbiAgICAgIGNvbnN0IF9mb3J3YXJkZWQgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIGZvcndhcmRDb25uZWN0UmVmKHByb3BzLCByZWYpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29ubmVjdCwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgICAgcmVhY3RSZWR1eEZvcndhcmRlZFJlZjogcmVmXG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBmb3J3YXJkZWQgPSBfZm9yd2FyZGVkO1xuICAgICAgZm9yd2FyZGVkLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG4gICAgICBmb3J3YXJkZWQuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgICByZXR1cm4gaG9pc3RTdGF0aWNzKGZvcndhcmRlZCwgV3JhcHBlZENvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvaXN0U3RhdGljcyhDb25uZWN0LCBXcmFwcGVkQ29tcG9uZW50KTtcbiAgfTtcblxuICByZXR1cm4gd3JhcFdpdGhDb25uZWN0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/components/connect.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/invalidArgFactory.js":
/*!******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/invalidArgFactory.js ***!
\******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createInvalidArgFactory: function() { return /* binding */ createInvalidArgFactory; }\n/* harmony export */ });\nfunction createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9pbnZhbGlkQXJnRmFjdG9yeS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBLDZDQUE2QyxZQUFZLE1BQU0sTUFBTSxxQ0FBcUMsNkJBQTZCO0FBQ3ZJO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvaW52YWxpZEFyZ0ZhY3RvcnkuanM/NDQzNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlSW52YWxpZEFyZ0ZhY3RvcnkoYXJnLCBuYW1lKSB7XG4gIHJldHVybiAoZGlzcGF0Y2gsIG9wdGlvbnMpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWUgb2YgdHlwZSAke3R5cGVvZiBhcmd9IGZvciAke25hbWV9IGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQgJHtvcHRpb25zLndyYXBwZWRDb21wb25lbnROYW1lfS5gKTtcbiAgfTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/invalidArgFactory.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/mapDispatchToProps.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/mapDispatchToProps.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapDispatchToPropsFactory: function() { return /* binding */ mapDispatchToPropsFactory; }\n/* harmony export */ });\n/* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ \"./node_modules/react-redux/es/utils/bindActionCreators.js\");\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ \"./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ \"./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\n\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => // @ts-ignore\n (0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)(dispatch => ({\n dispatch\n })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore\n (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mapDispatchToProps, 'mapDispatchToProps');\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9tYXBEaXNwYXRjaFRvUHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE2RDtBQUNpQjtBQUNoQjtBQUN2RDtBQUNQLHdFQUF3RSx1RUFBc0I7QUFDOUYsRUFBRSxxRUFBa0Isd0RBQXdELHVFQUFzQjtBQUNsRztBQUNBLEdBQUc7QUFDSCxFQUFFLG1FQUFrQiw2Q0FBNkMsMkVBQXVCO0FBQ3hGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L21hcERpc3BhdGNoVG9Qcm9wcy5qcz8yYjJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiaW5kQWN0aW9uQ3JlYXRvcnMgZnJvbSAnLi4vdXRpbHMvYmluZEFjdGlvbkNyZWF0b3JzJztcbmltcG9ydCB7IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQsIHdyYXBNYXBUb1Byb3BzRnVuYyB9IGZyb20gJy4vd3JhcE1hcFRvUHJvcHMnO1xuaW1wb3J0IHsgY3JlYXRlSW52YWxpZEFyZ0ZhY3RvcnkgfSBmcm9tICcuL2ludmFsaWRBcmdGYWN0b3J5JztcbmV4cG9ydCBmdW5jdGlvbiBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3J5KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1cm4gbWFwRGlzcGF0Y2hUb1Byb3BzICYmIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdvYmplY3QnID8gd3JhcE1hcFRvUHJvcHNDb25zdGFudChkaXNwYXRjaCA9PiAvLyBAdHMtaWdub3JlXG4gIGJpbmRBY3Rpb25DcmVhdG9ycyhtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKSkgOiAhbWFwRGlzcGF0Y2hUb1Byb3BzID8gd3JhcE1hcFRvUHJvcHNDb25zdGFudChkaXNwYXRjaCA9PiAoe1xuICAgIGRpc3BhdGNoXG4gIH0pKSA6IHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdmdW5jdGlvbicgPyAvLyBAdHMtaWdub3JlXG4gIHdyYXBNYXBUb1Byb3BzRnVuYyhtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKSA6IGNyZWF0ZUludmFsaWRBcmdGYWN0b3J5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/mapDispatchToProps.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/mapStateToProps.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/connect/mapStateToProps.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapStateToPropsFactory: function() { return /* binding */ mapStateToPropsFactory; }\n/* harmony export */ });\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ \"./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalidArgFactory */ \"./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\nfunction mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore\n (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__.createInvalidArgFactory)(mapStateToProps, 'mapStateToProps');\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9tYXBTdGF0ZVRvUHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQThFO0FBQ2hCO0FBQ3ZEO0FBQ1AsNEJBQTRCLHVFQUFzQixVQUFVO0FBQzVELEVBQUUsbUVBQWtCLHVDQUF1QywyRUFBdUI7QUFDbEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvbWFwU3RhdGVUb1Byb3BzLmpzP2JlZjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd3JhcE1hcFRvUHJvcHNDb25zdGFudCwgd3JhcE1hcFRvUHJvcHNGdW5jIH0gZnJvbSAnLi93cmFwTWFwVG9Qcm9wcyc7XG5pbXBvcnQgeyBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeSB9IGZyb20gJy4vaW52YWxpZEFyZ0ZhY3RvcnknO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcnkobWFwU3RhdGVUb1Byb3BzKSB7XG4gIHJldHVybiAhbWFwU3RhdGVUb1Byb3BzID8gd3JhcE1hcFRvUHJvcHNDb25zdGFudCgoKSA9PiAoe30pKSA6IHR5cGVvZiBtYXBTdGF0ZVRvUHJvcHMgPT09ICdmdW5jdGlvbicgPyAvLyBAdHMtaWdub3JlXG4gIHdyYXBNYXBUb1Byb3BzRnVuYyhtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IGNyZWF0ZUludmFsaWRBcmdGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRlVG9Qcm9wcycpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/mapStateToProps.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/mergeProps.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/connect/mergeProps.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultMergeProps: function() { return /* binding */ defaultMergeProps; },\n/* harmony export */ mergePropsFactory: function() { return /* binding */ mergePropsFactory; },\n/* harmony export */ wrapMergePropsFunc: function() { return /* binding */ wrapMergePropsFunc; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ \"./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n // @ts-ignore\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, ownProps, stateProps, dispatchProps);\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, {\n displayName,\n areMergedPropsEqual\n }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nfunction mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mergeProps, 'mergeProps');\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9tZXJnZVByb3BzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwRDtBQUNDO0FBQ0c7QUFDdkQ7QUFDUDtBQUNBLFNBQVMsOEVBQVEsR0FBRztBQUNwQjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFlBQVksSUFBcUMsRUFBRSxvRUFBaUI7QUFDcEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLHFIQUFxSCwyRUFBdUI7QUFDNUkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvbWVyZ2VQcm9wcy5qcz9hNzFhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHZlcmlmeVBsYWluT2JqZWN0IGZyb20gJy4uL3V0aWxzL3ZlcmlmeVBsYWluT2JqZWN0JztcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRBcmdGYWN0b3J5IH0gZnJvbSAnLi9pbnZhbGlkQXJnRmFjdG9yeSc7XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG93blByb3BzLCBzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwge1xuICAgIGRpc3BsYXlOYW1lLFxuICAgIGFyZU1lcmdlZFByb3BzRXF1YWxcbiAgfSkge1xuICAgIGxldCBoYXNSdW5PbmNlID0gZmFsc2U7XG4gICAgbGV0IG1lcmdlZFByb3BzO1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIGNvbnN0IG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXG4gICAgICBpZiAoaGFzUnVuT25jZSkge1xuICAgICAgICBpZiAoIWFyZU1lcmdlZFByb3BzRXF1YWwobmV4dE1lcmdlZFByb3BzLCBtZXJnZWRQcm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzUnVuT25jZSA9IHRydWU7XG4gICAgICAgIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgdmVyaWZ5UGxhaW5PYmplY3QobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9wcycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVByb3BzRmFjdG9yeShtZXJnZVByb3BzKSB7XG4gIHJldHVybiAhbWVyZ2VQcm9wcyA/ICgpID0+IGRlZmF1bHRNZXJnZVByb3BzIDogdHlwZW9mIG1lcmdlUHJvcHMgPT09ICdmdW5jdGlvbicgPyB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykgOiBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeShtZXJnZVByb3BzLCAnbWVyZ2VQcm9wcycpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/mergeProps.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/selectorFactory.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/connect/selectorFactory.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ finalPropsSelectorFactory; },\n/* harmony export */ pureFinalPropsSelectorFactory: function() { return /* binding */ pureFinalPropsSelectorFactory; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ \"./node_modules/react-redux/es/connect/verifySubselectors.js\");\n\nconst _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\n\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nfunction finalPropsSelectorFactory(dispatch, _ref) {\n let {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps\n } = _ref,\n options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, _excluded);\n\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n\n if (true) {\n (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRztBQUNwRztBQUNzRDtBQUMvQztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osZ0JBQWdCLG1HQUE2Qjs7QUFFN0M7QUFDQTtBQUNBOztBQUVBLE1BQU0sSUFBcUM7QUFDM0MsSUFBSSwrREFBa0I7QUFDdEI7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanM/N2M3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImluaXRNYXBTdGF0ZVRvUHJvcHNcIiwgXCJpbml0TWFwRGlzcGF0Y2hUb1Byb3BzXCIsIFwiaW5pdE1lcmdlUHJvcHNcIl07XG5pbXBvcnQgdmVyaWZ5U3Vic2VsZWN0b3JzIGZyb20gJy4vdmVyaWZ5U3Vic2VsZWN0b3JzJztcbmV4cG9ydCBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGF0Y2gsIHtcbiAgYXJlU3RhdGVzRXF1YWwsXG4gIGFyZU93blByb3BzRXF1YWwsXG4gIGFyZVN0YXRlUHJvcHNFcXVhbFxufSkge1xuICBsZXQgaGFzUnVuQXRMZWFzdE9uY2UgPSBmYWxzZTtcbiAgbGV0IHN0YXRlO1xuICBsZXQgb3duUHJvcHM7XG4gIGxldCBzdGF0ZVByb3BzO1xuICBsZXQgZGlzcGF0Y2hQcm9wcztcbiAgbGV0IG1lcmdlZFByb3BzO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUZpcnN0Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7XG4gICAgc3RhdGUgPSBmaXJzdFN0YXRlO1xuICAgIG93blByb3BzID0gZmlyc3RPd25Qcm9wcztcbiAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG4gICAgZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG4gICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKSB7XG4gICAgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuICAgIGlmIChtYXBTdGF0ZVRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcbiAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdTdGF0ZSgpIHtcbiAgICBjb25zdCBuZXh0U3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGNvbnN0IHN0YXRlUHJvcHNDaGFuZ2VkID0gIWFyZVN0YXRlUHJvcHNFcXVhbChuZXh0U3RhdGVQcm9wcywgc3RhdGVQcm9wcyk7XG4gICAgc3RhdGVQcm9wcyA9IG5leHRTdGF0ZVByb3BzO1xuICAgIGlmIChzdGF0ZVByb3BzQ2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcbiAgICBjb25zdCBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0T3duUHJvcHMsIG93blByb3BzKTtcbiAgICBjb25zdCBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBzdGF0ZSk7XG4gICAgc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG4gICAgaWYgKHByb3BzQ2hhbmdlZCAmJiBzdGF0ZUNoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCk7XG4gICAgaWYgKHByb3BzQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG4gICAgaWYgKHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1N0YXRlKCk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3IobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcbiAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9uY2UgPyBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFuZGxlRmlyc3RDYWxsKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKTtcbiAgfTtcbn1cbi8vIFRPRE86IEFkZCBtb3JlIGNvbW1lbnRzXG4vLyBUaGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHdpbGwgbWVtb2l6ZSBpdHMgcmVzdWx0cyxcbi8vIGFsbG93aW5nIGNvbm5lY3QncyBzaG91bGRDb21wb25lbnRVcGRhdGUgdG8gcmV0dXJuIGZhbHNlIGlmIGZpbmFsXG4vLyBwcm9wcyBoYXZlIG5vdCBjaGFuZ2VkLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeShkaXNwYXRjaCwgX3JlZikge1xuICBsZXQge1xuICAgIGluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICBpbml0TWVyZ2VQcm9wc1xuICB9ID0gX3JlZixcbiAgICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIGNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9IGluaXRNYXBTdGF0ZVRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICBjb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcbiAgY29uc3QgbWVyZ2VQcm9wcyA9IGluaXRNZXJnZVByb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcyk7XG4gIH1cblxuICByZXR1cm4gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/selectorFactory.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/verifySubselectors.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/verifySubselectors.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ verifySubselectors; }\n/* harmony export */ });\n/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ \"./node_modules/react-redux/es/utils/warning.js\");\n\n\nfunction verify(selector, methodName) {\n if (!selector) {\n throw new Error(`Unexpected value for ${methodName} in connect.`);\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {\n (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(`The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`);\n }\n }\n}\n\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n verify(mapStateToProps, 'mapStateToProps');\n verify(mapDispatchToProps, 'mapDispatchToProps');\n verify(mergeProps, 'mergeProps');\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC92ZXJpZnlTdWJzZWxlY3RvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUM7O0FBRXZDO0FBQ0E7QUFDQSw0Q0FBNEMsWUFBWTtBQUN4RCxJQUFJO0FBQ0o7QUFDQSxNQUFNLDBEQUFPLHFCQUFxQixZQUFZO0FBQzlDO0FBQ0E7QUFDQTs7QUFFZTtBQUNmO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3ZlcmlmeVN1YnNlbGVjdG9ycy5qcz8xNjM1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB3YXJuaW5nIGZyb20gJy4uL3V0aWxzL3dhcm5pbmcnO1xuXG5mdW5jdGlvbiB2ZXJpZnkoc2VsZWN0b3IsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKCFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBmb3IgJHttZXRob2ROYW1lfSBpbiBjb25uZWN0LmApO1xuICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5hbWUgPT09ICdtYXBEaXNwYXRjaFRvUHJvcHMnKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2VsZWN0b3IsICdkZXBlbmRzT25Pd25Qcm9wcycpKSB7XG4gICAgICB3YXJuaW5nKGBUaGUgc2VsZWN0b3IgZm9yICR7bWV0aG9kTmFtZX0gb2YgY29ubmVjdCBkaWQgbm90IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVwZW5kc09uT3duUHJvcHMuYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcykge1xuICB2ZXJpZnkobWFwU3RhdGVUb1Byb3BzLCAnbWFwU3RhdGVUb1Byb3BzJyk7XG4gIHZlcmlmeShtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKTtcbiAgdmVyaWZ5KG1lcmdlUHJvcHMsICdtZXJnZVByb3BzJyk7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/verifySubselectors.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/connect/wrapMapToProps.js":
/*!***************************************************************!*\
!*** ./node_modules/react-redux/es/connect/wrapMapToProps.js ***!
\***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDependsOnOwnProps: function() { return /* binding */ getDependsOnOwnProps; },\n/* harmony export */ wrapMapToPropsConstant: function() { return /* binding */ wrapMapToPropsConstant; },\n/* harmony export */ wrapMapToPropsFunc: function() { return /* binding */ wrapMapToPropsFunc; }\n/* harmony export */ });\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n\nfunction wrapMapToPropsConstant( // * Note:\n// It seems that the dispatch argument\n// could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n// and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\n\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, {\n displayName\n }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC93cmFwTWFwVG9Qcm9wcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTJEO0FBQ3BEO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxPQUFPOzs7QUFHUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsSUFBcUMsRUFBRSxvRUFBaUI7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3Qvd3JhcE1hcFRvUHJvcHMuanM/YmNkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmVyaWZ5UGxhaW5PYmplY3QgZnJvbSAnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoIC8vICogTm90ZTpcbi8vICBJdCBzZWVtcyB0aGF0IHRoZSBkaXNwYXRjaCBhcmd1bWVudFxuLy8gIGNvdWxkIGJlIGEgZGlzcGF0Y2ggZnVuY3Rpb24gaW4gc29tZSBjYXNlcyAoZXg6IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcpXG4vLyAgYW5kIGEgc3RhdGUgb2JqZWN0IGluIHNvbWUgb3RoZXJzIChleDogd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZylcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZ2V0Q29uc3RhbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRDb25zdGFudFNlbGVjdG9yKGRpc3BhdGNoKSB7XG4gICAgY29uc3QgY29uc3RhbnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCk7XG5cbiAgICBmdW5jdGlvbiBjb25zdGFudFNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIGNvbnN0YW50O1xuICAgIH1cblxuICAgIGNvbnN0YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtcbiAgICByZXR1cm4gY29uc3RhbnRTZWxlY3RvcjtcbiAgfTtcbn0gLy8gZGVwZW5kc09uT3duUHJvcHMgaXMgdXNlZCBieSBjcmVhdGVNYXBUb1Byb3BzUHJveHkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGFzcyBwcm9wcyBhcyBhcmdzXG4vLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyB3cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRvIGRldGVybWluZVxuLy8gd2hldGhlciBtYXBUb1Byb3BzIG5lZWRzIHRvIGJlIGludm9rZWQgd2hlbiBwcm9wcyBoYXZlIGNoYW5nZWQuXG4vL1xuLy8gQSBsZW5ndGggb2Ygb25lIHNpZ25hbHMgdGhhdCBtYXBUb1Byb3BzIGRvZXMgbm90IGRlcGVuZCBvbiBwcm9wcyBmcm9tIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuLy8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1bWVkIHRvIG1lYW4gbWFwVG9Qcm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAuLi5hcmdzIGFuZFxuLy8gdGhlcmVmb3JlIG5vdCByZXBvcnRpbmcgaXRzIGxlbmd0aCBhY2N1cmF0ZWx5Li5cbi8vIFRPRE8gQ2FuIHRoaXMgZ2V0IHB1bGxlZCBvdXQgc28gdGhhdCB3ZSBjYW4gc3Vic2NyaWJlIGRpcmVjdGx5IHRvIHRoZSBzdG9yZSBpZiB3ZSBkb24ndCBuZWVkIG93blByb3BzP1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcykge1xuICByZXR1cm4gbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcyA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgOiBtYXBUb1Byb3BzLmxlbmd0aCAhPT0gMTtcbn0gLy8gVXNlZCBieSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sXG4vLyB0aGlzIGZ1bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4gYSBwcm94eSBmdW5jdGlvbiB3aGljaCBkb2VzIHNldmVyYWwgdGhpbmdzOlxuLy9cbi8vICAqIERldGVjdHMgd2hldGhlciB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZGVwZW5kcyBvbiBwcm9wcywgd2hpY2hcbi8vICAgIGlzIHVzZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHRvIGRlY2lkZSBpZiBpdCBzaG91bGQgcmVpbnZva2Ugb24gcHJvcHMgY2hhbmdlcy5cbi8vXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCBoYW5kbGVzIG1hcFRvUHJvcHMgaWYgcmV0dXJucyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRzIHRoYXRcbi8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuLy9cbi8vICAqIE9uIGZpcnN0IGNhbGwsIHZlcmlmaWVzIHRoZSBmaXJzdCByZXN1bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRvIHdhcm5cbi8vICAgIHRoZSBkZXZlbG9wZXIgdGhhdCB0aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYSB2YWxpZCByZXN1bHQuXG4vL1xuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJvcHMsIG1ldGhvZE5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRQcm94eVNlbGVjdG9yKGRpc3BhdGNoLCB7XG4gICAgZGlzcGxheU5hbWVcbiAgfSkge1xuICAgIGNvbnN0IHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA/IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCwgdW5kZWZpbmVkKTtcbiAgICB9OyAvLyBhbGxvdyBkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5IHRvIGdldCBvd25Qcm9wc1xuXG5cbiAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IHRydWU7XG5cbiAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFjdG9yeUFuZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG4gICAgICBwcm94eS5tYXBUb1Byb3BzID0gbWFwVG9Qcm9wcztcbiAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcyk7XG4gICAgICBsZXQgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG4gICAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMocHJvcHMpO1xuICAgICAgICBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgdmVyaWZ5UGxhaW5PYmplY3QocHJvcHMsIGRpc3BsYXlOYW1lLCBtZXRob2ROYW1lKTtcbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb3h5O1xuICB9O1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/connect/wrapMapToProps.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/exports.js":
/*!************************************************!*\
!*** ./node_modules/react-redux/es/exports.js ***!
\************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Provider: function() { return /* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */ ReactReduxContext: function() { return /* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext; },\n/* harmony export */ connect: function() { return /* reexport safe */ _components_connect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */ createDispatchHook: function() { return /* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.createDispatchHook; },\n/* harmony export */ createSelectorHook: function() { return /* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.createSelectorHook; },\n/* harmony export */ createStoreHook: function() { return /* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.createStoreHook; },\n/* harmony export */ shallowEqual: function() { return /* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */ useDispatch: function() { return /* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.useDispatch; },\n/* harmony export */ useSelector: function() { return /* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.useSelector; },\n/* harmony export */ useStore: function() { return /* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore; }\n/* harmony export */ });\n/* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ \"./node_modules/react-redux/es/components/Provider.js\");\n/* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connect */ \"./node_modules/react-redux/es/components/connect.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/useDispatch */ \"./node_modules/react-redux/es/hooks/useDispatch.js\");\n/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ \"./node_modules/react-redux/es/hooks/useSelector.js\");\n/* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useStore */ \"./node_modules/react-redux/es/hooks/useStore.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/shallowEqual */ \"./node_modules/react-redux/es/utils/shallowEqual.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ \"./node_modules/react-redux/es/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_7__) if([\"default\",\"Provider\",\"ReactReduxContext\",\"connect\",\"useDispatch\",\"createDispatchHook\",\"useSelector\",\"createSelectorHook\",\"useStore\",\"createStoreHook\",\"shallowEqual\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _types__WEBPACK_IMPORTED_MODULE_7__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvZXhwb3J0cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNkM7QUFDRjtBQUNjO0FBQ2E7QUFDQTtBQUNUO0FBQ2I7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2V4cG9ydHMuanM/MWJiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvdmlkZXIgZnJvbSAnLi9jb21wb25lbnRzL1Byb3ZpZGVyJztcbmltcG9ydCBjb25uZWN0IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi9jb21wb25lbnRzL0NvbnRleHQnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIGNyZWF0ZURpc3BhdGNoSG9vayB9IGZyb20gJy4vaG9va3MvdXNlRGlzcGF0Y2gnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9ySG9vayB9IGZyb20gJy4vaG9va3MvdXNlU2VsZWN0b3InO1xuaW1wb3J0IHsgdXNlU3RvcmUsIGNyZWF0ZVN0b3JlSG9vayB9IGZyb20gJy4vaG9va3MvdXNlU3RvcmUnO1xuaW1wb3J0IHNoYWxsb3dFcXVhbCBmcm9tICcuL3V0aWxzL3NoYWxsb3dFcXVhbCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7IFByb3ZpZGVyLCBSZWFjdFJlZHV4Q29udGV4dCwgY29ubmVjdCwgdXNlRGlzcGF0Y2gsIGNyZWF0ZURpc3BhdGNoSG9vaywgdXNlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9ySG9vaywgdXNlU3RvcmUsIGNyZWF0ZVN0b3JlSG9vaywgc2hhbGxvd0VxdWFsIH07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/exports.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/hooks/useDispatch.js":
/*!**********************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useDispatch.js ***!
\**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createDispatchHook: function() { return /* binding */ createDispatchHook; },\n/* harmony export */ useDispatch: function() { return /* binding */ useDispatch; }\n/* harmony export */ });\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ \"./node_modules/react-redux/es/hooks/useStore.js\");\n\n\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nfunction createDispatchHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext) {\n const useStore = // @ts-ignore\n context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nconst useDispatch = /*#__PURE__*/createDispatchHook();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlRGlzcGF0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEwRDtBQUNnQjtBQUMxRTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGVBQWU7QUFDMUIsYUFBYSxVQUFVO0FBQ3ZCOztBQUVPLHNDQUFzQyxrRUFBaUI7QUFDOUQ7QUFDQSxjQUFjLGtFQUFpQixHQUFHLCtDQUFlLEdBQUcsMERBQWU7QUFDbkU7QUFDQSw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsY0FBYztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsY0FBYztBQUNqQyxZQUFZLGNBQWM7QUFDMUI7QUFDQSxzQ0FBc0MsT0FBTztBQUM3QztBQUNBLDBEQUEwRCwwQkFBMEI7QUFDcEY7QUFDQTtBQUNBLGdCQUFnQixNQUFNO0FBQ3RCLDBCQUEwQixnQkFBZ0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7O0FBRU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2hvb2tzL3VzZURpc3BhdGNoLmpzPzY0MjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3RSZWR1eENvbnRleHQgfSBmcm9tICcuLi9jb21wb25lbnRzL0NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmUgYXMgdXNlRGVmYXVsdFN0b3JlLCBjcmVhdGVTdG9yZUhvb2sgfSBmcm9tICcuL3VzZVN0b3JlJztcbi8qKlxyXG4gKiBIb29rIGZhY3RvcnksIHdoaWNoIGNyZWF0ZXMgYSBgdXNlRGlzcGF0Y2hgIGhvb2sgYm91bmQgdG8gYSBnaXZlbiBjb250ZXh0LlxyXG4gKlxyXG4gKiBAcGFyYW0ge1JlYWN0LkNvbnRleHR9IFtjb250ZXh0PVJlYWN0UmVkdXhDb250ZXh0XSBDb250ZXh0IHBhc3NlZCB0byB5b3VyIGA8UHJvdmlkZXI+YC5cclxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGB1c2VEaXNwYXRjaGAgaG9vayBib3VuZCB0byB0aGUgc3BlY2lmaWVkIGNvbnRleHQuXHJcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlzcGF0Y2hIb29rKGNvbnRleHQgPSBSZWFjdFJlZHV4Q29udGV4dCkge1xuICBjb25zdCB1c2VTdG9yZSA9IC8vIEB0cy1pZ25vcmVcbiAgY29udGV4dCA9PT0gUmVhY3RSZWR1eENvbnRleHQgPyB1c2VEZWZhdWx0U3RvcmUgOiBjcmVhdGVTdG9yZUhvb2soY29udGV4dCk7XG4gIHJldHVybiBmdW5jdGlvbiB1c2VEaXNwYXRjaCgpIHtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVN0b3JlKCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIHJldHVybiBzdG9yZS5kaXNwYXRjaDtcbiAgfTtcbn1cbi8qKlxyXG4gKiBBIGhvb2sgdG8gYWNjZXNzIHRoZSByZWR1eCBgZGlzcGF0Y2hgIGZ1bmN0aW9uLlxyXG4gKlxyXG4gKiBAcmV0dXJucyB7YW55fGZ1bmN0aW9ufSByZWR1eCBzdG9yZSdzIGBkaXNwYXRjaGAgZnVuY3Rpb25cclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnXHJcbiAqIGltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyQ29tcG9uZW50ID0gKHsgdmFsdWUgfSkgPT4ge1xyXG4gKiAgIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKVxyXG4gKiAgIGNvbnN0IGluY3JlYXNlQ291bnRlciA9IHVzZUNhbGxiYWNrKCgpID0+IGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlYXNlLWNvdW50ZXInIH0pLCBbXSlcclxuICogICByZXR1cm4gKFxyXG4gKiAgICAgPGRpdj5cclxuICogICAgICAgPHNwYW4+e3ZhbHVlfTwvc3Bhbj5cclxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtpbmNyZWFzZUNvdW50ZXJ9PkluY3JlYXNlIGNvdW50ZXI8L2J1dHRvbj5cclxuICogICAgIDwvZGl2PlxyXG4gKiAgIClcclxuICogfVxyXG4gKi9cblxuZXhwb3J0IGNvbnN0IHVzZURpc3BhdGNoID0gLyojX19QVVJFX18qL2NyZWF0ZURpc3BhdGNoSG9vaygpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/hooks/useDispatch.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/hooks/useReduxContext.js":
/*!**************************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useReduxContext.js ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useReduxContext: function() { return /* binding */ useReduxContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n\n\n\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\nfunction useReduxContext() {\n const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext);\n\n if ( true && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlUmVkdXhDb250ZXh0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUM7QUFDdUI7O0FBRTFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0I7QUFDOUI7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7QUFDTztBQUNQLHVCQUF1QixpREFBVSxDQUFDLGtFQUFpQjs7QUFFbkQsTUFBTSxLQUFxQztBQUMzQywrREFBK0Q7QUFDL0Q7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlUmVkdXhDb250ZXh0LmpzPzkwNDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcblxuLyoqXHJcbiAqIEEgaG9vayB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgLiBUaGlzIGlzIGEgbG93LWxldmVsXHJcbiAqIGhvb2sgdGhhdCB5b3Ugc2hvdWxkIHVzdWFsbHkgbm90IG5lZWQgdG8gY2FsbCBkaXJlY3RseS5cclxuICpcclxuICogQHJldHVybnMge2FueX0gdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuICogaW1wb3J0IHsgdXNlUmVkdXhDb250ZXh0IH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyQ29tcG9uZW50ID0gKCkgPT4ge1xyXG4gKiAgIGNvbnN0IHsgc3RvcmUgfSA9IHVzZVJlZHV4Q29udGV4dCgpXHJcbiAqICAgcmV0dXJuIDxkaXY+e3N0b3JlLmdldFN0YXRlKCl9PC9kaXY+XHJcbiAqIH1cclxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkdXhDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VDb250ZXh0KFJlYWN0UmVkdXhDb250ZXh0KTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29udGV4dFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCByZWFjdC1yZWR1eCBjb250ZXh0IHZhbHVlOyBwbGVhc2UgZW5zdXJlIHRoZSBjb21wb25lbnQgaXMgd3JhcHBlZCBpbiBhIDxQcm92aWRlcj4nKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0VmFsdWU7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/hooks/useReduxContext.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/hooks/useSelector.js":
/*!**********************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useSelector.js ***!
\**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSelectorHook: function() { return /* binding */ createSelectorHook; },\n/* harmony export */ initializeUseSelector: function() { return /* binding */ initializeUseSelector; },\n/* harmony export */ useSelector: function() { return /* binding */ useSelector; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ \"./node_modules/react-redux/es/hooks/useReduxContext.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ \"./node_modules/react-redux/es/utils/useSyncExternalStore.js\");\n\n\n\n\nlet useSyncExternalStoreWithSelector = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__.notInitialized;\nconst initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nfunction createSelectorHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext) {\n const useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);\n return function useSelector(selector, equalityFn = refEquality) {\n if (true) {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState\n } = useReduxContext();\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nconst useSelector = /*#__PURE__*/createSelectorHook();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlU2VsZWN0b3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBa0Q7QUFDNEI7QUFDcEI7QUFDSztBQUMvRCx1Q0FBdUMsdUVBQWM7QUFDOUM7QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxlQUFlO0FBQzFCLGFBQWEsVUFBVTtBQUN2Qjs7O0FBR08sc0NBQXNDLGtFQUFpQjtBQUM5RCxzQ0FBc0Msa0VBQWlCLEdBQUcsNkRBQXNCLFNBQVMsaURBQVU7QUFDbkc7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxJQUFJLG9EQUFhO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxXQUFXO0FBQ3RCO0FBQ0EsYUFBYSxLQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixRQUFRO0FBQzFCO0FBQ0E7O0FBRU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2hvb2tzL3VzZVNlbGVjdG9yLmpzPzYzNzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRGVidWdWYWx1ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJlZHV4Q29udGV4dCBhcyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi91c2VSZWR1eENvbnRleHQnO1xuaW1wb3J0IHsgUmVhY3RSZWR1eENvbnRleHQgfSBmcm9tICcuLi9jb21wb25lbnRzL0NvbnRleHQnO1xuaW1wb3J0IHsgbm90SW5pdGlhbGl6ZWQgfSBmcm9tICcuLi91dGlscy91c2VTeW5jRXh0ZXJuYWxTdG9yZSc7XG5sZXQgdXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3IgPSBub3RJbml0aWFsaXplZDtcbmV4cG9ydCBjb25zdCBpbml0aWFsaXplVXNlU2VsZWN0b3IgPSBmbiA9PiB7XG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yID0gZm47XG59O1xuXG5jb25zdCByZWZFcXVhbGl0eSA9IChhLCBiKSA9PiBhID09PSBiO1xuLyoqXHJcbiAqIEhvb2sgZmFjdG9yeSwgd2hpY2ggY3JlYXRlcyBhIGB1c2VTZWxlY3RvcmAgaG9vayBib3VuZCB0byBhIGdpdmVuIGNvbnRleHQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7UmVhY3QuQ29udGV4dH0gW2NvbnRleHQ9UmVhY3RSZWR1eENvbnRleHRdIENvbnRleHQgcGFzc2VkIHRvIHlvdXIgYDxQcm92aWRlcj5gLlxyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgYHVzZVNlbGVjdG9yYCBob29rIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgY29udGV4dC5cclxuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlbGVjdG9ySG9vayhjb250ZXh0ID0gUmVhY3RSZWR1eENvbnRleHQpIHtcbiAgY29uc3QgdXNlUmVkdXhDb250ZXh0ID0gY29udGV4dCA9PT0gUmVhY3RSZWR1eENvbnRleHQgPyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0IDogKCkgPT4gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVNlbGVjdG9yKHNlbGVjdG9yLCBlcXVhbGl0eUZuID0gcmVmRXF1YWxpdHkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHBhc3MgYSBzZWxlY3RvciB0byB1c2VTZWxlY3RvcmApO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHNlbGVjdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIGEgc2VsZWN0b3IgdG8gdXNlU2VsZWN0b3JgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBlcXVhbGl0eUZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IG11c3QgcGFzcyBhIGZ1bmN0aW9uIGFzIGFuIGVxdWFsaXR5IGZ1bmN0aW9uIHRvIHVzZVNlbGVjdG9yYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgc3RvcmUsXG4gICAgICBzdWJzY3JpcHRpb24sXG4gICAgICBnZXRTZXJ2ZXJTdGF0ZVxuICAgIH0gPSB1c2VSZWR1eENvbnRleHQoKTtcbiAgICBjb25zdCBzZWxlY3RlZFN0YXRlID0gdXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3Ioc3Vic2NyaXB0aW9uLmFkZE5lc3RlZFN1Yiwgc3RvcmUuZ2V0U3RhdGUsIGdldFNlcnZlclN0YXRlIHx8IHN0b3JlLmdldFN0YXRlLCBzZWxlY3RvciwgZXF1YWxpdHlGbik7XG4gICAgdXNlRGVidWdWYWx1ZShzZWxlY3RlZFN0YXRlKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRTdGF0ZTtcbiAgfTtcbn1cbi8qKlxyXG4gKiBBIGhvb2sgdG8gYWNjZXNzIHRoZSByZWR1eCBzdG9yZSdzIHN0YXRlLiBUaGlzIGhvb2sgdGFrZXMgYSBzZWxlY3RvciBmdW5jdGlvblxyXG4gKiBhcyBhbiBhcmd1bWVudC4gVGhlIHNlbGVjdG9yIGlzIGNhbGxlZCB3aXRoIHRoZSBzdG9yZSBzdGF0ZS5cclxuICpcclxuICogVGhpcyBob29rIHRha2VzIGFuIG9wdGlvbmFsIGVxdWFsaXR5IGNvbXBhcmlzb24gZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICogdGhhdCBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgd2F5IHRoZSBzZWxlY3RlZCBzdGF0ZSBpcyBjb21wYXJlZCB0byBkZXRlcm1pbmVcclxuICogd2hldGhlciB0aGUgY29tcG9uZW50IG5lZWRzIHRvIGJlIHJlLXJlbmRlcmVkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZWxlY3RvciB0aGUgc2VsZWN0b3IgZnVuY3Rpb25cclxuICogQHBhcmFtIHtGdW5jdGlvbj19IGVxdWFsaXR5Rm4gdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSBlcXVhbGl0eVxyXG4gKlxyXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgc2VsZWN0ZWQgc3RhdGVcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG4gKiBpbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4J1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgQ291bnRlckNvbXBvbmVudCA9ICgpID0+IHtcclxuICogICBjb25zdCBjb3VudGVyID0gdXNlU2VsZWN0b3Ioc3RhdGUgPT4gc3RhdGUuY291bnRlcilcclxuICogICByZXR1cm4gPGRpdj57Y291bnRlcn08L2Rpdj5cclxuICogfVxyXG4gKi9cblxuZXhwb3J0IGNvbnN0IHVzZVNlbGVjdG9yID0gLyojX19QVVJFX18qL2NyZWF0ZVNlbGVjdG9ySG9vaygpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/hooks/useSelector.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/hooks/useStore.js":
/*!*******************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useStore.js ***!
\*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createStoreHook: function() { return /* binding */ createStoreHook; },\n/* harmony export */ useStore: function() { return /* binding */ useStore; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ \"./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useReduxContext */ \"./node_modules/react-redux/es/hooks/useReduxContext.js\");\n\n\n\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nfunction createStoreHook(context = _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_2__.useReduxContext : () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nconst useStore = /*#__PURE__*/createStoreHook();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlU3RvcmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQW1DO0FBQ3VCO0FBQ29CO0FBQzlFO0FBQ0E7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLFVBQVU7QUFDdkI7O0FBRU8sbUNBQW1DLGtFQUFpQjtBQUMzRDtBQUNBLGNBQWMsa0VBQWlCLEdBQUcsNkRBQXNCLFNBQVMsaURBQVU7QUFDM0U7QUFDQTtBQUNBO0FBQ0EsTUFBTSxxQkFBcUI7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsS0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksV0FBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsaUJBQWlCO0FBQ25DO0FBQ0E7O0FBRU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2hvb2tzL3VzZVN0b3JlLmpzPzNiZDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcbmltcG9ydCB7IHVzZVJlZHV4Q29udGV4dCBhcyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi91c2VSZWR1eENvbnRleHQnO1xuLyoqXHJcbiAqIEhvb2sgZmFjdG9yeSwgd2hpY2ggY3JlYXRlcyBhIGB1c2VTdG9yZWAgaG9vayBib3VuZCB0byBhIGdpdmVuIGNvbnRleHQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7UmVhY3QuQ29udGV4dH0gW2NvbnRleHQ9UmVhY3RSZWR1eENvbnRleHRdIENvbnRleHQgcGFzc2VkIHRvIHlvdXIgYDxQcm92aWRlcj5gLlxyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgYHVzZVN0b3JlYCBob29rIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgY29udGV4dC5cclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdG9yZUhvb2soY29udGV4dCA9IFJlYWN0UmVkdXhDb250ZXh0KSB7XG4gIGNvbnN0IHVzZVJlZHV4Q29udGV4dCA9IC8vIEB0cy1pZ25vcmVcbiAgY29udGV4dCA9PT0gUmVhY3RSZWR1eENvbnRleHQgPyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0IDogKCkgPT4gdXNlQ29udGV4dChjb250ZXh0KTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVN0b3JlKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHN0b3JlXG4gICAgfSA9IHVzZVJlZHV4Q29udGV4dCgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICByZXR1cm4gc3RvcmU7XG4gIH07XG59XG4vKipcclxuICogQSBob29rIHRvIGFjY2VzcyB0aGUgcmVkdXggc3RvcmUuXHJcbiAqXHJcbiAqIEByZXR1cm5zIHthbnl9IHRoZSByZWR1eCBzdG9yZVxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKlxyXG4gKiBpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXHJcbiAqIGltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBFeGFtcGxlQ29tcG9uZW50ID0gKCkgPT4ge1xyXG4gKiAgIGNvbnN0IHN0b3JlID0gdXNlU3RvcmUoKVxyXG4gKiAgIHJldHVybiA8ZGl2PntzdG9yZS5nZXRTdGF0ZSgpfTwvZGl2PlxyXG4gKiB9XHJcbiAqL1xuXG5leHBvcnQgY29uc3QgdXNlU3RvcmUgPSAvKiNfX1BVUkVfXyovY3JlYXRlU3RvcmVIb29rKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/hooks/useStore.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/index.js":
/*!**********************************************!*\
!*** ./node_modules/react-redux/es/index.js ***!
\**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ batch: function() { return /* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates; }\n/* harmony export */ });\n/* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sync-external-store/shim */ \"./node_modules/use-sync-external-store/shim/index.js\");\n/* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector */ \"./node_modules/use-sync-external-store/shim/with-selector.js\");\n/* harmony import */ var use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ \"./node_modules/react-redux/es/utils/reactBatchedUpdates.js\");\n/* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/batch */ \"./node_modules/react-redux/es/utils/batch.js\");\n/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ \"./node_modules/react-redux/es/hooks/useSelector.js\");\n/* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/connect */ \"./node_modules/react-redux/es/components/connect.js\");\n/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./exports */ \"./node_modules/react-redux/es/exports.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _exports__WEBPACK_IMPORTED_MODULE_6__) if([\"default\",\"batch\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _exports__WEBPACK_IMPORTED_MODULE_6__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\n\n\n\n\n\n\n(0,_hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.initializeUseSelector)(use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__.useSyncExternalStoreWithSelector);\n(0,_components_connect__WEBPACK_IMPORTED_MODULE_5__.initializeConnect)(use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\n(0,_utils_batch__WEBPACK_IMPORTED_MODULE_3__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNvRTtBQUMwQjtBQUNmO0FBQ3RDO0FBQ21CO0FBQ0g7QUFDekQseUVBQXFCLENBQUMsd0dBQWdDO0FBQ3RELHNFQUFpQixDQUFDLDhFQUFvQixHQUFHO0FBQ3pDOztBQUVBLHNEQUFRLENBQUMsK0VBQUs7QUFDRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaW5kZXguanM/NTMyNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBhc3N1bWVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBzdGFuZGFyZCBSZWFjdERPTS9STiwgYnV0XG4vLyBvbGRlciB2ZXJzaW9ucyB0aGF0IGRvIG5vdCBpbmNsdWRlIGB1c2VTeW5jRXh0ZXJuYWxTdG9yZWAgKFJlYWN0IDE2LjkgLSAxNy54KS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhlIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGNvbXBhdCBzaGltIGlzIG5lZWRlZC5cbmltcG9ydCB7IHVzZVN5bmNFeHRlcm5hbFN0b3JlIH0gZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbSc7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9IGZyb20gJ3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvcic7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyBhcyBiYXRjaCB9IGZyb20gJy4vdXRpbHMvcmVhY3RCYXRjaGVkVXBkYXRlcyc7XG5pbXBvcnQgeyBzZXRCYXRjaCB9IGZyb20gJy4vdXRpbHMvYmF0Y2gnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZVVzZVNlbGVjdG9yIH0gZnJvbSAnLi9ob29rcy91c2VTZWxlY3Rvcic7XG5pbXBvcnQgeyBpbml0aWFsaXplQ29ubmVjdCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0JztcbmluaXRpYWxpemVVc2VTZWxlY3Rvcih1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3Rvcik7XG5pbml0aWFsaXplQ29ubmVjdCh1c2VTeW5jRXh0ZXJuYWxTdG9yZSk7IC8vIEVuYWJsZSBiYXRjaGVkIHVwZGF0ZXMgaW4gb3VyIHN1YnNjcmlwdGlvbnMgZm9yIHVzZVxuLy8gd2l0aCBzdGFuZGFyZCBSZWFjdCByZW5kZXJlcnMgKFJlYWN0RE9NLCBSZWFjdCBOYXRpdmUpXG5cbnNldEJhdGNoKGJhdGNoKTtcbmV4cG9ydCB7IGJhdGNoIH07XG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydHMnOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/index.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/types.js":
/*!**********************************************!*\
!*** ./node_modules/react-redux/es/types.js ***!
\**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./node_modules/react-redux/es/utils/Subscription.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/utils/Subscription.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSubscription: function() { return /* binding */ createSubscription; }\n/* harmony export */ });\n/* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ \"./node_modules/react-redux/es/utils/batch.js\");\n // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nfunction createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe,\n tryUnsubscribe,\n getListeners: () => listeners\n };\n return subscription;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvU3Vic2NyaXB0aW9uLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW1DLENBQUM7QUFDcEM7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixnREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9TdWJzY3JpcHRpb24uanM/ZGI1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRCYXRjaCB9IGZyb20gJy4vYmF0Y2gnOyAvLyBlbmNhcHN1bGF0ZXMgdGhlIHN1YnNjcmlwdGlvbiBsb2dpYyBmb3IgY29ubmVjdGluZyBhIGNvbXBvbmVudCB0byB0aGUgcmVkdXggc3RvcmUsIGFzXG4vLyB3ZWxsIGFzIG5lc3Rpbmcgc3Vic2NyaXB0aW9ucyBvZiBkZXNjZW5kYW50IGNvbXBvbmVudHMsIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGVcbi8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVyIGJlZm9yZSBkZXNjZW5kYW50c1xuXG5mdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG4gIGNvbnN0IGJhdGNoID0gZ2V0QmF0Y2goKTtcbiAgbGV0IGZpcnN0ID0gbnVsbDtcbiAgbGV0IGxhc3QgPSBudWxsO1xuICByZXR1cm4ge1xuICAgIGNsZWFyKCkge1xuICAgICAgZmlyc3QgPSBudWxsO1xuICAgICAgbGFzdCA9IG51bGw7XG4gICAgfSxcblxuICAgIG5vdGlmeSgpIHtcbiAgICAgIGJhdGNoKCgpID0+IHtcbiAgICAgICAgbGV0IGxpc3RlbmVyID0gZmlyc3Q7XG5cbiAgICAgICAgd2hpbGUgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgbGlzdGVuZXIuY2FsbGJhY2soKTtcbiAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBnZXQoKSB7XG4gICAgICBsZXQgbGlzdGVuZXJzID0gW107XG4gICAgICBsZXQgbGlzdGVuZXIgPSBmaXJzdDtcblxuICAgICAgd2hpbGUgKGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5lci5uZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdGVuZXJzO1xuICAgIH0sXG5cbiAgICBzdWJzY3JpYmUoY2FsbGJhY2spIHtcbiAgICAgIGxldCBpc1N1YnNjcmliZWQgPSB0cnVlO1xuICAgICAgbGV0IGxpc3RlbmVyID0gbGFzdCA9IHtcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIG5leHQ6IG51bGwsXG4gICAgICAgIHByZXY6IGxhc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChsaXN0ZW5lci5wcmV2KSB7XG4gICAgICAgIGxpc3RlbmVyLnByZXYubmV4dCA9IGxpc3RlbmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3QgPSBsaXN0ZW5lcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCB8fCBmaXJzdCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICBpc1N1YnNjcmliZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAobGlzdGVuZXIubmV4dCkge1xuICAgICAgICAgIGxpc3RlbmVyLm5leHQucHJldiA9IGxpc3RlbmVyLnByZXY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdCA9IGxpc3RlbmVyLnByZXY7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdGVuZXIucHJldikge1xuICAgICAgICAgIGxpc3RlbmVyLnByZXYubmV4dCA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3QgPSBsaXN0ZW5lci5uZXh0O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICB9O1xufVxuXG5jb25zdCBudWxsTGlzdGVuZXJzID0ge1xuICBub3RpZnkoKSB7fSxcblxuICBnZXQ6ICgpID0+IFtdXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihzdG9yZSwgcGFyZW50U3ViKSB7XG4gIGxldCB1bnN1YnNjcmliZTtcbiAgbGV0IGxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG5cbiAgZnVuY3Rpb24gYWRkTmVzdGVkU3ViKGxpc3RlbmVyKSB7XG4gICAgdHJ5U3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIGxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG5cbiAgZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3VicygpIHtcbiAgICBsaXN0ZW5lcnMubm90aWZ5KCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VXcmFwcGVyKCkge1xuICAgIGlmIChzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSkge1xuICAgICAgc3Vic2NyaXB0aW9uLm9uU3RhdGVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odW5zdWJzY3JpYmUpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJ5U3Vic2NyaWJlKCkge1xuICAgIGlmICghdW5zdWJzY3JpYmUpIHtcbiAgICAgIHVuc3Vic2NyaWJlID0gcGFyZW50U3ViID8gcGFyZW50U3ViLmFkZE5lc3RlZFN1YihoYW5kbGVDaGFuZ2VXcmFwcGVyKSA6IHN0b3JlLnN1YnNjcmliZShoYW5kbGVDaGFuZ2VXcmFwcGVyKTtcbiAgICAgIGxpc3RlbmVycyA9IGNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRyeVVuc3Vic2NyaWJlKCkge1xuICAgIGlmICh1bnN1YnNjcmliZSkge1xuICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIHVuc3Vic2NyaWJlID0gdW5kZWZpbmVkO1xuICAgICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgICBsaXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHtcbiAgICBhZGROZXN0ZWRTdWIsXG4gICAgbm90aWZ5TmVzdGVkU3VicyxcbiAgICBoYW5kbGVDaGFuZ2VXcmFwcGVyLFxuICAgIGlzU3Vic2NyaWJlZCxcbiAgICB0cnlTdWJzY3JpYmUsXG4gICAgdHJ5VW5zdWJzY3JpYmUsXG4gICAgZ2V0TGlzdGVuZXJzOiAoKSA9PiBsaXN0ZW5lcnNcbiAgfTtcbiAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/Subscription.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/batch.js":
/*!****************************************************!*\
!*** ./node_modules/react-redux/es/utils/batch.js ***!
\****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getBatch: function() { return /* binding */ getBatch; },\n/* harmony export */ setBatch: function() { return /* binding */ setBatch; }\n/* harmony export */ });\n// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nconst setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nconst getBatch = () => batch;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvYmF0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEI7O0FBRXZCLCtDQUErQzs7QUFFL0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL2JhdGNoLmpzPzE0ZDIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVmYXVsdCB0byBhIGR1bW15IFwiYmF0Y2hcIiBpbXBsZW1lbnRhdGlvbiB0aGF0IGp1c3QgcnVucyB0aGUgY2FsbGJhY2tcbmZ1bmN0aW9uIGRlZmF1bHROb29wQmF0Y2goY2FsbGJhY2spIHtcbiAgY2FsbGJhY2soKTtcbn1cblxubGV0IGJhdGNoID0gZGVmYXVsdE5vb3BCYXRjaDsgLy8gQWxsb3cgaW5qZWN0aW5nIGFub3RoZXIgYmF0Y2hpbmcgZnVuY3Rpb24gbGF0ZXJcblxuZXhwb3J0IGNvbnN0IHNldEJhdGNoID0gbmV3QmF0Y2ggPT4gYmF0Y2ggPSBuZXdCYXRjaDsgLy8gU3VwcGx5IGEgZ2V0dGVyIGp1c3QgdG8gc2tpcCBkZWFsaW5nIHdpdGggRVNNIGJpbmRpbmdzXG5cbmV4cG9ydCBjb25zdCBnZXRCYXRjaCA9ICgpID0+IGJhdGNoOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/batch.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/bindActionCreators.js":
/*!*****************************************************************!*\
!*** ./node_modules/react-redux/es/utils/bindActionCreators.js ***!
\*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ bindActionCreators; }\n/* harmony export */ });\nfunction bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n\n return boundActionCreators;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvYmluZEFjdGlvbkNyZWF0b3JzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBZTtBQUNmOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvYmluZEFjdGlvbkNyZWF0b3JzLmpzPzRlZTUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuICBjb25zdCBib3VuZEFjdGlvbkNyZWF0b3JzID0ge307XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gYWN0aW9uQ3JlYXRvcnMpIHtcbiAgICBjb25zdCBhY3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYm91bmRBY3Rpb25DcmVhdG9yc1trZXldID0gKC4uLmFyZ3MpID0+IGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IoLi4uYXJncykpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/bindActionCreators.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/isPlainObject.js":
/*!************************************************************!*\
!*** ./node_modules/react-redux/es/utils/isPlainObject.js ***!
\************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isPlainObject; }\n/* harmony export */ });\n/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n let proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n let baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvaXNQbGFpbk9iamVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxXQUFXLEtBQUs7QUFDaEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvaXNQbGFpbk9iamVjdC5qcz81NGQyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAcGFyYW0ge2FueX0gb2JqIFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFyZ3VtZW50IGFwcGVhcnMgdG8gYmUgYSBwbGFpbiBvYmplY3QuXHJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBsZXQgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgbGV0IGJhc2VQcm90byA9IHByb3RvO1xuXG4gIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZVByb3RvKSAhPT0gbnVsbCkge1xuICAgIGJhc2VQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihiYXNlUHJvdG8pO1xuICB9XG5cbiAgcmV0dXJuIHByb3RvID09PSBiYXNlUHJvdG87XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/isPlainObject.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/reactBatchedUpdates.js":
/*!******************************************************************!*\
!*** ./node_modules/react-redux/es/utils/reactBatchedUpdates.js ***!
\******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ unstable_batchedUpdates: function() { return /* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates; }
/* harmony export */ });
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_0__);
/***/ }),
/***/ "./node_modules/react-redux/es/utils/shallowEqual.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/utils/shallowEqual.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ shallowEqual; }\n/* harmony export */ });\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvc2hhbGxvd0VxdWFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isa0JBQWtCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL3NoYWxsb3dFcXVhbC5qcz83Njc2Il0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/shallowEqual.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js":
/*!************************************************************************!*\
!*** ./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***!
\************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canUseDOM: function() { return /* binding */ canUseDOM; },\n/* harmony export */ useIsomorphicLayoutEffect: function() { return /* binding */ useIsomorphicLayoutEffect; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nconst canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nconst useIsomorphicLayoutEffect = canUseDOM ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW1ELENBQUM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBOztBQUVPO0FBQ0EsOENBQThDLGtEQUFlLEdBQUcsNENBQVMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QuanM/YjJkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JzsgLy8gUmVhY3QgY3VycmVudGx5IHRocm93cyBhIHdhcm5pbmcgd2hlbiB1c2luZyB1c2VMYXlvdXRFZmZlY3Qgb24gdGhlIHNlcnZlci5cbi8vIFRvIGdldCBhcm91bmQgaXQsIHdlIGNhbiBjb25kaXRpb25hbGx5IHVzZUVmZmVjdCBvbiB0aGUgc2VydmVyIChuby1vcCkgYW5kXG4vLyB1c2VMYXlvdXRFZmZlY3QgaW4gdGhlIGJyb3dzZXIuIFdlIG5lZWQgdXNlTGF5b3V0RWZmZWN0IHRvIGVuc3VyZSB0aGUgc3RvcmVcbi8vIHN1YnNjcmlwdGlvbiBjYWxsYmFjayBhbHdheXMgaGFzIHRoZSBzZWxlY3RvciBmcm9tIHRoZSBsYXRlc3QgcmVuZGVyIGNvbW1pdFxuLy8gYXZhaWxhYmxlLCBvdGhlcndpc2UgYSBzdG9yZSB1cGRhdGUgbWF5IGhhcHBlbiBiZXR3ZWVuIHJlbmRlciBhbmQgdGhlIGVmZmVjdCxcbi8vIHdoaWNoIG1heSBjYXVzZSBtaXNzZWQgdXBkYXRlczsgd2UgYWxzbyBtdXN0IGVuc3VyZSB0aGUgc3RvcmUgc3Vic2NyaXB0aW9uXG4vLyBpcyBjcmVhdGVkIHN5bmNocm9ub3VzbHksIG90aGVyd2lzZSBhIHN0b3JlIHVwZGF0ZSBtYXkgb2NjdXIgYmVmb3JlIHRoZVxuLy8gc3Vic2NyaXB0aW9uIGlzIGNyZWF0ZWQgYW5kIGFuIGluY29uc2lzdGVudCBzdGF0ZSBtYXkgYmUgb2JzZXJ2ZWRcbi8vIE1hdGNoZXMgbG9naWMgaW4gUmVhY3QncyBgc2hhcmVkL0V4ZWN1dGlvbkVudmlyb25tZW50YCBmaWxlXG5cbmV4cG9ydCBjb25zdCBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgIT09ICd1bmRlZmluZWQnKTtcbmV4cG9ydCBjb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gY2FuVXNlRE9NID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/useSyncExternalStore.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/utils/useSyncExternalStore.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ notInitialized: function() { return /* binding */ notInitialized; }\n/* harmony export */ });\nconst notInitialized = () => {\n throw new Error('uSES not initialized!');\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvdXNlU3luY0V4dGVybmFsU3RvcmUuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvdXNlU3luY0V4dGVybmFsU3RvcmUuanM/OTY0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgbm90SW5pdGlhbGl6ZWQgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcigndVNFUyBub3QgaW5pdGlhbGl6ZWQhJyk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/useSyncExternalStore.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/verifyPlainObject.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/utils/verifyPlainObject.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ verifyPlainObject; }\n/* harmony export */ });\n/* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ \"./node_modules/react-redux/es/utils/isPlainObject.js\");\n/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ \"./node_modules/react-redux/es/utils/warning.js\");\n\n\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n (0,_warning__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(`${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTRDO0FBQ1o7QUFDakI7QUFDZixPQUFPLDBEQUFhO0FBQ3BCLElBQUksb0RBQU8sSUFBSSxXQUFXLFFBQVEsYUFBYSwrQ0FBK0MsTUFBTTtBQUNwRztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5qcz8wZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpc1BsYWluT2JqZWN0IGZyb20gJy4vaXNQbGFpbk9iamVjdCc7XG5pbXBvcnQgd2FybmluZyBmcm9tICcuL3dhcm5pbmcnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UGxhaW5PYmplY3QodmFsdWUsIGRpc3BsYXlOYW1lLCBtZXRob2ROYW1lKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICB3YXJuaW5nKGAke21ldGhvZE5hbWV9KCkgaW4gJHtkaXNwbGF5TmFtZX0gbXVzdCByZXR1cm4gYSBwbGFpbiBvYmplY3QuIEluc3RlYWQgcmVjZWl2ZWQgJHt2YWx1ZX0uYCk7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/verifyPlainObject.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/es/utils/warning.js":
/*!******************************************************!*\
!*** ./node_modules/react-redux/es/utils/warning.js ***!
\******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ warning; }\n/* harmony export */ });\n/**\r\n * Prints a warning in the console if it exists.\r\n *\r\n * @param {String} message The warning message.\r\n * @returns {void}\r\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvd2FybmluZy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy93YXJuaW5nLmpzPzQ1OTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQgZXhpc3RzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxyXG4gKiBAcmV0dXJucyB7dm9pZH1cclxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cblxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG4gICAgLy8gXCJicmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlvdXIgY29uc29sZSxcbiAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHkgKi9cbiAgfSBjYXRjaCAoZSkge31cbiAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0eSAqL1xuXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/es/utils/warning.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************************************!*\
!*** ./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js ***!
\************************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n }\n }\n\n return false;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsSUFBSSxJQUFxQztBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEI7QUFDNUI7QUFDQSxxQ0FBcUM7O0FBRXJDLGdDQUFnQztBQUNoQztBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQSxrREFBa0Q7O0FBRWxEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVEOztBQUV2RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUI7QUFDdkIsdUJBQXVCO0FBQ3ZCLGVBQWU7QUFDZixrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLFlBQVk7QUFDWixZQUFZO0FBQ1osY0FBYztBQUNkLGdCQUFnQjtBQUNoQixrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsaUJBQWlCO0FBQ2pCLG9CQUFvQjtBQUNwQixrQkFBa0I7QUFDbEIsY0FBYztBQUNkLGNBQWM7QUFDZCxnQkFBZ0I7QUFDaEIsa0JBQWtCO0FBQ2xCLG9CQUFvQjtBQUNwQixrQkFBa0I7QUFDbEIsc0JBQXNCO0FBQ3RCLDBCQUEwQjtBQUMxQixjQUFjO0FBQ2QsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzP2FlZWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKTtcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc2VydmVyX2NvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG52YXIgZW5hYmxlU2NvcGVBUEkgPSBmYWxzZTsgLy8gRXhwZXJpbWVudGFsIENyZWF0ZSBFdmVudCBIYW5kbGUgQVBJLlxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xudmFyIGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nID0gZmFsc2U7IC8vIE5vIGtub3duIGJ1Z3MsIGJ1dCBuZWVkcyBwZXJmb3JtYW5jZSB0ZXN0aW5nXG5cbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXG4vLyBzdHVmZi4gSW50ZW5kZWQgdG8gZW5hYmxlIFJlYWN0IGNvcmUgbWVtYmVycyB0byBtb3JlIGVhc2lseSBkZWJ1ZyBzY2hlZHVsaW5nXG4vLyBpc3N1ZXMgaW4gREVWIGJ1aWxkcy5cblxudmFyIGVuYWJsZURlYnVnVHJhY2luZyA9IGZhbHNlOyAvLyBUcmFjayB3aGljaCBGaWJlcihzKSBzY2hlZHVsZSByZW5kZXIgd29yay5cblxudmFyIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0U7XG5cbntcbiAgUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1vZHVsZS5yZWZlcmVuY2UnKTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBUaGlzIG5lZWRzIHRvIGluY2x1ZGUgYWxsIHBvc3NpYmxlIG1vZHVsZSByZWZlcmVuY2Ugb2JqZWN0XG4gICAgLy8gdHlwZXMgc3VwcG9ydGVkIGJ5IGFueSBGbGlnaHQgY29uZmlndXJhdGlvbiBhbnl3aGVyZSBzaW5jZVxuICAgIC8vIHdlIGRvbid0IGtub3cgd2hpY2ggRmxpZ2h0IGJ1aWxkIHRoaXMgd2lsbCBlbmQgdXAgYmVpbmcgdXNlZFxuICAgIC8vIHdpdGguXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSB8fCB0eXBlLmdldE1vZHVsZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFyICQkdHlwZW9mVHlwZSA9IHR5cGUgJiYgdHlwZS4kJHR5cGVvZjtcblxuICAgICAgICAgICAgc3dpdGNoICgkJHR5cGVvZlR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG52YXIgQ29udGV4dENvbnN1bWVyID0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xudmFyIENvbnRleHRQcm92aWRlciA9IFJFQUNUX1BST1ZJREVSX1RZUEU7XG52YXIgRWxlbWVudCA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcbnZhciBGb3J3YXJkUmVmID0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbnZhciBGcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG52YXIgTGF6eSA9IFJFQUNUX0xBWllfVFlQRTtcbnZhciBNZW1vID0gUkVBQ1RfTUVNT19UWVBFO1xudmFyIFBvcnRhbCA9IFJFQUNUX1BPUlRBTF9UWVBFO1xudmFyIFByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbnZhciBTdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbnZhciBTdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG52YXIgU3VzcGVuc2VMaXN0ID0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7XG52YXIgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNDb25jdXJyZW50TW9kZSA9IGZhbHNlOyAvLyBBc3luY01vZGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWRcblxuZnVuY3Rpb24gaXNBc3luY01vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlKSB7XG4gICAgICBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IHRydWU7IC8vIFVzaW5nIGNvbnNvbGVbJ3dhcm4nXSB0byBldmFkZSBCYWJlbCBhbmQgRVNMaW50XG5cbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnVGhlIFJlYWN0SXMuaXNBc3luY01vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTgrLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQ29uY3VycmVudE1vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQ29uY3VycmVudE1vZGUgPSB0cnVlOyAvLyBVc2luZyBjb25zb2xlWyd3YXJuJ10gdG8gZXZhZGUgQmFiZWwgYW5kIEVTTGludFxuXG4gICAgICBjb25zb2xlWyd3YXJuJ10oJ1RoZSBSZWFjdElzLmlzQ29uY3VycmVudE1vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTgrLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dENvbnN1bWVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTlRFWFRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dFByb3ZpZGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST1ZJREVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWYob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRnJhZ21lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTGF6eShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9MQVpZX1RZUEU7XG59XG5mdW5jdGlvbiBpc01lbW8ob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTUVNT19UWVBFO1xufVxuZnVuY3Rpb24gaXNQb3J0YWwob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUE9SVEFMX1RZUEU7XG59XG5mdW5jdGlvbiBpc1Byb2ZpbGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N0cmljdE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2Uob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2VMaXN0KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTtcbn1cblxuZXhwb3J0cy5Db250ZXh0Q29uc3VtZXIgPSBDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLkNvbnRleHRQcm92aWRlciA9IENvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG5leHBvcnRzLkZvcndhcmRSZWYgPSBGb3J3YXJkUmVmO1xuZXhwb3J0cy5GcmFnbWVudCA9IEZyYWdtZW50O1xuZXhwb3J0cy5MYXp5ID0gTGF6eTtcbmV4cG9ydHMuTWVtbyA9IE1lbW87XG5leHBvcnRzLlBvcnRhbCA9IFBvcnRhbDtcbmV4cG9ydHMuUHJvZmlsZXIgPSBQcm9maWxlcjtcbmV4cG9ydHMuU3RyaWN0TW9kZSA9IFN0cmljdE1vZGU7XG5leHBvcnRzLlN1c3BlbnNlID0gU3VzcGVuc2U7XG5leHBvcnRzLlN1c3BlbnNlTGlzdCA9IFN1c3BlbnNlTGlzdDtcbmV4cG9ydHMuaXNBc3luY01vZGUgPSBpc0FzeW5jTW9kZTtcbmV4cG9ydHMuaXNDb25jdXJyZW50TW9kZSA9IGlzQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLmlzQ29udGV4dENvbnN1bWVyID0gaXNDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyID0gaXNDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLmlzRWxlbWVudCA9IGlzRWxlbWVudDtcbmV4cG9ydHMuaXNGb3J3YXJkUmVmID0gaXNGb3J3YXJkUmVmO1xuZXhwb3J0cy5pc0ZyYWdtZW50ID0gaXNGcmFnbWVudDtcbmV4cG9ydHMuaXNMYXp5ID0gaXNMYXp5O1xuZXhwb3J0cy5pc01lbW8gPSBpc01lbW87XG5leHBvcnRzLmlzUG9ydGFsID0gaXNQb3J0YWw7XG5leHBvcnRzLmlzUHJvZmlsZXIgPSBpc1Byb2ZpbGVyO1xuZXhwb3J0cy5pc1N0cmljdE1vZGUgPSBpc1N0cmljdE1vZGU7XG5leHBvcnRzLmlzU3VzcGVuc2UgPSBpc1N1c3BlbnNlO1xuZXhwb3J0cy5pc1N1c3BlbnNlTGlzdCA9IGlzU3VzcGVuc2VMaXN0O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGU7XG5leHBvcnRzLnR5cGVPZiA9IHR5cGVPZjtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js\n"));
/***/ }),
/***/ "./node_modules/react-redux/node_modules/react-is/index.js":
/*!*****************************************************************!*\
!*** ./node_modules/react-redux/node_modules/react-is/index.js ***!
\*****************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSx5SkFBeUQ7QUFDM0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcz85NTljIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-redux/node_modules/react-is/index.js\n"));
/***/ }),
/***/ "./node_modules/react/cjs/react-jsx-dev-runtime.development.js":
/*!*********************************************************************!*\
!*** ./node_modules/react/cjs/react-jsx-dev-runtime.development.js ***!
\*********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE$2\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"<anonymous>\") &&\n (_frame = _frame.replace(\"<anonymous>\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeUnknownElementTypeFrameInDEV(type) {\n if (null == type) return \"\";\n if (\"function\" === typeof type) {\n var prototype = type.prototype;\n return describeNativeComponentFrame(\n type,\n !(!prototype || !prototype.isReactComponent)\n );\n }\n if (\"string\" === typeof type) return describeBuiltInComponentFrame(type);\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame(\"Suspense\");\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return (type = describeNativeComponentFrame(type.render, !1)), type;\n case REACT_MEMO_TYPE:\n return describeUnknownElementTypeFrameInDEV(type.type);\n case REACT_LAZY_TYPE:\n prototype = type._payload;\n type = type._init;\n try {\n return describeUnknownElementTypeFrameInDEV(type(prototype));\n } catch (x) {}\n }\n return \"\";\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== self ? self : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self\n ) {\n if (\n \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n type === REACT_OFFSCREEN_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE$1 ||\n void 0 !== type.getModuleId))\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren], type);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children, type);\n } else {\n children = \"\";\n if (\n void 0 === type ||\n (\"object\" === typeof type &&\n null !== type &&\n 0 === Object.keys(type).length)\n )\n children +=\n \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n null === type\n ? (isStaticChildren = \"null\")\n : isArrayImpl(type)\n ? (isStaticChildren = \"array\")\n : void 0 !== type && type.$$typeof === REACT_ELEMENT_TYPE\n ? ((isStaticChildren =\n \"<\" +\n (getComponentNameFromType(type.type) || \"Unknown\") +\n \" />\"),\n (children =\n \" Did you accidentally export a JSX literal instead of a component?\"))\n : (isStaticChildren = typeof type);\n console.error(\n \"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\",\n isStaticChildren,\n children\n );\n }\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(type, children, self, source, getOwner(), maybeKey);\n }\n function validateChildKeys(node, parentType) {\n if (\n \"object\" === typeof node &&\n node &&\n node.$$typeof !== REACT_CLIENT_REFERENCE\n )\n if (isArrayImpl(node))\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n isValidElement(child) && validateExplicitKey(child, parentType);\n }\n else if (isValidElement(node))\n node._store && (node._store.validated = 1);\n else if (\n (null === node || \"object\" !== typeof node\n ? (i = null)\n : ((i =\n (MAYBE_ITERATOR_SYMBOL && node[MAYBE_ITERATOR_SYMBOL]) ||\n node[\"@@iterator\"]),\n (i = \"function\" === typeof i ? i : null)),\n \"function\" === typeof i &&\n i !== node.entries &&\n ((i = i.call(node)), i !== node))\n )\n for (; !(node = i.next()).done; )\n isValidElement(node.value) &&\n validateExplicitKey(node.value, parentType);\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function validateExplicitKey(element, parentType) {\n if (\n element._store &&\n !element._store.validated &&\n null == element.key &&\n ((element._store.validated = 1),\n (parentType = getCurrentComponentErrorInfo(parentType)),\n !ownerHasKeyUseWarning[parentType])\n ) {\n ownerHasKeyUseWarning[parentType] = !0;\n var childOwner = \"\";\n element &&\n null != element._owner &&\n element._owner !== getOwner() &&\n ((childOwner = null),\n \"number\" === typeof element._owner.tag\n ? (childOwner = getComponentNameFromType(element._owner.type))\n : \"string\" === typeof element._owner.name &&\n (childOwner = element._owner.name),\n (childOwner = \" It was passed a child from \" + childOwner + \".\"));\n var prevGetCurrentStack = ReactSharedInternals.getCurrentStack;\n ReactSharedInternals.getCurrentStack = function () {\n var stack = describeUnknownElementTypeFrameInDEV(element.type);\n prevGetCurrentStack && (stack += prevGetCurrentStack() || \"\");\n return stack;\n };\n console.error(\n 'Each child in a list should have a unique \"key\" prop.%s%s See https://react.dev/link/warning-keys for more information.',\n parentType,\n childOwner\n );\n ReactSharedInternals.getCurrentStack = prevGetCurrentStack;\n }\n }\n function getCurrentComponentErrorInfo(parentType) {\n var info = \"\",\n owner = getOwner();\n owner &&\n (owner = getComponentNameFromType(owner.type)) &&\n (info = \"\\n\\nCheck the render method of `\" + owner + \"`.\");\n info ||\n ((parentType = getComponentNameFromType(parentType)) &&\n (info =\n \"\\n\\nCheck the top-level render call using <\" + parentType + \">.\"));\n return info;\n }\n var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n Symbol.for(\"react.provider\");\n var REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n REACT_CLIENT_REFERENCE$2 = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n assign = Object.assign,\n REACT_CLIENT_REFERENCE$1 = Symbol.for(\"react.client.reference\"),\n isArrayImpl = Array.isArray,\n disabledDepth = 0,\n prevLog,\n prevInfo,\n prevWarn,\n prevError,\n prevGroup,\n prevGroupCollapsed,\n prevGroupEnd;\n disabledLog.__reactDisabledLog = !0;\n var prefix,\n suffix,\n reentry = !1;\n var componentFrameCache = new (\n \"function\" === typeof WeakMap ? WeakMap : Map\n )();\n var REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var didWarnAboutKeySpread = {},\n ownerHasKeyUseWarning = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (\n type,\n config,\n maybeKey,\n isStaticChildren,\n source,\n self\n ) {\n return jsxDEVImpl(type, config, maybeKey, isStaticChildren, source, self);\n };\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLHdCQUF3QixXQUFXLGdCQUFnQjtBQUNuRCx5QkFBeUIsV0FBVyxpQkFBaUI7QUFDckQseUJBQXlCLFdBQVcsaUJBQWlCO0FBQ3JELDBCQUEwQixXQUFXLGtCQUFrQjtBQUN2RCwwQkFBMEIsV0FBVyxrQkFBa0I7QUFDdkQsbUNBQW1DLFdBQVcsMkJBQTJCO0FBQ3pFLDZCQUE2QixXQUFXLHFCQUFxQjtBQUM3RCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsK0NBQStDLDZCQUE2QjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQWdEO0FBQ2hFLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQSxnQ0FBZ0Msa0NBQWtDLE9BQU87QUFDekU7QUFDQSxnR0FBZ0csU0FBUyxVQUFVLHNGQUFzRixhQUFhLFVBQVUsVUFBVTtBQUMxTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixpQkFBaUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIseUJBQXlCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQyw0Q0FBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLElBQUksZ0JBQWdCO0FBQ3BCLElBQUksY0FBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzPzE3ZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblwicHJvZHVjdGlvblwiICE9PSBwcm9jZXNzLmVudi5OT0RFX0VOViAmJlxuICAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICByZXR1cm4gdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQyXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBudWxsO1xuICAgICAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gdHlwZTtcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiRnJhZ21lbnRcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQb3J0YWxcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIlByb2ZpbGVyXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdHJpY3RNb2RlXCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJTdXNwZW5zZUxpc3RcIjtcbiAgICAgIH1cbiAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSlcbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIHR5cGUudGFnICYmXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIlJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgdHlwZS4kJHR5cGVvZilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuUHJvdmlkZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlNVTUVSX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuQ29uc3VtZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICB2YXIgaW5uZXJUeXBlID0gdHlwZS5yZW5kZXI7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAgICAgKCh0eXBlID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8IFwiXCIpLFxuICAgICAgICAgICAgICAodHlwZSA9IFwiXCIgIT09IHR5cGUgPyBcIkZvcndhcmRSZWYoXCIgKyB0eXBlICsgXCIpXCIgOiBcIkZvcndhcmRSZWZcIikpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5uZXJUeXBlXG4gICAgICAgICAgICAgICAgPyBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiXCIgKyB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tLZXlTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMDtcbiAgICAgIH1cbiAgICAgIGlmIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpIHtcbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gY29uc29sZTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfdGVtcF9jb25zdCA9IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5lcnJvcjtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFN5bWJvbCAmJlxuICAgICAgICAgICAgU3ltYm9sLnRvU3RyaW5nVGFnICYmXG4gICAgICAgICAgICB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddKSB8fFxuICAgICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHxcbiAgICAgICAgICBcIk9iamVjdFwiO1xuICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QuY2FsbChcbiAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQsXG4gICAgICAgICAgXCJUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuICAgIGZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICAgICAgaWYgKDAgPT09IGRpc2FibGVkRGVwdGgpIHtcbiAgICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7XG4gICAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgICAgIGVudW1lcmFibGU6ICEwLFxuICAgICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgICB3cml0YWJsZTogITBcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZGlzYWJsZWREZXB0aCsrO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gICAgICBkaXNhYmxlZERlcHRoLS07XG4gICAgICBpZiAoMCA9PT0gZGlzYWJsZWREZXB0aCkge1xuICAgICAgICB2YXIgcHJvcHMgPSB7IGNvbmZpZ3VyYWJsZTogITAsIGVudW1lcmFibGU6ICEwLCB3cml0YWJsZTogITAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkxvZyB9KSxcbiAgICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2SW5mbyB9KSxcbiAgICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2V2FybiB9KSxcbiAgICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkVycm9yIH0pLFxuICAgICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7IHZhbHVlOiBwcmV2R3JvdXAgfSksXG4gICAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHsgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZCB9KSxcbiAgICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywgeyB2YWx1ZTogcHJldkdyb3VwRW5kIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgMCA+IGRpc2FibGVkRGVwdGggJiZcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICBcImRpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICApO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBwcmVmaXgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgICAgcHJlZml4ID0gKG1hdGNoICYmIG1hdGNoWzFdKSB8fCBcIlwiO1xuICAgICAgICAgIHN1ZmZpeCA9XG4gICAgICAgICAgICAtMSA8IHguc3RhY2suaW5kZXhPZihcIlxcbiAgICBhdFwiKVxuICAgICAgICAgICAgICA/IFwiICg8YW5vbnltb3VzPilcIlxuICAgICAgICAgICAgICA6IC0xIDwgeC5zdGFjay5pbmRleE9mKFwiQFwiKVxuICAgICAgICAgICAgICAgID8gXCJAdW5rbm93bjowOjBcIlxuICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgfVxuICAgICAgcmV0dXJuIFwiXFxuXCIgKyBwcmVmaXggKyBuYW1lICsgc3VmZml4O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgICAgIGlmICghZm4gfHwgcmVlbnRyeSkgcmV0dXJuIFwiXCI7XG4gICAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG4gICAgICBpZiAodm9pZCAwICE9PSBmcmFtZSkgcmV0dXJuIGZyYW1lO1xuICAgICAgcmVlbnRyeSA9ICEwO1xuICAgICAgZnJhbWUgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdm9pZCAwO1xuICAgICAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlciA9IG51bGw7XG4gICAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5IO1xuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IG51bGw7XG4gICAgICBkaXNhYmxlTG9ncygpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIFJ1bkluUm9vdEZyYW1lID0ge1xuICAgICAgICAgIERldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgXCJwcm9wc1wiLCB7XG4gICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIFJlZmxlY3QgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRyb2wgPSB4O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbCA9IHgkMDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoICh4JDEpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2wgPSB4JDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChGYWtlID0gZm4oKSkgJiZcbiAgICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIEZha2UuY2F0Y2ggJiZcbiAgICAgICAgICAgICAgICAgIEZha2UuY2F0Y2goZnVuY3Rpb24gKCkge30pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAgICAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzYW1wbGUuc3RhY2spXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtzYW1wbGUuc3RhY2ssIGNvbnRyb2wuc3RhY2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdC5kaXNwbGF5TmFtZSA9XG4gICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIjtcbiAgICAgICAgdmFyIG5hbWVQcm9wRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFxuICAgICAgICAgIFwibmFtZVwiXG4gICAgICAgICk7XG4gICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci5jb25maWd1cmFibGUgJiZcbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXG4gICAgICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgICAgIHsgdmFsdWU6IFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCIgfVxuICAgICAgICAgICk7XG4gICAgICAgIHZhciBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPVxuICAgICAgICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksXG4gICAgICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICAgICAgY29udHJvbFN0YWNrID0gX1J1bkluUm9vdEZyYW1lJERldGVyWzFdO1xuICAgICAgICBpZiAoc2FtcGxlU3RhY2sgJiYgY29udHJvbFN0YWNrKSB7XG4gICAgICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlU3RhY2suc3BsaXQoXCJcXG5cIiksXG4gICAgICAgICAgICBjb250cm9sTGluZXMgPSBjb250cm9sU3RhY2suc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IG5hbWVQcm9wRGVzY3JpcHRvciA9IDA7XG4gICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPCBzYW1wbGVMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdLmluY2x1ZGVzKFxuICAgICAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgKVxuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yKys7XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA8IGNvbnRyb2xMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgICAgICFjb250cm9sTGluZXNbX1J1bkluUm9vdEZyYW1lJERldGVyXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIClcbiAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlcisrO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA9PT0gc2FtcGxlTGluZXMubGVuZ3RoIHx8XG4gICAgICAgICAgICBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgPT09IGNvbnRyb2xMaW5lcy5sZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgICAgICAgICAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlciAmJlxuICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgIGNvbnRyb2xMaW5lc1tfUnVuSW5Sb290RnJhbWUkRGV0ZXJdO1xuXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIF9SdW5JblJvb3RGcmFtZSREZXRlci0tO1xuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICAxIDw9IG5hbWVQcm9wRGVzY3JpcHRvciAmJiAwIDw9IF9SdW5JblJvb3RGcmFtZSREZXRlcjtcbiAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci0tLCBfUnVuSW5Sb290RnJhbWUkRGV0ZXItLVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXSAhPT1cbiAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl1cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAoMSAhPT0gbmFtZVByb3BEZXNjcmlwdG9yIHx8IDEgIT09IF9SdW5JblJvb3RGcmFtZSREZXRlcikge1xuICAgICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIChuYW1lUHJvcERlc2NyaXB0b3ItLSxcbiAgICAgICAgICAgICAgICAgICAgX1J1bkluUm9vdEZyYW1lJERldGVyLS0sXG4gICAgICAgICAgICAgICAgICAgIDAgPiBfUnVuSW5Sb290RnJhbWUkRGV0ZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbExpbmVzW19SdW5JblJvb3RGcmFtZSREZXRlcl0pXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgXCJcXG5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgc2FtcGxlTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgbmV3IFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgYXQgXCJcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBmbi5kaXNwbGF5TmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgIF9mcmFtZS5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgKF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKFwiPGFub255bW91cz5cIiwgZm4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgZm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoMSA8PSBuYW1lUHJvcERlc2NyaXB0b3IgJiYgMCA8PSBfUnVuSW5Sb290RnJhbWUkRGV0ZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICAocmVlbnRyeSA9ICExKSxcbiAgICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IHByZXZpb3VzRGlzcGF0Y2hlciksXG4gICAgICAgICAgcmVlbmFibGVMb2dzKCksXG4gICAgICAgICAgKEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gZnJhbWUpO1xuICAgICAgfVxuICAgICAgc2FtcGxlTGluZXMgPSAoc2FtcGxlTGluZXMgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiBcIlwiKVxuICAgICAgICA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHNhbXBsZUxpbmVzKVxuICAgICAgICA6IFwiXCI7XG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmbiAmJiBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc2FtcGxlTGluZXMpO1xuICAgICAgcmV0dXJuIHNhbXBsZUxpbmVzO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSkge1xuICAgICAgaWYgKG51bGwgPT0gdHlwZSkgcmV0dXJuIFwiXCI7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZSkge1xuICAgICAgICB2YXIgcHJvdG90eXBlID0gdHlwZS5wcm90b3R5cGU7XG4gICAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgISghcHJvdG90eXBlIHx8ICFwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJTdXNwZW5zZVwiKTtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKFwiU3VzcGVuc2VMaXN0XCIpO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUgPSBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyLCAhMSkpLCB0eXBlO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLnR5cGUpO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgcHJvdG90eXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlKHByb3RvdHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldE93bmVyKCkge1xuICAgICAgdmFyIGRpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5BO1xuICAgICAgcmV0dXJuIG51bGwgPT09IGRpc3BhdGNoZXIgPyBudWxsIDogZGlzcGF0Y2hlci5nZXRPd25lcigpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgXCJrZXlcIikpIHtcbiAgICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCBcImtleVwiKS5nZXQ7XG4gICAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSByZXR1cm4gITE7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm9pZCAwICE9PSBjb25maWcua2V5O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAgICAgIGZ1bmN0aW9uIHdhcm5BYm91dEFjY2Vzc2luZ0tleSgpIHtcbiAgICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24gfHxcbiAgICAgICAgICAoKHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gITApLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIiVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0IGluIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgdmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCBwcm9wLiAoaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9zcGVjaWFsLXByb3BzKVwiLFxuICAgICAgICAgICAgZGlzcGxheU5hbWVcbiAgICAgICAgICApKTtcbiAgICAgIH1cbiAgICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9ICEwO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCBcImtleVwiLCB7XG4gICAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZWxlbWVudFJlZkdldHRlcldpdGhEZXByZWNhdGlvbldhcm5pbmcoKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0aGlzLnR5cGUpO1xuICAgICAgZGlkV2FybkFib3V0RWxlbWVudFJlZltjb21wb25lbnROYW1lXSB8fFxuICAgICAgICAoKGRpZFdhcm5BYm91dEVsZW1lbnRSZWZbY29tcG9uZW50TmFtZV0gPSAhMCksXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJBY2Nlc3NpbmcgZWxlbWVudC5yZWYgd2FzIHJlbW92ZWQgaW4gUmVhY3QgMTkuIHJlZiBpcyBub3cgYSByZWd1bGFyIHByb3AuIEl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBKU1ggRWxlbWVudCB0eXBlIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICAgICAgKSk7XG4gICAgICBjb21wb25lbnROYW1lID0gdGhpcy5wcm9wcy5yZWY7XG4gICAgICByZXR1cm4gdm9pZCAwICE9PSBjb21wb25lbnROYW1lID8gY29tcG9uZW50TmFtZSA6IG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHNlbGYsIHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gICAgICBzZWxmID0gcHJvcHMucmVmO1xuICAgICAgdHlwZSA9IHtcbiAgICAgICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIHByb3BzOiBwcm9wcyxcbiAgICAgICAgX293bmVyOiBvd25lclxuICAgICAgfTtcbiAgICAgIG51bGwgIT09ICh2b2lkIDAgIT09IHNlbGYgPyBzZWxmIDogbnVsbClcbiAgICAgICAgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZSwgXCJyZWZcIiwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgICAgICBnZXQ6IGVsZW1lbnRSZWZHZXR0ZXJXaXRoRGVwcmVjYXRpb25XYXJuaW5nXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZSwgXCJyZWZcIiwgeyBlbnVtZXJhYmxlOiAhMSwgdmFsdWU6IG51bGwgfSk7XG4gICAgICB0eXBlLl9zdG9yZSA9IHt9O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUuX3N0b3JlLCBcInZhbGlkYXRlZFwiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiAwXG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcIl9kZWJ1Z0luZm9cIiwge1xuICAgICAgICBjb25maWd1cmFibGU6ICExLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZnJlZXplICYmIChPYmplY3QuZnJlZXplKHR5cGUucHJvcHMpLCBPYmplY3QuZnJlZXplKHR5cGUpKTtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBqc3hERVZJbXBsKFxuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIG1heWJlS2V5LFxuICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgIHNvdXJjZSxcbiAgICAgIHNlbGZcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUgfHxcbiAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZSB8fFxuICAgICAgICB0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFIHx8XG4gICAgICAgIHR5cGUgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEUgfHxcbiAgICAgICAgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fFxuICAgICAgICB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8XG4gICAgICAgIHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fFxuICAgICAgICB0eXBlID09PSBSRUFDVF9PRkZTQ1JFRU5fVFlQRSB8fFxuICAgICAgICAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHR5cGUgJiZcbiAgICAgICAgICBudWxsICE9PSB0eXBlICYmXG4gICAgICAgICAgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fFxuICAgICAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8XG4gICAgICAgICAgICB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHxcbiAgICAgICAgICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlNVTUVSX1RZUEUgfHxcbiAgICAgICAgICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHxcbiAgICAgICAgICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMSB8fFxuICAgICAgICAgICAgdm9pZCAwICE9PSB0eXBlLmdldE1vZHVsZUlkKSlcbiAgICAgICkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSBjb25maWcuY2hpbGRyZW47XG4gICAgICAgIGlmICh2b2lkIDAgIT09IGNoaWxkcmVuKVxuICAgICAgICAgIGlmIChpc1N0YXRpY0NoaWxkcmVuKVxuICAgICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4gPSAwO1xuICAgICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4gPCBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbisrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpc1N0YXRpY0NoaWxkcmVuXSwgdHlwZSk7XG4gICAgICAgICAgICAgIE9iamVjdC5mcmVlemUgJiYgT2JqZWN0LmZyZWV6ZShjaGlsZHJlbik7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBcIlJlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuIFlvdSBhcmUgbGlrZWx5IGV4cGxpY2l0bHkgY2FsbGluZyBSZWFjdC5qc3hzIG9yIFJlYWN0LmpzeERFVi4gVXNlIHRoZSBCYWJlbCB0cmFuc2Zvcm0gaW5zdGVhZC5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIGVsc2UgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4sIHR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW4gPSBcIlwiO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdm9pZCAwID09PSB0eXBlIHx8XG4gICAgICAgICAgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlICYmXG4gICAgICAgICAgICBudWxsICE9PSB0eXBlICYmXG4gICAgICAgICAgICAwID09PSBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGgpXG4gICAgICAgIClcbiAgICAgICAgICBjaGlsZHJlbiArPVxuICAgICAgICAgICAgXCIgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgICAgICBudWxsID09PSB0eXBlXG4gICAgICAgICAgPyAoaXNTdGF0aWNDaGlsZHJlbiA9IFwibnVsbFwiKVxuICAgICAgICAgIDogaXNBcnJheUltcGwodHlwZSlcbiAgICAgICAgICAgID8gKGlzU3RhdGljQ2hpbGRyZW4gPSBcImFycmF5XCIpXG4gICAgICAgICAgICA6IHZvaWQgMCAhPT0gdHlwZSAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbiAgICAgICAgICAgICAgPyAoKGlzU3RhdGljQ2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgXCI8XCIgK1xuICAgICAgICAgICAgICAgICAgKGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiVW5rbm93blwiKSArXG4gICAgICAgICAgICAgICAgICBcIiAvPlwiKSxcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgXCIgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD9cIikpXG4gICAgICAgICAgICAgIDogKGlzU3RhdGljQ2hpbGRyZW4gPSB0eXBlb2YgdHlwZSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJSZWFjdC5qc3g6IHR5cGUgaXMgaW52YWxpZCAtLSBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXNcIixcbiAgICAgICAgICBpc1N0YXRpY0NoaWxkcmVuLFxuICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIFwia2V5XCIpKSB7XG4gICAgICAgIGNoaWxkcmVuID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykuZmlsdGVyKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgcmV0dXJuIFwia2V5XCIgIT09IGs7XG4gICAgICAgIH0pO1xuICAgICAgICBpc1N0YXRpY0NoaWxkcmVuID1cbiAgICAgICAgICAwIDwga2V5cy5sZW5ndGhcbiAgICAgICAgICAgID8gXCJ7a2V5OiBzb21lS2V5LCBcIiArIGtleXMuam9pbihcIjogLi4uLCBcIikgKyBcIjogLi4ufVwiXG4gICAgICAgICAgICA6IFwie2tleTogc29tZUtleX1cIjtcbiAgICAgICAgZGlkV2FybkFib3V0S2V5U3ByZWFkW2NoaWxkcmVuICsgaXNTdGF0aWNDaGlsZHJlbl0gfHxcbiAgICAgICAgICAoKGtleXMgPVxuICAgICAgICAgICAgMCA8IGtleXMubGVuZ3RoID8gXCJ7XCIgKyBrZXlzLmpvaW4oXCI6IC4uLiwgXCIpICsgXCI6IC4uLn1cIiA6IFwie31cIiksXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdBIHByb3BzIG9iamVjdCBjb250YWluaW5nIGEgXCJrZXlcIiBwcm9wIGlzIGJlaW5nIHNwcmVhZCBpbnRvIEpTWDpcXG4gIGxldCBwcm9wcyA9ICVzO1xcbiAgPCVzIHsuLi5wcm9wc30gLz5cXG5SZWFjdCBrZXlzIG11c3QgYmUgcGFzc2VkIGRpcmVjdGx5IHRvIEpTWCB3aXRob3V0IHVzaW5nIHNwcmVhZDpcXG4gIGxldCBwcm9wcyA9ICVzO1xcbiAgPCVzIGtleT17c29tZUtleX0gey4uLnByb3BzfSAvPicsXG4gICAgICAgICAgICBpc1N0YXRpY0NoaWxkcmVuLFxuICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgY2hpbGRyZW5cbiAgICAgICAgICApLFxuICAgICAgICAgIChkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY2hpbGRyZW4gKyBpc1N0YXRpY0NoaWxkcmVuXSA9ICEwKSk7XG4gICAgICB9XG4gICAgICBjaGlsZHJlbiA9IG51bGw7XG4gICAgICB2b2lkIDAgIT09IG1heWJlS2V5ICYmXG4gICAgICAgIChjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1heWJlS2V5KSwgKGNoaWxkcmVuID0gXCJcIiArIG1heWJlS2V5KSk7XG4gICAgICBoYXNWYWxpZEtleShjb25maWcpICYmXG4gICAgICAgIChjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpLCAoY2hpbGRyZW4gPSBcIlwiICsgY29uZmlnLmtleSkpO1xuICAgICAgaWYgKFwia2V5XCIgaW4gY29uZmlnKSB7XG4gICAgICAgIG1heWJlS2V5ID0ge307XG4gICAgICAgIGZvciAodmFyIHByb3BOYW1lIGluIGNvbmZpZylcbiAgICAgICAgICBcImtleVwiICE9PSBwcm9wTmFtZSAmJiAobWF5YmVLZXlbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXSk7XG4gICAgICB9IGVsc2UgbWF5YmVLZXkgPSBjb25maWc7XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihcbiAgICAgICAgICBtYXliZUtleSxcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlXG4gICAgICAgICAgICA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IFwiVW5rbm93blwiXG4gICAgICAgICAgICA6IHR5cGVcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwgY2hpbGRyZW4sIHNlbGYsIHNvdXJjZSwgZ2V0T3duZXIoKSwgbWF5YmVLZXkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBub2RlICYmXG4gICAgICAgIG5vZGUgJiZcbiAgICAgICAgbm9kZS4kJHR5cGVvZiAhPT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRVxuICAgICAgKVxuICAgICAgICBpZiAoaXNBcnJheUltcGwobm9kZSkpXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuICAgICAgICAgICAgaXNWYWxpZEVsZW1lbnQoY2hpbGQpICYmIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpXG4gICAgICAgICAgbm9kZS5fc3RvcmUgJiYgKG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IDEpO1xuICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAobnVsbCA9PT0gbm9kZSB8fCBcIm9iamVjdFwiICE9PSB0eXBlb2Ygbm9kZVxuICAgICAgICAgICAgPyAoaSA9IG51bGwpXG4gICAgICAgICAgICA6ICgoaSA9XG4gICAgICAgICAgICAgICAgKE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBub2RlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0pIHx8XG4gICAgICAgICAgICAgICAgbm9kZVtcIkBAaXRlcmF0b3JcIl0pLFxuICAgICAgICAgICAgICAoaSA9IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGkgPyBpIDogbnVsbCkpLFxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGkgJiZcbiAgICAgICAgICAgIGkgIT09IG5vZGUuZW50cmllcyAmJlxuICAgICAgICAgICAgKChpID0gaS5jYWxsKG5vZGUpKSwgaSAhPT0gbm9kZSkpXG4gICAgICAgIClcbiAgICAgICAgICBmb3IgKDsgIShub2RlID0gaS5uZXh0KCkpLmRvbmU7IClcbiAgICAgICAgICAgIGlzVmFsaWRFbGVtZW50KG5vZGUudmFsdWUpICYmXG4gICAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkobm9kZS52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9iamVjdCAmJlxuICAgICAgICBudWxsICE9PSBvYmplY3QgJiZcbiAgICAgICAgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbiAgICAgICk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICAgICAgaWYgKFxuICAgICAgICBlbGVtZW50Ll9zdG9yZSAmJlxuICAgICAgICAhZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkICYmXG4gICAgICAgIG51bGwgPT0gZWxlbWVudC5rZXkgJiZcbiAgICAgICAgKChlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSAxKSxcbiAgICAgICAgKHBhcmVudFR5cGUgPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpKSxcbiAgICAgICAgIW93bmVySGFzS2V5VXNlV2FybmluZ1twYXJlbnRUeXBlXSlcbiAgICAgICkge1xuICAgICAgICBvd25lckhhc0tleVVzZVdhcm5pbmdbcGFyZW50VHlwZV0gPSAhMDtcbiAgICAgICAgdmFyIGNoaWxkT3duZXIgPSBcIlwiO1xuICAgICAgICBlbGVtZW50ICYmXG4gICAgICAgICAgbnVsbCAhPSBlbGVtZW50Ll9vd25lciAmJlxuICAgICAgICAgIGVsZW1lbnQuX293bmVyICE9PSBnZXRPd25lcigpICYmXG4gICAgICAgICAgKChjaGlsZE93bmVyID0gbnVsbCksXG4gICAgICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIGVsZW1lbnQuX293bmVyLnRhZ1xuICAgICAgICAgICAgPyAoY2hpbGRPd25lciA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShlbGVtZW50Ll9vd25lci50eXBlKSlcbiAgICAgICAgICAgIDogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGVsZW1lbnQuX293bmVyLm5hbWUgJiZcbiAgICAgICAgICAgICAgKGNoaWxkT3duZXIgPSBlbGVtZW50Ll9vd25lci5uYW1lKSxcbiAgICAgICAgICAoY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgY2hpbGRPd25lciArIFwiLlwiKSk7XG4gICAgICAgIHZhciBwcmV2R2V0Q3VycmVudFN0YWNrID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuZ2V0Q3VycmVudFN0YWNrO1xuICAgICAgICBSZWFjdFNoYXJlZEludGVybmFscy5nZXRDdXJyZW50U3RhY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSk7XG4gICAgICAgICAgcHJldkdldEN1cnJlbnRTdGFjayAmJiAoc3RhY2sgKz0gcHJldkdldEN1cnJlbnRTdGFjaygpIHx8IFwiXCIpO1xuICAgICAgICAgIHJldHVybiBzdGFjaztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLiVzJXMgU2VlIGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsXG4gICAgICAgICAgcGFyZW50VHlwZSxcbiAgICAgICAgICBjaGlsZE93bmVyXG4gICAgICAgICk7XG4gICAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLmdldEN1cnJlbnRTdGFjayA9IHByZXZHZXRDdXJyZW50U3RhY2s7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSkge1xuICAgICAgdmFyIGluZm8gPSBcIlwiLFxuICAgICAgICBvd25lciA9IGdldE93bmVyKCk7XG4gICAgICBvd25lciAmJlxuICAgICAgICAob3duZXIgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUob3duZXIudHlwZSkpICYmXG4gICAgICAgIChpbmZvID0gXCJcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgXCIgKyBvd25lciArIFwiYC5cIik7XG4gICAgICBpbmZvIHx8XG4gICAgICAgICgocGFyZW50VHlwZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShwYXJlbnRUeXBlKSkgJiZcbiAgICAgICAgICAoaW5mbyA9XG4gICAgICAgICAgICBcIlxcblxcbkNoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPFwiICsgcGFyZW50VHlwZSArIFwiPi5cIikpO1xuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuICAgIHZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKSxcbiAgICAgIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgICAgIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxcbiAgICAgIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksXG4gICAgICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICAgICAgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTtcbiAgICBTeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik7XG4gICAgdmFyIFJFQUNUX0NPTlNVTUVSX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIiksXG4gICAgICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgICAgIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLFxuICAgICAgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksXG4gICAgICBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxcbiAgICAgIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICAgICAgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpLFxuICAgICAgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQyID0gU3ltYm9sLmZvcihcInJlYWN0LmNsaWVudC5yZWZlcmVuY2VcIiksXG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscyA9XG4gICAgICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgICAgIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxcbiAgICAgIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24sXG4gICAgICBSRUFDVF9DTElFTlRfUkVGRVJFTkNFJDEgPSBTeW1ib2wuZm9yKFwicmVhY3QuY2xpZW50LnJlZmVyZW5jZVwiKSxcbiAgICAgIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgICAgIGRpc2FibGVkRGVwdGggPSAwLFxuICAgICAgcHJldkxvZyxcbiAgICAgIHByZXZJbmZvLFxuICAgICAgcHJldldhcm4sXG4gICAgICBwcmV2RXJyb3IsXG4gICAgICBwcmV2R3JvdXAsXG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQsXG4gICAgICBwcmV2R3JvdXBFbmQ7XG4gICAgZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gITA7XG4gICAgdmFyIHByZWZpeCxcbiAgICAgIHN1ZmZpeCxcbiAgICAgIHJlZW50cnkgPSAhMTtcbiAgICB2YXIgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyAoXG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBXZWFrTWFwID8gV2Vha01hcCA6IE1hcFxuICAgICkoKTtcbiAgICB2YXIgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG4gICAgdmFyIGRpZFdhcm5BYm91dEVsZW1lbnRSZWYgPSB7fTtcbiAgICB2YXIgZGlkV2FybkFib3V0S2V5U3ByZWFkID0ge30sXG4gICAgICBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcbiAgICBleHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbiAgICBleHBvcnRzLmpzeERFViA9IGZ1bmN0aW9uIChcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWcsXG4gICAgICBtYXliZUtleSxcbiAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICBzb3VyY2UsXG4gICAgICBzZWxmXG4gICAgKSB7XG4gICAgICByZXR1cm4ganN4REVWSW1wbCh0eXBlLCBjb25maWcsIG1heWJlS2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpO1xuICAgIH07XG4gIH0pKCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react/cjs/react-jsx-dev-runtime.development.js\n"));
/***/ }),
/***/ "./node_modules/react/jsx-dev-runtime.js":
/*!***********************************************!*\
!*** ./node_modules/react/jsx-dev-runtime.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"./node_modules/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSx1SkFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1kZXYtcnVudGltZS5qcz81Nzc3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react/jsx-dev-runtime.js\n"));
/***/ }),
/***/ "./node_modules/safe-buffer/index.js":
/*!*******************************************!*\
!*** ./node_modules/safe-buffer/index.js ***!
\*******************************************/
/***/ (function(module, exports, __webpack_require__) {
eval(__webpack_require__.ts("/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBLGFBQWEsbUJBQU8sQ0FBQyxpRUFBUTtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFLGNBQWM7QUFDaEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcz9jZjJmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISBzYWZlLWJ1ZmZlci4gTUlUIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQnVmZmVyLnByb3RvdHlwZSlcblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/safe-buffer/index.js\n"));
/***/ }),
/***/ "./node_modules/semver/classes/comparator.js":
/*!***************************************************!*\
!*** ./node_modules/semver/classes/comparator.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst { safeRe: re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\nconst cmp = __webpack_require__(/*! ../functions/cmp */ \"./node_modules/semver/functions/cmp.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ./range */ \"./node_modules/semver/classes/range.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvY29tcGFyYXRvci5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWlELEtBQUs7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLHFCQUFxQixtQkFBTyxDQUFDLGtGQUEyQjtBQUN4RCxRQUFRLGdCQUFnQixFQUFFLG1CQUFPLENBQUMsNERBQWdCO0FBQ2xELFlBQVksbUJBQU8sQ0FBQyxnRUFBa0I7QUFDdEMsY0FBYyxtQkFBTyxDQUFDLGtFQUFtQjtBQUN6QyxlQUFlLG1CQUFPLENBQUMseURBQVU7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHVEQUFTIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvY2xhc3Nlcy9jb21wYXJhdG9yLmpzP2UzYWQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQU5ZID0gU3ltYm9sKCdTZW1WZXIgQU5ZJylcbi8vIGhvaXN0ZWQgY2xhc3MgZm9yIGN5Y2xpYyBkZXBlbmRlbmN5XG5jbGFzcyBDb21wYXJhdG9yIHtcbiAgc3RhdGljIGdldCBBTlkgKCkge1xuICAgIHJldHVybiBBTllcbiAgfVxuXG4gIGNvbnN0cnVjdG9yIChjb21wLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zKVxuXG4gICAgaWYgKGNvbXAgaW5zdGFuY2VvZiBDb21wYXJhdG9yKSB7XG4gICAgICBpZiAoY29tcC5sb29zZSA9PT0gISFvcHRpb25zLmxvb3NlKSB7XG4gICAgICAgIHJldHVybiBjb21wXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wID0gY29tcC52YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXAgPSBjb21wLnRyaW0oKS5zcGxpdCgvXFxzKy8pLmpvaW4oJyAnKVxuICAgIGRlYnVnKCdjb21wYXJhdG9yJywgY29tcCwgb3B0aW9ucylcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy5sb29zZSA9ICEhb3B0aW9ucy5sb29zZVxuICAgIHRoaXMucGFyc2UoY29tcClcblxuICAgIGlmICh0aGlzLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgICB0aGlzLnZhbHVlID0gJydcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMub3BlcmF0b3IgKyB0aGlzLnNlbXZlci52ZXJzaW9uXG4gICAgfVxuXG4gICAgZGVidWcoJ2NvbXAnLCB0aGlzKVxuICB9XG5cbiAgcGFyc2UgKGNvbXApIHtcbiAgICBjb25zdCByID0gdGhpcy5vcHRpb25zLmxvb3NlID8gcmVbdC5DT01QQVJBVE9STE9PU0VdIDogcmVbdC5DT01QQVJBVE9SXVxuICAgIGNvbnN0IG0gPSBjb21wLm1hdGNoKHIpXG5cbiAgICBpZiAoIW0pIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgY29tcGFyYXRvcjogJHtjb21wfWApXG4gICAgfVxuXG4gICAgdGhpcy5vcGVyYXRvciA9IG1bMV0gIT09IHVuZGVmaW5lZCA/IG1bMV0gOiAnJ1xuICAgIGlmICh0aGlzLm9wZXJhdG9yID09PSAnPScpIHtcbiAgICAgIHRoaXMub3BlcmF0b3IgPSAnJ1xuICAgIH1cblxuICAgIC8vIGlmIGl0IGxpdGVyYWxseSBpcyBqdXN0ICc+JyBvciAnJyB0aGVuIGFsbG93IGFueXRoaW5nLlxuICAgIGlmICghbVsyXSkge1xuICAgICAgdGhpcy5zZW12ZXIgPSBBTllcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZW12ZXIgPSBuZXcgU2VtVmVyKG1bMl0sIHRoaXMub3B0aW9ucy5sb29zZSlcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVcbiAgfVxuXG4gIHRlc3QgKHZlcnNpb24pIHtcbiAgICBkZWJ1ZygnQ29tcGFyYXRvci50ZXN0JywgdmVyc2lvbiwgdGhpcy5vcHRpb25zLmxvb3NlKVxuXG4gICAgaWYgKHRoaXMuc2VtdmVyID09PSBBTlkgfHwgdmVyc2lvbiA9PT0gQU5ZKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIHRoaXMub3B0aW9ucylcbiAgICAgIH0gY2F0Y2ggKGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbXAodmVyc2lvbiwgdGhpcy5vcGVyYXRvciwgdGhpcy5zZW12ZXIsIHRoaXMub3B0aW9ucylcbiAgfVxuXG4gIGludGVyc2VjdHMgKGNvbXAsIG9wdGlvbnMpIHtcbiAgICBpZiAoIShjb21wIGluc3RhbmNlb2YgQ29tcGFyYXRvcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2EgQ29tcGFyYXRvciBpcyByZXF1aXJlZCcpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3BlcmF0b3IgPT09ICcnKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUmFuZ2UoY29tcC52YWx1ZSwgb3B0aW9ucykudGVzdCh0aGlzLnZhbHVlKVxuICAgIH0gZWxzZSBpZiAoY29tcC5vcGVyYXRvciA9PT0gJycpIHtcbiAgICAgIGlmIChjb21wLnZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSYW5nZSh0aGlzLnZhbHVlLCBvcHRpb25zKS50ZXN0KGNvbXAuc2VtdmVyKVxuICAgIH1cblxuICAgIG9wdGlvbnMgPSBwYXJzZU9wdGlvbnMob3B0aW9ucylcblxuICAgIC8vIFNwZWNpYWwgY2FzZXMgd2hlcmUgbm90aGluZyBjYW4gcG9zc2libHkgYmUgbG93ZXJcbiAgICBpZiAob3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSAmJlxuICAgICAgKHRoaXMudmFsdWUgPT09ICc8MC4wLjAtMCcgfHwgY29tcC52YWx1ZSA9PT0gJzwwLjAuMC0wJykpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBpZiAoIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UgJiZcbiAgICAgICh0aGlzLnZhbHVlLnN0YXJ0c1dpdGgoJzwwLjAuMCcpIHx8IGNvbXAudmFsdWUuc3RhcnRzV2l0aCgnPDAuMC4wJykpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBTYW1lIGRpcmVjdGlvbiBpbmNyZWFzaW5nICg+IG9yID49KVxuICAgIGlmICh0aGlzLm9wZXJhdG9yLnN0YXJ0c1dpdGgoJz4nKSAmJiBjb21wLm9wZXJhdG9yLnN0YXJ0c1dpdGgoJz4nKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgLy8gU2FtZSBkaXJlY3Rpb24gZGVjcmVhc2luZyAoPCBvciA8PSlcbiAgICBpZiAodGhpcy5vcGVyYXRvci5zdGFydHNXaXRoKCc8JykgJiYgY29tcC5vcGVyYXRvci5zdGFydHNXaXRoKCc8JykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIC8vIHNhbWUgU2VtVmVyIGFuZCBib3RoIHNpZGVzIGFyZSBpbmNsdXNpdmUgKDw9IG9yID49KVxuICAgIGlmIChcbiAgICAgICh0aGlzLnNlbXZlci52ZXJzaW9uID09PSBjb21wLnNlbXZlci52ZXJzaW9uKSAmJlxuICAgICAgdGhpcy5vcGVyYXRvci5pbmNsdWRlcygnPScpICYmIGNvbXAub3BlcmF0b3IuaW5jbHVkZXMoJz0nKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgLy8gb3Bwb3NpdGUgZGlyZWN0aW9ucyBsZXNzIHRoYW5cbiAgICBpZiAoY21wKHRoaXMuc2VtdmVyLCAnPCcsIGNvbXAuc2VtdmVyLCBvcHRpb25zKSAmJlxuICAgICAgdGhpcy5vcGVyYXRvci5zdGFydHNXaXRoKCc+JykgJiYgY29tcC5vcGVyYXRvci5zdGFydHNXaXRoKCc8JykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIC8vIG9wcG9zaXRlIGRpcmVjdGlvbnMgZ3JlYXRlciB0aGFuXG4gICAgaWYgKGNtcCh0aGlzLnNlbXZlciwgJz4nLCBjb21wLnNlbXZlciwgb3B0aW9ucykgJiZcbiAgICAgIHRoaXMub3BlcmF0b3Iuc3RhcnRzV2l0aCgnPCcpICYmIGNvbXAub3BlcmF0b3Iuc3RhcnRzV2l0aCgnPicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbXBhcmF0b3JcblxuY29uc3QgcGFyc2VPcHRpb25zID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvcGFyc2Utb3B0aW9ucycpXG5jb25zdCB7IHNhZmVSZTogcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcbmNvbnN0IGNtcCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9jbXAnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9kZWJ1ZycpXG5jb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuL3NlbXZlcicpXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4vcmFuZ2UnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/classes/comparator.js\n"));
/***/ }),
/***/ "./node_modules/semver/classes/range.js":
/*!**********************************************!*\
!*** ./node_modules/semver/classes/range.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = __webpack_require__(/*! ../internal/lrucache */ \"./node_modules/semver/internal/lrucache.js\")\nconst cache = new LRU()\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst Comparator = __webpack_require__(/*! ./comparator */ \"./node_modules/semver/classes/comparator.js\")\nconst debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst SemVer = __webpack_require__(/*! ./semver */ \"./node_modules/semver/classes/semver.js\")\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __webpack_require__(/*! ../internal/constants */ \"./node_modules/semver/internal/constants.js\")\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvcmFuZ2UuanMiLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbURBQW1ELFNBQVM7QUFDNUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFCQUFxQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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QUksa0JBQWtCO0FBQy9DLElBQUk7QUFDSixnQkFBZ0IsS0FBSztBQUNyQixJQUFJO0FBQ0osZ0JBQWdCLEtBQUssRUFBRSxrQkFBa0I7QUFDekM7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSixhQUFhLFFBQVE7QUFDckIsSUFBSTtBQUNKLGFBQWEsR0FBRyxHQUFHLFFBQVE7QUFDM0IsSUFBSTtBQUNKLGNBQWMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSTtBQUNwQyxJQUFJO0FBQ0osYUFBYSxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVE7QUFDakMsSUFBSTtBQUNKLGNBQWMsR0FBRztBQUNqQjs7QUFFQSxZQUFZLE1BQU0sRUFBRSxHQUFHO0FBQ3ZCOztBQUVBO0FBQ0Esa0JBQWtCLGdCQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvcmFuZ2UuanM/OGVjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTUEFDRV9DSEFSQUNURVJTID0gL1xccysvZ1xuXG4vLyBob2lzdGVkIGNsYXNzIGZvciBjeWNsaWMgZGVwZW5kZW5jeVxuY2xhc3MgUmFuZ2Uge1xuICBjb25zdHJ1Y3RvciAocmFuZ2UsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gcGFyc2VPcHRpb25zKG9wdGlvbnMpXG5cbiAgICBpZiAocmFuZ2UgaW5zdGFuY2VvZiBSYW5nZSkge1xuICAgICAgaWYgKFxuICAgICAgICByYW5nZS5sb29zZSA9PT0gISFvcHRpb25zLmxvb3NlICYmXG4gICAgICAgIHJhbmdlLmluY2x1ZGVQcmVyZWxlYXNlID09PSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2VcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gcmFuZ2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2UocmFuZ2UucmF3LCBvcHRpb25zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyYW5nZSBpbnN0YW5jZW9mIENvbXBhcmF0b3IpIHtcbiAgICAgIC8vIGp1c3QgcHV0IGl0IGluIHRoZSBzZXQgYW5kIHJldHVyblxuICAgICAgdGhpcy5yYXcgPSByYW5nZS52YWx1ZVxuICAgICAgdGhpcy5zZXQgPSBbW3JhbmdlXV1cbiAgICAgIHRoaXMuZm9ybWF0dGVkID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLmxvb3NlID0gISFvcHRpb25zLmxvb3NlXG4gICAgdGhpcy5pbmNsdWRlUHJlcmVsZWFzZSA9ICEhb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZVxuXG4gICAgLy8gRmlyc3QgcmVkdWNlIGFsbCB3aGl0ZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUgc28gd2UgZG8gbm90IGhhdmUgdG8gcmVseVxuICAgIC8vIG9uIHBvdGVudGlhbGx5IHNsb3cgcmVnZXhlcyBsaWtlIFxccyouIFRoaXMgaXMgdGhlbiBzdG9yZWQgYW5kIHVzZWQgZm9yXG4gICAgLy8gZnV0dXJlIGVycm9yIG1lc3NhZ2VzIGFzIHdlbGwuXG4gICAgdGhpcy5yYXcgPSByYW5nZS50cmltKCkucmVwbGFjZShTUEFDRV9DSEFSQUNURVJTLCAnICcpXG5cbiAgICAvLyBGaXJzdCwgc3BsaXQgb24gfHxcbiAgICB0aGlzLnNldCA9IHRoaXMucmF3XG4gICAgICAuc3BsaXQoJ3x8JylcbiAgICAgIC8vIG1hcCB0aGUgcmFuZ2UgdG8gYSAyZCBhcnJheSBvZiBjb21wYXJhdG9yc1xuICAgICAgLm1hcChyID0+IHRoaXMucGFyc2VSYW5nZShyLnRyaW0oKSkpXG4gICAgICAvLyB0aHJvdyBvdXQgYW55IGNvbXBhcmF0b3IgbGlzdHMgdGhhdCBhcmUgZW1wdHlcbiAgICAgIC8vIHRoaXMgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgaXQgd2FzIG5vdCBhIHZhbGlkIHJhbmdlLCB3aGljaCBpcyBhbGxvd2VkXG4gICAgICAvLyBpbiBsb29zZSBtb2RlLCBidXQgd2lsbCBzdGlsbCB0aHJvdyBpZiB0aGUgV0hPTEUgcmFuZ2UgaXMgaW52YWxpZC5cbiAgICAgIC5maWx0ZXIoYyA9PiBjLmxlbmd0aClcblxuICAgIGlmICghdGhpcy5zZXQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFNlbVZlciBSYW5nZTogJHt0aGlzLnJhd31gKVxuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYW55IHRoYXQgYXJlIG5vdCB0aGUgbnVsbCBzZXQsIHRocm93IG91dCBudWxsIHNldHMuXG4gICAgaWYgKHRoaXMuc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIGtlZXAgdGhlIGZpcnN0IG9uZSwgaW4gY2FzZSB0aGV5J3JlIGFsbCBudWxsIHNldHNcbiAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5zZXRbMF1cbiAgICAgIHRoaXMuc2V0ID0gdGhpcy5zZXQuZmlsdGVyKGMgPT4gIWlzTnVsbFNldChjWzBdKSlcbiAgICAgIGlmICh0aGlzLnNldC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5zZXQgPSBbZmlyc3RdXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhbnkgdGhhdCBhcmUgKiwgdGhlbiB0aGUgcmFuZ2UgaXMganVzdCAqXG4gICAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLnNldCkge1xuICAgICAgICAgIGlmIChjLmxlbmd0aCA9PT0gMSAmJiBpc0FueShjWzBdKSkge1xuICAgICAgICAgICAgdGhpcy5zZXQgPSBbY11cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtYXR0ZWQgPSB1bmRlZmluZWRcbiAgfVxuXG4gIGdldCByYW5nZSAoKSB7XG4gICAgaWYgKHRoaXMuZm9ybWF0dGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZm9ybWF0dGVkID0gJydcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgdGhpcy5mb3JtYXR0ZWQgKz0gJ3x8J1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXBzID0gdGhpcy5zZXRbaV1cbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBjb21wcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgIGlmIChrID4gMCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWQgKz0gJyAnXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybWF0dGVkICs9IGNvbXBzW2tdLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkXG4gIH1cblxuICBmb3JtYXQgKCkge1xuICAgIHJldHVybiB0aGlzLnJhbmdlXG4gIH1cblxuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2VcbiAgfVxuXG4gIHBhcnNlUmFuZ2UgKHJhbmdlKSB7XG4gICAgLy8gbWVtb2l6ZSByYW5nZSBwYXJzaW5nIGZvciBwZXJmb3JtYW5jZS5cbiAgICAvLyB0aGlzIGlzIGEgdmVyeSBob3QgcGF0aCwgYW5kIGZ1bGx5IGRldGVybWluaXN0aWMuXG4gICAgY29uc3QgbWVtb09wdHMgPVxuICAgICAgKHRoaXMub3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSAmJiBGTEFHX0lOQ0xVREVfUFJFUkVMRUFTRSkgfFxuICAgICAgKHRoaXMub3B0aW9ucy5sb29zZSAmJiBGTEFHX0xPT1NFKVxuICAgIGNvbnN0IG1lbW9LZXkgPSBtZW1vT3B0cyArICc6JyArIHJhbmdlXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGUuZ2V0KG1lbW9LZXkpXG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZFxuICAgIH1cblxuICAgIGNvbnN0IGxvb3NlID0gdGhpcy5vcHRpb25zLmxvb3NlXG4gICAgLy8gYDEuMi4zIC0gMS4yLjRgID0+IGA+PTEuMi4zIDw9MS4yLjRgXG4gICAgY29uc3QgaHIgPSBsb29zZSA/IHJlW3QuSFlQSEVOUkFOR0VMT09TRV0gOiByZVt0LkhZUEhFTlJBTkdFXVxuICAgIHJhbmdlID0gcmFuZ2UucmVwbGFjZShociwgaHlwaGVuUmVwbGFjZSh0aGlzLm9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpKVxuICAgIGRlYnVnKCdoeXBoZW4gcmVwbGFjZScsIHJhbmdlKVxuXG4gICAgLy8gYD4gMS4yLjMgPCAxLjIuNWAgPT4gYD4xLjIuMyA8MS4yLjVgXG4gICAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW3QuQ09NUEFSQVRPUlRSSU1dLCBjb21wYXJhdG9yVHJpbVJlcGxhY2UpXG4gICAgZGVidWcoJ2NvbXBhcmF0b3IgdHJpbScsIHJhbmdlKVxuXG4gICAgLy8gYH4gMS4yLjNgID0+IGB+MS4yLjNgXG4gICAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW3QuVElMREVUUklNXSwgdGlsZGVUcmltUmVwbGFjZSlcbiAgICBkZWJ1ZygndGlsZGUgdHJpbScsIHJhbmdlKVxuXG4gICAgLy8gYF4gMS4yLjNgID0+IGBeMS4yLjNgXG4gICAgcmFuZ2UgPSByYW5nZS5yZXBsYWNlKHJlW3QuQ0FSRVRUUklNXSwgY2FyZXRUcmltUmVwbGFjZSlcbiAgICBkZWJ1ZygnY2FyZXQgdHJpbScsIHJhbmdlKVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIHJhbmdlIGlzIGNvbXBsZXRlbHkgdHJpbW1lZCBhbmRcbiAgICAvLyByZWFkeSB0byBiZSBzcGxpdCBpbnRvIGNvbXBhcmF0b3JzLlxuXG4gICAgbGV0IHJhbmdlTGlzdCA9IHJhbmdlXG4gICAgICAuc3BsaXQoJyAnKVxuICAgICAgLm1hcChjb21wID0+IHBhcnNlQ29tcGFyYXRvcihjb21wLCB0aGlzLm9wdGlvbnMpKVxuICAgICAgLmpvaW4oJyAnKVxuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC8vID49MC4wLjAgaXMgZXF1aXZhbGVudCB0byAqXG4gICAgICAubWFwKGNvbXAgPT4gcmVwbGFjZUdURTAoY29tcCwgdGhpcy5vcHRpb25zKSlcblxuICAgIGlmIChsb29zZSkge1xuICAgICAgLy8gaW4gbG9vc2UgbW9kZSwgdGhyb3cgb3V0IGFueSB0aGF0IGFyZSBub3QgdmFsaWQgY29tcGFyYXRvcnNcbiAgICAgIHJhbmdlTGlzdCA9IHJhbmdlTGlzdC5maWx0ZXIoY29tcCA9PiB7XG4gICAgICAgIGRlYnVnKCdsb29zZSBpbnZhbGlkIGZpbHRlcicsIGNvbXAsIHRoaXMub3B0aW9ucylcbiAgICAgICAgcmV0dXJuICEhY29tcC5tYXRjaChyZVt0LkNPTVBBUkFUT1JMT09TRV0pXG4gICAgICB9KVxuICAgIH1cbiAgICBkZWJ1ZygncmFuZ2UgbGlzdCcsIHJhbmdlTGlzdClcblxuICAgIC8vIGlmIGFueSBjb21wYXJhdG9ycyBhcmUgdGhlIG51bGwgc2V0LCB0aGVuIHJlcGxhY2Ugd2l0aCBKVVNUIG51bGwgc2V0XG4gICAgLy8gaWYgbW9yZSB0aGFuIG9uZSBjb21wYXJhdG9yLCByZW1vdmUgYW55ICogY29tcGFyYXRvcnNcbiAgICAvLyBhbHNvLCBkb24ndCBpbmNsdWRlIHRoZSBzYW1lIGNvbXBhcmF0b3IgbW9yZSB0aGFuIG9uY2VcbiAgICBjb25zdCByYW5nZU1hcCA9IG5ldyBNYXAoKVxuICAgIGNvbnN0IGNvbXBhcmF0b3JzID0gcmFuZ2VMaXN0Lm1hcChjb21wID0+IG5ldyBDb21wYXJhdG9yKGNvbXAsIHRoaXMub3B0aW9ucykpXG4gICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBhcmF0b3JzKSB7XG4gICAgICBpZiAoaXNOdWxsU2V0KGNvbXApKSB7XG4gICAgICAgIHJldHVybiBbY29tcF1cbiAgICAgIH1cbiAgICAgIHJhbmdlTWFwLnNldChjb21wLnZhbHVlLCBjb21wKVxuICAgIH1cbiAgICBpZiAocmFuZ2VNYXAuc2l6ZSA+IDEgJiYgcmFuZ2VNYXAuaGFzKCcnKSkge1xuICAgICAgcmFuZ2VNYXAuZGVsZXRlKCcnKVxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5yYW5nZU1hcC52YWx1ZXMoKV1cbiAgICBjYWNoZS5zZXQobWVtb0tleSwgcmVzdWx0KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGludGVyc2VjdHMgKHJhbmdlLCBvcHRpb25zKSB7XG4gICAgaWYgKCEocmFuZ2UgaW5zdGFuY2VvZiBSYW5nZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2EgUmFuZ2UgaXMgcmVxdWlyZWQnKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNldC5zb21lKCh0aGlzQ29tcGFyYXRvcnMpID0+IHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGlzU2F0aXNmaWFibGUodGhpc0NvbXBhcmF0b3JzLCBvcHRpb25zKSAmJlxuICAgICAgICByYW5nZS5zZXQuc29tZSgocmFuZ2VDb21wYXJhdG9ycykgPT4ge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpc1NhdGlzZmlhYmxlKHJhbmdlQ29tcGFyYXRvcnMsIG9wdGlvbnMpICYmXG4gICAgICAgICAgICB0aGlzQ29tcGFyYXRvcnMuZXZlcnkoKHRoaXNDb21wYXJhdG9yKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiByYW5nZUNvbXBhcmF0b3JzLmV2ZXJ5KChyYW5nZUNvbXBhcmF0b3IpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpc0NvbXBhcmF0b3IuaW50ZXJzZWN0cyhyYW5nZUNvbXBhcmF0b3IsIG9wdGlvbnMpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KVxuICB9XG5cbiAgLy8gaWYgQU5ZIG9mIHRoZSBzZXRzIG1hdGNoIEFMTCBvZiBpdHMgY29tcGFyYXRvcnMsIHRoZW4gcGFzc1xuICB0ZXN0ICh2ZXJzaW9uKSB7XG4gICAgaWYgKCF2ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZlcnNpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2ZXJzaW9uID0gbmV3IFNlbVZlcih2ZXJzaW9uLCB0aGlzLm9wdGlvbnMpXG4gICAgICB9IGNhdGNoIChlcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGVzdFNldCh0aGlzLnNldFtpXSwgdmVyc2lvbiwgdGhpcy5vcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJhbmdlXG5cbmNvbnN0IExSVSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2xydWNhY2hlJylcbmNvbnN0IGNhY2hlID0gbmV3IExSVSgpXG5cbmNvbnN0IHBhcnNlT3B0aW9ucyA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3BhcnNlLW9wdGlvbnMnKVxuY29uc3QgQ29tcGFyYXRvciA9IHJlcXVpcmUoJy4vY29tcGFyYXRvcicpXG5jb25zdCBkZWJ1ZyA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2RlYnVnJylcbmNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4vc2VtdmVyJylcbmNvbnN0IHtcbiAgc2FmZVJlOiByZSxcbiAgdCxcbiAgY29tcGFyYXRvclRyaW1SZXBsYWNlLFxuICB0aWxkZVRyaW1SZXBsYWNlLFxuICBjYXJldFRyaW1SZXBsYWNlLFxufSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcbmNvbnN0IHsgRkxBR19JTkNMVURFX1BSRVJFTEVBU0UsIEZMQUdfTE9PU0UgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2NvbnN0YW50cycpXG5cbmNvbnN0IGlzTnVsbFNldCA9IGMgPT4gYy52YWx1ZSA9PT0gJzwwLjAuMC0wJ1xuY29uc3QgaXNBbnkgPSBjID0+IGMudmFsdWUgPT09ICcnXG5cbi8vIHRha2UgYSBzZXQgb2YgY29tcGFyYXRvcnMgYW5kIGRldGVybWluZSB3aGV0aGVyIHRoZXJlXG4vLyBleGlzdHMgYSB2ZXJzaW9uIHdoaWNoIGNhbiBzYXRpc2Z5IGl0XG5jb25zdCBpc1NhdGlzZmlhYmxlID0gKGNvbXBhcmF0b3JzLCBvcHRpb25zKSA9PiB7XG4gIGxldCByZXN1bHQgPSB0cnVlXG4gIGNvbnN0IHJlbWFpbmluZ0NvbXBhcmF0b3JzID0gY29tcGFyYXRvcnMuc2xpY2UoKVxuICBsZXQgdGVzdENvbXBhcmF0b3IgPSByZW1haW5pbmdDb21wYXJhdG9ycy5wb3AoKVxuXG4gIHdoaWxlIChyZXN1bHQgJiYgcmVtYWluaW5nQ29tcGFyYXRvcnMubGVuZ3RoKSB7XG4gICAgcmVzdWx0ID0gcmVtYWluaW5nQ29tcGFyYXRvcnMuZXZlcnkoKG90aGVyQ29tcGFyYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIHRlc3RDb21wYXJhdG9yLmludGVyc2VjdHMob3RoZXJDb21wYXJhdG9yLCBvcHRpb25zKVxuICAgIH0pXG5cbiAgICB0ZXN0Q29tcGFyYXRvciA9IHJlbWFpbmluZ0NvbXBhcmF0b3JzLnBvcCgpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIGNvbXByaXNlZCBvZiB4cmFuZ2VzLCB0aWxkZXMsIHN0YXJzLCBhbmQgZ3RsdCdzIGF0IHRoaXMgcG9pbnQuXG4vLyBhbHJlYWR5IHJlcGxhY2VkIHRoZSBoeXBoZW4gcmFuZ2VzXG4vLyB0dXJuIGludG8gYSBzZXQgb2YgSlVTVCBjb21wYXJhdG9ycy5cbmNvbnN0IHBhcnNlQ29tcGFyYXRvciA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGRlYnVnKCdjb21wJywgY29tcCwgb3B0aW9ucylcbiAgY29tcCA9IHJlcGxhY2VDYXJldHMoY29tcCwgb3B0aW9ucylcbiAgZGVidWcoJ2NhcmV0JywgY29tcClcbiAgY29tcCA9IHJlcGxhY2VUaWxkZXMoY29tcCwgb3B0aW9ucylcbiAgZGVidWcoJ3RpbGRlcycsIGNvbXApXG4gIGNvbXAgPSByZXBsYWNlWFJhbmdlcyhjb21wLCBvcHRpb25zKVxuICBkZWJ1ZygneHJhbmdlJywgY29tcClcbiAgY29tcCA9IHJlcGxhY2VTdGFycyhjb21wLCBvcHRpb25zKVxuICBkZWJ1Zygnc3RhcnMnLCBjb21wKVxuICByZXR1cm4gY29tcFxufVxuXG5jb25zdCBpc1ggPSBpZCA9PiAhaWQgfHwgaWQudG9Mb3dlckNhc2UoKSA9PT0gJ3gnIHx8IGlkID09PSAnKidcblxuLy8gfiwgfj4gLS0+ICogKGFueSwga2luZGEgc2lsbHkpXG4vLyB+MiwgfjIueCwgfjIueC54LCB+PjIsIH4+Mi54IH4+Mi54LnggLS0+ID49Mi4wLjAgPDMuMC4wLTBcbi8vIH4yLjAsIH4yLjAueCwgfj4yLjAsIH4+Mi4wLnggLS0+ID49Mi4wLjAgPDIuMS4wLTBcbi8vIH4xLjIsIH4xLjIueCwgfj4xLjIsIH4+MS4yLnggLS0+ID49MS4yLjAgPDEuMy4wLTBcbi8vIH4xLjIuMywgfj4xLjIuMyAtLT4gPj0xLjIuMyA8MS4zLjAtMFxuLy8gfjEuMi4wLCB+PjEuMi4wIC0tPiA+PTEuMi4wIDwxLjMuMC0wXG4vLyB+MC4wLjEgLS0+ID49MC4wLjEgPDAuMS4wLTBcbmNvbnN0IHJlcGxhY2VUaWxkZXMgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICByZXR1cm4gY29tcFxuICAgIC50cmltKClcbiAgICAuc3BsaXQoL1xccysvKVxuICAgIC5tYXAoKGMpID0+IHJlcGxhY2VUaWxkZShjLCBvcHRpb25zKSlcbiAgICAuam9pbignICcpXG59XG5cbmNvbnN0IHJlcGxhY2VUaWxkZSA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHIgPSBvcHRpb25zLmxvb3NlID8gcmVbdC5USUxERUxPT1NFXSA6IHJlW3QuVElMREVdXG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgKF8sIE0sIG0sIHAsIHByKSA9PiB7XG4gICAgZGVidWcoJ3RpbGRlJywgY29tcCwgXywgTSwgbSwgcCwgcHIpXG4gICAgbGV0IHJldFxuXG4gICAgaWYgKGlzWChNKSkge1xuICAgICAgcmV0ID0gJydcbiAgICB9IGVsc2UgaWYgKGlzWChtKSkge1xuICAgICAgcmV0ID0gYD49JHtNfS4wLjAgPCR7K00gKyAxfS4wLjAtMGBcbiAgICB9IGVsc2UgaWYgKGlzWChwKSkge1xuICAgICAgLy8gfjEuMiA9PSA+PTEuMi4wIDwxLjMuMC0wXG4gICAgICByZXQgPSBgPj0ke019LiR7bX0uMCA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgIH0gZWxzZSBpZiAocHIpIHtcbiAgICAgIGRlYnVnKCdyZXBsYWNlVGlsZGUgcHInLCBwcilcbiAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3B9LSR7cHJcbiAgICAgIH0gPCR7TX0uJHsrbSArIDF9LjAtMGBcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gfjEuMi4zID09ID49MS4yLjMgPDEuMy4wLTBcbiAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3BcbiAgICAgIH0gPCR7TX0uJHsrbSArIDF9LjAtMGBcbiAgICB9XG5cbiAgICBkZWJ1ZygndGlsZGUgcmV0dXJuJywgcmV0KVxuICAgIHJldHVybiByZXRcbiAgfSlcbn1cblxuLy8gXiAtLT4gKiAoYW55LCBraW5kYSBzaWxseSlcbi8vIF4yLCBeMi54LCBeMi54LnggLS0+ID49Mi4wLjAgPDMuMC4wLTBcbi8vIF4yLjAsIF4yLjAueCAtLT4gPj0yLjAuMCA8My4wLjAtMFxuLy8gXjEuMiwgXjEuMi54IC0tPiA+PTEuMi4wIDwyLjAuMC0wXG4vLyBeMS4yLjMgLS0+ID49MS4yLjMgPDIuMC4wLTBcbi8vIF4xLjIuMCAtLT4gPj0xLjIuMCA8Mi4wLjAtMFxuLy8gXjAuMC4xIC0tPiA+PTAuMC4xIDwwLjAuMi0wXG4vLyBeMC4xLjAgLS0+ID49MC4xLjAgPDAuMi4wLTBcbmNvbnN0IHJlcGxhY2VDYXJldHMgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICByZXR1cm4gY29tcFxuICAgIC50cmltKClcbiAgICAuc3BsaXQoL1xccysvKVxuICAgIC5tYXAoKGMpID0+IHJlcGxhY2VDYXJldChjLCBvcHRpb25zKSlcbiAgICAuam9pbignICcpXG59XG5cbmNvbnN0IHJlcGxhY2VDYXJldCA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGRlYnVnKCdjYXJldCcsIGNvbXAsIG9wdGlvbnMpXG4gIGNvbnN0IHIgPSBvcHRpb25zLmxvb3NlID8gcmVbdC5DQVJFVExPT1NFXSA6IHJlW3QuQ0FSRVRdXG4gIGNvbnN0IHogPSBvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlID8gJy0wJyA6ICcnXG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgKF8sIE0sIG0sIHAsIHByKSA9PiB7XG4gICAgZGVidWcoJ2NhcmV0JywgY29tcCwgXywgTSwgbSwgcCwgcHIpXG4gICAgbGV0IHJldFxuXG4gICAgaWYgKGlzWChNKSkge1xuICAgICAgcmV0ID0gJydcbiAgICB9IGVsc2UgaWYgKGlzWChtKSkge1xuICAgICAgcmV0ID0gYD49JHtNfS4wLjAke3p9IDwkeytNICsgMX0uMC4wLTBgXG4gICAgfSBlbHNlIGlmIChpc1gocCkpIHtcbiAgICAgIGlmIChNID09PSAnMCcpIHtcbiAgICAgICAgcmV0ID0gYD49JHtNfS4ke219LjAke3p9IDwke019LiR7K20gKyAxfS4wLTBgXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQgPSBgPj0ke019LiR7bX0uMCR7en0gPCR7K00gKyAxfS4wLjAtMGBcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByKSB7XG4gICAgICBkZWJ1ZygncmVwbGFjZUNhcmV0IHByJywgcHIpXG4gICAgICBpZiAoTSA9PT0gJzAnKSB7XG4gICAgICAgIGlmIChtID09PSAnMCcpIHtcbiAgICAgICAgICByZXQgPSBgPj0ke019LiR7bX0uJHtwfS0ke3ByXG4gICAgICAgICAgfSA8JHtNfS4ke219LiR7K3AgKyAxfS0wYFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3B9LSR7cHJcbiAgICAgICAgICB9IDwke019LiR7K20gKyAxfS4wLTBgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3B9LSR7cHJcbiAgICAgICAgfSA8JHsrTSArIDF9LjAuMC0wYFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Zygnbm8gcHInKVxuICAgICAgaWYgKE0gPT09ICcwJykge1xuICAgICAgICBpZiAobSA9PT0gJzAnKSB7XG4gICAgICAgICAgcmV0ID0gYD49JHtNfS4ke219LiR7cFxuICAgICAgICAgIH0ke3p9IDwke019LiR7bX0uJHsrcCArIDF9LTBgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ID0gYD49JHtNfS4ke219LiR7cFxuICAgICAgICAgIH0ke3p9IDwke019LiR7K20gKyAxfS4wLTBgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4ke3BcbiAgICAgICAgfSA8JHsrTSArIDF9LjAuMC0wYFxuICAgICAgfVxuICAgIH1cblxuICAgIGRlYnVnKCdjYXJldCByZXR1cm4nLCByZXQpXG4gICAgcmV0dXJuIHJldFxuICB9KVxufVxuXG5jb25zdCByZXBsYWNlWFJhbmdlcyA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGRlYnVnKCdyZXBsYWNlWFJhbmdlcycsIGNvbXAsIG9wdGlvbnMpXG4gIHJldHVybiBjb21wXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAubWFwKChjKSA9PiByZXBsYWNlWFJhbmdlKGMsIG9wdGlvbnMpKVxuICAgIC5qb2luKCcgJylcbn1cblxuY29uc3QgcmVwbGFjZVhSYW5nZSA9IChjb21wLCBvcHRpb25zKSA9PiB7XG4gIGNvbXAgPSBjb21wLnRyaW0oKVxuICBjb25zdCByID0gb3B0aW9ucy5sb29zZSA/IHJlW3QuWFJBTkdFTE9PU0VdIDogcmVbdC5YUkFOR0VdXG4gIHJldHVybiBjb21wLnJlcGxhY2UociwgKHJldCwgZ3RsdCwgTSwgbSwgcCwgcHIpID0+IHtcbiAgICBkZWJ1ZygneFJhbmdlJywgY29tcCwgcmV0LCBndGx0LCBNLCBtLCBwLCBwcilcbiAgICBjb25zdCB4TSA9IGlzWChNKVxuICAgIGNvbnN0IHhtID0geE0gfHwgaXNYKG0pXG4gICAgY29uc3QgeHAgPSB4bSB8fCBpc1gocClcbiAgICBjb25zdCBhbnlYID0geHBcblxuICAgIGlmIChndGx0ID09PSAnPScgJiYgYW55WCkge1xuICAgICAgZ3RsdCA9ICcnXG4gICAgfVxuXG4gICAgLy8gaWYgd2UncmUgaW5jbHVkaW5nIHByZXJlbGVhc2VzIGluIHRoZSBtYXRjaCwgdGhlbiB3ZSBuZWVkXG4gICAgLy8gdG8gZml4IHRoaXMgdG8gLTAsIHRoZSBsb3dlc3QgcG9zc2libGUgcHJlcmVsZWFzZSB2YWx1ZVxuICAgIHByID0gb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSA/ICctMCcgOiAnJ1xuXG4gICAgaWYgKHhNKSB7XG4gICAgICBpZiAoZ3RsdCA9PT0gJz4nIHx8IGd0bHQgPT09ICc8Jykge1xuICAgICAgICAvLyBub3RoaW5nIGlzIGFsbG93ZWRcbiAgICAgICAgcmV0ID0gJzwwLjAuMC0wJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm90aGluZyBpcyBmb3JiaWRkZW5cbiAgICAgICAgcmV0ID0gJyonXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChndGx0ICYmIGFueVgpIHtcbiAgICAgIC8vIHdlIGtub3cgcGF0Y2ggaXMgYW4geCwgYmVjYXVzZSB3ZSBoYXZlIGFueSB4IGF0IGFsbC5cbiAgICAgIC8vIHJlcGxhY2UgWCB3aXRoIDBcbiAgICAgIGlmICh4bSkge1xuICAgICAgICBtID0gMFxuICAgICAgfVxuICAgICAgcCA9IDBcblxuICAgICAgaWYgKGd0bHQgPT09ICc+Jykge1xuICAgICAgICAvLyA+MSA9PiA+PTIuMC4wXG4gICAgICAgIC8vID4xLjIgPT4gPj0xLjMuMFxuICAgICAgICBndGx0ID0gJz49J1xuICAgICAgICBpZiAoeG0pIHtcbiAgICAgICAgICBNID0gK00gKyAxXG4gICAgICAgICAgbSA9IDBcbiAgICAgICAgICBwID0gMFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG0gPSArbSArIDFcbiAgICAgICAgICBwID0gMFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0bHQgPT09ICc8PScpIHtcbiAgICAgICAgLy8gPD0wLjcueCBpcyBhY3R1YWxseSA8MC44LjAsIHNpbmNlIGFueSAwLjcueCBzaG91bGRcbiAgICAgICAgLy8gcGFzcy4gIFNpbWlsYXJseSwgPD03LnggaXMgYWN0dWFsbHkgPDguMC4wLCBldGMuXG4gICAgICAgIGd0bHQgPSAnPCdcbiAgICAgICAgaWYgKHhtKSB7XG4gICAgICAgICAgTSA9ICtNICsgMVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG0gPSArbSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZ3RsdCA9PT0gJzwnKSB7XG4gICAgICAgIHByID0gJy0wJ1xuICAgICAgfVxuXG4gICAgICByZXQgPSBgJHtndGx0ICsgTX0uJHttfS4ke3B9JHtwcn1gXG4gICAgfSBlbHNlIGlmICh4bSkge1xuICAgICAgcmV0ID0gYD49JHtNfS4wLjAke3ByfSA8JHsrTSArIDF9LjAuMC0wYFxuICAgIH0gZWxzZSBpZiAoeHApIHtcbiAgICAgIHJldCA9IGA+PSR7TX0uJHttfS4wJHtwclxuICAgICAgfSA8JHtNfS4keyttICsgMX0uMC0wYFxuICAgIH1cblxuICAgIGRlYnVnKCd4UmFuZ2UgcmV0dXJuJywgcmV0KVxuXG4gICAgcmV0dXJuIHJldFxuICB9KVxufVxuXG4vLyBCZWNhdXNlICogaXMgQU5ELWVkIHdpdGggZXZlcnl0aGluZyBlbHNlIGluIHRoZSBjb21wYXJhdG9yLFxuLy8gYW5kICcnIG1lYW5zIFwiYW55IHZlcnNpb25cIiwganVzdCByZW1vdmUgdGhlICpzIGVudGlyZWx5LlxuY29uc3QgcmVwbGFjZVN0YXJzID0gKGNvbXAsIG9wdGlvbnMpID0+IHtcbiAgZGVidWcoJ3JlcGxhY2VTdGFycycsIGNvbXAsIG9wdGlvbnMpXG4gIC8vIExvb3NlbmVzcyBpcyBpZ25vcmVkIGhlcmUuICBzdGFyIGlzIGFsd2F5cyBhcyBsb29zZSBhcyBpdCBnZXRzIVxuICByZXR1cm4gY29tcFxuICAgIC50cmltKClcbiAgICAucmVwbGFjZShyZVt0LlNUQVJdLCAnJylcbn1cblxuY29uc3QgcmVwbGFjZUdURTAgPSAoY29tcCwgb3B0aW9ucykgPT4ge1xuICBkZWJ1ZygncmVwbGFjZUdURTAnLCBjb21wLCBvcHRpb25zKVxuICByZXR1cm4gY29tcFxuICAgIC50cmltKClcbiAgICAucmVwbGFjZShyZVtvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlID8gdC5HVEUwUFJFIDogdC5HVEUwXSwgJycpXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHN0cmluZy5yZXBsYWNlKHJlW3QuSFlQSEVOUkFOR0VdKVxuLy8gTSwgbSwgcGF0Y2gsIHByZXJlbGVhc2UsIGJ1aWxkXG4vLyAxLjIgLSAzLjQuNSA9PiA+PTEuMi4wIDw9My40LjVcbi8vIDEuMi4zIC0gMy40ID0+ID49MS4yLjAgPDMuNS4wLTAgQW55IDMuNC54IHdpbGwgZG9cbi8vIDEuMiAtIDMuNCA9PiA+PTEuMi4wIDwzLjUuMC0wXG4vLyBUT0RPIGJ1aWxkP1xuY29uc3QgaHlwaGVuUmVwbGFjZSA9IGluY1ByID0+ICgkMCxcbiAgZnJvbSwgZk0sIGZtLCBmcCwgZnByLCBmYixcbiAgdG8sIHRNLCB0bSwgdHAsIHRwcikgPT4ge1xuICBpZiAoaXNYKGZNKSkge1xuICAgIGZyb20gPSAnJ1xuICB9IGVsc2UgaWYgKGlzWChmbSkpIHtcbiAgICBmcm9tID0gYD49JHtmTX0uMC4wJHtpbmNQciA/ICctMCcgOiAnJ31gXG4gIH0gZWxzZSBpZiAoaXNYKGZwKSkge1xuICAgIGZyb20gPSBgPj0ke2ZNfS4ke2ZtfS4wJHtpbmNQciA/ICctMCcgOiAnJ31gXG4gIH0gZWxzZSBpZiAoZnByKSB7XG4gICAgZnJvbSA9IGA+PSR7ZnJvbX1gXG4gIH0gZWxzZSB7XG4gICAgZnJvbSA9IGA+PSR7ZnJvbX0ke2luY1ByID8gJy0wJyA6ICcnfWBcbiAgfVxuXG4gIGlmIChpc1godE0pKSB7XG4gICAgdG8gPSAnJ1xuICB9IGVsc2UgaWYgKGlzWCh0bSkpIHtcbiAgICB0byA9IGA8JHsrdE0gKyAxfS4wLjAtMGBcbiAgfSBlbHNlIGlmIChpc1godHApKSB7XG4gICAgdG8gPSBgPCR7dE19LiR7K3RtICsgMX0uMC0wYFxuICB9IGVsc2UgaWYgKHRwcikge1xuICAgIHRvID0gYDw9JHt0TX0uJHt0bX0uJHt0cH0tJHt0cHJ9YFxuICB9IGVsc2UgaWYgKGluY1ByKSB7XG4gICAgdG8gPSBgPCR7dE19LiR7dG19LiR7K3RwICsgMX0tMGBcbiAgfSBlbHNlIHtcbiAgICB0byA9IGA8PSR7dG99YFxuICB9XG5cbiAgcmV0dXJuIGAke2Zyb219ICR7dG99YC50cmltKClcbn1cblxuY29uc3QgdGVzdFNldCA9IChzZXQsIHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIXNldFtpXS50ZXN0KHZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBpZiAodmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aCAmJiAhb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSkge1xuICAgIC8vIEZpbmQgdGhlIHNldCBvZiB2ZXJzaW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIGhhdmUgcHJlcmVsZWFzZXNcbiAgICAvLyBGb3IgZXhhbXBsZSwgXjEuMi4zLXByLjEgZGVzdWdhcnMgdG8gPj0xLjIuMy1wci4xIDwyLjAuMFxuICAgIC8vIFRoYXQgc2hvdWxkIGFsbG93IGAxLjIuMy1wci4yYCB0byBwYXNzLlxuICAgIC8vIEhvd2V2ZXIsIGAxLjIuNC1hbHBoYS5ub3RyZWFkeWAgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLFxuICAgIC8vIGV2ZW4gdGhvdWdoIGl0J3Mgd2l0aGluIHRoZSByYW5nZSBzZXQgYnkgdGhlIGNvbXBhcmF0b3JzLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWJ1ZyhzZXRbaV0uc2VtdmVyKVxuICAgICAgaWYgKHNldFtpXS5zZW12ZXIgPT09IENvbXBhcmF0b3IuQU5ZKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChzZXRbaV0uc2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBhbGxvd2VkID0gc2V0W2ldLnNlbXZlclxuICAgICAgICBpZiAoYWxsb3dlZC5tYWpvciA9PT0gdmVyc2lvbi5tYWpvciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5taW5vciA9PT0gdmVyc2lvbi5taW5vciAmJlxuICAgICAgICAgICAgYWxsb3dlZC5wYXRjaCA9PT0gdmVyc2lvbi5wYXRjaCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWZXJzaW9uIGhhcyBhIC1wcmUsIGJ1dCBpdCdzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2UgbGlrZS5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/classes/range.js\n"));
/***/ }),
/***/ "./node_modules/semver/classes/semver.js":
/*!***********************************************!*\
!*** ./node_modules/semver/classes/semver.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const debug = __webpack_require__(/*! ../internal/debug */ \"./node_modules/semver/internal/debug.js\")\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ \"./node_modules/semver/internal/constants.js\")\nconst { safeRe: re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\n\nconst parseOptions = __webpack_require__(/*! ../internal/parse-options */ \"./node_modules/semver/internal/parse-options.js\")\nconst { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ \"./node_modules/semver/internal/identifiers.js\")\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2NsYXNzZXMvc2VtdmVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxrRUFBbUI7QUFDekMsUUFBUSwrQkFBK0IsRUFBRSxtQkFBTyxDQUFDLDBFQUF1QjtBQUN4RSxRQUFRLGdCQUFnQixFQUFFLG1CQUFPLENBQUMsNERBQWdCOztBQUVsRCxxQkFBcUIsbUJBQU8sQ0FBQyxrRkFBMkI7QUFDeEQsUUFBUSxxQkFBcUIsRUFBRSxtQkFBTyxDQUFDLDhFQUF5QjtBQUNoRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTiwwRUFBMEUsZUFBZTtBQUN6Rjs7QUFFQTtBQUNBO0FBQ0Esa0NBQWtDLFlBQVk7QUFDOUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSw4Q0FBOEMsUUFBUTtBQUN0RDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsV0FBVyxHQUFHLFdBQVcsR0FBRyxXQUFXO0FBQzdEO0FBQ0EsMEJBQTBCLDBCQUEwQjtBQUNwRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCxRQUFRO0FBQy9EO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixxQkFBcUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9jbGFzc2VzL3NlbXZlci5qcz84M2NjIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGRlYnVnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWwvZGVidWcnKVxuY29uc3QgeyBNQVhfTEVOR1RILCBNQVhfU0FGRV9JTlRFR0VSIH0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9jb25zdGFudHMnKVxuY29uc3QgeyBzYWZlUmU6IHJlLCB0IH0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbC9yZScpXG5cbmNvbnN0IHBhcnNlT3B0aW9ucyA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3BhcnNlLW9wdGlvbnMnKVxuY29uc3QgeyBjb21wYXJlSWRlbnRpZmllcnMgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL2lkZW50aWZpZXJzJylcbmNsYXNzIFNlbVZlciB7XG4gIGNvbnN0cnVjdG9yICh2ZXJzaW9uLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHBhcnNlT3B0aW9ucyhvcHRpb25zKVxuXG4gICAgaWYgKHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIpIHtcbiAgICAgIGlmICh2ZXJzaW9uLmxvb3NlID09PSAhIW9wdGlvbnMubG9vc2UgJiZcbiAgICAgICAgICB2ZXJzaW9uLmluY2x1ZGVQcmVyZWxlYXNlID09PSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpIHtcbiAgICAgICAgcmV0dXJuIHZlcnNpb25cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uLnZlcnNpb25cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ZXJzaW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgSW52YWxpZCB2ZXJzaW9uLiBNdXN0IGJlIGEgc3RyaW5nLiBHb3QgdHlwZSBcIiR7dHlwZW9mIHZlcnNpb259XCIuYClcbiAgICB9XG5cbiAgICBpZiAodmVyc2lvbi5sZW5ndGggPiBNQVhfTEVOR1RIKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgdmVyc2lvbiBpcyBsb25nZXIgdGhhbiAke01BWF9MRU5HVEh9IGNoYXJhY3RlcnNgXG4gICAgICApXG4gICAgfVxuXG4gICAgZGVidWcoJ1NlbVZlcicsIHZlcnNpb24sIG9wdGlvbnMpXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgIHRoaXMubG9vc2UgPSAhIW9wdGlvbnMubG9vc2VcbiAgICAvLyB0aGlzIGlzbid0IGFjdHVhbGx5IHJlbGV2YW50IGZvciB2ZXJzaW9ucywgYnV0IGtlZXAgaXQgc28gdGhhdCB3ZVxuICAgIC8vIGRvbid0IHJ1biBpbnRvIHRyb3VibGUgcGFzc2luZyB0aGlzLm9wdGlvbnMgYXJvdW5kLlxuICAgIHRoaXMuaW5jbHVkZVByZXJlbGVhc2UgPSAhIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2VcblxuICAgIGNvbnN0IG0gPSB2ZXJzaW9uLnRyaW0oKS5tYXRjaChvcHRpb25zLmxvb3NlID8gcmVbdC5MT09TRV0gOiByZVt0LkZVTExdKVxuXG4gICAgaWYgKCFtKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFZlcnNpb246ICR7dmVyc2lvbn1gKVxuICAgIH1cblxuICAgIHRoaXMucmF3ID0gdmVyc2lvblxuXG4gICAgLy8gdGhlc2UgYXJlIGFjdHVhbGx5IG51bWJlcnNcbiAgICB0aGlzLm1ham9yID0gK21bMV1cbiAgICB0aGlzLm1pbm9yID0gK21bMl1cbiAgICB0aGlzLnBhdGNoID0gK21bM11cblxuICAgIGlmICh0aGlzLm1ham9yID4gTUFYX1NBRkVfSU5URUdFUiB8fCB0aGlzLm1ham9yIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBtYWpvciB2ZXJzaW9uJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5taW5vciA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdGhpcy5taW5vciA8IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbWlub3IgdmVyc2lvbicpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGF0Y2ggPiBNQVhfU0FGRV9JTlRFR0VSIHx8IHRoaXMucGF0Y2ggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHBhdGNoIHZlcnNpb24nKVxuICAgIH1cblxuICAgIC8vIG51bWJlcmlmeSBhbnkgcHJlcmVsZWFzZSBudW1lcmljIGlkc1xuICAgIGlmICghbVs0XSkge1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW11cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVyZWxlYXNlID0gbVs0XS5zcGxpdCgnLicpLm1hcCgoaWQpID0+IHtcbiAgICAgICAgaWYgKC9eWzAtOV0rJC8udGVzdChpZCkpIHtcbiAgICAgICAgICBjb25zdCBudW0gPSAraWRcbiAgICAgICAgICBpZiAobnVtID49IDAgJiYgbnVtIDwgTUFYX1NBRkVfSU5URUdFUikge1xuICAgICAgICAgICAgcmV0dXJuIG51bVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5idWlsZCA9IG1bNV0gPyBtWzVdLnNwbGl0KCcuJykgOiBbXVxuICAgIHRoaXMuZm9ybWF0KClcbiAgfVxuXG4gIGZvcm1hdCAoKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gYCR7dGhpcy5tYWpvcn0uJHt0aGlzLm1pbm9yfS4ke3RoaXMucGF0Y2h9YFxuICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoKSB7XG4gICAgICB0aGlzLnZlcnNpb24gKz0gYC0ke3RoaXMucHJlcmVsZWFzZS5qb2luKCcuJyl9YFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy52ZXJzaW9uXG4gIH1cblxuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblxuICB9XG5cbiAgY29tcGFyZSAob3RoZXIpIHtcbiAgICBkZWJ1ZygnU2VtVmVyLmNvbXBhcmUnLCB0aGlzLnZlcnNpb24sIHRoaXMub3B0aW9ucywgb3RoZXIpXG4gICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBTZW1WZXIpKSB7XG4gICAgICBpZiAodHlwZW9mIG90aGVyID09PSAnc3RyaW5nJyAmJiBvdGhlciA9PT0gdGhpcy52ZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9XG4gICAgICBvdGhlciA9IG5ldyBTZW1WZXIob3RoZXIsIHRoaXMub3B0aW9ucylcbiAgICB9XG5cbiAgICBpZiAob3RoZXIudmVyc2lvbiA9PT0gdGhpcy52ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNvbXBhcmVNYWluKG90aGVyKSB8fCB0aGlzLmNvbXBhcmVQcmUob3RoZXIpXG4gIH1cblxuICBjb21wYXJlTWFpbiAob3RoZXIpIHtcbiAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpIHtcbiAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5tYWpvciwgb3RoZXIubWFqb3IpIHx8XG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5taW5vciwgb3RoZXIubWlub3IpIHx8XG4gICAgICBjb21wYXJlSWRlbnRpZmllcnModGhpcy5wYXRjaCwgb3RoZXIucGF0Y2gpXG4gICAgKVxuICB9XG5cbiAgY29tcGFyZVByZSAob3RoZXIpIHtcbiAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNlbVZlcikpIHtcbiAgICAgIG90aGVyID0gbmV3IFNlbVZlcihvdGhlciwgdGhpcy5vcHRpb25zKVxuICAgIH1cblxuICAgIC8vIE5PVCBoYXZpbmcgYSBwcmVyZWxlYXNlIGlzID4gaGF2aW5nIG9uZVxuICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoICYmICFvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfSBlbHNlIGlmICghdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCAmJiBvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDFcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByZXJlbGVhc2UubGVuZ3RoICYmICFvdGhlci5wcmVyZWxlYXNlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICBsZXQgaSA9IDBcbiAgICBkbyB7XG4gICAgICBjb25zdCBhID0gdGhpcy5wcmVyZWxlYXNlW2ldXG4gICAgICBjb25zdCBiID0gb3RoZXIucHJlcmVsZWFzZVtpXVxuICAgICAgZGVidWcoJ3ByZXJlbGVhc2UgY29tcGFyZScsIGksIGEsIGIpXG4gICAgICBpZiAoYSA9PT0gdW5kZWZpbmVkICYmIGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfSBlbHNlIGlmIChiID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDFcbiAgICAgIH0gZWxzZSBpZiAoYSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfSBlbHNlIGlmIChhID09PSBiKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29tcGFyZUlkZW50aWZpZXJzKGEsIGIpXG4gICAgICB9XG4gICAgfSB3aGlsZSAoKytpKVxuICB9XG5cbiAgY29tcGFyZUJ1aWxkIChvdGhlcikge1xuICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgU2VtVmVyKSkge1xuICAgICAgb3RoZXIgPSBuZXcgU2VtVmVyKG90aGVyLCB0aGlzLm9wdGlvbnMpXG4gICAgfVxuXG4gICAgbGV0IGkgPSAwXG4gICAgZG8ge1xuICAgICAgY29uc3QgYSA9IHRoaXMuYnVpbGRbaV1cbiAgICAgIGNvbnN0IGIgPSBvdGhlci5idWlsZFtpXVxuICAgICAgZGVidWcoJ2J1aWxkIGNvbXBhcmUnLCBpLCBhLCBiKVxuICAgICAgaWYgKGEgPT09IHVuZGVmaW5lZCAmJiBiID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIDBcbiAgICAgIH0gZWxzZSBpZiAoYiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9IGVsc2UgaWYgKGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH0gZWxzZSBpZiAoYSA9PT0gYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVJZGVudGlmaWVycyhhLCBiKVxuICAgICAgfVxuICAgIH0gd2hpbGUgKCsraSlcbiAgfVxuXG4gIC8vIHByZW1pbm9yIHdpbGwgYnVtcCB0aGUgdmVyc2lvbiB1cCB0byB0aGUgbmV4dCBtaW5vciByZWxlYXNlLCBhbmQgaW1tZWRpYXRlbHlcbiAgLy8gZG93biB0byBwcmUtcmVsZWFzZS4gcHJlbWFqb3IgYW5kIHByZXBhdGNoIHdvcmsgdGhlIHNhbWUgd2F5LlxuICBpbmMgKHJlbGVhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJCYXNlKSB7XG4gICAgc3dpdGNoIChyZWxlYXNlKSB7XG4gICAgICBjYXNlICdwcmVtYWpvcic6XG4gICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwXG4gICAgICAgIHRoaXMucGF0Y2ggPSAwXG4gICAgICAgIHRoaXMubWlub3IgPSAwXG4gICAgICAgIHRoaXMubWFqb3IrK1xuICAgICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwcmVtaW5vcic6XG4gICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwXG4gICAgICAgIHRoaXMucGF0Y2ggPSAwXG4gICAgICAgIHRoaXMubWlub3IrK1xuICAgICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwcmVwYXRjaCc6XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYWxyZWFkeSBhIHByZXJlbGVhc2UsIGl0IHdpbGwgYnVtcCB0byB0aGUgbmV4dCB2ZXJzaW9uXG4gICAgICAgIC8vIGRyb3AgYW55IHByZXJlbGVhc2VzIHRoYXQgbWlnaHQgYWxyZWFkeSBleGlzdCwgc2luY2UgdGhleSBhcmUgbm90XG4gICAgICAgIC8vIHJlbGV2YW50IGF0IHRoaXMgcG9pbnQuXG4gICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPSAwXG4gICAgICAgIHRoaXMuaW5jKCdwYXRjaCcsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJCYXNlKVxuICAgICAgICB0aGlzLmluYygncHJlJywgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpXG4gICAgICAgIGJyZWFrXG4gICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYSBub24tcHJlcmVsZWFzZSB2ZXJzaW9uLCB0aGlzIGFjdHMgdGhlIHNhbWUgYXNcbiAgICAgIC8vIHByZXBhdGNoLlxuICAgICAgY2FzZSAncHJlcmVsZWFzZSc6XG4gICAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5pbmMoJ3BhdGNoJywgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmMoJ3ByZScsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJCYXNlKVxuICAgICAgICBicmVha1xuXG4gICAgICBjYXNlICdtYWpvcic6XG4gICAgICAgIC8vIElmIHRoaXMgaXMgYSBwcmUtbWFqb3IgdmVyc2lvbiwgYnVtcCB1cCB0byB0aGUgc2FtZSBtYWpvciB2ZXJzaW9uLlxuICAgICAgICAvLyBPdGhlcndpc2UgaW5jcmVtZW50IG1ham9yLlxuICAgICAgICAvLyAxLjAuMC01IGJ1bXBzIHRvIDEuMC4wXG4gICAgICAgIC8vIDEuMS4wIGJ1bXBzIHRvIDIuMC4wXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLm1pbm9yICE9PSAwIHx8XG4gICAgICAgICAgdGhpcy5wYXRjaCAhPT0gMCB8fFxuICAgICAgICAgIHRoaXMucHJlcmVsZWFzZS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5tYWpvcisrXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5taW5vciA9IDBcbiAgICAgICAgdGhpcy5wYXRjaCA9IDBcbiAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW11cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ21pbm9yJzpcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZS1taW5vciB2ZXJzaW9uLCBidW1wIHVwIHRvIHRoZSBzYW1lIG1pbm9yIHZlcnNpb24uXG4gICAgICAgIC8vIE90aGVyd2lzZSBpbmNyZW1lbnQgbWlub3IuXG4gICAgICAgIC8vIDEuMi4wLTUgYnVtcHMgdG8gMS4yLjBcbiAgICAgICAgLy8gMS4yLjEgYnVtcHMgdG8gMS4zLjBcbiAgICAgICAgaWYgKHRoaXMucGF0Y2ggIT09IDAgfHwgdGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubWlub3IrK1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF0Y2ggPSAwXG4gICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdwYXRjaCc6XG4gICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGEgcHJlLXJlbGVhc2UgdmVyc2lvbiwgaXQgd2lsbCBpbmNyZW1lbnQgdGhlIHBhdGNoLlxuICAgICAgICAvLyBJZiBpdCBpcyBhIHByZS1yZWxlYXNlIGl0IHdpbGwgYnVtcCB1cCB0byB0aGUgc2FtZSBwYXRjaCB2ZXJzaW9uLlxuICAgICAgICAvLyAxLjIuMC01IHBhdGNoZXMgdG8gMS4yLjBcbiAgICAgICAgLy8gMS4yLjAgcGF0Y2hlcyB0byAxLjIuMVxuICAgICAgICBpZiAodGhpcy5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucGF0Y2grK1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJlcmVsZWFzZSA9IFtdXG4gICAgICAgIGJyZWFrXG4gICAgICAvLyBUaGlzIHByb2JhYmx5IHNob3VsZG4ndCBiZSB1c2VkIHB1YmxpY2x5LlxuICAgICAgLy8gMS4wLjAgJ3ByZScgd291bGQgYmVjb21lIDEuMC4wLTAgd2hpY2ggaXMgdGhlIHdyb25nIGRpcmVjdGlvbi5cbiAgICAgIGNhc2UgJ3ByZSc6IHtcbiAgICAgICAgY29uc3QgYmFzZSA9IE51bWJlcihpZGVudGlmaWVyQmFzZSkgPyAxIDogMFxuXG4gICAgICAgIGlmICghaWRlbnRpZmllciAmJiBpZGVudGlmaWVyQmFzZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW5jcmVtZW50IGFyZ3VtZW50OiBpZGVudGlmaWVyIGlzIGVtcHR5JylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByZXJlbGVhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gW2Jhc2VdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGkgPSB0aGlzLnByZXJlbGVhc2UubGVuZ3RoXG4gICAgICAgICAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJlcmVsZWFzZVtpXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlW2ldKytcbiAgICAgICAgICAgICAgaSA9IC0yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICAgICAgLy8gZGlkbid0IGluY3JlbWVudCBhbnl0aGluZ1xuICAgICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT09IHRoaXMucHJlcmVsZWFzZS5qb2luKCcuJykgJiYgaWRlbnRpZmllckJhc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbmNyZW1lbnQgYXJndW1lbnQ6IGlkZW50aWZpZXIgYWxyZWFkeSBleGlzdHMnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlLnB1c2goYmFzZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlkZW50aWZpZXIpIHtcbiAgICAgICAgICAvLyAxLjIuMC1iZXRhLjEgYnVtcHMgdG8gMS4yLjAtYmV0YS4yLFxuICAgICAgICAgIC8vIDEuMi4wLWJldGEuZm9vYmx6IG9yIDEuMi4wLWJldGEgYnVtcHMgdG8gMS4yLjAtYmV0YS4wXG4gICAgICAgICAgbGV0IHByZXJlbGVhc2UgPSBbaWRlbnRpZmllciwgYmFzZV1cbiAgICAgICAgICBpZiAoaWRlbnRpZmllckJhc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwcmVyZWxlYXNlID0gW2lkZW50aWZpZXJdXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb21wYXJlSWRlbnRpZmllcnModGhpcy5wcmVyZWxlYXNlWzBdLCBpZGVudGlmaWVyKSA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKGlzTmFOKHRoaXMucHJlcmVsZWFzZVsxXSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcmVyZWxlYXNlID0gcHJlcmVsZWFzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXJlbGVhc2UgPSBwcmVyZWxlYXNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaW5jcmVtZW50IGFyZ3VtZW50OiAke3JlbGVhc2V9YClcbiAgICB9XG4gICAgdGhpcy5yYXcgPSB0aGlzLmZvcm1hdCgpXG4gICAgaWYgKHRoaXMuYnVpbGQubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJhdyArPSBgKyR7dGhpcy5idWlsZC5qb2luKCcuJyl9YFxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2VtVmVyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/classes/semver.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/clean.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/clean.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbGVhbi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMseURBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbGVhbi5qcz8zZGUxIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCBjbGVhbiA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHMgPSBwYXJzZSh2ZXJzaW9uLnRyaW0oKS5yZXBsYWNlKC9eWz12XSsvLCAnJyksIG9wdGlvbnMpXG4gIHJldHVybiBzID8gcy52ZXJzaW9uIDogbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSBjbGVhblxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/clean.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/cmp.js":
/*!**********************************************!*\
!*** ./node_modules/semver/functions/cmp.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const eq = __webpack_require__(/*! ./eq */ \"./node_modules/semver/functions/eq.js\")\nconst neq = __webpack_require__(/*! ./neq */ \"./node_modules/semver/functions/neq.js\")\nconst gt = __webpack_require__(/*! ./gt */ \"./node_modules/semver/functions/gt.js\")\nconst gte = __webpack_require__(/*! ./gte */ \"./node_modules/semver/functions/gte.js\")\nconst lt = __webpack_require__(/*! ./lt */ \"./node_modules/semver/functions/lt.js\")\nconst lte = __webpack_require__(/*! ./lte */ \"./node_modules/semver/functions/lte.js\")\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jbXAuanMiLCJtYXBwaW5ncyI6IkFBQUEsV0FBVyxtQkFBTyxDQUFDLG1EQUFNO0FBQ3pCLFlBQVksbUJBQU8sQ0FBQyxxREFBTztBQUMzQixXQUFXLG1CQUFPLENBQUMsbURBQU07QUFDekIsWUFBWSxtQkFBTyxDQUFDLHFEQUFPO0FBQzNCLFdBQVcsbUJBQU8sQ0FBQyxtREFBTTtBQUN6QixZQUFZLG1CQUFPLENBQUMscURBQU87O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsK0NBQStDLEdBQUc7QUFDbEQ7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NtcC5qcz83ODMwIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVxID0gcmVxdWlyZSgnLi9lcScpXG5jb25zdCBuZXEgPSByZXF1aXJlKCcuL25lcScpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4vZ3QnKVxuY29uc3QgZ3RlID0gcmVxdWlyZSgnLi9ndGUnKVxuY29uc3QgbHQgPSByZXF1aXJlKCcuL2x0JylcbmNvbnN0IGx0ZSA9IHJlcXVpcmUoJy4vbHRlJylcblxuY29uc3QgY21wID0gKGEsIG9wLCBiLCBsb29zZSkgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gICAgY2FzZSAnPT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgYSA9IGEudmVyc2lvblxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0Jykge1xuICAgICAgICBiID0gYi52ZXJzaW9uXG4gICAgICB9XG4gICAgICByZXR1cm4gYSA9PT0gYlxuXG4gICAgY2FzZSAnIT09JzpcbiAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgYSA9IGEudmVyc2lvblxuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBiID09PSAnb2JqZWN0Jykge1xuICAgICAgICBiID0gYi52ZXJzaW9uXG4gICAgICB9XG4gICAgICByZXR1cm4gYSAhPT0gYlxuXG4gICAgY2FzZSAnJzpcbiAgICBjYXNlICc9JzpcbiAgICBjYXNlICc9PSc6XG4gICAgICByZXR1cm4gZXEoYSwgYiwgbG9vc2UpXG5cbiAgICBjYXNlICchPSc6XG4gICAgICByZXR1cm4gbmVxKGEsIGIsIGxvb3NlKVxuXG4gICAgY2FzZSAnPic6XG4gICAgICByZXR1cm4gZ3QoYSwgYiwgbG9vc2UpXG5cbiAgICBjYXNlICc+PSc6XG4gICAgICByZXR1cm4gZ3RlKGEsIGIsIGxvb3NlKVxuXG4gICAgY2FzZSAnPCc6XG4gICAgICByZXR1cm4gbHQoYSwgYiwgbG9vc2UpXG5cbiAgICBjYXNlICc8PSc6XG4gICAgICByZXR1cm4gbHRlKGEsIGIsIGxvb3NlKVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgb3BlcmF0b3I6ICR7b3B9YClcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBjbXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/cmp.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/coerce.js":
/*!*************************************************!*\
!*** ./node_modules/semver/functions/coerce.js ***!
\*************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst { safeRe: re, t } = __webpack_require__(/*! ../internal/re */ \"./node_modules/semver/internal/re.js\")\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb2VyY2UuanMiLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLGtFQUFtQjtBQUMxQyxjQUFjLG1CQUFPLENBQUMseURBQVM7QUFDL0IsUUFBUSxnQkFBZ0IsRUFBRSxtQkFBTyxDQUFDLDREQUFnQjs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFLFNBQVM7QUFDMUUsNERBQTRELFNBQVM7O0FBRXJFLGtCQUFrQixNQUFNLEdBQUcsTUFBTSxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTTtBQUMvRDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvZXJjZS5qcz9hNmJiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCB7IHNhZmVSZTogcmUsIHQgfSA9IHJlcXVpcmUoJy4uL2ludGVybmFsL3JlJylcblxuY29uc3QgY29lcmNlID0gKHZlcnNpb24sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHZlcnNpb24gaW5zdGFuY2VvZiBTZW1WZXIpIHtcbiAgICByZXR1cm4gdmVyc2lvblxuICB9XG5cbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnbnVtYmVyJykge1xuICAgIHZlcnNpb24gPSBTdHJpbmcodmVyc2lvbilcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICBsZXQgbWF0Y2ggPSBudWxsXG4gIGlmICghb3B0aW9ucy5ydGwpIHtcbiAgICBtYXRjaCA9IHZlcnNpb24ubWF0Y2gob3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSA/IHJlW3QuQ09FUkNFRlVMTF0gOiByZVt0LkNPRVJDRV0pXG4gIH0gZWxzZSB7XG4gICAgLy8gRmluZCB0aGUgcmlnaHQtbW9zdCBjb2VyY2libGUgc3RyaW5nIHRoYXQgZG9lcyBub3Qgc2hhcmVcbiAgICAvLyBhIHRlcm1pbnVzIHdpdGggYSBtb3JlIGxlZnQtd2FyZCBjb2VyY2libGUgc3RyaW5nLlxuICAgIC8vIEVnLCAnMS4yLjMuNCcgd2FudHMgdG8gY29lcmNlICcyLjMuNCcsIG5vdCAnMy40JyBvciAnNCdcbiAgICAvLyBXaXRoIGluY2x1ZGVQcmVyZWxlYXNlIG9wdGlvbiBzZXQsICcxLjIuMy40LXJjJyB3YW50cyB0byBjb2VyY2UgJzIuMy40LXJjJywgbm90ICcyLjMuNCdcbiAgICAvL1xuICAgIC8vIFdhbGsgdGhyb3VnaCB0aGUgc3RyaW5nIGNoZWNraW5nIHdpdGggYSAvZyByZWdleHBcbiAgICAvLyBNYW51YWxseSBzZXQgdGhlIGluZGV4IHNvIGFzIHRvIHBpY2sgdXAgb3ZlcmxhcHBpbmcgbWF0Y2hlcy5cbiAgICAvLyBTdG9wIHdoZW4gd2UgZ2V0IGEgbWF0Y2ggdGhhdCBlbmRzIGF0IHRoZSBzdHJpbmcgZW5kLCBzaW5jZSBub1xuICAgIC8vIGNvZXJjaWJsZSBzdHJpbmcgY2FuIGJlIG1vcmUgcmlnaHQtd2FyZCB3aXRob3V0IHRoZSBzYW1lIHRlcm1pbnVzLlxuICAgIGNvbnN0IGNvZXJjZVJ0bFJlZ2V4ID0gb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSA/IHJlW3QuQ09FUkNFUlRMRlVMTF0gOiByZVt0LkNPRVJDRVJUTF1cbiAgICBsZXQgbmV4dFxuICAgIHdoaWxlICgobmV4dCA9IGNvZXJjZVJ0bFJlZ2V4LmV4ZWModmVyc2lvbikpICYmXG4gICAgICAgICghbWF0Y2ggfHwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGggIT09IHZlcnNpb24ubGVuZ3RoKVxuICAgICkge1xuICAgICAgaWYgKCFtYXRjaCB8fFxuICAgICAgICAgICAgbmV4dC5pbmRleCArIG5leHRbMF0ubGVuZ3RoICE9PSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCkge1xuICAgICAgICBtYXRjaCA9IG5leHRcbiAgICAgIH1cbiAgICAgIGNvZXJjZVJ0bFJlZ2V4Lmxhc3RJbmRleCA9IG5leHQuaW5kZXggKyBuZXh0WzFdLmxlbmd0aCArIG5leHRbMl0ubGVuZ3RoXG4gICAgfVxuICAgIC8vIGxlYXZlIGl0IGluIGEgY2xlYW4gc3RhdGVcbiAgICBjb2VyY2VSdGxSZWdleC5sYXN0SW5kZXggPSAtMVxuICB9XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IG1ham9yID0gbWF0Y2hbMl1cbiAgY29uc3QgbWlub3IgPSBtYXRjaFszXSB8fCAnMCdcbiAgY29uc3QgcGF0Y2ggPSBtYXRjaFs0XSB8fCAnMCdcbiAgY29uc3QgcHJlcmVsZWFzZSA9IG9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UgJiYgbWF0Y2hbNV0gPyBgLSR7bWF0Y2hbNV19YCA6ICcnXG4gIGNvbnN0IGJ1aWxkID0gb3B0aW9ucy5pbmNsdWRlUHJlcmVsZWFzZSAmJiBtYXRjaFs2XSA/IGArJHttYXRjaFs2XX1gIDogJydcblxuICByZXR1cm4gcGFyc2UoYCR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9JHtwcmVyZWxlYXNlfSR7YnVpbGR9YCwgb3B0aW9ucylcbn1cbm1vZHVsZS5leHBvcnRzID0gY29lcmNlXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/coerce.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/compare-build.js":
/*!********************************************************!*\
!*** ./node_modules/semver/functions/compare-build.js ***!
\********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLWJ1aWxkLmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxrRUFBbUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2NvbXBhcmUtYnVpbGQuanM/M2RjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBjb21wYXJlQnVpbGQgPSAoYSwgYiwgbG9vc2UpID0+IHtcbiAgY29uc3QgdmVyc2lvbkEgPSBuZXcgU2VtVmVyKGEsIGxvb3NlKVxuICBjb25zdCB2ZXJzaW9uQiA9IG5ldyBTZW1WZXIoYiwgbG9vc2UpXG4gIHJldHVybiB2ZXJzaW9uQS5jb21wYXJlKHZlcnNpb25CKSB8fCB2ZXJzaW9uQS5jb21wYXJlQnVpbGQodmVyc2lvbkIpXG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVCdWlsZFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/compare-build.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/compare-loose.js":
/*!********************************************************!*\
!*** ./node_modules/semver/functions/compare-loose.js ***!
\********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLWxvb3NlLmpzIiwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQixtQkFBTyxDQUFDLDZEQUFXO0FBQ25DO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvY29tcGFyZS1sb29zZS5qcz8zMTJlIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuL2NvbXBhcmUnKVxuY29uc3QgY29tcGFyZUxvb3NlID0gKGEsIGIpID0+IGNvbXBhcmUoYSwgYiwgdHJ1ZSlcbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUxvb3NlXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/compare-loose.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/compare.js":
/*!**************************************************!*\
!*** ./node_modules/semver/functions/compare.js ***!
\**************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxrRUFBbUI7QUFDMUM7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9jb21wYXJlLmpzPzJjNjQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgY29tcGFyZSA9IChhLCBiLCBsb29zZSkgPT5cbiAgbmV3IFNlbVZlcihhLCBsb29zZSkuY29tcGFyZShuZXcgU2VtVmVyKGIsIGxvb3NlKSlcblxubW9kdWxlLmV4cG9ydHMgPSBjb21wYXJlXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/compare.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/diff.js":
/*!***********************************************!*\
!*** ./node_modules/semver/functions/diff.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const parse = __webpack_require__(/*! ./parse.js */ \"./node_modules/semver/functions/parse.js\")\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9kaWZmLmpzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyw0REFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9kaWZmLmpzP2JlNDYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlLmpzJylcblxuY29uc3QgZGlmZiA9ICh2ZXJzaW9uMSwgdmVyc2lvbjIpID0+IHtcbiAgY29uc3QgdjEgPSBwYXJzZSh2ZXJzaW9uMSwgbnVsbCwgdHJ1ZSlcbiAgY29uc3QgdjIgPSBwYXJzZSh2ZXJzaW9uMiwgbnVsbCwgdHJ1ZSlcbiAgY29uc3QgY29tcGFyaXNvbiA9IHYxLmNvbXBhcmUodjIpXG5cbiAgaWYgKGNvbXBhcmlzb24gPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgdjFIaWdoZXIgPSBjb21wYXJpc29uID4gMFxuICBjb25zdCBoaWdoVmVyc2lvbiA9IHYxSGlnaGVyID8gdjEgOiB2MlxuICBjb25zdCBsb3dWZXJzaW9uID0gdjFIaWdoZXIgPyB2MiA6IHYxXG4gIGNvbnN0IGhpZ2hIYXNQcmUgPSAhIWhpZ2hWZXJzaW9uLnByZXJlbGVhc2UubGVuZ3RoXG4gIGNvbnN0IGxvd0hhc1ByZSA9ICEhbG93VmVyc2lvbi5wcmVyZWxlYXNlLmxlbmd0aFxuXG4gIGlmIChsb3dIYXNQcmUgJiYgIWhpZ2hIYXNQcmUpIHtcbiAgICAvLyBHb2luZyBmcm9tIHByZXJlbGVhc2UgLT4gbm8gcHJlcmVsZWFzZSByZXF1aXJlcyBzb21lIHNwZWNpYWwgY2FzaW5nXG5cbiAgICAvLyBJZiB0aGUgbG93IHZlcnNpb24gaGFzIG9ubHkgYSBtYWpvciwgdGhlbiBpdCB3aWxsIGFsd2F5cyBiZSBhIG1ham9yXG4gICAgLy8gU29tZSBleGFtcGxlczpcbiAgICAvLyAxLjAuMC0xIC0+IDEuMC4wXG4gICAgLy8gMS4wLjAtMSAtPiAxLjEuMVxuICAgIC8vIDEuMC4wLTEgLT4gMi4wLjBcbiAgICBpZiAoIWxvd1ZlcnNpb24ucGF0Y2ggJiYgIWxvd1ZlcnNpb24ubWlub3IpIHtcbiAgICAgIHJldHVybiAnbWFqb3InXG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIGl0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBoaWdoIHZlcnNpb25cblxuICAgIGlmIChoaWdoVmVyc2lvbi5wYXRjaCkge1xuICAgICAgLy8gYW55dGhpbmcgaGlnaGVyIHRoYW4gYSBwYXRjaCBidW1wIHdvdWxkIHJlc3VsdCBpbiB0aGUgd3JvbmcgdmVyc2lvblxuICAgICAgcmV0dXJuICdwYXRjaCdcbiAgICB9XG5cbiAgICBpZiAoaGlnaFZlcnNpb24ubWlub3IpIHtcbiAgICAgIC8vIGFueXRoaW5nIGhpZ2hlciB0aGFuIGEgbWlub3IgYnVtcCB3b3VsZCByZXN1bHQgaW4gdGhlIHdyb25nIHZlcnNpb25cbiAgICAgIHJldHVybiAnbWlub3InXG4gICAgfVxuXG4gICAgLy8gYnVtcGluZyBtYWpvci9taW5vci9wYXRjaCBhbGwgaGF2ZSBzYW1lIHJlc3VsdFxuICAgIHJldHVybiAnbWFqb3InXG4gIH1cblxuICAvLyBhZGQgdGhlIGBwcmVgIHByZWZpeCBpZiB3ZSBhcmUgZ29pbmcgdG8gYSBwcmVyZWxlYXNlIHZlcnNpb25cbiAgY29uc3QgcHJlZml4ID0gaGlnaEhhc1ByZSA/ICdwcmUnIDogJydcblxuICBpZiAodjEubWFqb3IgIT09IHYyLm1ham9yKSB7XG4gICAgcmV0dXJuIHByZWZpeCArICdtYWpvcidcbiAgfVxuXG4gIGlmICh2MS5taW5vciAhPT0gdjIubWlub3IpIHtcbiAgICByZXR1cm4gcHJlZml4ICsgJ21pbm9yJ1xuICB9XG5cbiAgaWYgKHYxLnBhdGNoICE9PSB2Mi5wYXRjaCkge1xuICAgIHJldHVybiBwcmVmaXggKyAncGF0Y2gnXG4gIH1cblxuICAvLyBoaWdoIGFuZCBsb3cgYXJlIHByZWxlYXNlc1xuICByZXR1cm4gJ3ByZXJlbGVhc2UnXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/diff.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/eq.js":
/*!*********************************************!*\
!*** ./node_modules/semver/functions/eq.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9lcS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2REFBVztBQUNuQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2VxLmpzPzQyZTIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBlcSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPT09IDBcbm1vZHVsZS5leHBvcnRzID0gZXFcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/eq.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/gt.js":
/*!*********************************************!*\
!*** ./node_modules/semver/functions/gt.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2REFBVztBQUNuQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2d0LmpzP2MyNDAiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBndCA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPiAwXG5tb2R1bGUuZXhwb3J0cyA9IGd0XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/gt.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/gte.js":
/*!**********************************************!*\
!*** ./node_modules/semver/functions/gte.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsNkRBQVc7QUFDbkM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9ndGUuanM/ZTE0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGd0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPj0gMFxubW9kdWxlLmV4cG9ydHMgPSBndGVcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/gte.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/inc.js":
/*!**********************************************!*\
!*** ./node_modules/semver/functions/inc.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9pbmMuanMiLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLGtFQUFtQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvaW5jLmpzPzMzNmIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuXG5jb25zdCBpbmMgPSAodmVyc2lvbiwgcmVsZWFzZSwgb3B0aW9ucywgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpID0+IHtcbiAgaWYgKHR5cGVvZiAob3B0aW9ucykgPT09ICdzdHJpbmcnKSB7XG4gICAgaWRlbnRpZmllckJhc2UgPSBpZGVudGlmaWVyXG4gICAgaWRlbnRpZmllciA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0gdW5kZWZpbmVkXG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKFxuICAgICAgdmVyc2lvbiBpbnN0YW5jZW9mIFNlbVZlciA/IHZlcnNpb24udmVyc2lvbiA6IHZlcnNpb24sXG4gICAgICBvcHRpb25zXG4gICAgKS5pbmMocmVsZWFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllckJhc2UpLnZlcnNpb25cbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluY1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/inc.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/lt.js":
/*!*********************************************!*\
!*** ./node_modules/semver/functions/lt.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2REFBVztBQUNuQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL2x0LmpzP2IwMzMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCBsdCA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPCAwXG5tb2R1bGUuZXhwb3J0cyA9IGx0XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/lt.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/lte.js":
/*!**********************************************!*\
!*** ./node_modules/semver/functions/lte.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsNkRBQVc7QUFDbkM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9sdGUuanM/ZjMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IGx0ZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgPD0gMFxubW9kdWxlLmV4cG9ydHMgPSBsdGVcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/lte.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/major.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/major.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9tYWpvci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWFqb3IuanM/ZDJkOSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBtYWpvciA9IChhLCBsb29zZSkgPT4gbmV3IFNlbVZlcihhLCBsb29zZSkubWFqb3Jcbm1vZHVsZS5leHBvcnRzID0gbWFqb3JcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/major.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/minor.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/minor.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9taW5vci5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvbWlub3IuanM/NDllYiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBtaW5vciA9IChhLCBsb29zZSkgPT4gbmV3IFNlbVZlcihhLCBsb29zZSkubWlub3Jcbm1vZHVsZS5leHBvcnRzID0gbWlub3JcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/minor.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/neq.js":
/*!**********************************************!*\
!*** ./node_modules/semver/functions/neq.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanMiLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsNkRBQVc7QUFDbkM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9uZXEuanM/ZGU2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi9jb21wYXJlJylcbmNvbnN0IG5lcSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShhLCBiLCBsb29zZSkgIT09IDBcbm1vZHVsZS5leHBvcnRzID0gbmVxXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/neq.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/parse.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/parse.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXJzZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcGFyc2UuanM/NGM5YyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBwYXJzZSA9ICh2ZXJzaW9uLCBvcHRpb25zLCB0aHJvd0Vycm9ycyA9IGZhbHNlKSA9PiB7XG4gIGlmICh2ZXJzaW9uIGluc3RhbmNlb2YgU2VtVmVyKSB7XG4gICAgcmV0dXJuIHZlcnNpb25cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBuZXcgU2VtVmVyKHZlcnNpb24sIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgaWYgKCF0aHJvd0Vycm9ycykge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgdGhyb3cgZXJcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/parse.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/patch.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/patch.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wYXRjaC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9mdW5jdGlvbnMvcGF0Y2guanM/NDY2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBwYXRjaCA9IChhLCBsb29zZSkgPT4gbmV3IFNlbVZlcihhLCBsb29zZSkucGF0Y2hcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/patch.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/prerelease.js":
/*!*****************************************************!*\
!*** ./node_modules/semver/functions/prerelease.js ***!
\*****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9wcmVyZWxlYXNlLmpzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyx5REFBUztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3ByZXJlbGVhc2UuanM/ZDE2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKVxuY29uc3QgcHJlcmVsZWFzZSA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlKHZlcnNpb24sIG9wdGlvbnMpXG4gIHJldHVybiAocGFyc2VkICYmIHBhcnNlZC5wcmVyZWxlYXNlLmxlbmd0aCkgPyBwYXJzZWQucHJlcmVsZWFzZSA6IG51bGxcbn1cbm1vZHVsZS5leHBvcnRzID0gcHJlcmVsZWFzZVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/prerelease.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/rcompare.js":
/*!***************************************************!*\
!*** ./node_modules/semver/functions/rcompare.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compare = __webpack_require__(/*! ./compare */ \"./node_modules/semver/functions/compare.js\")\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yY29tcGFyZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2REFBVztBQUNuQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3Jjb21wYXJlLmpzP2ZhZGUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vY29tcGFyZScpXG5jb25zdCByY29tcGFyZSA9IChhLCBiLCBsb29zZSkgPT4gY29tcGFyZShiLCBhLCBsb29zZSlcbm1vZHVsZS5leHBvcnRzID0gcmNvbXBhcmVcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/rcompare.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/rsort.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/rsort.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compareBuild = __webpack_require__(/*! ./compare-build */ \"./node_modules/semver/functions/compare-build.js\")\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yc29ydC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUIsbUJBQU8sQ0FBQyx5RUFBaUI7QUFDOUM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9yc29ydC5qcz9hZGQ5Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNvbXBhcmVCdWlsZCA9IHJlcXVpcmUoJy4vY29tcGFyZS1idWlsZCcpXG5jb25zdCByc29ydCA9IChsaXN0LCBsb29zZSkgPT4gbGlzdC5zb3J0KChhLCBiKSA9PiBjb21wYXJlQnVpbGQoYiwgYSwgbG9vc2UpKVxubW9kdWxlLmV4cG9ydHMgPSByc29ydFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/rsort.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/satisfies.js":
/*!****************************************************!*\
!*** ./node_modules/semver/functions/satisfies.js ***!
\****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanMiLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLGdFQUFrQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zYXRpc2ZpZXMuanM/N2I0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3Qgc2F0aXNmaWVzID0gKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIHRyeSB7XG4gICAgcmFuZ2UgPSBuZXcgUmFuZ2UocmFuZ2UsIG9wdGlvbnMpXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHJhbmdlLnRlc3QodmVyc2lvbilcbn1cbm1vZHVsZS5leHBvcnRzID0gc2F0aXNmaWVzXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/satisfies.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/sort.js":
/*!***********************************************!*\
!*** ./node_modules/semver/functions/sort.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const compareBuild = __webpack_require__(/*! ./compare-build */ \"./node_modules/semver/functions/compare-build.js\")\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy9zb3J0LmpzIiwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQixtQkFBTyxDQUFDLHlFQUFpQjtBQUM5QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvZnVuY3Rpb25zL3NvcnQuanM/Yjc3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb21wYXJlQnVpbGQgPSByZXF1aXJlKCcuL2NvbXBhcmUtYnVpbGQnKVxuY29uc3Qgc29ydCA9IChsaXN0LCBsb29zZSkgPT4gbGlzdC5zb3J0KChhLCBiKSA9PiBjb21wYXJlQnVpbGQoYSwgYiwgbG9vc2UpKVxubW9kdWxlLmV4cG9ydHMgPSBzb3J0XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/sort.js\n"));
/***/ }),
/***/ "./node_modules/semver/functions/valid.js":
/*!************************************************!*\
!*** ./node_modules/semver/functions/valid.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const parse = __webpack_require__(/*! ./parse */ \"./node_modules/semver/functions/parse.js\")\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy92YWxpZC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMseURBQVM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2Z1bmN0aW9ucy92YWxpZC5qcz8yYTg5Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG5jb25zdCB2YWxpZCA9ICh2ZXJzaW9uLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHYgPSBwYXJzZSh2ZXJzaW9uLCBvcHRpb25zKVxuICByZXR1cm4gdiA/IHYudmVyc2lvbiA6IG51bGxcbn1cbm1vZHVsZS5leHBvcnRzID0gdmFsaWRcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/functions/valid.js\n"));
/***/ }),
/***/ "./node_modules/semver/index.js":
/*!**************************************!*\
!*** ./node_modules/semver/index.js ***!
\**************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// just pre-load all the stuff that index.js lazily exports\nconst internalRe = __webpack_require__(/*! ./internal/re */ \"./node_modules/semver/internal/re.js\")\nconst constants = __webpack_require__(/*! ./internal/constants */ \"./node_modules/semver/internal/constants.js\")\nconst SemVer = __webpack_require__(/*! ./classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst identifiers = __webpack_require__(/*! ./internal/identifiers */ \"./node_modules/semver/internal/identifiers.js\")\nconst parse = __webpack_require__(/*! ./functions/parse */ \"./node_modules/semver/functions/parse.js\")\nconst valid = __webpack_require__(/*! ./functions/valid */ \"./node_modules/semver/functions/valid.js\")\nconst clean = __webpack_require__(/*! ./functions/clean */ \"./node_modules/semver/functions/clean.js\")\nconst inc = __webpack_require__(/*! ./functions/inc */ \"./node_modules/semver/functions/inc.js\")\nconst diff = __webpack_require__(/*! ./functions/diff */ \"./node_modules/semver/functions/diff.js\")\nconst major = __webpack_require__(/*! ./functions/major */ \"./node_modules/semver/functions/major.js\")\nconst minor = __webpack_require__(/*! ./functions/minor */ \"./node_modules/semver/functions/minor.js\")\nconst patch = __webpack_require__(/*! ./functions/patch */ \"./node_modules/semver/functions/patch.js\")\nconst prerelease = __webpack_require__(/*! ./functions/prerelease */ \"./node_modules/semver/functions/prerelease.js\")\nconst compare = __webpack_require__(/*! ./functions/compare */ \"./node_modules/semver/functions/compare.js\")\nconst rcompare = __webpack_require__(/*! ./functions/rcompare */ \"./node_modules/semver/functions/rcompare.js\")\nconst compareLoose = __webpack_require__(/*! ./functions/compare-loose */ \"./node_modules/semver/functions/compare-loose.js\")\nconst compareBuild = __webpack_require__(/*! ./functions/compare-build */ \"./node_modules/semver/functions/compare-build.js\")\nconst sort = __webpack_require__(/*! ./functions/sort */ \"./node_modules/semver/functions/sort.js\")\nconst rsort = __webpack_require__(/*! ./functions/rsort */ \"./node_modules/semver/functions/rsort.js\")\nconst gt = __webpack_require__(/*! ./functions/gt */ \"./node_modules/semver/functions/gt.js\")\nconst lt = __webpack_require__(/*! ./functions/lt */ \"./node_modules/semver/functions/lt.js\")\nconst eq = __webpack_require__(/*! ./functions/eq */ \"./node_modules/semver/functions/eq.js\")\nconst neq = __webpack_require__(/*! ./functions/neq */ \"./node_modules/semver/functions/neq.js\")\nconst gte = __webpack_require__(/*! ./functions/gte */ \"./node_modules/semver/functions/gte.js\")\nconst lte = __webpack_require__(/*! ./functions/lte */ \"./node_modules/semver/functions/lte.js\")\nconst cmp = __webpack_require__(/*! ./functions/cmp */ \"./node_modules/semver/functions/cmp.js\")\nconst coerce = __webpack_require__(/*! ./functions/coerce */ \"./node_modules/semver/functions/coerce.js\")\nconst Comparator = __webpack_require__(/*! ./classes/comparator */ \"./node_modules/semver/classes/comparator.js\")\nconst Range = __webpack_require__(/*! ./classes/range */ \"./node_modules/semver/classes/range.js\")\nconst satisfies = __webpack_require__(/*! ./functions/satisfies */ \"./node_modules/semver/functions/satisfies.js\")\nconst toComparators = __webpack_require__(/*! ./ranges/to-comparators */ \"./node_modules/semver/ranges/to-comparators.js\")\nconst maxSatisfying = __webpack_require__(/*! ./ranges/max-satisfying */ \"./node_modules/semver/ranges/max-satisfying.js\")\nconst minSatisfying = __webpack_require__(/*! ./ranges/min-satisfying */ \"./node_modules/semver/ranges/min-satisfying.js\")\nconst minVersion = __webpack_require__(/*! ./ranges/min-version */ \"./node_modules/semver/ranges/min-version.js\")\nconst validRange = __webpack_require__(/*! ./ranges/valid */ \"./node_modules/semver/ranges/valid.js\")\nconst outside = __webpack_require__(/*! ./ranges/outside */ \"./node_modules/semver/ranges/outside.js\")\nconst gtr = __webpack_require__(/*! ./ranges/gtr */ \"./node_modules/semver/ranges/gtr.js\")\nconst ltr = __webpack_require__(/*! ./ranges/ltr */ \"./node_modules/semver/ranges/ltr.js\")\nconst intersects = __webpack_require__(/*! ./ranges/intersects */ \"./node_modules/semver/ranges/intersects.js\")\nconst simplifyRange = __webpack_require__(/*! ./ranges/simplify */ \"./node_modules/semver/ranges/simplify.js\")\nconst subset = __webpack_require__(/*! ./ranges/subset */ \"./node_modules/semver/ranges/subset.js\")\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsMkRBQWU7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMseUVBQXNCO0FBQ2hELGVBQWUsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDekMsb0JBQW9CLG1CQUFPLENBQUMsNkVBQXdCO0FBQ3BELGNBQWMsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1FQUFtQjtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbUVBQW1CO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQywrREFBaUI7QUFDckMsYUFBYSxtQkFBTyxDQUFDLGlFQUFrQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMsbUVBQW1CO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1FQUFtQjtBQUN6QyxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBd0I7QUFDbkQsZ0JBQWdCLG1CQUFPLENBQUMsdUVBQXFCO0FBQzdDLGlCQUFpQixtQkFBTyxDQUFDLHlFQUFzQjtBQUMvQyxxQkFBcUIsbUJBQU8sQ0FBQyxtRkFBMkI7QUFDeEQscUJBQXFCLG1CQUFPLENBQUMsbUZBQTJCO0FBQ3hELGFBQWEsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLG1FQUFtQjtBQUN6QyxXQUFXLG1CQUFPLENBQUMsNkRBQWdCO0FBQ25DLFdBQVcsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLDZEQUFnQjtBQUNuQyxZQUFZLG1CQUFPLENBQUMsK0RBQWlCO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQywrREFBaUI7QUFDckMsWUFBWSxtQkFBTyxDQUFDLCtEQUFpQjtBQUNyQyxZQUFZLG1CQUFPLENBQUMsK0RBQWlCO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDM0MsbUJBQW1CLG1CQUFPLENBQUMseUVBQXNCO0FBQ2pELGNBQWMsbUJBQU8sQ0FBQywrREFBaUI7QUFDdkMsa0JBQWtCLG1CQUFPLENBQUMsMkVBQXVCO0FBQ2pELHNCQUFzQixtQkFBTyxDQUFDLCtFQUF5QjtBQUN2RCxzQkFBc0IsbUJBQU8sQ0FBQywrRUFBeUI7QUFDdkQsc0JBQXNCLG1CQUFPLENBQUMsK0VBQXlCO0FBQ3ZELG1CQUFtQixtQkFBTyxDQUFDLHlFQUFzQjtBQUNqRCxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDM0MsZ0JBQWdCLG1CQUFPLENBQUMsaUVBQWtCO0FBQzFDLFlBQVksbUJBQU8sQ0FBQyx5REFBYztBQUNsQyxZQUFZLG1CQUFPLENBQUMseURBQWM7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsdUVBQXFCO0FBQ2hELHNCQUFzQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNqRCxlQUFlLG1CQUFPLENBQUMsK0RBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9pbmRleC5qcz8xMmI2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGp1c3QgcHJlLWxvYWQgYWxsIHRoZSBzdHVmZiB0aGF0IGluZGV4LmpzIGxhemlseSBleHBvcnRzXG5jb25zdCBpbnRlcm5hbFJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9yZScpXG5jb25zdCBjb25zdGFudHMgPSByZXF1aXJlKCcuL2ludGVybmFsL2NvbnN0YW50cycpXG5jb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IGlkZW50aWZpZXJzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9pZGVudGlmaWVycycpXG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3BhcnNlJylcbmNvbnN0IHZhbGlkID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvdmFsaWQnKVxuY29uc3QgY2xlYW4gPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jbGVhbicpXG5jb25zdCBpbmMgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9pbmMnKVxuY29uc3QgZGlmZiA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2RpZmYnKVxuY29uc3QgbWFqb3IgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9tYWpvcicpXG5jb25zdCBtaW5vciA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL21pbm9yJylcbmNvbnN0IHBhdGNoID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvcGF0Y2gnKVxuY29uc3QgcHJlcmVsZWFzZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3ByZXJlbGVhc2UnKVxuY29uc3QgY29tcGFyZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NvbXBhcmUnKVxuY29uc3QgcmNvbXBhcmUgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9yY29tcGFyZScpXG5jb25zdCBjb21wYXJlTG9vc2UgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jb21wYXJlLWxvb3NlJylcbmNvbnN0IGNvbXBhcmVCdWlsZCA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2NvbXBhcmUtYnVpbGQnKVxuY29uc3Qgc29ydCA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL3NvcnQnKVxuY29uc3QgcnNvcnQgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9yc29ydCcpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2d0JylcbmNvbnN0IGx0ID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvbHQnKVxuY29uc3QgZXEgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9lcScpXG5jb25zdCBuZXEgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9uZXEnKVxuY29uc3QgZ3RlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvZ3RlJylcbmNvbnN0IGx0ZSA9IHJlcXVpcmUoJy4vZnVuY3Rpb25zL2x0ZScpXG5jb25zdCBjbXAgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9jbXAnKVxuY29uc3QgY29lcmNlID0gcmVxdWlyZSgnLi9mdW5jdGlvbnMvY29lcmNlJylcbmNvbnN0IENvbXBhcmF0b3IgPSByZXF1aXJlKCcuL2NsYXNzZXMvY29tcGFyYXRvcicpXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBzYXRpc2ZpZXMgPSByZXF1aXJlKCcuL2Z1bmN0aW9ucy9zYXRpc2ZpZXMnKVxuY29uc3QgdG9Db21wYXJhdG9ycyA9IHJlcXVpcmUoJy4vcmFuZ2VzL3RvLWNvbXBhcmF0b3JzJylcbmNvbnN0IG1heFNhdGlzZnlpbmcgPSByZXF1aXJlKCcuL3Jhbmdlcy9tYXgtc2F0aXNmeWluZycpXG5jb25zdCBtaW5TYXRpc2Z5aW5nID0gcmVxdWlyZSgnLi9yYW5nZXMvbWluLXNhdGlzZnlpbmcnKVxuY29uc3QgbWluVmVyc2lvbiA9IHJlcXVpcmUoJy4vcmFuZ2VzL21pbi12ZXJzaW9uJylcbmNvbnN0IHZhbGlkUmFuZ2UgPSByZXF1aXJlKCcuL3Jhbmdlcy92YWxpZCcpXG5jb25zdCBvdXRzaWRlID0gcmVxdWlyZSgnLi9yYW5nZXMvb3V0c2lkZScpXG5jb25zdCBndHIgPSByZXF1aXJlKCcuL3Jhbmdlcy9ndHInKVxuY29uc3QgbHRyID0gcmVxdWlyZSgnLi9yYW5nZXMvbHRyJylcbmNvbnN0IGludGVyc2VjdHMgPSByZXF1aXJlKCcuL3Jhbmdlcy9pbnRlcnNlY3RzJylcbmNvbnN0IHNpbXBsaWZ5UmFuZ2UgPSByZXF1aXJlKCcuL3Jhbmdlcy9zaW1wbGlmeScpXG5jb25zdCBzdWJzZXQgPSByZXF1aXJlKCcuL3Jhbmdlcy9zdWJzZXQnKVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHBhcnNlLFxuICB2YWxpZCxcbiAgY2xlYW4sXG4gIGluYyxcbiAgZGlmZixcbiAgbWFqb3IsXG4gIG1pbm9yLFxuICBwYXRjaCxcbiAgcHJlcmVsZWFzZSxcbiAgY29tcGFyZSxcbiAgcmNvbXBhcmUsXG4gIGNvbXBhcmVMb29zZSxcbiAgY29tcGFyZUJ1aWxkLFxuICBzb3J0LFxuICByc29ydCxcbiAgZ3QsXG4gIGx0LFxuICBlcSxcbiAgbmVxLFxuICBndGUsXG4gIGx0ZSxcbiAgY21wLFxuICBjb2VyY2UsXG4gIENvbXBhcmF0b3IsXG4gIFJhbmdlLFxuICBzYXRpc2ZpZXMsXG4gIHRvQ29tcGFyYXRvcnMsXG4gIG1heFNhdGlzZnlpbmcsXG4gIG1pblNhdGlzZnlpbmcsXG4gIG1pblZlcnNpb24sXG4gIHZhbGlkUmFuZ2UsXG4gIG91dHNpZGUsXG4gIGd0cixcbiAgbHRyLFxuICBpbnRlcnNlY3RzLFxuICBzaW1wbGlmeVJhbmdlLFxuICBzdWJzZXQsXG4gIFNlbVZlcixcbiAgcmU6IGludGVybmFsUmUucmUsXG4gIHNyYzogaW50ZXJuYWxSZS5zcmMsXG4gIHRva2VuczogaW50ZXJuYWxSZS50LFxuICBTRU1WRVJfU1BFQ19WRVJTSU9OOiBjb25zdGFudHMuU0VNVkVSX1NQRUNfVkVSU0lPTixcbiAgUkVMRUFTRV9UWVBFUzogY29uc3RhbnRzLlJFTEVBU0VfVFlQRVMsXG4gIGNvbXBhcmVJZGVudGlmaWVyczogaWRlbnRpZmllcnMuY29tcGFyZUlkZW50aWZpZXJzLFxuICByY29tcGFyZUlkZW50aWZpZXJzOiBpZGVudGlmaWVycy5yY29tcGFyZUlkZW50aWZpZXJzLFxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/index.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/constants.js":
/*!***************************************************!*\
!*** ./node_modules/semver/internal/constants.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2NvbnN0YW50cy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2NvbnN0YW50cy5qcz85ZDMwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIE5vdGU6IHRoaXMgaXMgdGhlIHNlbXZlci5vcmcgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGF0IGl0IGltcGxlbWVudHNcbi8vIE5vdCBuZWNlc3NhcmlseSB0aGUgcGFja2FnZSB2ZXJzaW9uIG9mIHRoaXMgY29kZS5cbmNvbnN0IFNFTVZFUl9TUEVDX1ZFUlNJT04gPSAnMi4wLjAnXG5cbmNvbnN0IE1BWF9MRU5HVEggPSAyNTZcbmNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fFxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gOTAwNzE5OTI1NDc0MDk5MVxuXG4vLyBNYXggc2FmZSBzZWdtZW50IGxlbmd0aCBmb3IgY29lcmNpb24uXG5jb25zdCBNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RIID0gMTZcblxuLy8gTWF4IHNhZmUgbGVuZ3RoIGZvciBhIGJ1aWxkIGlkZW50aWZpZXIuIFRoZSBtYXggbGVuZ3RoIG1pbnVzIDYgY2hhcmFjdGVycyBmb3Jcbi8vIHRoZSBzaG9ydGVzdCB2ZXJzaW9uIHdpdGggYSBidWlsZCAwLjAuMCtCVUlMRC5cbmNvbnN0IE1BWF9TQUZFX0JVSUxEX0xFTkdUSCA9IE1BWF9MRU5HVEggLSA2XG5cbmNvbnN0IFJFTEVBU0VfVFlQRVMgPSBbXG4gICdtYWpvcicsXG4gICdwcmVtYWpvcicsXG4gICdtaW5vcicsXG4gICdwcmVtaW5vcicsXG4gICdwYXRjaCcsXG4gICdwcmVwYXRjaCcsXG4gICdwcmVyZWxlYXNlJyxcbl1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE1BWF9MRU5HVEgsXG4gIE1BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEgsXG4gIE1BWF9TQUZFX0JVSUxEX0xFTkdUSCxcbiAgTUFYX1NBRkVfSU5URUdFUixcbiAgUkVMRUFTRV9UWVBFUyxcbiAgU0VNVkVSX1NQRUNfVkVSU0lPTixcbiAgRkxBR19JTkNMVURFX1BSRVJFTEVBU0U6IDBiMDAxLFxuICBGTEFHX0xPT1NFOiAwYjAxMCxcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/constants.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/debug.js":
/*!***********************************************!*\
!*** ./node_modules/semver/internal/debug.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2RlYnVnLmpzIiwibWFwcGluZ3MiOiI7QUFBQTtBQUNBLFNBQVMsT0FBTztBQUNoQixFQUFFLE9BQU87QUFDVCxFQUFFLE9BQU87QUFDVCxxQkFBcUIsT0FBTztBQUM1QjtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvaW50ZXJuYWwvZGVidWcuanM/MzI4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWJ1ZyA9IChcbiAgdHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gIHByb2Nlc3MuZW52ICYmXG4gIHByb2Nlc3MuZW52Lk5PREVfREVCVUcgJiZcbiAgL1xcYnNlbXZlclxcYi9pLnRlc3QocHJvY2Vzcy5lbnYuTk9ERV9ERUJVRylcbikgPyAoLi4uYXJncykgPT4gY29uc29sZS5lcnJvcignU0VNVkVSJywgLi4uYXJncylcbiAgOiAoKSA9PiB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYnVnXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/debug.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/identifiers.js":
/*!*****************************************************!*\
!*** ./node_modules/semver/internal/identifiers.js ***!
\*****************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2lkZW50aWZpZXJzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2lkZW50aWZpZXJzLmpzP2YxYTgiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbnVtZXJpYyA9IC9eWzAtOV0rJC9cbmNvbnN0IGNvbXBhcmVJZGVudGlmaWVycyA9IChhLCBiKSA9PiB7XG4gIGNvbnN0IGFudW0gPSBudW1lcmljLnRlc3QoYSlcbiAgY29uc3QgYm51bSA9IG51bWVyaWMudGVzdChiKVxuXG4gIGlmIChhbnVtICYmIGJudW0pIHtcbiAgICBhID0gK2FcbiAgICBiID0gK2JcbiAgfVxuXG4gIHJldHVybiBhID09PSBiID8gMFxuICAgIDogKGFudW0gJiYgIWJudW0pID8gLTFcbiAgICA6IChibnVtICYmICFhbnVtKSA/IDFcbiAgICA6IGEgPCBiID8gLTFcbiAgICA6IDFcbn1cblxuY29uc3QgcmNvbXBhcmVJZGVudGlmaWVycyA9IChhLCBiKSA9PiBjb21wYXJlSWRlbnRpZmllcnMoYiwgYSlcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvbXBhcmVJZGVudGlmaWVycyxcbiAgcmNvbXBhcmVJZGVudGlmaWVycyxcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/identifiers.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/lrucache.js":
/*!**************************************************!*\
!*** ./node_modules/semver/internal/lrucache.js ***!
\**************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2xydWNhY2hlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL2xydWNhY2hlLmpzP2MxNTIiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgTFJVQ2FjaGUge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5tYXggPSAxMDAwXG4gICAgdGhpcy5tYXAgPSBuZXcgTWFwKClcbiAgfVxuXG4gIGdldCAoa2V5KSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm1hcC5nZXQoa2V5KVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUga2V5IGZyb20gdGhlIG1hcCBhbmQgYWRkIGl0IHRvIHRoZSBlbmRcbiAgICAgIHRoaXMubWFwLmRlbGV0ZShrZXkpXG4gICAgICB0aGlzLm1hcC5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZSAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmRlbGV0ZShrZXkpXG4gIH1cblxuICBzZXQgKGtleSwgdmFsdWUpIHtcbiAgICBjb25zdCBkZWxldGVkID0gdGhpcy5kZWxldGUoa2V5KVxuXG4gICAgaWYgKCFkZWxldGVkICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIElmIGNhY2hlIGlzIGZ1bGwsIGRlbGV0ZSB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBpdGVtXG4gICAgICBpZiAodGhpcy5tYXAuc2l6ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMubWFwLmtleXMoKS5uZXh0KCkudmFsdWVcbiAgICAgICAgdGhpcy5kZWxldGUoZmlyc3RLZXkpXG4gICAgICB9XG5cbiAgICAgIHRoaXMubWFwLnNldChrZXksIHZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBMUlVDYWNoZVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/lrucache.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/parse-options.js":
/*!*******************************************************!*\
!*** ./node_modules/semver/internal/parse-options.js ***!
\*******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxvQ0FBb0MsYUFBYTtBQUNqRCxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3BhcnNlLW9wdGlvbnMuanM/Y2QxYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYXJzZSBvdXQganVzdCB0aGUgb3B0aW9ucyB3ZSBjYXJlIGFib3V0XG5jb25zdCBsb29zZU9wdGlvbiA9IE9iamVjdC5mcmVlemUoeyBsb29zZTogdHJ1ZSB9KVxuY29uc3QgZW1wdHlPcHRzID0gT2JqZWN0LmZyZWV6ZSh7IH0pXG5jb25zdCBwYXJzZU9wdGlvbnMgPSBvcHRpb25zID0+IHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgcmV0dXJuIGVtcHR5T3B0c1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBsb29zZU9wdGlvblxuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnNcbn1cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VPcHRpb25zXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/parse-options.js\n"));
/***/ }),
/***/ "./node_modules/semver/internal/re.js":
/*!********************************************!*\
!*** ./node_modules/semver/internal/re.js ***!
\********************************************/
/***/ (function(module, exports, __webpack_require__) {
eval(__webpack_require__.ts("const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = __webpack_require__(/*! ./constants */ \"./node_modules/semver/internal/constants.js\")\nconst debug = __webpack_require__(/*! ./debug */ \"./node_modules/semver/internal/debug.js\")\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3JlLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxFQUFFLG1CQUFPLENBQUMsZ0VBQWE7QUFDekIsY0FBYyxtQkFBTyxDQUFDLHdEQUFTO0FBQy9COztBQUVBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCLGVBQWUsY0FBYztBQUM3QixZQUFZLFdBQVc7QUFDdkIsVUFBVSxTQUFTO0FBQ25COztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE1BQU0sWUFBWSxPQUFPLElBQUksS0FBSztBQUNsRCxnQkFBZ0IsTUFBTSxZQUFZLE9BQU8sSUFBSSxLQUFLO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9EQUFvRCxpQkFBaUI7O0FBRXJFO0FBQ0E7O0FBRUEsK0JBQStCLHlCQUF5QjtBQUN4RCx1QkFBdUIseUJBQXlCO0FBQ2hELHVCQUF1Qix5QkFBeUI7O0FBRWhELG9DQUFvQyw4QkFBOEI7QUFDbEUsNEJBQTRCLDhCQUE4QjtBQUMxRCw0QkFBNEIsOEJBQThCOztBQUUxRDtBQUNBOztBQUVBLDBDQUEwQztBQUMxQyxDQUFDLEdBQUcsNEJBQTRCOztBQUVoQywrQ0FBK0M7QUFDL0MsQ0FBQyxHQUFHLDRCQUE0Qjs7QUFFaEM7QUFDQTtBQUNBOztBQUVBLGtDQUFrQztBQUNsQyxDQUFDLFFBQVEsNEJBQTRCOztBQUVyQyx3Q0FBd0M7QUFDeEMsQ0FBQyxRQUFRLGlDQUFpQzs7QUFFMUM7QUFDQTs7QUFFQSxrQ0FBa0MsaUJBQWlCOztBQUVuRDtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCO0FBQy9CLENBQUMsUUFBUSx1QkFBdUI7O0FBRWhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEI7QUFDOUIsQ0FBQyxFQUFFLGtCQUFrQjtBQUNyQixlQUFlOztBQUVmLHdCQUF3QixpQkFBaUI7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyxDQUFDLEVBQUUsdUJBQXVCO0FBQzFCLGVBQWU7O0FBRWYseUJBQXlCLGtCQUFrQjs7QUFFM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDhCQUE4QjtBQUN0RSxtQ0FBbUMseUJBQXlCOztBQUU1RCx1Q0FBdUMsd0JBQXdCO0FBQy9ELDZCQUE2Qix3QkFBd0I7QUFDckQsNkJBQTZCLHdCQUF3QjtBQUNyRCx5QkFBeUIsa0JBQWtCO0FBQzNDLGtDQUFrQztBQUNsQzs7QUFFQSw0Q0FBNEMsNkJBQTZCO0FBQ3pFLGtDQUFrQyw2QkFBNkI7QUFDL0Qsa0NBQWtDLDZCQUE2QjtBQUMvRCw4QkFBOEIsdUJBQXVCO0FBQ3JELHVDQUF1QztBQUN2Qzs7QUFFQSwwQkFBMEIsWUFBWSxNQUFNLG1CQUFtQjtBQUMvRCwrQkFBK0IsWUFBWSxNQUFNLHdCQUF3Qjs7QUFFekU7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixvQkFBb0IsSUFBSSxFQUFFLDJCQUEyQjtBQUNyRCwwQkFBMEIsSUFBSSwyQkFBMkI7QUFDekQsMEJBQTBCLElBQUksMkJBQTJCO0FBQ3pELHlCQUF5QixtQkFBbUI7QUFDNUM7QUFDQSxvQkFBb0Isa0JBQWtCO0FBQ3RDLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0NBQWtDLGlCQUFpQjtBQUNuRCx3QkFBd0I7O0FBRXhCLHlCQUF5QixpQkFBaUIsRUFBRSxtQkFBbUI7QUFDL0QsOEJBQThCLGlCQUFpQixFQUFFLHdCQUF3Qjs7QUFFekU7QUFDQTtBQUNBOztBQUVBLGtDQUFrQyxpQkFBaUI7QUFDbkQsd0JBQXdCOztBQUV4Qix5QkFBeUIsaUJBQWlCLEVBQUUsbUJBQW1CO0FBQy9ELDhCQUE4QixpQkFBaUIsRUFBRSx3QkFBd0I7O0FBRXpFO0FBQ0EsbUNBQW1DLFlBQVksT0FBTyxrQkFBa0I7QUFDeEUsOEJBQThCLFlBQVksT0FBTyxpQkFBaUI7O0FBRWxFO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkMsQ0FBQyxPQUFPLGtCQUFrQixHQUFHLG1CQUFtQjtBQUNoRCw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLG1CQUFtQjtBQUN2RDtBQUNBLHVCQUF1QixtQkFBbUI7QUFDMUM7O0FBRUEseUNBQXlDLHdCQUF3QjtBQUNqRTtBQUNBLDRCQUE0Qix3QkFBd0I7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL2ludGVybmFsL3JlLmpzPzgyYzQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge1xuICBNQVhfU0FGRV9DT01QT05FTlRfTEVOR1RILFxuICBNQVhfU0FGRV9CVUlMRF9MRU5HVEgsXG4gIE1BWF9MRU5HVEgsXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCcuL2RlYnVnJylcbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHt9XG5cbi8vIFRoZSBhY3R1YWwgcmVnZXhwcyBnbyBvbiBleHBvcnRzLnJlXG5jb25zdCByZSA9IGV4cG9ydHMucmUgPSBbXVxuY29uc3Qgc2FmZVJlID0gZXhwb3J0cy5zYWZlUmUgPSBbXVxuY29uc3Qgc3JjID0gZXhwb3J0cy5zcmMgPSBbXVxuY29uc3QgdCA9IGV4cG9ydHMudCA9IHt9XG5sZXQgUiA9IDBcblxuY29uc3QgTEVUVEVSREFTSE5VTUJFUiA9ICdbYS16QS1aMC05LV0nXG5cbi8vIFJlcGxhY2Ugc29tZSBncmVlZHkgcmVnZXggdG9rZW5zIHRvIHByZXZlbnQgcmVnZXggZG9zIGlzc3Vlcy4gVGhlc2UgcmVnZXggYXJlXG4vLyB1c2VkIGludGVybmFsbHkgdmlhIHRoZSBzYWZlUmUgb2JqZWN0IHNpbmNlIGFsbCBpbnB1dHMgaW4gdGhpcyBsaWJyYXJ5IGdldFxuLy8gbm9ybWFsaXplZCBmaXJzdCB0byB0cmltIGFuZCBjb2xsYXBzZSBhbGwgZXh0cmEgd2hpdGVzcGFjZS4gVGhlIG9yaWdpbmFsXG4vLyByZWdleGVzIGFyZSBleHBvcnRlZCBmb3IgdXNlcmxhbmQgY29uc3VtcHRpb24gYW5kIGxvd2VyIGxldmVsIHVzYWdlLiBBXG4vLyBmdXR1cmUgYnJlYWtpbmcgY2hhbmdlIGNvdWxkIGV4cG9ydCB0aGUgc2FmZXIgcmVnZXggb25seSB3aXRoIGEgbm90ZSB0aGF0XG4vLyBhbGwgaW5wdXQgc2hvdWxkIGhhdmUgZXh0cmEgd2hpdGVzcGFjZSByZW1vdmVkLlxuY29uc3Qgc2FmZVJlZ2V4UmVwbGFjZW1lbnRzID0gW1xuICBbJ1xcXFxzJywgMV0sXG4gIFsnXFxcXGQnLCBNQVhfTEVOR1RIXSxcbiAgW0xFVFRFUkRBU0hOVU1CRVIsIE1BWF9TQUZFX0JVSUxEX0xFTkdUSF0sXG5dXG5cbmNvbnN0IG1ha2VTYWZlUmVnZXggPSAodmFsdWUpID0+IHtcbiAgZm9yIChjb25zdCBbdG9rZW4sIG1heF0gb2Ygc2FmZVJlZ2V4UmVwbGFjZW1lbnRzKSB7XG4gICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgLnNwbGl0KGAke3Rva2VufSpgKS5qb2luKGAke3Rva2VufXswLCR7bWF4fX1gKVxuICAgICAgLnNwbGl0KGAke3Rva2VufStgKS5qb2luKGAke3Rva2VufXsxLCR7bWF4fX1gKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG5jb25zdCBjcmVhdGVUb2tlbiA9IChuYW1lLCB2YWx1ZSwgaXNHbG9iYWwpID0+IHtcbiAgY29uc3Qgc2FmZSA9IG1ha2VTYWZlUmVnZXgodmFsdWUpXG4gIGNvbnN0IGluZGV4ID0gUisrXG4gIGRlYnVnKG5hbWUsIGluZGV4LCB2YWx1ZSlcbiAgdFtuYW1lXSA9IGluZGV4XG4gIHNyY1tpbmRleF0gPSB2YWx1ZVxuICByZVtpbmRleF0gPSBuZXcgUmVnRXhwKHZhbHVlLCBpc0dsb2JhbCA/ICdnJyA6IHVuZGVmaW5lZClcbiAgc2FmZVJlW2luZGV4XSA9IG5ldyBSZWdFeHAoc2FmZSwgaXNHbG9iYWwgPyAnZycgOiB1bmRlZmluZWQpXG59XG5cbi8vIFRoZSBmb2xsb3dpbmcgUmVndWxhciBFeHByZXNzaW9ucyBjYW4gYmUgdXNlZCBmb3IgdG9rZW5pemluZyxcbi8vIHZhbGlkYXRpbmcsIGFuZCBwYXJzaW5nIFNlbVZlciB2ZXJzaW9uIHN0cmluZ3MuXG5cbi8vICMjIE51bWVyaWMgSWRlbnRpZmllclxuLy8gQSBzaW5nbGUgYDBgLCBvciBhIG5vbi16ZXJvIGRpZ2l0IGZvbGxvd2VkIGJ5IHplcm8gb3IgbW9yZSBkaWdpdHMuXG5cbmNyZWF0ZVRva2VuKCdOVU1FUklDSURFTlRJRklFUicsICcwfFsxLTldXFxcXGQqJylcbmNyZWF0ZVRva2VuKCdOVU1FUklDSURFTlRJRklFUkxPT1NFJywgJ1xcXFxkKycpXG5cbi8vICMjIE5vbi1udW1lcmljIElkZW50aWZpZXJcbi8vIFplcm8gb3IgbW9yZSBkaWdpdHMsIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIG9yIGh5cGhlbiwgYW5kIHRoZW4gemVybyBvclxuLy8gbW9yZSBsZXR0ZXJzLCBkaWdpdHMsIG9yIGh5cGhlbnMuXG5cbmNyZWF0ZVRva2VuKCdOT05OVU1FUklDSURFTlRJRklFUicsIGBcXFxcZCpbYS16QS1aLV0ke0xFVFRFUkRBU0hOVU1CRVJ9KmApXG5cbi8vICMjIE1haW4gVmVyc2lvblxuLy8gVGhyZWUgZG90LXNlcGFyYXRlZCBudW1lcmljIGlkZW50aWZpZXJzLlxuXG5jcmVhdGVUb2tlbignTUFJTlZFUlNJT04nLCBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfSlcXFxcLmAgK1xuICAgICAgICAgICAgICAgICAgIGAoJHtzcmNbdC5OVU1FUklDSURFTlRJRklFUl19KVxcXFwuYCArXG4gICAgICAgICAgICAgICAgICAgYCgke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSXX0pYClcblxuY3JlYXRlVG9rZW4oJ01BSU5WRVJTSU9OTE9PU0UnLCBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KVxcXFwuYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KVxcXFwuYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJMT09TRV19KWApXG5cbi8vICMjIFByZS1yZWxlYXNlIFZlcnNpb24gSWRlbnRpZmllclxuLy8gQSBudW1lcmljIGlkZW50aWZpZXIsIG9yIGEgbm9uLW51bWVyaWMgaWRlbnRpZmllci5cblxuY3JlYXRlVG9rZW4oJ1BSRVJFTEVBU0VJREVOVElGSUVSJywgYCg/OiR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdXG59fCR7c3JjW3QuTk9OTlVNRVJJQ0lERU5USUZJRVJdfSlgKVxuXG5jcmVhdGVUb2tlbignUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRScsIGAoPzoke3NyY1t0Lk5VTUVSSUNJREVOVElGSUVSTE9PU0VdXG59fCR7c3JjW3QuTk9OTlVNRVJJQ0lERU5USUZJRVJdfSlgKVxuXG4vLyAjIyBQcmUtcmVsZWFzZSBWZXJzaW9uXG4vLyBIeXBoZW4sIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRvdC1zZXBhcmF0ZWQgcHJlLXJlbGVhc2UgdmVyc2lvblxuLy8gaWRlbnRpZmllcnMuXG5cbmNyZWF0ZVRva2VuKCdQUkVSRUxFQVNFJywgYCg/Oi0oJHtzcmNbdC5QUkVSRUxFQVNFSURFTlRJRklFUl1cbn0oPzpcXFxcLiR7c3JjW3QuUFJFUkVMRUFTRUlERU5USUZJRVJdfSkqKSlgKVxuXG5jcmVhdGVUb2tlbignUFJFUkVMRUFTRUxPT1NFJywgYCg/Oi0/KCR7c3JjW3QuUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRV1cbn0oPzpcXFxcLiR7c3JjW3QuUFJFUkVMRUFTRUlERU5USUZJRVJMT09TRV19KSopKWApXG5cbi8vICMjIEJ1aWxkIE1ldGFkYXRhIElkZW50aWZpZXJcbi8vIEFueSBjb21iaW5hdGlvbiBvZiBkaWdpdHMsIGxldHRlcnMsIG9yIGh5cGhlbnMuXG5cbmNyZWF0ZVRva2VuKCdCVUlMRElERU5USUZJRVInLCBgJHtMRVRURVJEQVNITlVNQkVSfStgKVxuXG4vLyAjIyBCdWlsZCBNZXRhZGF0YVxuLy8gUGx1cyBzaWduLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwZXJpb2Qtc2VwYXJhdGVkIGJ1aWxkIG1ldGFkYXRhXG4vLyBpZGVudGlmaWVycy5cblxuY3JlYXRlVG9rZW4oJ0JVSUxEJywgYCg/OlxcXFwrKCR7c3JjW3QuQlVJTERJREVOVElGSUVSXVxufSg/OlxcXFwuJHtzcmNbdC5CVUlMRElERU5USUZJRVJdfSkqKSlgKVxuXG4vLyAjIyBGdWxsIFZlcnNpb24gU3RyaW5nXG4vLyBBIG1haW4gdmVyc2lvbiwgZm9sbG93ZWQgb3B0aW9uYWxseSBieSBhIHByZS1yZWxlYXNlIHZlcnNpb24gYW5kXG4vLyBidWlsZCBtZXRhZGF0YS5cblxuLy8gTm90ZSB0aGF0IHRoZSBvbmx5IG1ham9yLCBtaW5vciwgcGF0Y2gsIGFuZCBwcmUtcmVsZWFzZSBzZWN0aW9ucyBvZlxuLy8gdGhlIHZlcnNpb24gc3RyaW5nIGFyZSBjYXB0dXJpbmcgZ3JvdXBzLiAgVGhlIGJ1aWxkIG1ldGFkYXRhIGlzIG5vdCBhXG4vLyBjYXB0dXJpbmcgZ3JvdXAsIGJlY2F1c2UgaXQgc2hvdWxkIG5vdCBldmVyIGJlIHVzZWQgaW4gdmVyc2lvblxuLy8gY29tcGFyaXNvbi5cblxuY3JlYXRlVG9rZW4oJ0ZVTExQTEFJTicsIGB2PyR7c3JjW3QuTUFJTlZFUlNJT05dXG59JHtzcmNbdC5QUkVSRUxFQVNFXX0/JHtcbiAgc3JjW3QuQlVJTERdfT9gKVxuXG5jcmVhdGVUb2tlbignRlVMTCcsIGBeJHtzcmNbdC5GVUxMUExBSU5dfSRgKVxuXG4vLyBsaWtlIGZ1bGwsIGJ1dCBhbGxvd3MgdjEuMi4zIGFuZCA9MS4yLjMsIHdoaWNoIHBlb3BsZSBkbyBzb21ldGltZXMuXG4vLyBhbHNvLCAxLjAuMGFscGhhMSAocHJlcmVsZWFzZSB3aXRob3V0IHRoZSBoeXBoZW4pIHdoaWNoIGlzIHByZXR0eVxuLy8gY29tbW9uIGluIHRoZSBucG0gcmVnaXN0cnkuXG5jcmVhdGVUb2tlbignTE9PU0VQTEFJTicsIGBbdj1cXFxcc10qJHtzcmNbdC5NQUlOVkVSU0lPTkxPT1NFXVxufSR7c3JjW3QuUFJFUkVMRUFTRUxPT1NFXX0/JHtcbiAgc3JjW3QuQlVJTERdfT9gKVxuXG5jcmVhdGVUb2tlbignTE9PU0UnLCBgXiR7c3JjW3QuTE9PU0VQTEFJTl19JGApXG5cbmNyZWF0ZVRva2VuKCdHVExUJywgJygoPzo8fD4pPz0/KScpXG5cbi8vIFNvbWV0aGluZyBsaWtlIFwiMi4qXCIgb3IgXCIxLjIueFwiLlxuLy8gTm90ZSB0aGF0IFwieC54XCIgaXMgYSB2YWxpZCB4UmFuZ2UgaWRlbnRpZmVyLCBtZWFuaW5nIFwiYW55IHZlcnNpb25cIlxuLy8gT25seSB0aGUgZmlyc3QgaXRlbSBpcyBzdHJpY3RseSByZXF1aXJlZC5cbmNyZWF0ZVRva2VuKCdYUkFOR0VJREVOVElGSUVSTE9PU0UnLCBgJHtzcmNbdC5OVU1FUklDSURFTlRJRklFUkxPT1NFXX18eHxYfFxcXFwqYClcbmNyZWF0ZVRva2VuKCdYUkFOR0VJREVOVElGSUVSJywgYCR7c3JjW3QuTlVNRVJJQ0lERU5USUZJRVJdfXx4fFh8XFxcXCpgKVxuXG5jcmVhdGVUb2tlbignWFJBTkdFUExBSU4nLCBgW3Y9XFxcXHNdKigke3NyY1t0LlhSQU5HRUlERU5USUZJRVJdfSlgICtcbiAgICAgICAgICAgICAgICAgICBgKD86XFxcXC4oJHtzcmNbdC5YUkFOR0VJREVOVElGSUVSXX0pYCArXG4gICAgICAgICAgICAgICAgICAgYCg/OlxcXFwuKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUl19KWAgK1xuICAgICAgICAgICAgICAgICAgIGAoPzoke3NyY1t0LlBSRVJFTEVBU0VdfSk/JHtcbiAgICAgICAgICAgICAgICAgICAgIHNyY1t0LkJVSUxEXX0/YCArXG4gICAgICAgICAgICAgICAgICAgYCk/KT9gKVxuXG5jcmVhdGVUb2tlbignWFJBTkdFUExBSU5MT09TRScsIGBbdj1cXFxcc10qKCR7c3JjW3QuWFJBTkdFSURFTlRJRklFUkxPT1NFXX0pYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKD86XFxcXC4oJHtzcmNbdC5YUkFOR0VJREVOVElGSUVSTE9PU0VdfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAoPzpcXFxcLigke3NyY1t0LlhSQU5HRUlERU5USUZJRVJMT09TRV19KWAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCg/OiR7c3JjW3QuUFJFUkVMRUFTRUxPT1NFXX0pPyR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t0LkJVSUxEXX0/YCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKT8pP2ApXG5cbmNyZWF0ZVRva2VuKCdYUkFOR0UnLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqJHtzcmNbdC5YUkFOR0VQTEFJTl19JGApXG5jcmVhdGVUb2tlbignWFJBTkdFTE9PU0UnLCBgXiR7c3JjW3QuR1RMVF19XFxcXHMqJHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0kYClcblxuLy8gQ29lcmNpb24uXG4vLyBFeHRyYWN0IGFueXRoaW5nIHRoYXQgY291bGQgY29uY2VpdmFibHkgYmUgYSBwYXJ0IG9mIGEgdmFsaWQgc2VtdmVyXG5jcmVhdGVUb2tlbignQ09FUkNFUExBSU4nLCBgJHsnKF58W15cXFxcZF0pJyArXG4gICAgICAgICAgICAgICcoXFxcXGR7MSwnfSR7TUFYX1NBRkVfQ09NUE9ORU5UX0xFTkdUSH19KWAgK1xuICAgICAgICAgICAgICBgKD86XFxcXC4oXFxcXGR7MSwke01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEh9fSkpP2AgK1xuICAgICAgICAgICAgICBgKD86XFxcXC4oXFxcXGR7MSwke01BWF9TQUZFX0NPTVBPTkVOVF9MRU5HVEh9fSkpP2ApXG5jcmVhdGVUb2tlbignQ09FUkNFJywgYCR7c3JjW3QuQ09FUkNFUExBSU5dfSg/OiR8W15cXFxcZF0pYClcbmNyZWF0ZVRva2VuKCdDT0VSQ0VGVUxMJywgc3JjW3QuQ09FUkNFUExBSU5dICtcbiAgICAgICAgICAgICAgYCg/OiR7c3JjW3QuUFJFUkVMRUFTRV19KT9gICtcbiAgICAgICAgICAgICAgYCg/OiR7c3JjW3QuQlVJTERdfSk/YCArXG4gICAgICAgICAgICAgIGAoPzokfFteXFxcXGRdKWApXG5jcmVhdGVUb2tlbignQ09FUkNFUlRMJywgc3JjW3QuQ09FUkNFXSwgdHJ1ZSlcbmNyZWF0ZVRva2VuKCdDT0VSQ0VSVExGVUxMJywgc3JjW3QuQ09FUkNFRlVMTF0sIHRydWUpXG5cbi8vIFRpbGRlIHJhbmdlcy5cbi8vIE1lYW5pbmcgaXMgXCJyZWFzb25hYmx5IGF0IG9yIGdyZWF0ZXIgdGhhblwiXG5jcmVhdGVUb2tlbignTE9ORVRJTERFJywgJyg/On4+PyknKVxuXG5jcmVhdGVUb2tlbignVElMREVUUklNJywgYChcXFxccyopJHtzcmNbdC5MT05FVElMREVdfVxcXFxzK2AsIHRydWUpXG5leHBvcnRzLnRpbGRlVHJpbVJlcGxhY2UgPSAnJDF+J1xuXG5jcmVhdGVUb2tlbignVElMREUnLCBgXiR7c3JjW3QuTE9ORVRJTERFXX0ke3NyY1t0LlhSQU5HRVBMQUlOXX0kYClcbmNyZWF0ZVRva2VuKCdUSUxERUxPT1NFJywgYF4ke3NyY1t0LkxPTkVUSUxERV19JHtzcmNbdC5YUkFOR0VQTEFJTkxPT1NFXX0kYClcblxuLy8gQ2FyZXQgcmFuZ2VzLlxuLy8gTWVhbmluZyBpcyBcImF0IGxlYXN0IGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoXCJcbmNyZWF0ZVRva2VuKCdMT05FQ0FSRVQnLCAnKD86XFxcXF4pJylcblxuY3JlYXRlVG9rZW4oJ0NBUkVUVFJJTScsIGAoXFxcXHMqKSR7c3JjW3QuTE9ORUNBUkVUXX1cXFxccytgLCB0cnVlKVxuZXhwb3J0cy5jYXJldFRyaW1SZXBsYWNlID0gJyQxXidcblxuY3JlYXRlVG9rZW4oJ0NBUkVUJywgYF4ke3NyY1t0LkxPTkVDQVJFVF19JHtzcmNbdC5YUkFOR0VQTEFJTl19JGApXG5jcmVhdGVUb2tlbignQ0FSRVRMT09TRScsIGBeJHtzcmNbdC5MT05FQ0FSRVRdfSR7c3JjW3QuWFJBTkdFUExBSU5MT09TRV19JGApXG5cbi8vIEEgc2ltcGxlIGd0L2x0L2VxIHRoaW5nLCBvciBqdXN0IFwiXCIgdG8gaW5kaWNhdGUgXCJhbnkgdmVyc2lvblwiXG5jcmVhdGVUb2tlbignQ09NUEFSQVRPUkxPT1NFJywgYF4ke3NyY1t0LkdUTFRdfVxcXFxzKigke3NyY1t0LkxPT1NFUExBSU5dfSkkfF4kYClcbmNyZWF0ZVRva2VuKCdDT01QQVJBVE9SJywgYF4ke3NyY1t0LkdUTFRdfVxcXFxzKigke3NyY1t0LkZVTExQTEFJTl19KSR8XiRgKVxuXG4vLyBBbiBleHByZXNzaW9uIHRvIHN0cmlwIGFueSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIGd0bHQgYW5kIHRoZSB0aGluZ1xuLy8gaXQgbW9kaWZpZXMsIHNvIHRoYXQgYD4gMS4yLjNgID09PiBgPjEuMi4zYFxuY3JlYXRlVG9rZW4oJ0NPTVBBUkFUT1JUUklNJywgYChcXFxccyopJHtzcmNbdC5HVExUXVxufVxcXFxzKigke3NyY1t0LkxPT1NFUExBSU5dfXwke3NyY1t0LlhSQU5HRVBMQUlOXX0pYCwgdHJ1ZSlcbmV4cG9ydHMuY29tcGFyYXRvclRyaW1SZXBsYWNlID0gJyQxJDIkMydcblxuLy8gU29tZXRoaW5nIGxpa2UgYDEuMi4zIC0gMS4yLjRgXG4vLyBOb3RlIHRoYXQgdGhlc2UgYWxsIHVzZSB0aGUgbG9vc2UgZm9ybSwgYmVjYXVzZSB0aGV5J2xsIGJlXG4vLyBjaGVja2VkIGFnYWluc3QgZWl0aGVyIHRoZSBzdHJpY3Qgb3IgbG9vc2UgY29tcGFyYXRvciBmb3JtXG4vLyBsYXRlci5cbmNyZWF0ZVRva2VuKCdIWVBIRU5SQU5HRScsIGBeXFxcXHMqKCR7c3JjW3QuWFJBTkdFUExBSU5dfSlgICtcbiAgICAgICAgICAgICAgICAgICBgXFxcXHMrLVxcXFxzK2AgK1xuICAgICAgICAgICAgICAgICAgIGAoJHtzcmNbdC5YUkFOR0VQTEFJTl19KWAgK1xuICAgICAgICAgICAgICAgICAgIGBcXFxccyokYClcblxuY3JlYXRlVG9rZW4oJ0hZUEhFTlJBTkdFTE9PU0UnLCBgXlxcXFxzKigke3NyY1t0LlhSQU5HRVBMQUlOTE9PU0VdfSlgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBcXFxccystXFxcXHMrYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgKCR7c3JjW3QuWFJBTkdFUExBSU5MT09TRV19KWAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYFxcXFxzKiRgKVxuXG4vLyBTdGFyIHJhbmdlcyBiYXNpY2FsbHkganVzdCBhbGxvdyBhbnl0aGluZyBhdCBhbGwuXG5jcmVhdGVUb2tlbignU1RBUicsICcoPHw+KT89P1xcXFxzKlxcXFwqJylcbi8vID49MC4wLjAgaXMgbGlrZSBhIHN0YXJcbmNyZWF0ZVRva2VuKCdHVEUwJywgJ15cXFxccyo+PVxcXFxzKjBcXFxcLjBcXFxcLjBcXFxccyokJylcbmNyZWF0ZVRva2VuKCdHVEUwUFJFJywgJ15cXFxccyo+PVxcXFxzKjBcXFxcLjBcXFxcLjAtMFxcXFxzKiQnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/internal/re.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/gtr.js":
/*!*******************************************!*\
!*** ./node_modules/semver/ranges/gtr.js ***!
\*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// Determine if version is greater than all the versions possible in the range.\nconst outside = __webpack_require__(/*! ./outside */ \"./node_modules/semver/ranges/outside.js\")\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9ndHIuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBVztBQUNuQztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2d0ci5qcz9hMzNkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIERldGVybWluZSBpZiB2ZXJzaW9uIGlzIGdyZWF0ZXIgdGhhbiBhbGwgdGhlIHZlcnNpb25zIHBvc3NpYmxlIGluIHRoZSByYW5nZS5cbmNvbnN0IG91dHNpZGUgPSByZXF1aXJlKCcuL291dHNpZGUnKVxuY29uc3QgZ3RyID0gKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKSA9PiBvdXRzaWRlKHZlcnNpb24sIHJhbmdlLCAnPicsIG9wdGlvbnMpXG5tb2R1bGUuZXhwb3J0cyA9IGd0clxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/gtr.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/intersects.js":
/*!**************************************************!*\
!*** ./node_modules/semver/ranges/intersects.js ***!
\**************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9pbnRlcnNlY3RzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQU8sQ0FBQyxnRUFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2ludGVyc2VjdHMuanM/MzY3OSJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3QgaW50ZXJzZWN0cyA9IChyMSwgcjIsIG9wdGlvbnMpID0+IHtcbiAgcjEgPSBuZXcgUmFuZ2UocjEsIG9wdGlvbnMpXG4gIHIyID0gbmV3IFJhbmdlKHIyLCBvcHRpb25zKVxuICByZXR1cm4gcjEuaW50ZXJzZWN0cyhyMiwgb3B0aW9ucylcbn1cbm1vZHVsZS5leHBvcnRzID0gaW50ZXJzZWN0c1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/intersects.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/ltr.js":
/*!*******************************************!*\
!*** ./node_modules/semver/ranges/ltr.js ***!
\*******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const outside = __webpack_require__(/*! ./outside */ \"./node_modules/semver/ranges/outside.js\")\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9sdHIuanMiLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCLG1CQUFPLENBQUMsMERBQVc7QUFDbkM7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL2x0ci5qcz8wNzg4Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG91dHNpZGUgPSByZXF1aXJlKCcuL291dHNpZGUnKVxuLy8gRGV0ZXJtaW5lIGlmIHZlcnNpb24gaXMgbGVzcyB0aGFuIGFsbCB0aGUgdmVyc2lvbnMgcG9zc2libGUgaW4gdGhlIHJhbmdlXG5jb25zdCBsdHIgPSAodmVyc2lvbiwgcmFuZ2UsIG9wdGlvbnMpID0+IG91dHNpZGUodmVyc2lvbiwgcmFuZ2UsICc8Jywgb3B0aW9ucylcbm1vZHVsZS5leHBvcnRzID0gbHRyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/ltr.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/max-satisfying.js":
/*!******************************************************!*\
!*** ./node_modules/semver/ranges/max-satisfying.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9tYXgtc2F0aXNmeWluZy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDLGNBQWMsbUJBQU8sQ0FBQyxnRUFBa0I7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9tYXgtc2F0aXNmeWluZy5qcz8wNzVhIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5cbmNvbnN0IG1heFNhdGlzZnlpbmcgPSAodmVyc2lvbnMsIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIGxldCBtYXggPSBudWxsXG4gIGxldCBtYXhTViA9IG51bGxcbiAgbGV0IHJhbmdlT2JqID0gbnVsbFxuICB0cnkge1xuICAgIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaCgodikgPT4ge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7XG4gICAgICAvLyBzYXRpc2ZpZXModiwgcmFuZ2UsIG9wdGlvbnMpXG4gICAgICBpZiAoIW1heCB8fCBtYXhTVi5jb21wYXJlKHYpID09PSAtMSkge1xuICAgICAgICAvLyBjb21wYXJlKG1heCwgdiwgdHJ1ZSlcbiAgICAgICAgbWF4ID0gdlxuICAgICAgICBtYXhTViA9IG5ldyBTZW1WZXIobWF4LCBvcHRpb25zKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIG1heFxufVxubW9kdWxlLmV4cG9ydHMgPSBtYXhTYXRpc2Z5aW5nXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/max-satisfying.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/min-satisfying.js":
/*!******************************************************!*\
!*** ./node_modules/semver/ranges/min-satisfying.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tc2F0aXNmeWluZy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDLGNBQWMsbUJBQU8sQ0FBQyxnRUFBa0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL21pbi1zYXRpc2Z5aW5nLmpzPzgzMjkiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2VtVmVyID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9zZW12ZXInKVxuY29uc3QgUmFuZ2UgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3JhbmdlJylcbmNvbnN0IG1pblNhdGlzZnlpbmcgPSAodmVyc2lvbnMsIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIGxldCBtaW4gPSBudWxsXG4gIGxldCBtaW5TViA9IG51bGxcbiAgbGV0IHJhbmdlT2JqID0gbnVsbFxuICB0cnkge1xuICAgIHJhbmdlT2JqID0gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKVxuICB9IGNhdGNoIChlcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgdmVyc2lvbnMuZm9yRWFjaCgodikgPT4ge1xuICAgIGlmIChyYW5nZU9iai50ZXN0KHYpKSB7XG4gICAgICAvLyBzYXRpc2ZpZXModiwgcmFuZ2UsIG9wdGlvbnMpXG4gICAgICBpZiAoIW1pbiB8fCBtaW5TVi5jb21wYXJlKHYpID09PSAxKSB7XG4gICAgICAgIC8vIGNvbXBhcmUobWluLCB2LCB0cnVlKVxuICAgICAgICBtaW4gPSB2XG4gICAgICAgIG1pblNWID0gbmV3IFNlbVZlcihtaW4sIG9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gbWluXG59XG5tb2R1bGUuZXhwb3J0cyA9IG1pblNhdGlzZnlpbmdcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/min-satisfying.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/min-version.js":
/*!***************************************************!*\
!*** ./node_modules/semver/ranges/min-version.js ***!
\***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst gt = __webpack_require__(/*! ../functions/gt */ \"./node_modules/semver/functions/gt.js\")\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxlQUFlLG1CQUFPLENBQUMsa0VBQW1CO0FBQzFDLGNBQWMsbUJBQU8sQ0FBQyxnRUFBa0I7QUFDeEMsV0FBVyxtQkFBTyxDQUFDLDhEQUFpQjs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixzQkFBc0I7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxvQkFBb0I7QUFDdkU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9taW4tdmVyc2lvbi5qcz8wZjNiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNlbVZlciA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvc2VtdmVyJylcbmNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndCcpXG5cbmNvbnN0IG1pblZlcnNpb24gPSAocmFuZ2UsIGxvb3NlKSA9PiB7XG4gIHJhbmdlID0gbmV3IFJhbmdlKHJhbmdlLCBsb29zZSlcblxuICBsZXQgbWludmVyID0gbmV3IFNlbVZlcignMC4wLjAnKVxuICBpZiAocmFuZ2UudGVzdChtaW52ZXIpKSB7XG4gICAgcmV0dXJuIG1pbnZlclxuICB9XG5cbiAgbWludmVyID0gbmV3IFNlbVZlcignMC4wLjAtMCcpXG4gIGlmIChyYW5nZS50ZXN0KG1pbnZlcikpIHtcbiAgICByZXR1cm4gbWludmVyXG4gIH1cblxuICBtaW52ZXIgPSBudWxsXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2Uuc2V0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV1cblxuICAgIGxldCBzZXRNaW4gPSBudWxsXG4gICAgY29tcGFyYXRvcnMuZm9yRWFjaCgoY29tcGFyYXRvcikgPT4ge1xuICAgICAgLy8gQ2xvbmUgdG8gYXZvaWQgbWFuaXB1bGF0aW5nIHRoZSBjb21wYXJhdG9yJ3Mgc2VtdmVyIG9iamVjdC5cbiAgICAgIGNvbnN0IGNvbXB2ZXIgPSBuZXcgU2VtVmVyKGNvbXBhcmF0b3Iuc2VtdmVyLnZlcnNpb24pXG4gICAgICBzd2l0Y2ggKGNvbXBhcmF0b3Iub3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSAnPic6XG4gICAgICAgICAgaWYgKGNvbXB2ZXIucHJlcmVsZWFzZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbXB2ZXIucGF0Y2grK1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wdmVyLnByZXJlbGVhc2UucHVzaCgwKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21wdmVyLnJhdyA9IGNvbXB2ZXIuZm9ybWF0KClcbiAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqL1xuICAgICAgICBjYXNlICcnOlxuICAgICAgICBjYXNlICc+PSc6XG4gICAgICAgICAgaWYgKCFzZXRNaW4gfHwgZ3QoY29tcHZlciwgc2V0TWluKSkge1xuICAgICAgICAgICAgc2V0TWluID0gY29tcHZlclxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgY2FzZSAnPD0nOlxuICAgICAgICAgIC8qIElnbm9yZSBtYXhpbXVtIHZlcnNpb25zICovXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgb3BlcmF0aW9uOiAke2NvbXBhcmF0b3Iub3BlcmF0b3J9YClcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChzZXRNaW4gJiYgKCFtaW52ZXIgfHwgZ3QobWludmVyLCBzZXRNaW4pKSkge1xuICAgICAgbWludmVyID0gc2V0TWluXG4gICAgfVxuICB9XG5cbiAgaWYgKG1pbnZlciAmJiByYW5nZS50ZXN0KG1pbnZlcikpIHtcbiAgICByZXR1cm4gbWludmVyXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxubW9kdWxlLmV4cG9ydHMgPSBtaW5WZXJzaW9uXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/min-version.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/outside.js":
/*!***********************************************!*\
!*** ./node_modules/semver/ranges/outside.js ***!
\***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const SemVer = __webpack_require__(/*! ../classes/semver */ \"./node_modules/semver/classes/semver.js\")\nconst Comparator = __webpack_require__(/*! ../classes/comparator */ \"./node_modules/semver/classes/comparator.js\")\nconst { ANY } = Comparator\nconst Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst satisfies = __webpack_require__(/*! ../functions/satisfies */ \"./node_modules/semver/functions/satisfies.js\")\nconst gt = __webpack_require__(/*! ../functions/gt */ \"./node_modules/semver/functions/gt.js\")\nconst lt = __webpack_require__(/*! ../functions/lt */ \"./node_modules/semver/functions/lt.js\")\nconst lte = __webpack_require__(/*! ../functions/lte */ \"./node_modules/semver/functions/lte.js\")\nconst gte = __webpack_require__(/*! ../functions/gte */ \"./node_modules/semver/functions/gte.js\")\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9vdXRzaWRlLmpzIiwibWFwcGluZ3MiOiJBQUFBLGVBQWUsbUJBQU8sQ0FBQyxrRUFBbUI7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsMEVBQXVCO0FBQ2xELFFBQVEsTUFBTTtBQUNkLGNBQWMsbUJBQU8sQ0FBQyxnRUFBa0I7QUFDeEMsa0JBQWtCLG1CQUFPLENBQUMsNEVBQXdCO0FBQ2xELFdBQVcsbUJBQU8sQ0FBQyw4REFBaUI7QUFDcEMsV0FBVyxtQkFBTyxDQUFDLDhEQUFpQjtBQUNwQyxZQUFZLG1CQUFPLENBQUMsZ0VBQWtCO0FBQ3RDLFlBQVksbUJBQU8sQ0FBQyxnRUFBa0I7O0FBRXRDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixzQkFBc0I7QUFDeEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL291dHNpZGUuanM/ZjczNCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBTZW1WZXIgPSByZXF1aXJlKCcuLi9jbGFzc2VzL3NlbXZlcicpXG5jb25zdCBDb21wYXJhdG9yID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9jb21wYXJhdG9yJylcbmNvbnN0IHsgQU5ZIH0gPSBDb21wYXJhdG9yXG5jb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3Qgc2F0aXNmaWVzID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL3NhdGlzZmllcycpXG5jb25zdCBndCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndCcpXG5jb25zdCBsdCA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9sdCcpXG5jb25zdCBsdGUgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvbHRlJylcbmNvbnN0IGd0ZSA9IHJlcXVpcmUoJy4uL2Z1bmN0aW9ucy9ndGUnKVxuXG5jb25zdCBvdXRzaWRlID0gKHZlcnNpb24sIHJhbmdlLCBoaWxvLCBvcHRpb25zKSA9PiB7XG4gIHZlcnNpb24gPSBuZXcgU2VtVmVyKHZlcnNpb24sIG9wdGlvbnMpXG4gIHJhbmdlID0gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKVxuXG4gIGxldCBndGZuLCBsdGVmbiwgbHRmbiwgY29tcCwgZWNvbXBcbiAgc3dpdGNoIChoaWxvKSB7XG4gICAgY2FzZSAnPic6XG4gICAgICBndGZuID0gZ3RcbiAgICAgIGx0ZWZuID0gbHRlXG4gICAgICBsdGZuID0gbHRcbiAgICAgIGNvbXAgPSAnPidcbiAgICAgIGVjb21wID0gJz49J1xuICAgICAgYnJlYWtcbiAgICBjYXNlICc8JzpcbiAgICAgIGd0Zm4gPSBsdFxuICAgICAgbHRlZm4gPSBndGVcbiAgICAgIGx0Zm4gPSBndFxuICAgICAgY29tcCA9ICc8J1xuICAgICAgZWNvbXAgPSAnPD0nXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdNdXN0IHByb3ZpZGUgYSBoaWxvIHZhbCBvZiBcIjxcIiBvciBcIj5cIicpXG4gIH1cblxuICAvLyBJZiBpdCBzYXRpc2ZpZXMgdGhlIHJhbmdlIGl0IGlzIG5vdCBvdXRzaWRlXG4gIGlmIChzYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UsIG9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBGcm9tIG5vdyBvbiwgdmFyaWFibGUgdGVybXMgYXJlIGFzIGlmIHdlJ3JlIGluIFwiZ3RyXCIgbW9kZS5cbiAgLy8gYnV0IG5vdGUgdGhhdCBldmVyeXRoaW5nIGlzIGZsaXBwZWQgZm9yIHRoZSBcImx0clwiIGZ1bmN0aW9uLlxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2Uuc2V0Lmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgY29tcGFyYXRvcnMgPSByYW5nZS5zZXRbaV1cblxuICAgIGxldCBoaWdoID0gbnVsbFxuICAgIGxldCBsb3cgPSBudWxsXG5cbiAgICBjb21wYXJhdG9ycy5mb3JFYWNoKChjb21wYXJhdG9yKSA9PiB7XG4gICAgICBpZiAoY29tcGFyYXRvci5zZW12ZXIgPT09IEFOWSkge1xuICAgICAgICBjb21wYXJhdG9yID0gbmV3IENvbXBhcmF0b3IoJz49MC4wLjAnKVxuICAgICAgfVxuICAgICAgaGlnaCA9IGhpZ2ggfHwgY29tcGFyYXRvclxuICAgICAgbG93ID0gbG93IHx8IGNvbXBhcmF0b3JcbiAgICAgIGlmIChndGZuKGNvbXBhcmF0b3Iuc2VtdmVyLCBoaWdoLnNlbXZlciwgb3B0aW9ucykpIHtcbiAgICAgICAgaGlnaCA9IGNvbXBhcmF0b3JcbiAgICAgIH0gZWxzZSBpZiAobHRmbihjb21wYXJhdG9yLnNlbXZlciwgbG93LnNlbXZlciwgb3B0aW9ucykpIHtcbiAgICAgICAgbG93ID0gY29tcGFyYXRvclxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBJZiB0aGUgZWRnZSB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGEgb3BlcmF0b3IgdGhlbiBvdXIgdmVyc2lvblxuICAgIC8vIGlzbid0IG91dHNpZGUgaXRcbiAgICBpZiAoaGlnaC5vcGVyYXRvciA9PT0gY29tcCB8fCBoaWdoLm9wZXJhdG9yID09PSBlY29tcCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGxvd2VzdCB2ZXJzaW9uIGNvbXBhcmF0b3IgaGFzIGFuIG9wZXJhdG9yIGFuZCBvdXIgdmVyc2lvblxuICAgIC8vIGlzIGxlc3MgdGhhbiBpdCB0aGVuIGl0IGlzbid0IGhpZ2hlciB0aGFuIHRoZSByYW5nZVxuICAgIGlmICgoIWxvdy5vcGVyYXRvciB8fCBsb3cub3BlcmF0b3IgPT09IGNvbXApICYmXG4gICAgICAgIGx0ZWZuKHZlcnNpb24sIGxvdy5zZW12ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKGxvdy5vcGVyYXRvciA9PT0gZWNvbXAgJiYgbHRmbih2ZXJzaW9uLCBsb3cuc2VtdmVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3V0c2lkZVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/outside.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/simplify.js":
/*!************************************************!*\
!*** ./node_modules/semver/ranges/simplify.js ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/semver/functions/compare.js\")\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9zaW1wbGlmeS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQywrRUFBMkI7QUFDckQsZ0JBQWdCLG1CQUFPLENBQUMsMkVBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTix1QkFBdUIsSUFBSTtBQUMzQixNQUFNO0FBQ04sdUJBQXVCLElBQUk7QUFDM0IsTUFBTTtBQUNOLHFCQUFxQixLQUFLLElBQUksSUFBSTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvc2ltcGxpZnkuanM/N2E0OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnaXZlbiBhIHNldCBvZiB2ZXJzaW9ucyBhbmQgYSByYW5nZSwgY3JlYXRlIGEgXCJzaW1wbGlmaWVkXCIgcmFuZ2Vcbi8vIHRoYXQgaW5jbHVkZXMgdGhlIHNhbWUgdmVyc2lvbnMgdGhhdCB0aGUgb3JpZ2luYWwgcmFuZ2UgZG9lc1xuLy8gSWYgdGhlIG9yaWdpbmFsIHJhbmdlIGlzIHNob3J0ZXIgdGhhbiB0aGUgc2ltcGxpZmllZCBvbmUsIHJldHVybiB0aGF0LlxuY29uc3Qgc2F0aXNmaWVzID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL3NhdGlzZmllcy5qcycpXG5jb25zdCBjb21wYXJlID0gcmVxdWlyZSgnLi4vZnVuY3Rpb25zL2NvbXBhcmUuanMnKVxubW9kdWxlLmV4cG9ydHMgPSAodmVyc2lvbnMsIHJhbmdlLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHNldCA9IFtdXG4gIGxldCBmaXJzdCA9IG51bGxcbiAgbGV0IHByZXYgPSBudWxsXG4gIGNvbnN0IHYgPSB2ZXJzaW9ucy5zb3J0KChhLCBiKSA9PiBjb21wYXJlKGEsIGIsIG9wdGlvbnMpKVxuICBmb3IgKGNvbnN0IHZlcnNpb24gb2Ygdikge1xuICAgIGNvbnN0IGluY2x1ZGVkID0gc2F0aXNmaWVzKHZlcnNpb24sIHJhbmdlLCBvcHRpb25zKVxuICAgIGlmIChpbmNsdWRlZCkge1xuICAgICAgcHJldiA9IHZlcnNpb25cbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgZmlyc3QgPSB2ZXJzaW9uXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHNldC5wdXNoKFtmaXJzdCwgcHJldl0pXG4gICAgICB9XG4gICAgICBwcmV2ID0gbnVsbFxuICAgICAgZmlyc3QgPSBudWxsXG4gICAgfVxuICB9XG4gIGlmIChmaXJzdCkge1xuICAgIHNldC5wdXNoKFtmaXJzdCwgbnVsbF0pXG4gIH1cblxuICBjb25zdCByYW5nZXMgPSBbXVxuICBmb3IgKGNvbnN0IFttaW4sIG1heF0gb2Ygc2V0KSB7XG4gICAgaWYgKG1pbiA9PT0gbWF4KSB7XG4gICAgICByYW5nZXMucHVzaChtaW4pXG4gICAgfSBlbHNlIGlmICghbWF4ICYmIG1pbiA9PT0gdlswXSkge1xuICAgICAgcmFuZ2VzLnB1c2goJyonKVxuICAgIH0gZWxzZSBpZiAoIW1heCkge1xuICAgICAgcmFuZ2VzLnB1c2goYD49JHttaW59YClcbiAgICB9IGVsc2UgaWYgKG1pbiA9PT0gdlswXSkge1xuICAgICAgcmFuZ2VzLnB1c2goYDw9JHttYXh9YClcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2VzLnB1c2goYCR7bWlufSAtICR7bWF4fWApXG4gICAgfVxuICB9XG4gIGNvbnN0IHNpbXBsaWZpZWQgPSByYW5nZXMuam9pbignIHx8ICcpXG4gIGNvbnN0IG9yaWdpbmFsID0gdHlwZW9mIHJhbmdlLnJhdyA9PT0gJ3N0cmluZycgPyByYW5nZS5yYXcgOiBTdHJpbmcocmFuZ2UpXG4gIHJldHVybiBzaW1wbGlmaWVkLmxlbmd0aCA8IG9yaWdpbmFsLmxlbmd0aCA/IHNpbXBsaWZpZWQgOiByYW5nZVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/simplify.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/subset.js":
/*!**********************************************!*\
!*** ./node_modules/semver/ranges/subset.js ***!
\**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const Range = __webpack_require__(/*! ../classes/range.js */ \"./node_modules/semver/classes/range.js\")\nconst Comparator = __webpack_require__(/*! ../classes/comparator.js */ \"./node_modules/semver/classes/comparator.js\")\nconst { ANY } = Comparator\nconst satisfies = __webpack_require__(/*! ../functions/satisfies.js */ \"./node_modules/semver/functions/satisfies.js\")\nconst compare = __webpack_require__(/*! ../functions/compare.js */ \"./node_modules/semver/functions/compare.js\")\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy9zdWJzZXQuanMiLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBTyxDQUFDLG1FQUFxQjtBQUMzQyxtQkFBbUIsbUJBQU8sQ0FBQyw2RUFBMEI7QUFDckQsUUFBUSxNQUFNO0FBQ2Qsa0JBQWtCLG1CQUFPLENBQUMsK0VBQTJCO0FBQ3JELGdCQUFnQixtQkFBTyxDQUFDLDJFQUF5Qjs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9zZW12ZXIvcmFuZ2VzL3N1YnNldC5qcz8yNzU2Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZS5qcycpXG5jb25zdCBDb21wYXJhdG9yID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9jb21wYXJhdG9yLmpzJylcbmNvbnN0IHsgQU5ZIH0gPSBDb21wYXJhdG9yXG5jb25zdCBzYXRpc2ZpZXMgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvc2F0aXNmaWVzLmpzJylcbmNvbnN0IGNvbXBhcmUgPSByZXF1aXJlKCcuLi9mdW5jdGlvbnMvY29tcGFyZS5qcycpXG5cbi8vIENvbXBsZXggcmFuZ2UgYHIxIHx8IHIyIHx8IC4uLmAgaXMgYSBzdWJzZXQgb2YgYFIxIHx8IFIyIHx8IC4uLmAgaWZmOlxuLy8gLSBFdmVyeSBzaW1wbGUgcmFuZ2UgYHIxLCByMiwgLi4uYCBpcyBhIG51bGwgc2V0LCBPUlxuLy8gLSBFdmVyeSBzaW1wbGUgcmFuZ2UgYHIxLCByMiwgLi4uYCB3aGljaCBpcyBub3QgYSBudWxsIHNldCBpcyBhIHN1YnNldCBvZlxuLy8gICBzb21lIGBSMSwgUjIsIC4uLmBcbi8vXG4vLyBTaW1wbGUgcmFuZ2UgYGMxIGMyIC4uLmAgaXMgYSBzdWJzZXQgb2Ygc2ltcGxlIHJhbmdlIGBDMSBDMiAuLi5gIGlmZjpcbi8vIC0gSWYgYyBpcyBvbmx5IHRoZSBBTlkgY29tcGFyYXRvclxuLy8gICAtIElmIEMgaXMgb25seSB0aGUgQU5ZIGNvbXBhcmF0b3IsIHJldHVybiB0cnVlXG4vLyAgIC0gRWxzZSBpZiBpbiBwcmVyZWxlYXNlIG1vZGUsIHJldHVybiBmYWxzZVxuLy8gICAtIGVsc2UgcmVwbGFjZSBjIHdpdGggYFs+PTAuMC4wXWBcbi8vIC0gSWYgQyBpcyBvbmx5IHRoZSBBTlkgY29tcGFyYXRvclxuLy8gICAtIGlmIGluIHByZXJlbGVhc2UgbW9kZSwgcmV0dXJuIHRydWVcbi8vICAgLSBlbHNlIHJlcGxhY2UgQyB3aXRoIGBbPj0wLjAuMF1gXG4vLyAtIExldCBFUSBiZSB0aGUgc2V0IG9mID0gY29tcGFyYXRvcnMgaW4gY1xuLy8gLSBJZiBFUSBpcyBtb3JlIHRoYW4gb25lLCByZXR1cm4gdHJ1ZSAobnVsbCBzZXQpXG4vLyAtIExldCBHVCBiZSB0aGUgaGlnaGVzdCA+IG9yID49IGNvbXBhcmF0b3IgaW4gY1xuLy8gLSBMZXQgTFQgYmUgdGhlIGxvd2VzdCA8IG9yIDw9IGNvbXBhcmF0b3IgaW4gY1xuLy8gLSBJZiBHVCBhbmQgTFQsIGFuZCBHVC5zZW12ZXIgPiBMVC5zZW12ZXIsIHJldHVybiB0cnVlIChudWxsIHNldClcbi8vIC0gSWYgYW55IEMgaXMgYSA9IHJhbmdlLCBhbmQgR1Qgb3IgTFQgYXJlIHNldCwgcmV0dXJuIGZhbHNlXG4vLyAtIElmIEVRXG4vLyAgIC0gSWYgR1QsIGFuZCBFUSBkb2VzIG5vdCBzYXRpc2Z5IEdULCByZXR1cm4gdHJ1ZSAobnVsbCBzZXQpXG4vLyAgIC0gSWYgTFQsIGFuZCBFUSBkb2VzIG5vdCBzYXRpc2Z5IExULCByZXR1cm4gdHJ1ZSAobnVsbCBzZXQpXG4vLyAgIC0gSWYgRVEgc2F0aXNmaWVzIGV2ZXJ5IEMsIHJldHVybiB0cnVlXG4vLyAgIC0gRWxzZSByZXR1cm4gZmFsc2Vcbi8vIC0gSWYgR1Rcbi8vICAgLSBJZiBHVC5zZW12ZXIgaXMgbG93ZXIgdGhhbiBhbnkgPiBvciA+PSBjb21wIGluIEMsIHJldHVybiBmYWxzZVxuLy8gICAtIElmIEdUIGlzID49LCBhbmQgR1Quc2VtdmVyIGRvZXMgbm90IHNhdGlzZnkgZXZlcnkgQywgcmV0dXJuIGZhbHNlXG4vLyAgIC0gSWYgR1Quc2VtdmVyIGhhcyBhIHByZXJlbGVhc2UsIGFuZCBub3QgaW4gcHJlcmVsZWFzZSBtb2RlXG4vLyAgICAgLSBJZiBubyBDIGhhcyBhIHByZXJlbGVhc2UgYW5kIHRoZSBHVC5zZW12ZXIgdHVwbGUsIHJldHVybiBmYWxzZVxuLy8gLSBJZiBMVFxuLy8gICAtIElmIExULnNlbXZlciBpcyBncmVhdGVyIHRoYW4gYW55IDwgb3IgPD0gY29tcCBpbiBDLCByZXR1cm4gZmFsc2Vcbi8vICAgLSBJZiBMVCBpcyA8PSwgYW5kIExULnNlbXZlciBkb2VzIG5vdCBzYXRpc2Z5IGV2ZXJ5IEMsIHJldHVybiBmYWxzZVxuLy8gICAtIElmIEdULnNlbXZlciBoYXMgYSBwcmVyZWxlYXNlLCBhbmQgbm90IGluIHByZXJlbGVhc2UgbW9kZVxuLy8gICAgIC0gSWYgbm8gQyBoYXMgYSBwcmVyZWxlYXNlIGFuZCB0aGUgTFQuc2VtdmVyIHR1cGxlLCByZXR1cm4gZmFsc2Vcbi8vIC0gRWxzZSByZXR1cm4gdHJ1ZVxuXG5jb25zdCBzdWJzZXQgPSAoc3ViLCBkb20sIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAoc3ViID09PSBkb20pIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgc3ViID0gbmV3IFJhbmdlKHN1Yiwgb3B0aW9ucylcbiAgZG9tID0gbmV3IFJhbmdlKGRvbSwgb3B0aW9ucylcbiAgbGV0IHNhd05vbk51bGwgPSBmYWxzZVxuXG4gIE9VVEVSOiBmb3IgKGNvbnN0IHNpbXBsZVN1YiBvZiBzdWIuc2V0KSB7XG4gICAgZm9yIChjb25zdCBzaW1wbGVEb20gb2YgZG9tLnNldCkge1xuICAgICAgY29uc3QgaXNTdWIgPSBzaW1wbGVTdWJzZXQoc2ltcGxlU3ViLCBzaW1wbGVEb20sIG9wdGlvbnMpXG4gICAgICBzYXdOb25OdWxsID0gc2F3Tm9uTnVsbCB8fCBpc1N1YiAhPT0gbnVsbFxuICAgICAgaWYgKGlzU3ViKSB7XG4gICAgICAgIGNvbnRpbnVlIE9VVEVSXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHRoZSBudWxsIHNldCBpcyBhIHN1YnNldCBvZiBldmVyeXRoaW5nLCBidXQgbnVsbCBzaW1wbGUgcmFuZ2VzIGluXG4gICAgLy8gYSBjb21wbGV4IHJhbmdlIHNob3VsZCBiZSBpZ25vcmVkLiAgc28gaWYgd2Ugc2F3IGEgbm9uLW51bGwgcmFuZ2UsXG4gICAgLy8gdGhlbiB3ZSBrbm93IHRoaXMgaXNuJ3QgYSBzdWJzZXQsIGJ1dCBpZiBFVkVSWSBzaW1wbGUgcmFuZ2Ugd2FzIG51bGwsXG4gICAgLy8gdGhlbiBpdCBpcyBhIHN1YnNldC5cbiAgICBpZiAoc2F3Tm9uTnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmNvbnN0IG1pbmltdW1WZXJzaW9uV2l0aFByZVJlbGVhc2UgPSBbbmV3IENvbXBhcmF0b3IoJz49MC4wLjAtMCcpXVxuY29uc3QgbWluaW11bVZlcnNpb24gPSBbbmV3IENvbXBhcmF0b3IoJz49MC4wLjAnKV1cblxuY29uc3Qgc2ltcGxlU3Vic2V0ID0gKHN1YiwgZG9tLCBvcHRpb25zKSA9PiB7XG4gIGlmIChzdWIgPT09IGRvbSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoc3ViLmxlbmd0aCA9PT0gMSAmJiBzdWJbMF0uc2VtdmVyID09PSBBTlkpIHtcbiAgICBpZiAoZG9tLmxlbmd0aCA9PT0gMSAmJiBkb21bMF0uc2VtdmVyID09PSBBTlkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlKSB7XG4gICAgICBzdWIgPSBtaW5pbXVtVmVyc2lvbldpdGhQcmVSZWxlYXNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHN1YiA9IG1pbmltdW1WZXJzaW9uXG4gICAgfVxuICB9XG5cbiAgaWYgKGRvbS5sZW5ndGggPT09IDEgJiYgZG9tWzBdLnNlbXZlciA9PT0gQU5ZKSB7XG4gICAgaWYgKG9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbSA9IG1pbmltdW1WZXJzaW9uXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZXFTZXQgPSBuZXcgU2V0KClcbiAgbGV0IGd0LCBsdFxuICBmb3IgKGNvbnN0IGMgb2Ygc3ViKSB7XG4gICAgaWYgKGMub3BlcmF0b3IgPT09ICc+JyB8fCBjLm9wZXJhdG9yID09PSAnPj0nKSB7XG4gICAgICBndCA9IGhpZ2hlckdUKGd0LCBjLCBvcHRpb25zKVxuICAgIH0gZWxzZSBpZiAoYy5vcGVyYXRvciA9PT0gJzwnIHx8IGMub3BlcmF0b3IgPT09ICc8PScpIHtcbiAgICAgIGx0ID0gbG93ZXJMVChsdCwgYywgb3B0aW9ucylcbiAgICB9IGVsc2Uge1xuICAgICAgZXFTZXQuYWRkKGMuc2VtdmVyKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlcVNldC5zaXplID4gMSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgZ3RsdENvbXBcbiAgaWYgKGd0ICYmIGx0KSB7XG4gICAgZ3RsdENvbXAgPSBjb21wYXJlKGd0LnNlbXZlciwgbHQuc2VtdmVyLCBvcHRpb25zKVxuICAgIGlmIChndGx0Q29tcCA+IDApIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIGlmIChndGx0Q29tcCA9PT0gMCAmJiAoZ3Qub3BlcmF0b3IgIT09ICc+PScgfHwgbHQub3BlcmF0b3IgIT09ICc8PScpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIC8vIHdpbGwgaXRlcmF0ZSBvbmUgb3IgemVybyB0aW1lc1xuICBmb3IgKGNvbnN0IGVxIG9mIGVxU2V0KSB7XG4gICAgaWYgKGd0ICYmICFzYXRpc2ZpZXMoZXEsIFN0cmluZyhndCksIG9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGlmIChsdCAmJiAhc2F0aXNmaWVzKGVxLCBTdHJpbmcobHQpLCBvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGMgb2YgZG9tKSB7XG4gICAgICBpZiAoIXNhdGlzZmllcyhlcSwgU3RyaW5nKGMpLCBvcHRpb25zKSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IGhpZ2hlciwgbG93ZXJcbiAgbGV0IGhhc0RvbUxULCBoYXNEb21HVFxuICAvLyBpZiB0aGUgc3Vic2V0IGhhcyBhIHByZXJlbGVhc2UsIHdlIG5lZWQgYSBjb21wYXJhdG9yIGluIHRoZSBzdXBlcnNldFxuICAvLyB3aXRoIHRoZSBzYW1lIHR1cGxlIGFuZCBhIHByZXJlbGVhc2UsIG9yIGl0J3Mgbm90IGEgc3Vic2V0XG4gIGxldCBuZWVkRG9tTFRQcmUgPSBsdCAmJlxuICAgICFvcHRpb25zLmluY2x1ZGVQcmVyZWxlYXNlICYmXG4gICAgbHQuc2VtdmVyLnByZXJlbGVhc2UubGVuZ3RoID8gbHQuc2VtdmVyIDogZmFsc2VcbiAgbGV0IG5lZWREb21HVFByZSA9IGd0ICYmXG4gICAgIW9wdGlvbnMuaW5jbHVkZVByZXJlbGVhc2UgJiZcbiAgICBndC5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGggPyBndC5zZW12ZXIgOiBmYWxzZVxuICAvLyBleGNlcHRpb246IDwxLjIuMy0wIGlzIHRoZSBzYW1lIGFzIDwxLjIuM1xuICBpZiAobmVlZERvbUxUUHJlICYmIG5lZWREb21MVFByZS5wcmVyZWxlYXNlLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgbHQub3BlcmF0b3IgPT09ICc8JyAmJiBuZWVkRG9tTFRQcmUucHJlcmVsZWFzZVswXSA9PT0gMCkge1xuICAgIG5lZWREb21MVFByZSA9IGZhbHNlXG4gIH1cblxuICBmb3IgKGNvbnN0IGMgb2YgZG9tKSB7XG4gICAgaGFzRG9tR1QgPSBoYXNEb21HVCB8fCBjLm9wZXJhdG9yID09PSAnPicgfHwgYy5vcGVyYXRvciA9PT0gJz49J1xuICAgIGhhc0RvbUxUID0gaGFzRG9tTFQgfHwgYy5vcGVyYXRvciA9PT0gJzwnIHx8IGMub3BlcmF0b3IgPT09ICc8PSdcbiAgICBpZiAoZ3QpIHtcbiAgICAgIGlmIChuZWVkRG9tR1RQcmUpIHtcbiAgICAgICAgaWYgKGMuc2VtdmVyLnByZXJlbGVhc2UgJiYgYy5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGggJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLm1ham9yID09PSBuZWVkRG9tR1RQcmUubWFqb3IgJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLm1pbm9yID09PSBuZWVkRG9tR1RQcmUubWlub3IgJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLnBhdGNoID09PSBuZWVkRG9tR1RQcmUucGF0Y2gpIHtcbiAgICAgICAgICBuZWVkRG9tR1RQcmUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYy5vcGVyYXRvciA9PT0gJz4nIHx8IGMub3BlcmF0b3IgPT09ICc+PScpIHtcbiAgICAgICAgaGlnaGVyID0gaGlnaGVyR1QoZ3QsIGMsIG9wdGlvbnMpXG4gICAgICAgIGlmIChoaWdoZXIgPT09IGMgJiYgaGlnaGVyICE9PSBndCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGd0Lm9wZXJhdG9yID09PSAnPj0nICYmICFzYXRpc2ZpZXMoZ3Quc2VtdmVyLCBTdHJpbmcoYyksIG9wdGlvbnMpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobHQpIHtcbiAgICAgIGlmIChuZWVkRG9tTFRQcmUpIHtcbiAgICAgICAgaWYgKGMuc2VtdmVyLnByZXJlbGVhc2UgJiYgYy5zZW12ZXIucHJlcmVsZWFzZS5sZW5ndGggJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLm1ham9yID09PSBuZWVkRG9tTFRQcmUubWFqb3IgJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLm1pbm9yID09PSBuZWVkRG9tTFRQcmUubWlub3IgJiZcbiAgICAgICAgICAgIGMuc2VtdmVyLnBhdGNoID09PSBuZWVkRG9tTFRQcmUucGF0Y2gpIHtcbiAgICAgICAgICBuZWVkRG9tTFRQcmUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYy5vcGVyYXRvciA9PT0gJzwnIHx8IGMub3BlcmF0b3IgPT09ICc8PScpIHtcbiAgICAgICAgbG93ZXIgPSBsb3dlckxUKGx0LCBjLCBvcHRpb25zKVxuICAgICAgICBpZiAobG93ZXIgPT09IGMgJiYgbG93ZXIgIT09IGx0KSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobHQub3BlcmF0b3IgPT09ICc8PScgJiYgIXNhdGlzZmllcyhsdC5zZW12ZXIsIFN0cmluZyhjKSwgb3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghYy5vcGVyYXRvciAmJiAobHQgfHwgZ3QpICYmIGd0bHRDb21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGVyZSB3YXMgYSA8IG9yID4sIGFuZCBub3RoaW5nIGluIHRoZSBkb20sIHRoZW4gbXVzdCBiZSBmYWxzZVxuICAvLyBVTkxFU1MgaXQgd2FzIGxpbWl0ZWQgYnkgYW5vdGhlciByYW5nZSBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uLlxuICAvLyBFZywgPjEuMC4wIDwxLjAuMSBpcyBzdGlsbCBhIHN1YnNldCBvZiA8Mi4wLjBcbiAgaWYgKGd0ICYmIGhhc0RvbUxUICYmICFsdCAmJiBndGx0Q29tcCAhPT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGx0ICYmIGhhc0RvbUdUICYmICFndCAmJiBndGx0Q29tcCAhPT0gMCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gd2UgbmVlZGVkIGEgcHJlcmVsZWFzZSByYW5nZSBpbiBhIHNwZWNpZmljIHR1cGxlLCBidXQgZGlkbid0IGdldCBvbmVcbiAgLy8gdGhlbiB0aGlzIGlzbid0IGEgc3Vic2V0LiAgZWcgPj0xLjIuMy1wcmUgaXMgbm90IGEgc3Vic2V0IG9mID49MS4wLjAsXG4gIC8vIGJlY2F1c2UgaXQgaW5jbHVkZXMgcHJlcmVsZWFzZXMgaW4gdGhlIDEuMi4zIHR1cGxlXG4gIGlmIChuZWVkRG9tR1RQcmUgfHwgbmVlZERvbUxUUHJlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vLyA+PTEuMi4zIGlzIGxvd2VyIHRoYW4gPjEuMi4zXG5jb25zdCBoaWdoZXJHVCA9IChhLCBiLCBvcHRpb25zKSA9PiB7XG4gIGlmICghYSkge1xuICAgIHJldHVybiBiXG4gIH1cbiAgY29uc3QgY29tcCA9IGNvbXBhcmUoYS5zZW12ZXIsIGIuc2VtdmVyLCBvcHRpb25zKVxuICByZXR1cm4gY29tcCA+IDAgPyBhXG4gICAgOiBjb21wIDwgMCA/IGJcbiAgICA6IGIub3BlcmF0b3IgPT09ICc+JyAmJiBhLm9wZXJhdG9yID09PSAnPj0nID8gYlxuICAgIDogYVxufVxuXG4vLyA8PTEuMi4zIGlzIGhpZ2hlciB0aGFuIDwxLjIuM1xuY29uc3QgbG93ZXJMVCA9IChhLCBiLCBvcHRpb25zKSA9PiB7XG4gIGlmICghYSkge1xuICAgIHJldHVybiBiXG4gIH1cbiAgY29uc3QgY29tcCA9IGNvbXBhcmUoYS5zZW12ZXIsIGIuc2VtdmVyLCBvcHRpb25zKVxuICByZXR1cm4gY29tcCA8IDAgPyBhXG4gICAgOiBjb21wID4gMCA/IGJcbiAgICA6IGIub3BlcmF0b3IgPT09ICc8JyAmJiBhLm9wZXJhdG9yID09PSAnPD0nID8gYlxuICAgIDogYVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN1YnNldFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/subset.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/to-comparators.js":
/*!******************************************************!*\
!*** ./node_modules/semver/ranges/to-comparators.js ***!
\******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy90by1jb21wYXJhdG9ycy5qcyIsIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsZ0VBQWtCOztBQUV4QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy90by1jb21wYXJhdG9ycy5qcz9lMDA3Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFJhbmdlID0gcmVxdWlyZSgnLi4vY2xhc3Nlcy9yYW5nZScpXG5cbi8vIE1vc3RseSBqdXN0IGZvciB0ZXN0aW5nIGFuZCBsZWdhY3kgQVBJIHJlYXNvbnNcbmNvbnN0IHRvQ29tcGFyYXRvcnMgPSAocmFuZ2UsIG9wdGlvbnMpID0+XG4gIG5ldyBSYW5nZShyYW5nZSwgb3B0aW9ucykuc2V0XG4gICAgLm1hcChjb21wID0+IGNvbXAubWFwKGMgPT4gYy52YWx1ZSkuam9pbignICcpLnRyaW0oKS5zcGxpdCgnICcpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvQ29tcGFyYXRvcnNcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/to-comparators.js\n"));
/***/ }),
/***/ "./node_modules/semver/ranges/valid.js":
/*!*********************************************!*\
!*** ./node_modules/semver/ranges/valid.js ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("const Range = __webpack_require__(/*! ../classes/range */ \"./node_modules/semver/classes/range.js\")\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2VtdmVyL3Jhbmdlcy92YWxpZC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFPLENBQUMsZ0VBQWtCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3NlbXZlci9yYW5nZXMvdmFsaWQuanM/YTVkMyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBSYW5nZSA9IHJlcXVpcmUoJy4uL2NsYXNzZXMvcmFuZ2UnKVxuY29uc3QgdmFsaWRSYW5nZSA9IChyYW5nZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIC8vIFJldHVybiAnKicgaW5zdGVhZCBvZiAnJyBzbyB0aGF0IHRydXRoaW5lc3Mgd29ya3MuXG4gICAgLy8gVGhpcyB3aWxsIHRocm93IGlmIGl0J3MgaW52YWxpZCBhbnl3YXlcbiAgICByZXR1cm4gbmV3IFJhbmdlKHJhbmdlLCBvcHRpb25zKS5yYW5nZSB8fCAnKidcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlkUmFuZ2VcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/semver/ranges/valid.js\n"));
/***/ }),
/***/ "./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js":
/*!**********************************************************************************************!*\
!*** ./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n {\n if (!didWarnOld18Alpha) {\n if (React.startTransition !== undefined) {\n didWarnOld18Alpha = true;\n\n error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n }\n }\n } // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n\n\n var value = getSnapshot();\n\n {\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n\n if (!objectIs(value, cachedValue)) {\n error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n didWarnUncachedGetSnapshot = true;\n }\n }\n } // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n\n\n var _useState = useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n\n\n useLayoutEffect(function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n\n var handleStoreChange = function () {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }; // Subscribe to the store and return a clean-up function.\n\n\n return subscribe(handleStoreChange);\n }, [subscribe]);\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n var prevValue = inst.value;\n\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0uZGV2ZWxvcG1lbnQuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViLElBQUksSUFBcUM7QUFDekM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixtQkFBTyxDQUFDLDRDQUFPOztBQUVyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUcsZUFBZTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLGtEQUFrRDtBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxLQUFLO0FBQ3JEOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPOzs7QUFHUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcz8zZTlhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHVzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0uZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgJ3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG5pZiAoXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0ID09PVxuICAgICdmdW5jdGlvbidcbikge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0KG5ldyBFcnJvcigpKTtcbn1cbiAgICAgICAgICB2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcblxuZnVuY3Rpb24gZXJyb3IoZm9ybWF0KSB7XG4gIHtcbiAgICB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGxldmVsLCBmb3JtYXQsIGFyZ3MpIHtcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXG4gIC8vIHVwZGF0ZSBjb25zb2xlV2l0aFN0YWNrRGV2Lnd3dy5qcyBhcyB3ZWxsLlxuICB7XG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuICAgIHZhciBzdGFjayA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUuZ2V0U3RhY2tBZGRlbmR1bSgpO1xuXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xuICAgICAgZm9ybWF0ICs9ICclcyc7XG4gICAgICBhcmdzID0gYXJncy5jb25jYXQoW3N0YWNrXSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cblxuXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfSk7IC8vIENhcmVmdWw6IFJOIGN1cnJlbnRseSBkZXBlbmRzIG9uIHRoaXMgcHJlZml4XG5cbiAgICBhcmdzV2l0aEZvcm1hdC51bnNoaWZ0KCdXYXJuaW5nOiAnICsgZm9ybWF0KTsgLy8gV2UgaW50ZW50aW9uYWxseSBkb24ndCB1c2Ugc3ByZWFkIChvciAuYXBwbHkpIGRpcmVjdGx5IGJlY2F1c2UgaXRcbiAgICAvLyBicmVha3MgSUU5OiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEzNjEwXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xuXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZVtsZXZlbF0sIGNvbnNvbGUsIGFyZ3NXaXRoRm9ybWF0KTtcbiAgfVxufVxuXG4vKipcbiAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuICovXG5mdW5jdGlvbiBpcyh4LCB5KSB7XG4gIHJldHVybiB4ID09PSB5ICYmICh4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geSkgfHwgeCAhPT0geCAmJiB5ICE9PSB5IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gIDtcbn1cblxudmFyIG9iamVjdElzID0gdHlwZW9mIE9iamVjdC5pcyA9PT0gJ2Z1bmN0aW9uJyA/IE9iamVjdC5pcyA6IGlzO1xuXG4vLyBkaXNwYXRjaCBmb3IgQ29tbW9uSlMgaW50ZXJvcCBuYW1lZCBpbXBvcnRzLlxuXG52YXIgdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSxcbiAgICB1c2VFZmZlY3QgPSBSZWFjdC51c2VFZmZlY3QsXG4gICAgdXNlTGF5b3V0RWZmZWN0ID0gUmVhY3QudXNlTGF5b3V0RWZmZWN0LFxuICAgIHVzZURlYnVnVmFsdWUgPSBSZWFjdC51c2VEZWJ1Z1ZhbHVlO1xudmFyIGRpZFdhcm5PbGQxOEFscGhhID0gZmFsc2U7XG52YXIgZGlkV2FyblVuY2FjaGVkR2V0U25hcHNob3QgPSBmYWxzZTsgLy8gRGlzY2xhaW1lcjogVGhpcyBzaGltIGJyZWFrcyBtYW55IG9mIHRoZSBydWxlcyBvZiBSZWFjdCwgYW5kIG9ubHkgd29ya3Ncbi8vIGJlY2F1c2Ugb2YgYSB2ZXJ5IHBhcnRpY3VsYXIgc2V0IG9mIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGFzc3VtcHRpb25zXG4vLyAtLSBjaGFuZ2UgYW55IG9uZSBvZiB0aGVtIGFuZCBpdCB3aWxsIGJyZWFrLiBUaGUgbW9zdCBpbXBvcnRhbnQgYXNzdW1wdGlvblxuLy8gaXMgdGhhdCB1cGRhdGVzIGFyZSBhbHdheXMgc3luY2hyb25vdXMsIGJlY2F1c2UgY29uY3VycmVudCByZW5kZXJpbmcgaXNcbi8vIG9ubHkgYXZhaWxhYmxlIGluIHZlcnNpb25zIG9mIFJlYWN0IHRoYXQgYWxzbyBoYXZlIGEgYnVpbHQtaW5cbi8vIHVzZVN5bmNFeHRlcm5hbFN0b3JlIEFQSS4gQW5kIHdlIG9ubHkgdXNlIHRoaXMgc2hpbSB3aGVuIHRoZSBidWlsdC1pbiBBUElcbi8vIGRvZXMgbm90IGV4aXN0LlxuLy9cbi8vIERvIG5vdCBhc3N1bWUgdGhhdCB0aGUgY2xldmVyIGhhY2tzIHVzZWQgYnkgdGhpcyBob29rIGFsc28gd29yayBpbiBnZW5lcmFsLlxuLy8gVGhlIHBvaW50IG9mIHRoaXMgc2hpbSBpcyB0byByZXBsYWNlIHRoZSBuZWVkIGZvciBoYWNrcyBieSBvdGhlciBsaWJyYXJpZXMuXG5cbmZ1bmN0aW9uIHVzZVN5bmNFeHRlcm5hbFN0b3JlKHN1YnNjcmliZSwgZ2V0U25hcHNob3QsIC8vIE5vdGU6IFRoZSBzaGltIGRvZXMgbm90IHVzZSBnZXRTZXJ2ZXJTbmFwc2hvdCwgYmVjYXVzZSBwcmUtMTggdmVyc2lvbnMgb2Zcbi8vIFJlYWN0IGRvIG5vdCBleHBvc2UgYSB3YXkgdG8gY2hlY2sgaWYgd2UncmUgaHlkcmF0aW5nLiBTbyB1c2VycyBvZiB0aGUgc2hpbVxuLy8gd2lsbCBuZWVkIHRvIHRyYWNrIHRoYXQgdGhlbXNlbHZlcyBhbmQgcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlXG4vLyBmcm9tIGBnZXRTbmFwc2hvdGAuXG5nZXRTZXJ2ZXJTbmFwc2hvdCkge1xuICB7XG4gICAgaWYgKCFkaWRXYXJuT2xkMThBbHBoYSkge1xuICAgICAgaWYgKFJlYWN0LnN0YXJ0VHJhbnNpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRpZFdhcm5PbGQxOEFscGhhID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignWW91IGFyZSB1c2luZyBhbiBvdXRkYXRlZCwgcHJlLXJlbGVhc2UgYWxwaGEgb2YgUmVhY3QgMTggdGhhdCAnICsgJ2RvZXMgbm90IHN1cHBvcnQgdXNlU3luY0V4dGVybmFsU3RvcmUuIFRoZSAnICsgJ3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlIHNoaW0gd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuIFVwZ3JhZGUgJyArICd0byBhIG5ld2VyIHByZS1yZWxlYXNlLicpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBSZWFkIHRoZSBjdXJyZW50IHNuYXBzaG90IGZyb20gdGhlIHN0b3JlIG9uIGV2ZXJ5IHJlbmRlci4gQWdhaW4sIHRoaXNcbiAgLy8gYnJlYWtzIHRoZSBydWxlcyBvZiBSZWFjdCwgYW5kIG9ubHkgd29ya3MgaGVyZSBiZWNhdXNlIG9mIHNwZWNpZmljXG4gIC8vIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIG1vc3QgaW1wb3J0YW50bHkgdGhhdCB1cGRhdGVzIGFyZVxuICAvLyBhbHdheXMgc3luY2hyb25vdXMuXG5cblxuICB2YXIgdmFsdWUgPSBnZXRTbmFwc2hvdCgpO1xuXG4gIHtcbiAgICBpZiAoIWRpZFdhcm5VbmNhY2hlZEdldFNuYXBzaG90KSB7XG4gICAgICB2YXIgY2FjaGVkVmFsdWUgPSBnZXRTbmFwc2hvdCgpO1xuXG4gICAgICBpZiAoIW9iamVjdElzKHZhbHVlLCBjYWNoZWRWYWx1ZSkpIHtcbiAgICAgICAgZXJyb3IoJ1RoZSByZXN1bHQgb2YgZ2V0U25hcHNob3Qgc2hvdWxkIGJlIGNhY2hlZCB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wJyk7XG5cbiAgICAgICAgZGlkV2FyblVuY2FjaGVkR2V0U25hcHNob3QgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBCZWNhdXNlIHVwZGF0ZXMgYXJlIHN5bmNocm9ub3VzLCB3ZSBkb24ndCBxdWV1ZSB0aGVtLiBJbnN0ZWFkIHdlIGZvcmNlIGFcbiAgLy8gcmUtcmVuZGVyIHdoZW5ldmVyIHRoZSBzdWJzY3JpYmVkIHN0YXRlIGNoYW5nZXMgYnkgdXBkYXRpbmcgYW4gc29tZVxuICAvLyBhcmJpdHJhcnkgdXNlU3RhdGUgaG9vay4gVGhlbiwgZHVyaW5nIHJlbmRlciwgd2UgY2FsbCBnZXRTbmFwc2hvdCB0byByZWFkXG4gIC8vIHRoZSBjdXJyZW50IHZhbHVlLlxuICAvL1xuICAvLyBCZWNhdXNlIHdlIGRvbid0IGFjdHVhbGx5IHVzZSB0aGUgc3RhdGUgcmV0dXJuZWQgYnkgdGhlIHVzZVN0YXRlIGhvb2ssIHdlXG4gIC8vIGNhbiBzYXZlIGEgYml0IG9mIG1lbW9yeSBieSBzdG9yaW5nIG90aGVyIHN0dWZmIGluIHRoYXQgc2xvdC5cbiAgLy9cbiAgLy8gVG8gaW1wbGVtZW50IHRoZSBlYXJseSBiYWlsb3V0LCB3ZSBuZWVkIHRvIHRyYWNrIHNvbWUgdGhpbmdzIG9uIGEgbXV0YWJsZVxuICAvLyBvYmplY3QuIFVzdWFsbHksIHdlIHdvdWxkIHB1dCB0aGF0IGluIGEgdXNlUmVmIGhvb2ssIGJ1dCB3ZSBjYW4gc3Rhc2ggaXQgaW5cbiAgLy8gb3VyIHVzZVN0YXRlIGhvb2sgaW5zdGVhZC5cbiAgLy9cbiAgLy8gVG8gZm9yY2UgYSByZS1yZW5kZXIsIHdlIGNhbGwgZm9yY2VVcGRhdGUoe2luc3R9KS4gVGhhdCB3b3JrcyBiZWNhdXNlIHRoZVxuICAvLyBuZXcgb2JqZWN0IGFsd2F5cyBmYWlscyBhbiBlcXVhbGl0eSBjaGVjay5cblxuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7XG4gICAgaW5zdDoge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZ2V0U25hcHNob3Q6IGdldFNuYXBzaG90XG4gICAgfVxuICB9KSxcbiAgICAgIGluc3QgPSBfdXNlU3RhdGVbMF0uaW5zdCxcbiAgICAgIGZvcmNlVXBkYXRlID0gX3VzZVN0YXRlWzFdOyAvLyBUcmFjayB0aGUgbGF0ZXN0IGdldFNuYXBzaG90IGZ1bmN0aW9uIHdpdGggYSByZWYuIFRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZFxuICAvLyBpbiB0aGUgbGF5b3V0IHBoYXNlIHNvIHdlIGNhbiBhY2Nlc3MgaXQgZHVyaW5nIHRoZSB0ZWFyaW5nIGNoZWNrIHRoYXRcbiAgLy8gaGFwcGVucyBvbiBzdWJzY3JpYmUuXG5cblxuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGluc3QudmFsdWUgPSB2YWx1ZTtcbiAgICBpbnN0LmdldFNuYXBzaG90ID0gZ2V0U25hcHNob3Q7IC8vIFdoZW5ldmVyIGdldFNuYXBzaG90IG9yIHN1YnNjcmliZSBjaGFuZ2VzLCB3ZSBuZWVkIHRvIGNoZWNrIGluIHRoZVxuICAgIC8vIGNvbW1pdCBwaGFzZSBpZiB0aGVyZSB3YXMgYW4gaW50ZXJsZWF2ZWQgbXV0YXRpb24uIEluIGNvbmN1cnJlbnQgbW9kZVxuICAgIC8vIHRoaXMgY2FuIGhhcHBlbiBhbGwgdGhlIHRpbWUsIGJ1dCBldmVuIGluIHN5bmNocm9ub3VzIG1vZGUsIGFuIGVhcmxpZXJcbiAgICAvLyBlZmZlY3QgbWF5IGhhdmUgbXV0YXRlZCB0aGUgc3RvcmUuXG5cbiAgICBpZiAoY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSkge1xuICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXIuXG4gICAgICBmb3JjZVVwZGF0ZSh7XG4gICAgICAgIGluc3Q6IGluc3RcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3N1YnNjcmliZSwgdmFsdWUsIGdldFNuYXBzaG90XSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ2hlY2sgZm9yIGNoYW5nZXMgcmlnaHQgYmVmb3JlIHN1YnNjcmliaW5nLiBTdWJzZXF1ZW50IGNoYW5nZXMgd2lsbCBiZVxuICAgIC8vIGRldGVjdGVkIGluIHRoZSBzdWJzY3JpcHRpb24gaGFuZGxlci5cbiAgICBpZiAoY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSkge1xuICAgICAgLy8gRm9yY2UgYSByZS1yZW5kZXIuXG4gICAgICBmb3JjZVVwZGF0ZSh7XG4gICAgICAgIGluc3Q6IGluc3RcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBoYW5kbGVTdG9yZUNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRPRE86IEJlY2F1c2UgdGhlcmUgaXMgbm8gY3Jvc3MtcmVuZGVyZXIgQVBJIGZvciBiYXRjaGluZyB1cGRhdGVzLCBpdCdzXG4gICAgICAvLyB1cCB0byB0aGUgY29uc3VtZXIgb2YgdGhpcyBsaWJyYXJ5IHRvIHdyYXAgdGhlaXIgc3Vic2NyaXB0aW9uIGV2ZW50XG4gICAgICAvLyB3aXRoIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzLiBTaG91bGQgd2UgdHJ5IHRvIGRldGVjdCB3aGVuIHRoaXMgaXNuJ3RcbiAgICAgIC8vIHRoZSBjYXNlIGFuZCBwcmludCBhIHdhcm5pbmcgaW4gZGV2ZWxvcG1lbnQ/XG4gICAgICAvLyBUaGUgc3RvcmUgY2hhbmdlZC4gQ2hlY2sgaWYgdGhlIHNuYXBzaG90IGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgdGltZSB3ZVxuICAgICAgLy8gcmVhZCBmcm9tIHRoZSBzdG9yZS5cbiAgICAgIGlmIChjaGVja0lmU25hcHNob3RDaGFuZ2VkKGluc3QpKSB7XG4gICAgICAgIC8vIEZvcmNlIGEgcmUtcmVuZGVyLlxuICAgICAgICBmb3JjZVVwZGF0ZSh7XG4gICAgICAgICAgaW5zdDogaW5zdFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9OyAvLyBTdWJzY3JpYmUgdG8gdGhlIHN0b3JlIGFuZCByZXR1cm4gYSBjbGVhbi11cCBmdW5jdGlvbi5cblxuXG4gICAgcmV0dXJuIHN1YnNjcmliZShoYW5kbGVTdG9yZUNoYW5nZSk7XG4gIH0sIFtzdWJzY3JpYmVdKTtcbiAgdXNlRGVidWdWYWx1ZSh2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSB7XG4gIHZhciBsYXRlc3RHZXRTbmFwc2hvdCA9IGluc3QuZ2V0U25hcHNob3Q7XG4gIHZhciBwcmV2VmFsdWUgPSBpbnN0LnZhbHVlO1xuXG4gIHRyeSB7XG4gICAgdmFyIG5leHRWYWx1ZSA9IGxhdGVzdEdldFNuYXBzaG90KCk7XG4gICAgcmV0dXJuICFvYmplY3RJcyhwcmV2VmFsdWUsIG5leHRWYWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmUkMShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCkge1xuICAvLyBOb3RlOiBUaGUgc2hpbSBkb2VzIG5vdCB1c2UgZ2V0U2VydmVyU25hcHNob3QsIGJlY2F1c2UgcHJlLTE4IHZlcnNpb25zIG9mXG4gIC8vIFJlYWN0IGRvIG5vdCBleHBvc2UgYSB3YXkgdG8gY2hlY2sgaWYgd2UncmUgaHlkcmF0aW5nLiBTbyB1c2VycyBvZiB0aGUgc2hpbVxuICAvLyB3aWxsIG5lZWQgdG8gdHJhY2sgdGhhdCB0aGVtc2VsdmVzIGFuZCByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWVcbiAgLy8gZnJvbSBgZ2V0U25hcHNob3RgLlxuICByZXR1cm4gZ2V0U25hcHNob3QoKTtcbn1cblxudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpO1xuXG52YXIgaXNTZXJ2ZXJFbnZpcm9ubWVudCA9ICFjYW5Vc2VET007XG5cbnZhciBzaGltID0gaXNTZXJ2ZXJFbnZpcm9ubWVudCA/IHVzZVN5bmNFeHRlcm5hbFN0b3JlJDEgOiB1c2VTeW5jRXh0ZXJuYWxTdG9yZTtcbnZhciB1c2VTeW5jRXh0ZXJuYWxTdG9yZSQyID0gUmVhY3QudXNlU3luY0V4dGVybmFsU3RvcmUgIT09IHVuZGVmaW5lZCA/IFJlYWN0LnVzZVN5bmNFeHRlcm5hbFN0b3JlIDogc2hpbTtcblxuZXhwb3J0cy51c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlJDI7XG4gICAgICAgICAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuaWYgKFxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdG9wID09PVxuICAgICdmdW5jdGlvbidcbikge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0b3AobmV3IEVycm9yKCkpO1xufVxuICAgICAgICBcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\n"));
/***/ }),
/***/ "./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js":
/*!************************************************************************************************************!*\
!*** ./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***!
\************************************************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nvar shim = __webpack_require__(/*! use-sync-external-store/shim */ \"./node_modules/use-sync-external-store/shim/index.js\");\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n // Use this to track the rendered snapshot.\n var instRef = useRef(null);\n var inst;\n\n if (instRef.current === null) {\n inst = {\n hasValue: false,\n value: null\n };\n instRef.current = inst;\n } else {\n inst = instRef.current;\n }\n\n var _useMemo = useMemo(function () {\n // Track the memoized state using closure variables that are local to this\n // memoized instance of a getSnapshot function. Intentionally not using a\n // useRef hook, because that state would be shared across all concurrent\n // copies of the hook/component.\n var hasMemo = false;\n var memoizedSnapshot;\n var memoizedSelection;\n\n var memoizedSelector = function (nextSnapshot) {\n if (!hasMemo) {\n // The first time the hook is called, there is no memoized result.\n hasMemo = true;\n memoizedSnapshot = nextSnapshot;\n\n var _nextSelection = selector(nextSnapshot);\n\n if (isEqual !== undefined) {\n // Even if the selector has changed, the currently rendered selection\n // may be equal to the new selection. We should attempt to reuse the\n // current value if possible, to preserve downstream memoizations.\n if (inst.hasValue) {\n var currentSelection = inst.value;\n\n if (isEqual(currentSelection, _nextSelection)) {\n memoizedSelection = currentSelection;\n return currentSelection;\n }\n }\n }\n\n memoizedSelection = _nextSelection;\n return _nextSelection;\n } // We may be able to reuse the previous invocation's result.\n\n\n // We may be able to reuse the previous invocation's result.\n var prevSnapshot = memoizedSnapshot;\n var prevSelection = memoizedSelection;\n\n if (objectIs(prevSnapshot, nextSnapshot)) {\n // The snapshot is the same as last time. Reuse the previous selection.\n return prevSelection;\n } // The snapshot has changed, so we need to compute a new selection.\n\n\n // The snapshot has changed, so we need to compute a new selection.\n var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n\n // If a custom isEqual function is provided, use that to check if the data\n // has changed. If it hasn't, return the previous selection. That signals\n // to React that the selections are conceptually equal, and we can bail\n // out of rendering.\n if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n return prevSelection;\n }\n\n memoizedSnapshot = nextSnapshot;\n memoizedSelection = nextSelection;\n return nextSelection;\n }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n // Assigning this to a constant so that Flow knows it can't change.\n var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n var getSnapshotWithSelector = function () {\n return memoizedSelector(getSnapshot());\n };\n\n var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n };\n return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n getSelection = _useMemo[0],\n getServerSelection = _useMemo[1];\n\n var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n useEffect(function () {\n inst.hasValue = true;\n inst.value = value;\n }, [value]);\n useDebugValue(value);\n return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0vd2l0aC1zZWxlY3Rvci5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsSUFBSSxJQUFxQztBQUN6Qzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsNENBQU87QUFDckMsV0FBVyxtQkFBTyxDQUFDLDBGQUE4Qjs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFROzs7QUFHUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7O0FBR1I7QUFDQSxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87OztBQUdQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltL3dpdGgtc2VsZWN0b3IuZGV2ZWxvcG1lbnQuanM/NzVhMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiB1c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltL3dpdGgtc2VsZWN0b3IuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgJ3VzZSBzdHJpY3QnO1xuXG4vKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG5pZiAoXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmXG4gIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0ID09PVxuICAgICdmdW5jdGlvbidcbikge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18ucmVnaXN0ZXJJbnRlcm5hbE1vZHVsZVN0YXJ0KG5ldyBFcnJvcigpKTtcbn1cbiAgICAgICAgICB2YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCd1c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltJyk7XG5cbi8qKlxuICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gKi9cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgcmV0dXJuIHggPT09IHkgJiYgKHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5KSB8fCB4ICE9PSB4ICYmIHkgIT09IHkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgO1xufVxuXG52YXIgb2JqZWN0SXMgPSB0eXBlb2YgT2JqZWN0LmlzID09PSAnZnVuY3Rpb24nID8gT2JqZWN0LmlzIDogaXM7XG5cbnZhciB1c2VTeW5jRXh0ZXJuYWxTdG9yZSA9IHNoaW0udXNlU3luY0V4dGVybmFsU3RvcmU7XG5cbi8vIGZvciBDb21tb25KUyBpbnRlcm9wLlxuXG52YXIgdXNlUmVmID0gUmVhY3QudXNlUmVmLFxuICAgIHVzZUVmZmVjdCA9IFJlYWN0LnVzZUVmZmVjdCxcbiAgICB1c2VNZW1vID0gUmVhY3QudXNlTWVtbyxcbiAgICB1c2VEZWJ1Z1ZhbHVlID0gUmVhY3QudXNlRGVidWdWYWx1ZTsgLy8gU2FtZSBhcyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSwgYnV0IHN1cHBvcnRzIHNlbGVjdG9yIGFuZCBpc0VxdWFsIGFyZ3VtZW50cy5cblxuZnVuY3Rpb24gdXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3Ioc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QsIHNlbGVjdG9yLCBpc0VxdWFsKSB7XG4gIC8vIFVzZSB0aGlzIHRvIHRyYWNrIHRoZSByZW5kZXJlZCBzbmFwc2hvdC5cbiAgdmFyIGluc3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBpbnN0O1xuXG4gIGlmIChpbnN0UmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICBpbnN0ID0ge1xuICAgICAgaGFzVmFsdWU6IGZhbHNlLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9O1xuICAgIGluc3RSZWYuY3VycmVudCA9IGluc3Q7XG4gIH0gZWxzZSB7XG4gICAgaW5zdCA9IGluc3RSZWYuY3VycmVudDtcbiAgfVxuXG4gIHZhciBfdXNlTWVtbyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIC8vIFRyYWNrIHRoZSBtZW1vaXplZCBzdGF0ZSB1c2luZyBjbG9zdXJlIHZhcmlhYmxlcyB0aGF0IGFyZSBsb2NhbCB0byB0aGlzXG4gICAgLy8gbWVtb2l6ZWQgaW5zdGFuY2Ugb2YgYSBnZXRTbmFwc2hvdCBmdW5jdGlvbi4gSW50ZW50aW9uYWxseSBub3QgdXNpbmcgYVxuICAgIC8vIHVzZVJlZiBob29rLCBiZWNhdXNlIHRoYXQgc3RhdGUgd291bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgY29uY3VycmVudFxuICAgIC8vIGNvcGllcyBvZiB0aGUgaG9vay9jb21wb25lbnQuXG4gICAgdmFyIGhhc01lbW8gPSBmYWxzZTtcbiAgICB2YXIgbWVtb2l6ZWRTbmFwc2hvdDtcbiAgICB2YXIgbWVtb2l6ZWRTZWxlY3Rpb247XG5cbiAgICB2YXIgbWVtb2l6ZWRTZWxlY3RvciA9IGZ1bmN0aW9uIChuZXh0U25hcHNob3QpIHtcbiAgICAgIGlmICghaGFzTWVtbykge1xuICAgICAgICAvLyBUaGUgZmlyc3QgdGltZSB0aGUgaG9vayBpcyBjYWxsZWQsIHRoZXJlIGlzIG5vIG1lbW9pemVkIHJlc3VsdC5cbiAgICAgICAgaGFzTWVtbyA9IHRydWU7XG4gICAgICAgIG1lbW9pemVkU25hcHNob3QgPSBuZXh0U25hcHNob3Q7XG5cbiAgICAgICAgdmFyIF9uZXh0U2VsZWN0aW9uID0gc2VsZWN0b3IobmV4dFNuYXBzaG90KTtcblxuICAgICAgICBpZiAoaXNFcXVhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gRXZlbiBpZiB0aGUgc2VsZWN0b3IgaGFzIGNoYW5nZWQsIHRoZSBjdXJyZW50bHkgcmVuZGVyZWQgc2VsZWN0aW9uXG4gICAgICAgICAgLy8gbWF5IGJlIGVxdWFsIHRvIHRoZSBuZXcgc2VsZWN0aW9uLiBXZSBzaG91bGQgYXR0ZW1wdCB0byByZXVzZSB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IHZhbHVlIGlmIHBvc3NpYmxlLCB0byBwcmVzZXJ2ZSBkb3duc3RyZWFtIG1lbW9pemF0aW9ucy5cbiAgICAgICAgICBpZiAoaW5zdC5oYXNWYWx1ZSkge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBpbnN0LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoaXNFcXVhbChjdXJyZW50U2VsZWN0aW9uLCBfbmV4dFNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgbWVtb2l6ZWRTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uO1xuICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNlbGVjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBtZW1vaXplZFNlbGVjdGlvbiA9IF9uZXh0U2VsZWN0aW9uO1xuICAgICAgICByZXR1cm4gX25leHRTZWxlY3Rpb247XG4gICAgICB9IC8vIFdlIG1heSBiZSBhYmxlIHRvIHJldXNlIHRoZSBwcmV2aW91cyBpbnZvY2F0aW9uJ3MgcmVzdWx0LlxuXG5cbiAgICAgIC8vIFdlIG1heSBiZSBhYmxlIHRvIHJldXNlIHRoZSBwcmV2aW91cyBpbnZvY2F0aW9uJ3MgcmVzdWx0LlxuICAgICAgdmFyIHByZXZTbmFwc2hvdCA9IG1lbW9pemVkU25hcHNob3Q7XG4gICAgICB2YXIgcHJldlNlbGVjdGlvbiA9IG1lbW9pemVkU2VsZWN0aW9uO1xuXG4gICAgICBpZiAob2JqZWN0SXMocHJldlNuYXBzaG90LCBuZXh0U25hcHNob3QpKSB7XG4gICAgICAgIC8vIFRoZSBzbmFwc2hvdCBpcyB0aGUgc2FtZSBhcyBsYXN0IHRpbWUuIFJldXNlIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24uXG4gICAgICAgIHJldHVybiBwcmV2U2VsZWN0aW9uO1xuICAgICAgfSAvLyBUaGUgc25hcHNob3QgaGFzIGNoYW5nZWQsIHNvIHdlIG5lZWQgdG8gY29tcHV0ZSBhIG5ldyBzZWxlY3Rpb24uXG5cblxuICAgICAgLy8gVGhlIHNuYXBzaG90IGhhcyBjaGFuZ2VkLCBzbyB3ZSBuZWVkIHRvIGNvbXB1dGUgYSBuZXcgc2VsZWN0aW9uLlxuICAgICAgdmFyIG5leHRTZWxlY3Rpb24gPSBzZWxlY3RvcihuZXh0U25hcHNob3QpOyAvLyBJZiBhIGN1c3RvbSBpc0VxdWFsIGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCB1c2UgdGhhdCB0byBjaGVjayBpZiB0aGUgZGF0YVxuICAgICAgLy8gaGFzIGNoYW5nZWQuIElmIGl0IGhhc24ndCwgcmV0dXJuIHRoZSBwcmV2aW91cyBzZWxlY3Rpb24uIFRoYXQgc2lnbmFsc1xuICAgICAgLy8gdG8gUmVhY3QgdGhhdCB0aGUgc2VsZWN0aW9ucyBhcmUgY29uY2VwdHVhbGx5IGVxdWFsLCBhbmQgd2UgY2FuIGJhaWxcbiAgICAgIC8vIG91dCBvZiByZW5kZXJpbmcuXG5cbiAgICAgIC8vIElmIGEgY3VzdG9tIGlzRXF1YWwgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIHVzZSB0aGF0IHRvIGNoZWNrIGlmIHRoZSBkYXRhXG4gICAgICAvLyBoYXMgY2hhbmdlZC4gSWYgaXQgaGFzbid0LCByZXR1cm4gdGhlIHByZXZpb3VzIHNlbGVjdGlvbi4gVGhhdCBzaWduYWxzXG4gICAgICAvLyB0byBSZWFjdCB0aGF0IHRoZSBzZWxlY3Rpb25zIGFyZSBjb25jZXB0dWFsbHkgZXF1YWwsIGFuZCB3ZSBjYW4gYmFpbFxuICAgICAgLy8gb3V0IG9mIHJlbmRlcmluZy5cbiAgICAgIGlmIChpc0VxdWFsICE9PSB1bmRlZmluZWQgJiYgaXNFcXVhbChwcmV2U2VsZWN0aW9uLCBuZXh0U2VsZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gcHJldlNlbGVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgbWVtb2l6ZWRTbmFwc2hvdCA9IG5leHRTbmFwc2hvdDtcbiAgICAgIG1lbW9pemVkU2VsZWN0aW9uID0gbmV4dFNlbGVjdGlvbjtcbiAgICAgIHJldHVybiBuZXh0U2VsZWN0aW9uO1xuICAgIH07IC8vIEFzc2lnbmluZyB0aGlzIHRvIGEgY29uc3RhbnQgc28gdGhhdCBGbG93IGtub3dzIGl0IGNhbid0IGNoYW5nZS5cblxuXG4gICAgLy8gQXNzaWduaW5nIHRoaXMgdG8gYSBjb25zdGFudCBzbyB0aGF0IEZsb3cga25vd3MgaXQgY2FuJ3QgY2hhbmdlLlxuICAgIHZhciBtYXliZUdldFNlcnZlclNuYXBzaG90ID0gZ2V0U2VydmVyU25hcHNob3QgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBnZXRTZXJ2ZXJTbmFwc2hvdDtcblxuICAgIHZhciBnZXRTbmFwc2hvdFdpdGhTZWxlY3RvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBtZW1vaXplZFNlbGVjdG9yKGdldFNuYXBzaG90KCkpO1xuICAgIH07XG5cbiAgICB2YXIgZ2V0U2VydmVyU25hcHNob3RXaXRoU2VsZWN0b3IgPSBtYXliZUdldFNlcnZlclNuYXBzaG90ID09PSBudWxsID8gdW5kZWZpbmVkIDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG1lbW9pemVkU2VsZWN0b3IobWF5YmVHZXRTZXJ2ZXJTbmFwc2hvdCgpKTtcbiAgICB9O1xuICAgIHJldHVybiBbZ2V0U25hcHNob3RXaXRoU2VsZWN0b3IsIGdldFNlcnZlclNuYXBzaG90V2l0aFNlbGVjdG9yXTtcbiAgfSwgW2dldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCwgc2VsZWN0b3IsIGlzRXF1YWxdKSxcbiAgICAgIGdldFNlbGVjdGlvbiA9IF91c2VNZW1vWzBdLFxuICAgICAgZ2V0U2VydmVyU2VsZWN0aW9uID0gX3VzZU1lbW9bMV07XG5cbiAgdmFyIHZhbHVlID0gdXNlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTZWxlY3Rpb24sIGdldFNlcnZlclNlbGVjdGlvbik7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaW5zdC5oYXNWYWx1ZSA9IHRydWU7XG4gICAgaW5zdC52YWx1ZSA9IHZhbHVlO1xuICB9LCBbdmFsdWVdKTtcbiAgdXNlRGVidWdWYWx1ZSh2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0cy51c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yO1xuICAgICAgICAgIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbmlmIChcbiAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5yZWdpc3RlckludGVybmFsTW9kdWxlU3RvcCA9PT1cbiAgICAnZnVuY3Rpb24nXG4pIHtcbiAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLnJlZ2lzdGVySW50ZXJuYWxNb2R1bGVTdG9wKG5ldyBFcnJvcigpKTtcbn1cbiAgICAgICAgXG4gIH0pKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js\n"));
/***/ }),
/***/ "./node_modules/use-sync-external-store/shim/index.js":
/*!************************************************************!*\
!*** ./node_modules/use-sync-external-store/shim/index.js ***!
\************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ \"./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsd0xBQThFO0FBQ2hGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL2luZGV4LmpzPzJlODciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/use-sync-external-store/shim/index.js\n"));
/***/ }),
/***/ "./node_modules/use-sync-external-store/shim/with-selector.js":
/*!********************************************************************!*\
!*** ./node_modules/use-sync-external-store/shim/with-selector.js ***!
\********************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ \"./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS93aXRoLXNlbGVjdG9yLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSxvTkFBNEY7QUFDOUYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvci5qcz9lMzNiIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2Nqcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS1zaGltL3dpdGgtc2VsZWN0b3IuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/use-sync-external-store/shim/with-selector.js\n"));
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js":
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
\************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _extends; }\n/* harmony export */ });\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBLG9CQUFvQixzQkFBc0I7QUFDMUM7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcz9jMjhjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICByZXR1cm4gX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAobikge1xuICAgIGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7XG4gICAgICB2YXIgdCA9IGFyZ3VtZW50c1tlXTtcbiAgICAgIGZvciAodmFyIHIgaW4gdCkgKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsIHIpICYmIChuW3JdID0gdFtyXSk7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9LCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuZXhwb3J0IHsgX2V4dGVuZHMgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/esm/extends.js\n"));
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
/*!*********************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
\*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _objectWithoutPropertiesLoose; }\n/* harmony export */ });\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanM/NmI5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShyLCBlKSB7XG4gIGlmIChudWxsID09IHIpIHJldHVybiB7fTtcbiAgdmFyIHQgPSB7fTtcbiAgZm9yICh2YXIgbiBpbiByKSBpZiAoe30uaGFzT3duUHJvcGVydHkuY2FsbChyLCBuKSkge1xuICAgIGlmIChlLmluY2x1ZGVzKG4pKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\n"));
/***/ }),
/***/ "./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs":
/*!*********************************************************************!*\
!*** ./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs ***!
\*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReducerType: function() { return /* binding */ ReducerType; },\n/* harmony export */ SHOULD_AUTOBATCH: function() { return /* binding */ SHOULD_AUTOBATCH; },\n/* harmony export */ TaskAbortError: function() { return /* binding */ TaskAbortError; },\n/* harmony export */ Tuple: function() { return /* binding */ Tuple; },\n/* harmony export */ addListener: function() { return /* binding */ addListener; },\n/* harmony export */ asyncThunkCreator: function() { return /* binding */ asyncThunkCreator; },\n/* harmony export */ autoBatchEnhancer: function() { return /* binding */ autoBatchEnhancer; },\n/* harmony export */ buildCreateSlice: function() { return /* binding */ buildCreateSlice; },\n/* harmony export */ clearAllListeners: function() { return /* binding */ clearAllListeners; },\n/* harmony export */ combineSlices: function() { return /* binding */ combineSlices; },\n/* harmony export */ configureStore: function() { return /* binding */ configureStore; },\n/* harmony export */ createAction: function() { return /* binding */ createAction; },\n/* harmony export */ createActionCreatorInvariantMiddleware: function() { return /* binding */ createActionCreatorInvariantMiddleware; },\n/* harmony export */ createAsyncThunk: function() { return /* binding */ createAsyncThunk; },\n/* harmony export */ createDraftSafeSelector: function() { return /* binding */ createDraftSafeSelector; },\n/* harmony export */ createDraftSafeSelectorCreator: function() { return /* binding */ createDraftSafeSelectorCreator; },\n/* harmony export */ createDynamicMiddleware: function() { return /* binding */ createDynamicMiddleware; },\n/* harmony export */ createEntityAdapter: function() { return /* binding */ createEntityAdapter; },\n/* harmony export */ createImmutableStateInvariantMiddleware: function() { return /* binding */ createImmutableStateInvariantMiddleware; },\n/* harmony export */ createListenerMiddleware: function() { return /* binding */ createListenerMiddleware; },\n/* harmony export */ createNextState: function() { return /* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.produce; },\n/* harmony export */ createReducer: function() { return /* binding */ createReducer; },\n/* harmony export */ createSelector: function() { return /* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_1__.createSelector; },\n/* harmony export */ createSelectorCreator: function() { return /* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_1__.createSelectorCreator; },\n/* harmony export */ createSerializableStateInvariantMiddleware: function() { return /* binding */ createSerializableStateInvariantMiddleware; },\n/* harmony export */ createSlice: function() { return /* binding */ createSlice; },\n/* harmony export */ current: function() { return /* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.current; },\n/* harmony export */ findNonSerializableValue: function() { return /* binding */ findNonSerializableValue; },\n/* harmony export */ formatProdErrorMessage: function() { return /* binding */ formatProdErrorMessage; },\n/* harmony export */ freeze: function() { return /* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.freeze; },\n/* harmony export */ isActionCreator: function() { return /* binding */ isActionCreator; },\n/* harmony export */ isAllOf: function() { return /* binding */ isAllOf; },\n/* harmony export */ isAnyOf: function() { return /* binding */ isAnyOf; },\n/* harmony export */ isAsyncThunkAction: function() { return /* binding */ isAsyncThunkAction; },\n/* harmony export */ isDraft: function() { return /* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.isDraft; },\n/* harmony export */ isFluxStandardAction: function() { return /* binding */ isFSA; },\n/* harmony export */ isFulfilled: function() { return /* binding */ isFulfilled; },\n/* harmony export */ isImmutableDefault: function() { return /* binding */ isImmutableDefault; },\n/* harmony export */ isPending: function() { return /* binding */ isPending; },\n/* harmony export */ isPlain: function() { return /* binding */ isPlain; },\n/* harmony export */ isRejected: function() { return /* binding */ isRejected; },\n/* harmony export */ isRejectedWithValue: function() { return /* binding */ isRejectedWithValue; },\n/* harmony export */ lruMemoize: function() { return /* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_1__.lruMemoize; },\n/* harmony export */ miniSerializeError: function() { return /* binding */ miniSerializeError; },\n/* harmony export */ nanoid: function() { return /* binding */ nanoid; },\n/* harmony export */ original: function() { return /* reexport safe */ immer__WEBPACK_IMPORTED_MODULE_2__.original; },\n/* harmony export */ prepareAutoBatched: function() { return /* binding */ prepareAutoBatched; },\n/* harmony export */ removeListener: function() { return /* binding */ removeListener; },\n/* harmony export */ unwrapResult: function() { return /* binding */ unwrapResult; },\n/* harmony export */ weakMapMemoize: function() { return /* reexport safe */ reselect__WEBPACK_IMPORTED_MODULE_1__.weakMapMemoize; }\n/* harmony export */ });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/dist/redux.mjs\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in redux__WEBPACK_IMPORTED_MODULE_0__) if([\"default\",\"ReducerType\",\"SHOULD_AUTOBATCH\",\"TaskAbortError\",\"Tuple\",\"addListener\",\"asyncThunkCreator\",\"autoBatchEnhancer\",\"buildCreateSlice\",\"clearAllListeners\",\"combineSlices\",\"configureStore\",\"createAction\",\"createActionCreatorInvariantMiddleware\",\"createAsyncThunk\",\"createDraftSafeSelector\",\"createDraftSafeSelectorCreator\",\"createDynamicMiddleware\",\"createEntityAdapter\",\"createImmutableStateInvariantMiddleware\",\"createListenerMiddleware\",\"createNextState\",\"createReducer\",\"createSelector\",\"createSelectorCreator\",\"createSerializableStateInvariantMiddleware\",\"createSlice\",\"current\",\"findNonSerializableValue\",\"formatProdErrorMessage\",\"freeze\",\"isActionCreator\",\"isAllOf\",\"isAnyOf\",\"isAsyncThunkAction\",\"isDraft\",\"isFluxStandardAction\",\"isFulfilled\",\"isImmutableDefault\",\"isPending\",\"isPlain\",\"isRejected\",\"isRejectedWithValue\",\"lruMemoize\",\"miniSerializeError\",\"nanoid\",\"original\",\"prepareAutoBatched\",\"removeListener\",\"unwrapResult\",\"weakMapMemoize\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return redux__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var immer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immer */ \"./node_modules/immer/dist/immer.mjs\");\n/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! reselect */ \"./node_modules/@reduxjs/toolkit/node_modules/reselect/dist/reselect.mjs\");\n/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-thunk */ \"./node_modules/redux-thunk/dist/redux-thunk.mjs\");\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n// src/index.ts\n\n\n\n\n// src/createDraftSafeSelector.ts\n\n\nvar createDraftSafeSelectorCreator = (...args) => {\n const createSelector2 = (0,reselect__WEBPACK_IMPORTED_MODULE_1__.createSelectorCreator)(...args);\n const createDraftSafeSelector2 = Object.assign((...args2) => {\n const selector = createSelector2(...args2);\n const wrappedSelector = (value, ...rest) => selector((0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(value) ? (0,immer__WEBPACK_IMPORTED_MODULE_2__.current)(value) : value, ...rest);\n Object.assign(wrappedSelector, selector);\n return wrappedSelector;\n }, {\n withTypes: () => createDraftSafeSelector2\n });\n return createDraftSafeSelector2;\n};\nvar createDraftSafeSelector = /* @__PURE__ */ createDraftSafeSelectorCreator(reselect__WEBPACK_IMPORTED_MODULE_1__.weakMapMemoize);\n\n// src/configureStore.ts\n\n\n// src/devtoolsExtension.ts\n\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function() {\n if (arguments.length === 0) return void 0;\n if (typeof arguments[0] === \"object\") return redux__WEBPACK_IMPORTED_MODULE_0__.compose;\n return redux__WEBPACK_IMPORTED_MODULE_0__.compose.apply(null, arguments);\n};\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function() {\n return function(noop3) {\n return noop3;\n };\n};\n\n// src/getDefaultMiddleware.ts\n\n\n// src/createAction.ts\n\n\n// src/tsHelpers.ts\nvar hasMatchFunction = (v) => {\n return v && typeof v.match === \"function\";\n};\n\n// src/createAction.ts\nfunction createAction(type, prepareAction) {\n function actionCreator(...args) {\n if (prepareAction) {\n let prepared = prepareAction(...args);\n if (!prepared) {\n throw new Error( false ? 0 : \"prepareAction did not return an object\");\n }\n return {\n type,\n payload: prepared.payload,\n ...\"meta\" in prepared && {\n meta: prepared.meta\n },\n ...\"error\" in prepared && {\n error: prepared.error\n }\n };\n }\n return {\n type,\n payload: args[0]\n };\n }\n actionCreator.toString = () => `${type}`;\n actionCreator.type = type;\n actionCreator.match = (action) => (0,redux__WEBPACK_IMPORTED_MODULE_0__.isAction)(action) && action.type === type;\n return actionCreator;\n}\nfunction isActionCreator(action) {\n return typeof action === \"function\" && \"type\" in action && // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\n hasMatchFunction(action);\n}\nfunction isFSA(action) {\n return (0,redux__WEBPACK_IMPORTED_MODULE_0__.isAction)(action) && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key) {\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\n}\n\n// src/actionCreatorInvariantMiddleware.ts\nfunction getMessage(type) {\n const splitType = type ? `${type}`.split(\"/\") : [];\n const actionName = splitType[splitType.length - 1] || \"actionCreator\";\n return `Detected an action creator with type \"${type || \"unknown\"}\" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \\`dispatch(${actionName}())\\` instead of \\`dispatch(${actionName})\\`. This is necessary even if the action has no payload.`;\n}\nfunction createActionCreatorInvariantMiddleware(options = {}) {\n if (false) {}\n const {\n isActionCreator: isActionCreator2 = isActionCreator\n } = options;\n return () => (next) => (action) => {\n if (isActionCreator2(action)) {\n console.warn(getMessage(action.type));\n }\n return next(action);\n };\n}\n\n// src/utils.ts\n\nfunction getTimeMeasureUtils(maxDelay, fnName) {\n let elapsed = 0;\n return {\n measureTime(fn) {\n const started = Date.now();\n try {\n return fn();\n } finally {\n const finished = Date.now();\n elapsed += finished - started;\n }\n },\n warnIfExceeded() {\n if (elapsed > maxDelay) {\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`);\n }\n }\n };\n}\nvar Tuple = class _Tuple extends Array {\n constructor(...items) {\n super(...items);\n Object.setPrototypeOf(this, _Tuple.prototype);\n }\n static get [Symbol.species]() {\n return _Tuple;\n }\n concat(...arr) {\n return super.concat.apply(this, arr);\n }\n prepend(...arr) {\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new _Tuple(...arr[0].concat(this));\n }\n return new _Tuple(...arr.concat(this));\n }\n};\nfunction freezeDraftable(val) {\n return (0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraftable)(val) ? (0,immer__WEBPACK_IMPORTED_MODULE_2__.produce)(val, () => {\n }) : val;\n}\nfunction getOrInsertComputed(map, key, compute) {\n if (map.has(key)) return map.get(key);\n return map.set(key, compute(key)).get(key);\n}\n\n// src/immutableStateInvariantMiddleware.ts\nfunction isImmutableDefault(value) {\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\n}\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\n const trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\n return {\n detectMutations() {\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\n }\n };\n}\nfunction trackProperties(isImmutable, ignorePaths = [], obj, path = \"\", checkedObjects = /* @__PURE__ */ new Set()) {\n const tracked = {\n value: obj\n };\n if (!isImmutable(obj) && !checkedObjects.has(obj)) {\n checkedObjects.add(obj);\n tracked.children = {};\n for (const key in obj) {\n const childPath = path ? path + \".\" + key : key;\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\n continue;\n }\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\n }\n }\n return tracked;\n}\nfunction detectMutations(isImmutable, ignoredPaths = [], trackedProperty, obj, sameParentRef = false, path = \"\") {\n const prevObj = trackedProperty ? trackedProperty.value : void 0;\n const sameRef = prevObj === obj;\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\n return {\n wasMutated: true,\n path\n };\n }\n if (isImmutable(prevObj) || isImmutable(obj)) {\n return {\n wasMutated: false\n };\n }\n const keysToDetect = {};\n for (let key in trackedProperty.children) {\n keysToDetect[key] = true;\n }\n for (let key in obj) {\n keysToDetect[key] = true;\n }\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (let key in keysToDetect) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n const result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\n if (result.wasMutated) {\n return result;\n }\n }\n return {\n wasMutated: false\n };\n}\nfunction createImmutableStateInvariantMiddleware(options = {}) {\n if (false) {} else {\n let stringify2 = function(obj, serializer, indent, decycler) {\n return JSON.stringify(obj, getSerialize2(serializer, decycler), indent);\n }, getSerialize2 = function(serializer, decycler) {\n let stack = [], keys = [];\n if (!decycler) decycler = function(_, value) {\n if (stack[0] === value) return \"[Circular ~]\";\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n };\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) value = decycler.call(this, key, value);\n } else stack.push(value);\n return serializer == null ? value : serializer.call(this, key, value);\n };\n };\n var stringify = stringify2, getSerialize = getSerialize2;\n let {\n isImmutable = isImmutableDefault,\n ignoredPaths,\n warnAfter = 32\n } = options;\n const track = trackForMutations.bind(null, isImmutable, ignoredPaths);\n return ({\n getState\n }) => {\n let state = getState();\n let tracker = track(state);\n let result;\n return (next) => (action) => {\n const measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error( false ? 0 : `A state mutation was detected between dispatches, in the path '${result.path || \"\"}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n const dispatchedAction = next(action);\n measureUtils.measureTime(() => {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n if (result.wasMutated) {\n throw new Error( false ? 0 : `A state mutation was detected inside a dispatch, in the path: ${result.path || \"\"}. Take a look at the reducer(s) handling the action ${stringify2(action)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n return dispatchedAction;\n };\n };\n }\n}\n\n// src/serializableStateInvariantMiddleware.ts\n\nfunction isPlain(val) {\n const type = typeof val;\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || (0,redux__WEBPACK_IMPORTED_MODULE_0__.isPlainObject)(val);\n}\nfunction findNonSerializableValue(value, path = \"\", isSerializable = isPlain, getEntries, ignoredPaths = [], cache) {\n let foundNestedSerializable;\n if (!isSerializable(value)) {\n return {\n keyPath: path || \"<root>\",\n value\n };\n }\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (cache?.has(value)) return false;\n const entries = getEntries != null ? getEntries(value) : Object.entries(value);\n const hasIgnoredPaths = ignoredPaths.length > 0;\n for (const [key, nestedValue] of entries) {\n const nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n const hasMatches = ignoredPaths.some((ignored) => {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n continue;\n }\n }\n if (!isSerializable(nestedValue)) {\n return {\n keyPath: nestedPath,\n value: nestedValue\n };\n }\n if (typeof nestedValue === \"object\") {\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\n if (foundNestedSerializable) {\n return foundNestedSerializable;\n }\n }\n }\n if (cache && isNestedFrozen(value)) cache.add(value);\n return false;\n}\nfunction isNestedFrozen(value) {\n if (!Object.isFrozen(value)) return false;\n for (const nestedValue of Object.values(value)) {\n if (typeof nestedValue !== \"object\" || nestedValue === null) continue;\n if (!isNestedFrozen(nestedValue)) return false;\n }\n return true;\n}\nfunction createSerializableStateInvariantMiddleware(options = {}) {\n if (false) {} else {\n const {\n isSerializable = isPlain,\n getEntries,\n ignoredActions = [],\n ignoredActionPaths = [\"meta.arg\", \"meta.baseQueryMeta\"],\n ignoredPaths = [],\n warnAfter = 32,\n ignoreState = false,\n ignoreActions = false,\n disableCache = false\n } = options;\n const cache = !disableCache && WeakSet ? /* @__PURE__ */ new WeakSet() : void 0;\n return (storeAPI) => (next) => (action) => {\n if (!(0,redux__WEBPACK_IMPORTED_MODULE_0__.isAction)(action)) {\n return next(action);\n }\n const result = next(action);\n const measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\n measureUtils.measureTime(() => {\n const foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\n if (foundActionNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundActionNonSerializableValue;\n console.error(`A non-serializable value was detected in an action, in the path: \\`${keyPath}\\`. Value:`, value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\n }\n });\n }\n if (!ignoreState) {\n measureUtils.measureTime(() => {\n const state = storeAPI.getState();\n const foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\n if (foundStateNonSerializableValue) {\n const {\n keyPath,\n value\n } = foundStateNonSerializableValue;\n console.error(`A non-serializable value was detected in the state, in the path: \\`${keyPath}\\`. Value:`, value, `\nTake a look at the reducer(s) handling this action type: ${action.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`);\n }\n });\n measureUtils.warnIfExceeded();\n }\n return result;\n };\n }\n}\n\n// src/getDefaultMiddleware.ts\nfunction isBoolean(x) {\n return typeof x === \"boolean\";\n}\nvar buildGetDefaultMiddleware = () => function getDefaultMiddleware(options) {\n const {\n thunk = true,\n immutableCheck = true,\n serializableCheck = true,\n actionCreatorCheck = true\n } = options ?? {};\n let middlewareArray = new Tuple();\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(redux_thunk__WEBPACK_IMPORTED_MODULE_3__.thunk);\n } else {\n middlewareArray.push((0,redux_thunk__WEBPACK_IMPORTED_MODULE_3__.withExtraArgument)(thunk.extraArgument));\n }\n }\n if (true) {\n if (immutableCheck) {\n let immutableOptions = {};\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n }\n if (serializableCheck) {\n let serializableOptions = {};\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n if (actionCreatorCheck) {\n let actionCreatorOptions = {};\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n return middlewareArray;\n};\n\n// src/autoBatchEnhancer.ts\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\nvar prepareAutoBatched = () => (payload) => ({\n payload,\n meta: {\n [SHOULD_AUTOBATCH]: true\n }\n});\nvar createQueueWithTimer = (timeout) => {\n return (notify) => {\n setTimeout(notify, timeout);\n };\n};\nvar autoBatchEnhancer = (options = {\n type: \"raf\"\n}) => (next) => (...args) => {\n const store = next(...args);\n let notifying = true;\n let shouldNotifyAtEndOfTick = false;\n let notificationQueued = false;\n const listeners = /* @__PURE__ */ new Set();\n const queueCallback = options.type === \"tick\" ? queueMicrotask : options.type === \"raf\" ? (\n // requestAnimationFrame won't exist in SSR environments. Fall back to a vague approximation just to keep from erroring.\n typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10)\n ) : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\n const notifyListeners = () => {\n notificationQueued = false;\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach((l) => l());\n }\n };\n return Object.assign({}, store, {\n // Override the base `store.subscribe` method to keep original listeners\n // from running if we're delaying notifications\n subscribe(listener2) {\n const wrappedListener = () => notifying && listener2();\n const unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener2);\n return () => {\n unsubscribe();\n listeners.delete(listener2);\n };\n },\n // Override the base `store.dispatch` method so that we can check actions\n // for the `shouldAutoBatch` flag and determine if batching is active\n dispatch(action) {\n try {\n notifying = !action?.meta?.[SHOULD_AUTOBATCH];\n shouldNotifyAtEndOfTick = !notifying;\n if (shouldNotifyAtEndOfTick) {\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n }\n return store.dispatch(action);\n } finally {\n notifying = true;\n }\n }\n });\n};\n\n// src/getDefaultEnhancers.ts\nvar buildGetDefaultEnhancers = (middlewareEnhancer) => function getDefaultEnhancers(options) {\n const {\n autoBatch = true\n } = options ?? {};\n let enhancerArray = new Tuple(middlewareEnhancer);\n if (autoBatch) {\n enhancerArray.push(autoBatchEnhancer(typeof autoBatch === \"object\" ? autoBatch : void 0));\n }\n return enhancerArray;\n};\n\n// src/configureStore.ts\nfunction configureStore(options) {\n const getDefaultMiddleware = buildGetDefaultMiddleware();\n const {\n reducer = void 0,\n middleware,\n devTools = true,\n preloadedState = void 0,\n enhancers = void 0\n } = options || {};\n let rootReducer;\n if (typeof reducer === \"function\") {\n rootReducer = reducer;\n } else if ((0,redux__WEBPACK_IMPORTED_MODULE_0__.isPlainObject)(reducer)) {\n rootReducer = (0,redux__WEBPACK_IMPORTED_MODULE_0__.combineReducers)(reducer);\n } else {\n throw new Error( false ? 0 : \"`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers\");\n }\n if ( true && middleware && typeof middleware !== \"function\") {\n throw new Error( false ? 0 : \"`middleware` field must be a callback\");\n }\n let finalMiddleware;\n if (typeof middleware === \"function\") {\n finalMiddleware = middleware(getDefaultMiddleware);\n if ( true && !Array.isArray(finalMiddleware)) {\n throw new Error( false ? 0 : \"when using a middleware builder function, an array of middleware must be returned\");\n }\n } else {\n finalMiddleware = getDefaultMiddleware();\n }\n if ( true && finalMiddleware.some((item) => typeof item !== \"function\")) {\n throw new Error( false ? 0 : \"each middleware provided to configureStore must be a function\");\n }\n let finalCompose = redux__WEBPACK_IMPORTED_MODULE_0__.compose;\n if (devTools) {\n finalCompose = composeWithDevTools({\n // Enable capture of stack traces for dispatched Redux actions\n trace: \"development\" !== \"production\",\n ...typeof devTools === \"object\" && devTools\n });\n }\n const middlewareEnhancer = (0,redux__WEBPACK_IMPORTED_MODULE_0__.applyMiddleware)(...finalMiddleware);\n const getDefaultEnhancers = buildGetDefaultEnhancers(middlewareEnhancer);\n if ( true && enhancers && typeof enhancers !== \"function\") {\n throw new Error( false ? 0 : \"`enhancers` field must be a callback\");\n }\n let storeEnhancers = typeof enhancers === \"function\" ? enhancers(getDefaultEnhancers) : getDefaultEnhancers();\n if ( true && !Array.isArray(storeEnhancers)) {\n throw new Error( false ? 0 : \"`enhancers` callback must return an array\");\n }\n if ( true && storeEnhancers.some((item) => typeof item !== \"function\")) {\n throw new Error( false ? 0 : \"each enhancer provided to configureStore must be a function\");\n }\n if ( true && finalMiddleware.length && !storeEnhancers.includes(middlewareEnhancer)) {\n console.error(\"middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`\");\n }\n const composedEnhancer = finalCompose(...storeEnhancers);\n return (0,redux__WEBPACK_IMPORTED_MODULE_0__.createStore)(rootReducer, preloadedState, composedEnhancer);\n}\n\n// src/createReducer.ts\n\n\n// src/mapBuilders.ts\nfunction executeReducerBuilderCallback(builderCallback) {\n const actionsMap = {};\n const actionMatchers = [];\n let defaultCaseReducer;\n const builder = {\n addCase(typeOrActionCreator, reducer) {\n if (true) {\n if (actionMatchers.length > 0) {\n throw new Error( false ? 0 : \"`builder.addCase` should only be called before calling `builder.addMatcher`\");\n }\n if (defaultCaseReducer) {\n throw new Error( false ? 0 : \"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error( false ? 0 : \"`builder.addCase` cannot be called with an empty action type\");\n }\n if (type in actionsMap) {\n throw new Error( false ? 0 : `\\`builder.addCase\\` cannot be called with two reducers for the same action type '${type}'`);\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher(matcher, reducer) {\n if (true) {\n if (defaultCaseReducer) {\n throw new Error( false ? 0 : \"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n actionMatchers.push({\n matcher,\n reducer\n });\n return builder;\n },\n addDefaultCase(reducer) {\n if (true) {\n if (defaultCaseReducer) {\n throw new Error( false ? 0 : \"`builder.addDefaultCase` can only be called once\");\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n }\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}\n\n// src/createReducer.ts\nfunction isStateFunction(x) {\n return typeof x === \"function\";\n}\nfunction createReducer(initialState, mapOrBuilderCallback) {\n if (true) {\n if (typeof mapOrBuilderCallback === \"object\") {\n throw new Error( false ? 0 : \"The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] = executeReducerBuilderCallback(mapOrBuilderCallback);\n let getInitialState;\n if (isStateFunction(initialState)) {\n getInitialState = () => freezeDraftable(initialState());\n } else {\n const frozenInitialState = freezeDraftable(initialState);\n getInitialState = () => frozenInitialState;\n }\n function reducer(state = getInitialState(), action) {\n let caseReducers = [actionsMap[action.type], ...finalActionMatchers.filter(({\n matcher\n }) => matcher(action)).map(({\n reducer: reducer2\n }) => reducer2)];\n if (caseReducers.filter((cr) => !!cr).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n return caseReducers.reduce((previousState, caseReducer) => {\n if (caseReducer) {\n if ((0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(previousState)) {\n const draft = previousState;\n const result = caseReducer(draft, action);\n if (result === void 0) {\n return previousState;\n }\n return result;\n } else if (!(0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraftable)(previousState)) {\n const result = caseReducer(previousState, action);\n if (result === void 0) {\n if (previousState === null) {\n return previousState;\n }\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\n }\n return result;\n } else {\n return (0,immer__WEBPACK_IMPORTED_MODULE_2__.produce)(previousState, (draft) => {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state);\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n\n// src/matchers.ts\nvar matches = (matcher, action) => {\n if (hasMatchFunction(matcher)) {\n return matcher.match(action);\n } else {\n return matcher(action);\n }\n};\nfunction isAnyOf(...matchers) {\n return (action) => {\n return matchers.some((matcher) => matches(matcher, action));\n };\n}\nfunction isAllOf(...matchers) {\n return (action) => {\n return matchers.every((matcher) => matches(matcher, action));\n };\n}\nfunction hasExpectedRequestMetadata(action, validStatus) {\n if (!action || !action.meta) return false;\n const hasValidRequestId = typeof action.meta.requestId === \"string\";\n const hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a) {\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\n}\nfunction isPending(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isPending()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.pending));\n}\nfunction isRejected(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejected()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.rejected));\n}\nfunction isRejectedWithValue(...asyncThunks) {\n const hasFlag = (action) => {\n return action && action.meta && action.meta.rejectedWithValue;\n };\n if (asyncThunks.length === 0) {\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejectedWithValue()(asyncThunks[0]);\n }\n return isAllOf(isRejected(...asyncThunks), hasFlag);\n}\nfunction isFulfilled(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"fulfilled\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isFulfilled()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.map((asyncThunk) => asyncThunk.fulfilled));\n}\nfunction isAsyncThunkAction(...asyncThunks) {\n if (asyncThunks.length === 0) {\n return (action) => hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]);\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isAsyncThunkAction()(asyncThunks[0]);\n }\n return isAnyOf(...asyncThunks.flatMap((asyncThunk) => [asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled]));\n}\n\n// src/nanoid.ts\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\nvar nanoid = (size = 21) => {\n let id = \"\";\n let i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\n\n// src/createAsyncThunk.ts\nvar commonProperties = [\"name\", \"message\", \"stack\", \"code\"];\nvar RejectWithValue = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar FulfillWithMeta = class {\n constructor(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n /*\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\n does not exist at runtime\n */\n _type;\n};\nvar miniSerializeError = (value) => {\n if (typeof value === \"object\" && value !== null) {\n const simpleError = {};\n for (const property of commonProperties) {\n if (typeof value[property] === \"string\") {\n simpleError[property] = value[property];\n }\n }\n return simpleError;\n }\n return {\n message: String(value)\n };\n};\nvar createAsyncThunk = /* @__PURE__ */ (() => {\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\n const fulfilled = createAction(typePrefix + \"/fulfilled\", (payload, requestId, arg, meta) => ({\n payload,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"fulfilled\"\n }\n }));\n const pending = createAction(typePrefix + \"/pending\", (requestId, arg, meta) => ({\n payload: void 0,\n meta: {\n ...meta || {},\n arg,\n requestId,\n requestStatus: \"pending\"\n }\n }));\n const rejected = createAction(typePrefix + \"/rejected\", (error, requestId, arg, payload, meta) => ({\n payload,\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\n meta: {\n ...meta || {},\n arg,\n requestId,\n rejectedWithValue: !!payload,\n requestStatus: \"rejected\",\n aborted: error?.name === \"AbortError\",\n condition: error?.name === \"ConditionError\"\n }\n }));\n function actionCreator(arg) {\n return (dispatch, getState, extra) => {\n const requestId = options?.idGenerator ? options.idGenerator(arg) : nanoid();\n const abortController = new AbortController();\n let abortHandler;\n let abortReason;\n function abort(reason) {\n abortReason = reason;\n abortController.abort();\n }\n const promise = async function() {\n let finalAction;\n try {\n let conditionResult = options?.condition?.(arg, {\n getState,\n extra\n });\n if (isThenable(conditionResult)) {\n conditionResult = await conditionResult;\n }\n if (conditionResult === false || abortController.signal.aborted) {\n throw {\n name: \"ConditionError\",\n message: \"Aborted due to condition callback returning false.\"\n };\n }\n const abortedPromise = new Promise((_, reject) => {\n abortHandler = () => {\n reject({\n name: \"AbortError\",\n message: abortReason || \"Aborted\"\n });\n };\n abortController.signal.addEventListener(\"abort\", abortHandler);\n });\n dispatch(pending(requestId, arg, options?.getPendingMeta?.({\n requestId,\n arg\n }, {\n getState,\n extra\n })));\n finalAction = await Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n dispatch,\n getState,\n extra,\n requestId,\n signal: abortController.signal,\n abort,\n rejectWithValue: (value, meta) => {\n return new RejectWithValue(value, meta);\n },\n fulfillWithValue: (value, meta) => {\n return new FulfillWithMeta(value, meta);\n }\n })).then((result) => {\n if (result instanceof RejectWithValue) {\n throw result;\n }\n if (result instanceof FulfillWithMeta) {\n return fulfilled(result.payload, requestId, arg, result.meta);\n }\n return fulfilled(result, requestId, arg);\n })]);\n } catch (err) {\n finalAction = err instanceof RejectWithValue ? rejected(null, requestId, arg, err.payload, err.meta) : rejected(err, requestId, arg);\n } finally {\n if (abortHandler) {\n abortController.signal.removeEventListener(\"abort\", abortHandler);\n }\n }\n const skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\n if (!skipDispatch) {\n dispatch(finalAction);\n }\n return finalAction;\n }();\n return Object.assign(promise, {\n abort,\n requestId,\n arg,\n unwrap() {\n return promise.then(unwrapResult);\n }\n });\n };\n }\n return Object.assign(actionCreator, {\n pending,\n rejected,\n fulfilled,\n settled: isAnyOf(rejected, fulfilled),\n typePrefix\n });\n }\n createAsyncThunk2.withTypes = () => createAsyncThunk2;\n return createAsyncThunk2;\n})();\nfunction unwrapResult(action) {\n if (action.meta && action.meta.rejectedWithValue) {\n throw action.payload;\n }\n if (action.error) {\n throw action.error;\n }\n return action.payload;\n}\nfunction isThenable(value) {\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\n}\n\n// src/createSlice.ts\nvar asyncThunkSymbol = /* @__PURE__ */ Symbol.for(\"rtk-slice-createasyncthunk\");\nvar asyncThunkCreator = {\n [asyncThunkSymbol]: createAsyncThunk\n};\nvar ReducerType = /* @__PURE__ */ ((ReducerType2) => {\n ReducerType2[\"reducer\"] = \"reducer\";\n ReducerType2[\"reducerWithPrepare\"] = \"reducerWithPrepare\";\n ReducerType2[\"asyncThunk\"] = \"asyncThunk\";\n return ReducerType2;\n})(ReducerType || {});\nfunction getType(slice, actionKey) {\n return `${slice}/${actionKey}`;\n}\nfunction buildCreateSlice({\n creators\n} = {}) {\n const cAT = creators?.asyncThunk?.[asyncThunkSymbol];\n return function createSlice2(options) {\n const {\n name,\n reducerPath = name\n } = options;\n if (!name) {\n throw new Error( false ? 0 : \"`name` is a required option for createSlice\");\n }\n if (typeof process !== \"undefined\" && \"development\" === \"development\") {\n if (options.initialState === void 0) {\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\n }\n }\n const reducers = (typeof options.reducers === \"function\" ? options.reducers(buildReducerCreators()) : options.reducers) || {};\n const reducerNames = Object.keys(reducers);\n const context = {\n sliceCaseReducersByName: {},\n sliceCaseReducersByType: {},\n actionCreators: {},\n sliceMatchers: []\n };\n const contextMethods = {\n addCase(typeOrActionCreator, reducer2) {\n const type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error( false ? 0 : \"`context.addCase` cannot be called with an empty action type\");\n }\n if (type in context.sliceCaseReducersByType) {\n throw new Error( false ? 0 : \"`context.addCase` cannot be called with two reducers for the same action type: \" + type);\n }\n context.sliceCaseReducersByType[type] = reducer2;\n return contextMethods;\n },\n addMatcher(matcher, reducer2) {\n context.sliceMatchers.push({\n matcher,\n reducer: reducer2\n });\n return contextMethods;\n },\n exposeAction(name2, actionCreator) {\n context.actionCreators[name2] = actionCreator;\n return contextMethods;\n },\n exposeCaseReducer(name2, reducer2) {\n context.sliceCaseReducersByName[name2] = reducer2;\n return contextMethods;\n }\n };\n reducerNames.forEach((reducerName) => {\n const reducerDefinition = reducers[reducerName];\n const reducerDetails = {\n reducerName,\n type: getType(name, reducerName),\n createNotation: typeof options.reducers === \"function\"\n };\n if (isAsyncThunkSliceReducerDefinition(reducerDefinition)) {\n handleThunkCaseReducerDefinition(reducerDetails, reducerDefinition, contextMethods, cAT);\n } else {\n handleNormalReducerDefinition(reducerDetails, reducerDefinition, contextMethods);\n }\n });\n function buildReducer() {\n if (true) {\n if (typeof options.extraReducers === \"object\") {\n throw new Error( false ? 0 : \"The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n const [extraReducers = {}, actionMatchers = [], defaultCaseReducer = void 0] = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers];\n const finalCaseReducers = {\n ...extraReducers,\n ...context.sliceCaseReducersByType\n };\n return createReducer(options.initialState, (builder) => {\n for (let key in finalCaseReducers) {\n builder.addCase(key, finalCaseReducers[key]);\n }\n for (let sM of context.sliceMatchers) {\n builder.addMatcher(sM.matcher, sM.reducer);\n }\n for (let m of actionMatchers) {\n builder.addMatcher(m.matcher, m.reducer);\n }\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n const selectSelf = (state) => state;\n const injectedSelectorCache = /* @__PURE__ */ new Map();\n let _reducer;\n function reducer(state, action) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n }\n function getInitialState() {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n function makeSelectorProps(reducerPath2, injected = false) {\n function selectSlice(state) {\n let sliceState = state[reducerPath2];\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getInitialState();\n } else if (true) {\n throw new Error( false ? 0 : \"selectSlice returned undefined for an uninjected slice reducer\");\n }\n }\n return sliceState;\n }\n function getSelectors(selectState = selectSelf) {\n const selectorCache = getOrInsertComputed(injectedSelectorCache, injected, () => /* @__PURE__ */ new WeakMap());\n return getOrInsertComputed(selectorCache, selectState, () => {\n const map = {};\n for (const [name2, selector] of Object.entries(options.selectors ?? {})) {\n map[name2] = wrapSelector(selector, selectState, getInitialState, injected);\n }\n return map;\n });\n }\n return {\n reducerPath: reducerPath2,\n getSelectors,\n get selectors() {\n return getSelectors(selectSlice);\n },\n selectSlice\n };\n }\n const slice = {\n name,\n reducer,\n actions: context.actionCreators,\n caseReducers: context.sliceCaseReducersByName,\n getInitialState,\n ...makeSelectorProps(reducerPath),\n injectInto(injectable, {\n reducerPath: pathOpt,\n ...config\n } = {}) {\n const newReducerPath = pathOpt ?? reducerPath;\n injectable.inject({\n reducerPath: newReducerPath,\n reducer\n }, config);\n return {\n ...slice,\n ...makeSelectorProps(newReducerPath, true)\n };\n }\n };\n return slice;\n };\n}\nfunction wrapSelector(selector, selectState, getInitialState, injected) {\n function wrapper(rootState, ...args) {\n let sliceState = selectState(rootState);\n if (typeof sliceState === \"undefined\") {\n if (injected) {\n sliceState = getInitialState();\n } else if (true) {\n throw new Error( false ? 0 : \"selectState returned undefined for an uninjected slice reducer\");\n }\n }\n return selector(sliceState, ...args);\n }\n wrapper.unwrapped = selector;\n return wrapper;\n}\nvar createSlice = /* @__PURE__ */ buildCreateSlice();\nfunction buildReducerCreators() {\n function asyncThunk(payloadCreator, config) {\n return {\n _reducerDefinitionType: \"asyncThunk\" /* asyncThunk */,\n payloadCreator,\n ...config\n };\n }\n asyncThunk.withTypes = () => asyncThunk;\n return {\n reducer(caseReducer) {\n return Object.assign({\n // hack so the wrapping function has the same name as the original\n // we need to create a wrapper so the `reducerDefinitionType` is not assigned to the original\n [caseReducer.name](...args) {\n return caseReducer(...args);\n }\n }[caseReducer.name], {\n _reducerDefinitionType: \"reducer\" /* reducer */\n });\n },\n preparedReducer(prepare, reducer) {\n return {\n _reducerDefinitionType: \"reducerWithPrepare\" /* reducerWithPrepare */,\n prepare,\n reducer\n };\n },\n asyncThunk\n };\n}\nfunction handleNormalReducerDefinition({\n type,\n reducerName,\n createNotation\n}, maybeReducerWithPrepare, context) {\n let caseReducer;\n let prepareCallback;\n if (\"reducer\" in maybeReducerWithPrepare) {\n if (createNotation && !isCaseReducerWithPrepareDefinition(maybeReducerWithPrepare)) {\n throw new Error( false ? 0 : \"Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.\");\n }\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n context.addCase(type, caseReducer).exposeCaseReducer(reducerName, caseReducer).exposeAction(reducerName, prepareCallback ? createAction(type, prepareCallback) : createAction(type));\n}\nfunction isAsyncThunkSliceReducerDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"asyncThunk\" /* asyncThunk */;\n}\nfunction isCaseReducerWithPrepareDefinition(reducerDefinition) {\n return reducerDefinition._reducerDefinitionType === \"reducerWithPrepare\" /* reducerWithPrepare */;\n}\nfunction handleThunkCaseReducerDefinition({\n type,\n reducerName\n}, reducerDefinition, context, cAT) {\n if (!cAT) {\n throw new Error( false ? 0 : \"Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.\");\n }\n const {\n payloadCreator,\n fulfilled,\n pending,\n rejected,\n settled,\n options\n } = reducerDefinition;\n const thunk = cAT(type, payloadCreator, options);\n context.exposeAction(reducerName, thunk);\n if (fulfilled) {\n context.addCase(thunk.fulfilled, fulfilled);\n }\n if (pending) {\n context.addCase(thunk.pending, pending);\n }\n if (rejected) {\n context.addCase(thunk.rejected, rejected);\n }\n if (settled) {\n context.addMatcher(thunk.settled, settled);\n }\n context.exposeCaseReducer(reducerName, {\n fulfilled: fulfilled || noop,\n pending: pending || noop,\n rejected: rejected || noop,\n settled: settled || noop\n });\n}\nfunction noop() {\n}\n\n// src/entities/entity_state.ts\nfunction getInitialEntityState() {\n return {\n ids: [],\n entities: {}\n };\n}\nfunction createInitialStateFactory(stateAdapter) {\n function getInitialState(additionalState = {}, entities) {\n const state = Object.assign(getInitialEntityState(), additionalState);\n return entities ? stateAdapter.setAll(state, entities) : state;\n }\n return {\n getInitialState\n };\n}\n\n// src/entities/state_selectors.ts\nfunction createSelectorsFactory() {\n function getSelectors(selectState, options = {}) {\n const {\n createSelector: createSelector2 = createDraftSafeSelector\n } = options;\n const selectIds = (state) => state.ids;\n const selectEntities = (state) => state.entities;\n const selectAll = createSelector2(selectIds, selectEntities, (ids, entities) => ids.map((id) => entities[id]));\n const selectId = (_, id) => id;\n const selectById = (entities, id) => entities[id];\n const selectTotal = createSelector2(selectIds, (ids) => ids.length);\n if (!selectState) {\n return {\n selectIds,\n selectEntities,\n selectAll,\n selectTotal,\n selectById: createSelector2(selectEntities, selectId, selectById)\n };\n }\n const selectGlobalizedEntities = createSelector2(selectState, selectEntities);\n return {\n selectIds: createSelector2(selectState, selectIds),\n selectEntities: selectGlobalizedEntities,\n selectAll: createSelector2(selectState, selectAll),\n selectTotal: createSelector2(selectState, selectTotal),\n selectById: createSelector2(selectGlobalizedEntities, selectId, selectById)\n };\n }\n return {\n getSelectors\n };\n}\n\n// src/entities/state_adapter.ts\n\nvar isDraftTyped = immer__WEBPACK_IMPORTED_MODULE_2__.isDraft;\nfunction createSingleArgumentStateOperator(mutator) {\n const operator = createStateOperator((_, state) => mutator(state));\n return function operation(state) {\n return operator(state, void 0);\n };\n}\nfunction createStateOperator(mutator) {\n return function operation(state, arg) {\n function isPayloadActionArgument(arg2) {\n return isFSA(arg2);\n }\n const runMutator = (draft) => {\n if (isPayloadActionArgument(arg)) {\n mutator(arg.payload, draft);\n } else {\n mutator(arg, draft);\n }\n };\n if (isDraftTyped(state)) {\n runMutator(state);\n return state;\n }\n return (0,immer__WEBPACK_IMPORTED_MODULE_2__.produce)(state, runMutator);\n };\n}\n\n// src/entities/utils.ts\n\nfunction selectIdValue(entity, selectId) {\n const key = selectId(entity);\n if ( true && key === void 0) {\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\n }\n return key;\n}\nfunction ensureEntitiesArray(entities) {\n if (!Array.isArray(entities)) {\n entities = Object.values(entities);\n }\n return entities;\n}\nfunction getCurrent(value) {\n return (0,immer__WEBPACK_IMPORTED_MODULE_2__.isDraft)(value) ? (0,immer__WEBPACK_IMPORTED_MODULE_2__.current)(value) : value;\n}\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingIdsArray = getCurrent(state.ids);\n const existingIds = new Set(existingIdsArray);\n const added = [];\n const updated = [];\n for (const entity of newEntities) {\n const id = selectIdValue(entity, selectId);\n if (existingIds.has(id)) {\n updated.push({\n id,\n changes: entity\n });\n } else {\n added.push(entity);\n }\n }\n return [added, updated, existingIdsArray];\n}\n\n// src/entities/unsorted_state_adapter.ts\nfunction createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n }\n function addManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n addOneMutably(entity, state);\n }\n }\n function setOneMutably(entity, state) {\n const key = selectIdValue(entity, selectId);\n if (!(key in state.entities)) {\n state.ids.push(key);\n }\n ;\n state.entities[key] = entity;\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (const entity of newEntities) {\n setOneMutably(entity, state);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.ids = [];\n state.entities = {};\n addManyMutably(newEntities, state);\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keys, state) {\n let didMutate = false;\n keys.forEach((key) => {\n if (key in state.entities) {\n delete state.entities[key];\n didMutate = true;\n }\n });\n if (didMutate) {\n state.ids = state.ids.filter((id) => id in state.entities);\n }\n }\n function removeAllMutably(state) {\n Object.assign(state, {\n ids: [],\n entities: {}\n });\n }\n function takeNewKey(keys, update, state) {\n const original3 = state.entities[update.id];\n if (original3 === void 0) {\n return false;\n }\n const updated = Object.assign({}, original3, update.changes);\n const newKey = selectIdValue(updated, selectId);\n const hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n ;\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n const newKeys = {};\n const updatesPerEntity = {};\n updates.forEach((update) => {\n if (update.id in state.entities) {\n updatesPerEntity[update.id] = {\n id: update.id,\n // Spreads ignore falsy values, so this works even if there isn't\n // an existing update already at this key\n changes: {\n ...updatesPerEntity[update.id]?.changes,\n ...update.changes\n }\n };\n }\n });\n updates = Object.values(updatesPerEntity);\n const didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n const didMutateIds = updates.filter((update) => takeNewKey(newKeys, update, state)).length > 0;\n if (didMutateIds) {\n state.ids = Object.values(state.entities).map((e) => selectIdValue(e, selectId));\n }\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated] = splitAddedUpdatedEntities(newEntities, selectId, state);\n updateManyMutably(updated, state);\n addManyMutably(added, state);\n }\n return {\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably)\n };\n}\n\n// src/entities/sorted_state_adapter.ts\nfunction findInsertIndex(sortedItems, item, comparisonFunction) {\n let lowIndex = 0;\n let highIndex = sortedItems.length;\n while (lowIndex < highIndex) {\n let middleIndex = lowIndex + highIndex >>> 1;\n const currentItem = sortedItems[middleIndex];\n const res = comparisonFunction(item, currentItem);\n if (res >= 0) {\n lowIndex = middleIndex + 1;\n } else {\n highIndex = middleIndex;\n }\n }\n return lowIndex;\n}\nfunction insert(sortedItems, item, comparisonFunction) {\n const insertAtIndex = findInsertIndex(sortedItems, item, comparisonFunction);\n sortedItems.splice(insertAtIndex, 0, item);\n return sortedItems;\n}\nfunction createSortedStateAdapter(selectId, comparer) {\n const {\n removeOne,\n removeMany,\n removeAll\n } = createUnsortedStateAdapter(selectId);\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newEntities, state, existingIds) {\n newEntities = ensureEntitiesArray(newEntities);\n const existingKeys = new Set(existingIds ?? getCurrent(state.ids));\n const models = newEntities.filter((model) => !existingKeys.has(selectIdValue(model, selectId)));\n if (models.length !== 0) {\n mergeFunction(state, models);\n }\n }\n function setOneMutably(entity, state) {\n return setManyMutably([entity], state);\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n if (newEntities.length !== 0) {\n for (const item of newEntities) {\n delete state.entities[selectId(item)];\n }\n mergeFunction(state, newEntities);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.entities = {};\n state.ids = [];\n addManyMutably(newEntities, state, []);\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n let appliedUpdates = false;\n let replacedIds = false;\n for (let update of updates) {\n const entity = state.entities[update.id];\n if (!entity) {\n continue;\n }\n appliedUpdates = true;\n Object.assign(entity, update.changes);\n const newId = selectId(entity);\n if (update.id !== newId) {\n replacedIds = true;\n delete state.entities[update.id];\n const oldIndex = state.ids.indexOf(update.id);\n state.ids[oldIndex] = newId;\n state.entities[newId] = entity;\n }\n }\n if (appliedUpdates) {\n mergeFunction(state, [], appliedUpdates, replacedIds);\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n const [added, updated, existingIdsArray] = splitAddedUpdatedEntities(newEntities, selectId, state);\n if (updated.length) {\n updateManyMutably(updated, state);\n }\n if (added.length) {\n addManyMutably(added, state, existingIdsArray);\n }\n }\n function areArraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return false;\n }\n return true;\n }\n const mergeFunction = (state, addedItems, appliedUpdates, replacedIds) => {\n const currentEntities = getCurrent(state.entities);\n const currentIds = getCurrent(state.ids);\n const stateEntities = state.entities;\n let ids = currentIds;\n if (replacedIds) {\n ids = new Set(currentIds);\n }\n let sortedEntities = [];\n for (const id of ids) {\n const entity = currentEntities[id];\n if (entity) {\n sortedEntities.push(entity);\n }\n }\n const wasPreviouslyEmpty = sortedEntities.length === 0;\n for (const item of addedItems) {\n stateEntities[selectId(item)] = item;\n if (!wasPreviouslyEmpty) {\n insert(sortedEntities, item, comparer);\n }\n }\n if (wasPreviouslyEmpty) {\n sortedEntities = addedItems.slice().sort(comparer);\n } else if (appliedUpdates) {\n sortedEntities.sort(comparer);\n }\n const newSortedIds = sortedEntities.map(selectId);\n if (!areArraysEqual(currentIds, newSortedIds)) {\n state.ids = newSortedIds;\n }\n };\n return {\n removeOne,\n removeMany,\n removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably)\n };\n}\n\n// src/entities/create_adapter.ts\nfunction createEntityAdapter(options = {}) {\n const {\n selectId,\n sortComparer\n } = {\n sortComparer: false,\n selectId: (instance) => instance.id,\n ...options\n };\n const stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\n const stateFactory = createInitialStateFactory(stateAdapter);\n const selectorsFactory = createSelectorsFactory();\n return {\n selectId,\n sortComparer,\n ...stateFactory,\n ...selectorsFactory,\n ...stateAdapter\n };\n}\n\n// src/listenerMiddleware/index.ts\n\n\n// src/listenerMiddleware/exceptions.ts\nvar task = \"task\";\nvar listener = \"listener\";\nvar completed = \"completed\";\nvar cancelled = \"cancelled\";\nvar taskCancelled = `task-${cancelled}`;\nvar taskCompleted = `task-${completed}`;\nvar listenerCancelled = `${listener}-${cancelled}`;\nvar listenerCompleted = `${listener}-${completed}`;\nvar TaskAbortError = class {\n constructor(code) {\n this.code = code;\n this.message = `${task} ${cancelled} (reason: ${code})`;\n }\n name = \"TaskAbortError\";\n message;\n};\n\n// src/listenerMiddleware/utils.ts\nvar assertFunction = (func, expected) => {\n if (typeof func !== \"function\") {\n throw new TypeError( false ? 0 : `${expected} is not a function`);\n }\n};\nvar noop2 = () => {\n};\nvar catchRejection = (promise, onError = noop2) => {\n promise.catch(onError);\n return promise;\n};\nvar addAbortSignalListener = (abortSignal, callback) => {\n abortSignal.addEventListener(\"abort\", callback, {\n once: true\n });\n return () => abortSignal.removeEventListener(\"abort\", callback);\n};\nvar abortControllerWithReason = (abortController, reason) => {\n const signal = abortController.signal;\n if (signal.aborted) {\n return;\n }\n if (!(\"reason\" in signal)) {\n Object.defineProperty(signal, \"reason\", {\n enumerable: true,\n value: reason,\n configurable: true,\n writable: true\n });\n }\n ;\n abortController.abort(reason);\n};\n\n// src/listenerMiddleware/task.ts\nvar validateActive = (signal) => {\n if (signal.aborted) {\n const {\n reason\n } = signal;\n throw new TaskAbortError(reason);\n }\n};\nfunction raceWithSignal(signal, promise) {\n let cleanup = noop2;\n return new Promise((resolve, reject) => {\n const notifyRejection = () => reject(new TaskAbortError(signal.reason));\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise.finally(() => cleanup()).then(resolve, reject);\n }).finally(() => {\n cleanup = noop2;\n });\n}\nvar runTask = async (task2, cleanUp) => {\n try {\n await Promise.resolve();\n const value = await task2();\n return {\n status: \"ok\",\n value\n };\n } catch (error) {\n return {\n status: error instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\n error\n };\n } finally {\n cleanUp?.();\n }\n};\nvar createPause = (signal) => {\n return (promise) => {\n return catchRejection(raceWithSignal(signal, promise).then((output) => {\n validateActive(signal);\n return output;\n }));\n };\n};\nvar createDelay = (signal) => {\n const pause = createPause(signal);\n return (timeoutMs) => {\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)));\n };\n};\n\n// src/listenerMiddleware/index.ts\nvar {\n assign\n} = Object;\nvar INTERNAL_NIL_TOKEN = {};\nvar alm = \"listenerMiddleware\";\nvar createFork = (parentAbortSignal, parentBlockingPromises) => {\n const linkControllers = (controller) => addAbortSignalListener(parentAbortSignal, () => abortControllerWithReason(controller, parentAbortSignal.reason));\n return (taskExecutor, opts) => {\n assertFunction(taskExecutor, \"taskExecutor\");\n const childAbortController = new AbortController();\n linkControllers(childAbortController);\n const result = runTask(async () => {\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n const result2 = await taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n });\n validateActive(childAbortController.signal);\n return result2;\n }, () => abortControllerWithReason(childAbortController, taskCompleted));\n if (opts?.autoJoin) {\n parentBlockingPromises.push(result.catch(noop2));\n }\n return {\n result: createPause(parentAbortSignal)(result),\n cancel() {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n };\n };\n};\nvar createTakePattern = (startListening, signal) => {\n const take = async (predicate, timeout) => {\n validateActive(signal);\n let unsubscribe = () => {\n };\n const tuplePromise = new Promise((resolve, reject) => {\n let stopListening = startListening({\n predicate,\n effect: (action, listenerApi) => {\n listenerApi.unsubscribe();\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n unsubscribe = () => {\n stopListening();\n reject();\n };\n });\n const promises = [tuplePromise];\n if (timeout != null) {\n promises.push(new Promise((resolve) => setTimeout(resolve, timeout, null)));\n }\n try {\n const output = await raceWithSignal(signal, Promise.race(promises));\n validateActive(signal);\n return output;\n } finally {\n unsubscribe();\n }\n };\n return (predicate, timeout) => catchRejection(take(predicate, timeout));\n};\nvar getListenerEntryPropsFrom = (options) => {\n let {\n type,\n actionCreator,\n matcher,\n predicate,\n effect\n } = options;\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {\n } else {\n throw new Error( false ? 0 : \"Creating or removing a listener requires one of the known fields for matching an action\");\n }\n assertFunction(effect, \"options.listener\");\n return {\n predicate,\n type,\n effect\n };\n};\nvar createListenerEntry = /* @__PURE__ */ assign((options) => {\n const {\n type,\n predicate,\n effect\n } = getListenerEntryPropsFrom(options);\n const entry = {\n id: nanoid(),\n effect,\n type,\n predicate,\n pending: /* @__PURE__ */ new Set(),\n unsubscribe: () => {\n throw new Error( false ? 0 : \"Unsubscribe not initialized\");\n }\n };\n return entry;\n}, {\n withTypes: () => createListenerEntry\n});\nvar findListenerEntry = (listenerMap, options) => {\n const {\n type,\n effect,\n predicate\n } = getListenerEntryPropsFrom(options);\n return Array.from(listenerMap.values()).find((entry) => {\n const matchPredicateOrType = typeof type === \"string\" ? entry.type === type : entry.predicate === predicate;\n return matchPredicateOrType && entry.effect === effect;\n });\n};\nvar cancelActiveListeners = (entry) => {\n entry.pending.forEach((controller) => {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\nvar createClearListenerMiddleware = (listenerMap) => {\n return () => {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\nvar safelyNotifyError = (errorHandler, errorToNotify, errorInfo) => {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n setTimeout(() => {\n throw errorHandlerError;\n }, 0);\n }\n};\nvar addListener = /* @__PURE__ */ assign(/* @__PURE__ */ createAction(`${alm}/add`), {\n withTypes: () => addListener\n});\nvar clearAllListeners = /* @__PURE__ */ createAction(`${alm}/removeAll`);\nvar removeListener = /* @__PURE__ */ assign(/* @__PURE__ */ createAction(`${alm}/remove`), {\n withTypes: () => removeListener\n});\nvar defaultErrorHandler = (...args) => {\n console.error(`${alm}/error`, ...args);\n};\nvar createListenerMiddleware = (middlewareOptions = {}) => {\n const listenerMap = /* @__PURE__ */ new Map();\n const {\n extra,\n onError = defaultErrorHandler\n } = middlewareOptions;\n assertFunction(onError, \"onError\");\n const insertEntry = (entry) => {\n entry.unsubscribe = () => listenerMap.delete(entry.id);\n listenerMap.set(entry.id, entry);\n return (cancelOptions) => {\n entry.unsubscribe();\n if (cancelOptions?.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n const startListening = (options) => {\n const entry = findListenerEntry(listenerMap, options) ?? createListenerEntry(options);\n return insertEntry(entry);\n };\n assign(startListening, {\n withTypes: () => startListening\n });\n const stopListening = (options) => {\n const entry = findListenerEntry(listenerMap, options);\n if (entry) {\n entry.unsubscribe();\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n return !!entry;\n };\n assign(stopListening, {\n withTypes: () => stopListening\n });\n const notifyListener = async (entry, action, api, getOriginalState) => {\n const internalTaskController = new AbortController();\n const take = createTakePattern(startListening, internalTaskController.signal);\n const autoJoinPromises = [];\n try {\n entry.pending.add(internalTaskController);\n await Promise.resolve(entry.effect(\n action,\n // Use assign() rather than ... to avoid extra helper functions added to bundle\n assign({}, api, {\n getOriginalState,\n condition: (predicate, timeout) => take(predicate, timeout).then(Boolean),\n take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: () => {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: () => {\n entry.pending.forEach((controller, _, set) => {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n },\n cancel: () => {\n abortControllerWithReason(internalTaskController, listenerCancelled);\n entry.pending.delete(internalTaskController);\n },\n throwIfCancelled: () => {\n validateActive(internalTaskController.signal);\n }\n })\n ));\n } catch (listenerError) {\n if (!(listenerError instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError, {\n raisedBy: \"effect\"\n });\n }\n } finally {\n await Promise.all(autoJoinPromises);\n abortControllerWithReason(internalTaskController, listenerCompleted);\n entry.pending.delete(internalTaskController);\n }\n };\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n const middleware = (api) => (next) => (action) => {\n if (!(0,redux__WEBPACK_IMPORTED_MODULE_0__.isAction)(action)) {\n return next(action);\n }\n if (addListener.match(action)) {\n return startListening(action.payload);\n }\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n }\n let originalState = api.getState();\n const getOriginalState = () => {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error( false ? 0 : `${alm}: getOriginalState can only be called synchronously`);\n }\n return originalState;\n };\n let result;\n try {\n result = next(action);\n if (listenerMap.size > 0) {\n const currentState = api.getState();\n const listenerEntries = Array.from(listenerMap.values());\n for (const entry of listenerEntries) {\n let runListener = false;\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: \"predicate\"\n });\n }\n if (!runListener) {\n continue;\n }\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n originalState = INTERNAL_NIL_TOKEN;\n }\n return result;\n };\n return {\n middleware,\n startListening,\n stopListening,\n clearListeners: clearListenerMiddleware\n };\n};\n\n// src/dynamicMiddleware/index.ts\n\nvar createMiddlewareEntry = (middleware) => ({\n middleware,\n applied: /* @__PURE__ */ new Map()\n});\nvar matchInstance = (instanceId) => (action) => action?.meta?.instanceId === instanceId;\nvar createDynamicMiddleware = () => {\n const instanceId = nanoid();\n const middlewareMap = /* @__PURE__ */ new Map();\n const withMiddleware = Object.assign(createAction(\"dynamicMiddleware/add\", (...middlewares) => ({\n payload: middlewares,\n meta: {\n instanceId\n }\n })), {\n withTypes: () => withMiddleware\n });\n const addMiddleware = Object.assign(function addMiddleware2(...middlewares) {\n middlewares.forEach((middleware2) => {\n getOrInsertComputed(middlewareMap, middleware2, createMiddlewareEntry);\n });\n }, {\n withTypes: () => addMiddleware\n });\n const getFinalMiddleware = (api) => {\n const appliedMiddleware = Array.from(middlewareMap.values()).map((entry) => getOrInsertComputed(entry.applied, api, entry.middleware));\n return (0,redux__WEBPACK_IMPORTED_MODULE_0__.compose)(...appliedMiddleware);\n };\n const isWithMiddleware = isAllOf(withMiddleware, matchInstance(instanceId));\n const middleware = (api) => (next) => (action) => {\n if (isWithMiddleware(action)) {\n addMiddleware(...action.payload);\n return api.dispatch;\n }\n return getFinalMiddleware(api)(next)(action);\n };\n return {\n middleware,\n addMiddleware,\n withMiddleware,\n instanceId\n };\n};\n\n// src/combineSlices.ts\n\nvar isSliceLike = (maybeSliceLike) => \"reducerPath\" in maybeSliceLike && typeof maybeSliceLike.reducerPath === \"string\";\nvar getReducers = (slices) => slices.flatMap((sliceOrMap) => isSliceLike(sliceOrMap) ? [[sliceOrMap.reducerPath, sliceOrMap.reducer]] : Object.entries(sliceOrMap));\nvar ORIGINAL_STATE = Symbol.for(\"rtk-state-proxy-original\");\nvar isStateProxy = (value) => !!value && !!value[ORIGINAL_STATE];\nvar stateProxyMap = /* @__PURE__ */ new WeakMap();\nvar createStateProxy = (state, reducerMap) => getOrInsertComputed(stateProxyMap, state, () => new Proxy(state, {\n get: (target, prop, receiver) => {\n if (prop === ORIGINAL_STATE) return target;\n const result = Reflect.get(target, prop, receiver);\n if (typeof result === \"undefined\") {\n const reducer = reducerMap[prop.toString()];\n if (reducer) {\n const reducerResult = reducer(void 0, {\n type: nanoid()\n });\n if (typeof reducerResult === \"undefined\") {\n throw new Error( false ? 0 : `The slice reducer for key \"${prop.toString()}\" returned undefined when called for selector(). If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n return reducerResult;\n }\n }\n return result;\n }\n}));\nvar original = (state) => {\n if (!isStateProxy(state)) {\n throw new Error( false ? 0 : \"original must be used on state Proxy\");\n }\n return state[ORIGINAL_STATE];\n};\nvar noopReducer = (state = {}) => state;\nfunction combineSlices(...slices) {\n const reducerMap = Object.fromEntries(getReducers(slices));\n const getReducer = () => Object.keys(reducerMap).length ? (0,redux__WEBPACK_IMPORTED_MODULE_0__.combineReducers)(reducerMap) : noopReducer;\n let reducer = getReducer();\n function combinedReducer(state, action) {\n return reducer(state, action);\n }\n combinedReducer.withLazyLoadedSlices = () => combinedReducer;\n const inject = (slice, config = {}) => {\n const {\n reducerPath,\n reducer: reducerToInject\n } = slice;\n const currentReducer = reducerMap[reducerPath];\n if (!config.overrideExisting && currentReducer && currentReducer !== reducerToInject) {\n if (typeof process !== \"undefined\" && \"development\" === \"development\") {\n console.error(`called \\`inject\\` to override already-existing reducer ${reducerPath} without specifying \\`overrideExisting: true\\``);\n }\n return combinedReducer;\n }\n reducerMap[reducerPath] = reducerToInject;\n reducer = getReducer();\n return combinedReducer;\n };\n const selector = Object.assign(function makeSelector(selectorFn, selectState) {\n return function selector2(state, ...args) {\n return selectorFn(createStateProxy(selectState ? selectState(state, ...args) : state, reducerMap), ...args);\n };\n }, {\n original\n });\n return Object.assign(combinedReducer, {\n inject,\n selector\n });\n}\n\n// src/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux Toolkit error #${code}; visit https://redux-toolkit.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n//# sourceMappingURL=redux-toolkit.modern.mjs.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHJlZHV4anMvdG9vbGtpdC9kaXN0L3JlZHV4LXRvb2xraXQubW9kZXJuLm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDc0I7QUFDbUY7QUFDaUM7O0FBRTFJO0FBQ3lDO0FBQ3dCO0FBQ2pFO0FBQ0EsMEJBQTBCLCtEQUFxQjtBQUMvQztBQUNBO0FBQ0EseURBQXlELDhDQUFPLFVBQVUsOENBQU87QUFDakY7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsNkVBQTZFLG9EQUFjOztBQUUzRjtBQUM0SDs7QUFFNUg7QUFDZ0M7QUFDaEM7QUFDQTtBQUNBLCtDQUErQywwQ0FBTztBQUN0RCxTQUFTLDBDQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUMwRTs7QUFFMUU7QUFDaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixNQUFxQyxHQUFHLENBQXlCO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxLQUFLO0FBQ3pDO0FBQ0Esb0NBQW9DLCtDQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQ0FBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLEtBQUs7QUFDbkM7QUFDQSxrREFBa0Qsa0JBQWtCO0FBQ3BFLGtGQUFrRixXQUFXLDhCQUE4QixXQUFXO0FBQ3RJO0FBQ0EsNERBQTREO0FBQzVELE1BQU0sS0FBcUMsRUFBRSxFQUUxQztBQUNIO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDZ0U7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx3QkFBd0IsUUFBUSxPQUFPLFFBQVEsa0RBQWtELFNBQVM7QUFDMUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGtEQUFXLFFBQVEsOENBQWU7QUFDM0MsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RDtBQUM3RCxNQUFNLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsWUFBWTtBQUNaO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQzhDOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFVBQVU7QUFDdEMsNEJBQTRCLFVBQVU7QUFDdEMsMkJBQTJCLFNBQVMsR0FBRyxVQUFVO0FBQ2pELDJCQUEyQixTQUFTLEdBQUcsVUFBVTtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsTUFBTSxFQUFFLFdBQVcsV0FBVyxLQUFLO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixNQUFxQyxHQUFHLENBQTBCLE1BQU0sVUFBVTtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLG9CQUFvQixNQUFxQyxHQUFHLENBQTBCO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsNERBQTRELHNEQUFnQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU8sb0JBQW9CLGFBQW9CO0FBQ2hFLGdGQUFnRixhQUFhO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEMsT0FBTyxpREFBaUQsTUFBTTtBQUN4RztBQW9ERTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AcmVkdXhqcy90b29sa2l0L2Rpc3QvcmVkdXgtdG9vbGtpdC5tb2Rlcm4ubWpzP2YxYjIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2luZGV4LnRzXG5leHBvcnQgKiBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCB7IHByb2R1Y2UsIGN1cnJlbnQgYXMgY3VycmVudDMsIGZyZWV6ZSwgb3JpZ2luYWwgYXMgb3JpZ2luYWwyLCBpc0RyYWZ0IGFzIGlzRHJhZnQ1IH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgeyBjcmVhdGVTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3JDcmVhdG9yIGFzIGNyZWF0ZVNlbGVjdG9yQ3JlYXRvcjIsIGxydU1lbW9pemUsIHdlYWtNYXBNZW1vaXplIGFzIHdlYWtNYXBNZW1vaXplMiB9IGZyb20gXCJyZXNlbGVjdFwiO1xuXG4vLyBzcmMvY3JlYXRlRHJhZnRTYWZlU2VsZWN0b3IudHNcbmltcG9ydCB7IGN1cnJlbnQsIGlzRHJhZnQgfSBmcm9tIFwiaW1tZXJcIjtcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yQ3JlYXRvciwgd2Vha01hcE1lbW9pemUgfSBmcm9tIFwicmVzZWxlY3RcIjtcbnZhciBjcmVhdGVEcmFmdFNhZmVTZWxlY3RvckNyZWF0b3IgPSAoLi4uYXJncykgPT4ge1xuICBjb25zdCBjcmVhdGVTZWxlY3RvcjIgPSBjcmVhdGVTZWxlY3RvckNyZWF0b3IoLi4uYXJncyk7XG4gIGNvbnN0IGNyZWF0ZURyYWZ0U2FmZVNlbGVjdG9yMiA9IE9iamVjdC5hc3NpZ24oKC4uLmFyZ3MyKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcjIoLi4uYXJnczIpO1xuICAgIGNvbnN0IHdyYXBwZWRTZWxlY3RvciA9ICh2YWx1ZSwgLi4ucmVzdCkgPT4gc2VsZWN0b3IoaXNEcmFmdCh2YWx1ZSkgPyBjdXJyZW50KHZhbHVlKSA6IHZhbHVlLCAuLi5yZXN0KTtcbiAgICBPYmplY3QuYXNzaWduKHdyYXBwZWRTZWxlY3Rvciwgc2VsZWN0b3IpO1xuICAgIHJldHVybiB3cmFwcGVkU2VsZWN0b3I7XG4gIH0sIHtcbiAgICB3aXRoVHlwZXM6ICgpID0+IGNyZWF0ZURyYWZ0U2FmZVNlbGVjdG9yMlxuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZURyYWZ0U2FmZVNlbGVjdG9yMjtcbn07XG52YXIgY3JlYXRlRHJhZnRTYWZlU2VsZWN0b3IgPSAvKiBAX19QVVJFX18gKi8gY3JlYXRlRHJhZnRTYWZlU2VsZWN0b3JDcmVhdG9yKHdlYWtNYXBNZW1vaXplKTtcblxuLy8gc3JjL2NvbmZpZ3VyZVN0b3JlLnRzXG5pbXBvcnQgeyBhcHBseU1pZGRsZXdhcmUsIGNyZWF0ZVN0b3JlLCBjb21wb3NlIGFzIGNvbXBvc2UyLCBjb21iaW5lUmVkdWNlcnMsIGlzUGxhaW5PYmplY3QgYXMgaXNQbGFpbk9iamVjdDIgfSBmcm9tIFwicmVkdXhcIjtcblxuLy8gc3JjL2RldnRvb2xzRXh0ZW5zaW9uLnRzXG5pbXBvcnQgeyBjb21wb3NlIH0gZnJvbSBcInJlZHV4XCI7XG52YXIgY29tcG9zZVdpdGhEZXZUb29scyA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX0NPTVBPU0VfXyA/IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18gOiBmdW5jdGlvbigpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB2b2lkIDA7XG4gIGlmICh0eXBlb2YgYXJndW1lbnRzWzBdID09PSBcIm9iamVjdFwiKSByZXR1cm4gY29tcG9zZTtcbiAgcmV0dXJuIGNvbXBvc2UuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn07XG52YXIgZGV2VG9vbHNFbmhhbmNlciA9IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX18gPyB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXyA6IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gZnVuY3Rpb24obm9vcDMpIHtcbiAgICByZXR1cm4gbm9vcDM7XG4gIH07XG59O1xuXG4vLyBzcmMvZ2V0RGVmYXVsdE1pZGRsZXdhcmUudHNcbmltcG9ydCB7IHRodW5rIGFzIHRodW5rTWlkZGxld2FyZSwgd2l0aEV4dHJhQXJndW1lbnQgfSBmcm9tIFwicmVkdXgtdGh1bmtcIjtcblxuLy8gc3JjL2NyZWF0ZUFjdGlvbi50c1xuaW1wb3J0IHsgaXNBY3Rpb24gfSBmcm9tIFwicmVkdXhcIjtcblxuLy8gc3JjL3RzSGVscGVycy50c1xudmFyIGhhc01hdGNoRnVuY3Rpb24gPSAodikgPT4ge1xuICByZXR1cm4gdiAmJiB0eXBlb2Ygdi5tYXRjaCA9PT0gXCJmdW5jdGlvblwiO1xufTtcblxuLy8gc3JjL2NyZWF0ZUFjdGlvbi50c1xuZnVuY3Rpb24gY3JlYXRlQWN0aW9uKHR5cGUsIHByZXBhcmVBY3Rpb24pIHtcbiAgZnVuY3Rpb24gYWN0aW9uQ3JlYXRvciguLi5hcmdzKSB7XG4gICAgaWYgKHByZXBhcmVBY3Rpb24pIHtcbiAgICAgIGxldCBwcmVwYXJlZCA9IHByZXBhcmVBY3Rpb24oLi4uYXJncyk7XG4gICAgICBpZiAoIXByZXBhcmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDApIDogXCJwcmVwYXJlQWN0aW9uIGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQ6IHByZXBhcmVkLnBheWxvYWQsXG4gICAgICAgIC4uLlwibWV0YVwiIGluIHByZXBhcmVkICYmIHtcbiAgICAgICAgICBtZXRhOiBwcmVwYXJlZC5tZXRhXG4gICAgICAgIH0sXG4gICAgICAgIC4uLlwiZXJyb3JcIiBpbiBwcmVwYXJlZCAmJiB7XG4gICAgICAgICAgZXJyb3I6IHByZXBhcmVkLmVycm9yXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlLFxuICAgICAgcGF5bG9hZDogYXJnc1swXVxuICAgIH07XG4gIH1cbiAgYWN0aW9uQ3JlYXRvci50b1N0cmluZyA9ICgpID0+IGAke3R5cGV9YDtcbiAgYWN0aW9uQ3JlYXRvci50eXBlID0gdHlwZTtcbiAgYWN0aW9uQ3JlYXRvci5tYXRjaCA9IChhY3Rpb24pID0+IGlzQWN0aW9uKGFjdGlvbikgJiYgYWN0aW9uLnR5cGUgPT09IHR5cGU7XG4gIHJldHVybiBhY3Rpb25DcmVhdG9yO1xufVxuZnVuY3Rpb24gaXNBY3Rpb25DcmVhdG9yKGFjdGlvbikge1xuICByZXR1cm4gdHlwZW9mIGFjdGlvbiA9PT0gXCJmdW5jdGlvblwiICYmIFwidHlwZVwiIGluIGFjdGlvbiAmJiAvLyBoYXNNYXRjaEZ1bmN0aW9uIG9ubHkgd2FudHMgTWF0Y2hlcnMgYnV0IEkgZG9uJ3Qgc2VlIHRoZSBwb2ludCBpbiByZXdyaXRpbmcgaXRcbiAgaGFzTWF0Y2hGdW5jdGlvbihhY3Rpb24pO1xufVxuZnVuY3Rpb24gaXNGU0EoYWN0aW9uKSB7XG4gIHJldHVybiBpc0FjdGlvbihhY3Rpb24pICYmIE9iamVjdC5rZXlzKGFjdGlvbikuZXZlcnkoaXNWYWxpZEtleSk7XG59XG5mdW5jdGlvbiBpc1ZhbGlkS2V5KGtleSkge1xuICByZXR1cm4gW1widHlwZVwiLCBcInBheWxvYWRcIiwgXCJlcnJvclwiLCBcIm1ldGFcIl0uaW5kZXhPZihrZXkpID4gLTE7XG59XG5cbi8vIHNyYy9hY3Rpb25DcmVhdG9ySW52YXJpYW50TWlkZGxld2FyZS50c1xuZnVuY3Rpb24gZ2V0TWVzc2FnZSh0eXBlKSB7XG4gIGNvbnN0IHNwbGl0VHlwZSA9IHR5cGUgPyBgJHt0eXBlfWAuc3BsaXQoXCIvXCIpIDogW107XG4gIGNvbnN0IGFjdGlvbk5hbWUgPSBzcGxpdFR5cGVbc3BsaXRUeXBlLmxlbmd0aCAtIDFdIHx8IFwiYWN0aW9uQ3JlYXRvclwiO1xuICByZXR1cm4gYERldGVjdGVkIGFuIGFjdGlvbiBjcmVhdG9yIHdpdGggdHlwZSBcIiR7dHlwZSB8fCBcInVua25vd25cIn1cIiBiZWluZyBkaXNwYXRjaGVkLiBcbk1ha2Ugc3VyZSB5b3UncmUgY2FsbGluZyB0aGUgYWN0aW9uIGNyZWF0b3IgYmVmb3JlIGRpc3BhdGNoaW5nLCBpLmUuIFxcYGRpc3BhdGNoKCR7YWN0aW9uTmFtZX0oKSlcXGAgaW5zdGVhZCBvZiBcXGBkaXNwYXRjaCgke2FjdGlvbk5hbWV9KVxcYC4gVGhpcyBpcyBuZWNlc3NhcnkgZXZlbiBpZiB0aGUgYWN0aW9uIGhhcyBubyBwYXlsb2FkLmA7XG59XG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25DcmVhdG9ySW52YXJpYW50TWlkZGxld2FyZShvcHRpb25zID0ge30pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHJldHVybiAoKSA9PiAobmV4dCkgPT4gKGFjdGlvbikgPT4gbmV4dChhY3Rpb24pO1xuICB9XG4gIGNvbnN0IHtcbiAgICBpc0FjdGlvbkNyZWF0b3I6IGlzQWN0aW9uQ3JlYXRvcjIgPSBpc0FjdGlvbkNyZWF0b3JcbiAgfSA9IG9wdGlvbnM7XG4gIHJldHVybiAoKSA9PiAobmV4dCkgPT4gKGFjdGlvbikgPT4ge1xuICAgIGlmIChpc0FjdGlvbkNyZWF0b3IyKGFjdGlvbikpIHtcbiAgICAgIGNvbnNvbGUud2FybihnZXRNZXNzYWdlKGFjdGlvbi50eXBlKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gIH07XG59XG5cbi8vIHNyYy91dGlscy50c1xuaW1wb3J0IHsgcHJvZHVjZSBhcyBjcmVhdGVOZXh0U3RhdGUsIGlzRHJhZnRhYmxlIH0gZnJvbSBcImltbWVyXCI7XG5mdW5jdGlvbiBnZXRUaW1lTWVhc3VyZVV0aWxzKG1heERlbGF5LCBmbk5hbWUpIHtcbiAgbGV0IGVsYXBzZWQgPSAwO1xuICByZXR1cm4ge1xuICAgIG1lYXN1cmVUaW1lKGZuKSB7XG4gICAgICBjb25zdCBzdGFydGVkID0gRGF0ZS5ub3coKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbGFwc2VkICs9IGZpbmlzaGVkIC0gc3RhcnRlZDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHdhcm5JZkV4Y2VlZGVkKCkge1xuICAgICAgaWYgKGVsYXBzZWQgPiBtYXhEZWxheSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYCR7Zm5OYW1lfSB0b29rICR7ZWxhcHNlZH1tcywgd2hpY2ggaXMgbW9yZSB0aGFuIHRoZSB3YXJuaW5nIHRocmVzaG9sZCBvZiAke21heERlbGF5fW1zLiBcbklmIHlvdXIgc3RhdGUgb3IgYWN0aW9ucyBhcmUgdmVyeSBsYXJnZSwgeW91IG1heSB3YW50IHRvIGRpc2FibGUgdGhlIG1pZGRsZXdhcmUgYXMgaXQgbWlnaHQgY2F1c2UgdG9vIG11Y2ggb2YgYSBzbG93ZG93biBpbiBkZXZlbG9wbWVudCBtb2RlLiBTZWUgaHR0cHM6Ly9yZWR1eC10b29sa2l0LmpzLm9yZy9hcGkvZ2V0RGVmYXVsdE1pZGRsZXdhcmUgZm9yIGluc3RydWN0aW9ucy5cbkl0IGlzIGRpc2FibGVkIGluIHByb2R1Y3Rpb24gYnVpbGRzLCBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGF0LmApO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbnZhciBUdXBsZSA9IGNsYXNzIF9UdXBsZSBleHRlbmRzIEFycmF5IHtcbiAgY29uc3RydWN0b3IoLi4uaXRlbXMpIHtcbiAgICBzdXBlciguLi5pdGVtcyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIF9UdXBsZS5wcm90b3R5cGUpO1xuICB9XG4gIHN0YXRpYyBnZXQgW1N5bWJvbC5zcGVjaWVzXSgpIHtcbiAgICByZXR1cm4gX1R1cGxlO1xuICB9XG4gIGNvbmNhdCguLi5hcnIpIHtcbiAgICByZXR1cm4gc3VwZXIuY29uY2F0LmFwcGx5KHRoaXMsIGFycik7XG4gIH1cbiAgcHJlcGVuZCguLi5hcnIpIHtcbiAgICBpZiAoYXJyLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KGFyclswXSkpIHtcbiAgICAgIHJldHVybiBuZXcgX1R1cGxlKC4uLmFyclswXS5jb25jYXQodGhpcykpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IF9UdXBsZSguLi5hcnIuY29uY2F0KHRoaXMpKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGZyZWV6ZURyYWZ0YWJsZSh2YWwpIHtcbiAgcmV0dXJuIGlzRHJhZnRhYmxlKHZhbCkgPyBjcmVhdGVOZXh0U3RhdGUodmFsLCAoKSA9PiB7XG4gIH0pIDogdmFsO1xufVxuZnVuY3Rpb24gZ2V0T3JJbnNlcnRDb21wdXRlZChtYXAsIGtleSwgY29tcHV0ZSkge1xuICBpZiAobWFwLmhhcyhrZXkpKSByZXR1cm4gbWFwLmdldChrZXkpO1xuICByZXR1cm4gbWFwLnNldChrZXksIGNvbXB1dGUoa2V5KSkuZ2V0KGtleSk7XG59XG5cbi8vIHNyYy9pbW11dGFibGVTdGF0ZUludmFyaWFudE1pZGRsZXdhcmUudHNcbmZ1bmN0aW9uIGlzSW1tdXRhYmxlRGVmYXVsdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8IHZhbHVlID09IG51bGwgfHwgT2JqZWN0LmlzRnJvemVuKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIHRyYWNrRm9yTXV0YXRpb25zKGlzSW1tdXRhYmxlLCBpZ25vcmVQYXRocywgb2JqKSB7XG4gIGNvbnN0IHRyYWNrZWRQcm9wZXJ0aWVzID0gdHJhY2tQcm9wZXJ0aWVzKGlzSW1tdXRhYmxlLCBpZ25vcmVQYXRocywgb2JqKTtcbiAgcmV0dXJuIHtcbiAgICBkZXRlY3RNdXRhdGlvbnMoKSB7XG4gICAgICByZXR1cm4gZGV0ZWN0TXV0YXRpb25zKGlzSW1tdXRhYmxlLCBpZ25vcmVQYXRocywgdHJhY2tlZFByb3BlcnRpZXMsIG9iaik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gdHJhY2tQcm9wZXJ0aWVzKGlzSW1tdXRhYmxlLCBpZ25vcmVQYXRocyA9IFtdLCBvYmosIHBhdGggPSBcIlwiLCBjaGVja2VkT2JqZWN0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCkpIHtcbiAgY29uc3QgdHJhY2tlZCA9IHtcbiAgICB2YWx1ZTogb2JqXG4gIH07XG4gIGlmICghaXNJbW11dGFibGUob2JqKSAmJiAhY2hlY2tlZE9iamVjdHMuaGFzKG9iaikpIHtcbiAgICBjaGVja2VkT2JqZWN0cy5hZGQob2JqKTtcbiAgICB0cmFja2VkLmNoaWxkcmVuID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBjb25zdCBjaGlsZFBhdGggPSBwYXRoID8gcGF0aCArIFwiLlwiICsga2V5IDoga2V5O1xuICAgICAgaWYgKGlnbm9yZVBhdGhzLmxlbmd0aCAmJiBpZ25vcmVQYXRocy5pbmRleE9mKGNoaWxkUGF0aCkgIT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdHJhY2tlZC5jaGlsZHJlbltrZXldID0gdHJhY2tQcm9wZXJ0aWVzKGlzSW1tdXRhYmxlLCBpZ25vcmVQYXRocywgb2JqW2tleV0sIGNoaWxkUGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cmFja2VkO1xufVxuZnVuY3Rpb24gZGV0ZWN0TXV0YXRpb25zKGlzSW1tdXRhYmxlLCBpZ25vcmVkUGF0aHMgPSBbXSwgdHJhY2tlZFByb3BlcnR5LCBvYmosIHNhbWVQYXJlbnRSZWYgPSBmYWxzZSwgcGF0aCA9IFwiXCIpIHtcbiAgY29uc3QgcHJldk9iaiA9IHRyYWNrZWRQcm9wZXJ0eSA/IHRyYWNrZWRQcm9wZXJ0eS52YWx1ZSA6IHZvaWQgMDtcbiAgY29uc3Qgc2FtZVJlZiA9IHByZXZPYmogPT09IG9iajtcbiAgaWYgKHNhbWVQYXJlbnRSZWYgJiYgIXNhbWVSZWYgJiYgIU51bWJlci5pc05hTihvYmopKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdhc011dGF0ZWQ6IHRydWUsXG4gICAgICBwYXRoXG4gICAgfTtcbiAgfVxuICBpZiAoaXNJbW11dGFibGUocHJldk9iaikgfHwgaXNJbW11dGFibGUob2JqKSkge1xuICAgIHJldHVybiB7XG4gICAgICB3YXNNdXRhdGVkOiBmYWxzZVxuICAgIH07XG4gIH1cbiAgY29uc3Qga2V5c1RvRGV0ZWN0ID0ge307XG4gIGZvciAobGV0IGtleSBpbiB0cmFja2VkUHJvcGVydHkuY2hpbGRyZW4pIHtcbiAgICBrZXlzVG9EZXRlY3Rba2V5XSA9IHRydWU7XG4gIH1cbiAgZm9yIChsZXQga2V5IGluIG9iaikge1xuICAgIGtleXNUb0RldGVjdFtrZXldID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBoYXNJZ25vcmVkUGF0aHMgPSBpZ25vcmVkUGF0aHMubGVuZ3RoID4gMDtcbiAgZm9yIChsZXQga2V5IGluIGtleXNUb0RldGVjdCkge1xuICAgIGNvbnN0IG5lc3RlZFBhdGggPSBwYXRoID8gcGF0aCArIFwiLlwiICsga2V5IDoga2V5O1xuICAgIGlmIChoYXNJZ25vcmVkUGF0aHMpIHtcbiAgICAgIGNvbnN0IGhhc01hdGNoZXMgPSBpZ25vcmVkUGF0aHMuc29tZSgoaWdub3JlZCkgPT4ge1xuICAgICAgICBpZiAoaWdub3JlZCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgIHJldHVybiBpZ25vcmVkLnRlc3QobmVzdGVkUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5lc3RlZFBhdGggPT09IGlnbm9yZWQ7XG4gICAgICB9KTtcbiAgICAgIGlmIChoYXNNYXRjaGVzKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBkZXRlY3RNdXRhdGlvbnMoaXNJbW11dGFibGUsIGlnbm9yZWRQYXRocywgdHJhY2tlZFByb3BlcnR5LmNoaWxkcmVuW2tleV0sIG9ialtrZXldLCBzYW1lUmVmLCBuZXN0ZWRQYXRoKTtcbiAgICBpZiAocmVzdWx0Lndhc011dGF0ZWQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2FzTXV0YXRlZDogZmFsc2VcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUltbXV0YWJsZVN0YXRlSW52YXJpYW50TWlkZGxld2FyZShvcHRpb25zID0ge30pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHJldHVybiAoKSA9PiAobmV4dCkgPT4gKGFjdGlvbikgPT4gbmV4dChhY3Rpb24pO1xuICB9IGVsc2Uge1xuICAgIGxldCBzdHJpbmdpZnkyID0gZnVuY3Rpb24ob2JqLCBzZXJpYWxpemVyLCBpbmRlbnQsIGRlY3ljbGVyKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqLCBnZXRTZXJpYWxpemUyKHNlcmlhbGl6ZXIsIGRlY3ljbGVyKSwgaW5kZW50KTtcbiAgICB9LCBnZXRTZXJpYWxpemUyID0gZnVuY3Rpb24oc2VyaWFsaXplciwgZGVjeWNsZXIpIHtcbiAgICAgIGxldCBzdGFjayA9IFtdLCBrZXlzID0gW107XG4gICAgICBpZiAoIWRlY3ljbGVyKSBkZWN5Y2xlciA9IGZ1bmN0aW9uKF8sIHZhbHVlKSB7XG4gICAgICAgIGlmIChzdGFja1swXSA9PT0gdmFsdWUpIHJldHVybiBcIltDaXJjdWxhciB+XVwiO1xuICAgICAgICByZXR1cm4gXCJbQ2lyY3VsYXIgfi5cIiArIGtleXMuc2xpY2UoMCwgc3RhY2suaW5kZXhPZih2YWx1ZSkpLmpvaW4oXCIuXCIpICsgXCJdXCI7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgdGhpc1BvcyA9IHN0YWNrLmluZGV4T2YodGhpcyk7XG4gICAgICAgICAgfnRoaXNQb3MgPyBzdGFjay5zcGxpY2UodGhpc1BvcyArIDEpIDogc3RhY2sucHVzaCh0aGlzKTtcbiAgICAgICAgICB+dGhpc1BvcyA/IGtleXMuc3BsaWNlKHRoaXNQb3MsIEluZmluaXR5LCBrZXkpIDoga2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgaWYgKH5zdGFjay5pbmRleE9mKHZhbHVlKSkgdmFsdWUgPSBkZWN5Y2xlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Ugc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVyID09IG51bGwgPyB2YWx1ZSA6IHNlcmlhbGl6ZXIuY2FsbCh0aGlzLCBrZXksIHZhbHVlKTtcbiAgICAgIH07XG4gICAgfTtcbiAgICB2YXIgc3RyaW5naWZ5ID0gc3RyaW5naWZ5MiwgZ2V0U2VyaWFsaXplID0gZ2V0U2VyaWFsaXplMjtcbiAgICBsZXQge1xuICAgICAgaXNJbW11dGFibGUgPSBpc0ltbXV0YWJsZURlZmF1bHQsXG4gICAgICBpZ25vcmVkUGF0aHMsXG4gICAgICB3YXJuQWZ0ZXIgPSAzMlxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHRyYWNrID0gdHJhY2tGb3JNdXRhdGlvbnMuYmluZChudWxsLCBpc0ltbXV0YWJsZSwgaWdub3JlZFBhdGhzKTtcbiAgICByZXR1cm4gKHtcbiAgICAgIGdldFN0YXRlXG4gICAgfSkgPT4ge1xuICAgICAgbGV0IHN0YXRlID0gZ2V0U3RhdGUoKTtcbiAgICAgIGxldCB0cmFja2VyID0gdHJhY2soc3RhdGUpO1xuICAgICAgbGV0IHJlc3VsdDtcbiAgICAgIHJldHVybiAobmV4dCkgPT4gKGFjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBtZWFzdXJlVXRpbHMgPSBnZXRUaW1lTWVhc3VyZVV0aWxzKHdhcm5BZnRlciwgXCJJbW11dGFibGVTdGF0ZUludmFyaWFudE1pZGRsZXdhcmVcIik7XG4gICAgICAgIG1lYXN1cmVVdGlscy5tZWFzdXJlVGltZSgoKSA9PiB7XG4gICAgICAgICAgc3RhdGUgPSBnZXRTdGF0ZSgpO1xuICAgICAgICAgIHJlc3VsdCA9IHRyYWNrZXIuZGV0ZWN0TXV0YXRpb25zKCk7XG4gICAgICAgICAgdHJhY2tlciA9IHRyYWNrKHN0YXRlKTtcbiAgICAgICAgICBpZiAocmVzdWx0Lndhc011dGF0ZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE5KSA6IGBBIHN0YXRlIG11dGF0aW9uIHdhcyBkZXRlY3RlZCBiZXR3ZWVuIGRpc3BhdGNoZXMsIGluIHRoZSBwYXRoICcke3Jlc3VsdC5wYXRoIHx8IFwiXCJ9Jy4gIFRoaXMgbWF5IGNhdXNlIGluY29ycmVjdCBiZWhhdmlvci4gKGh0dHBzOi8vcmVkdXguanMub3JnL3N0eWxlLWd1aWRlL3N0eWxlLWd1aWRlI2RvLW5vdC1tdXRhdGUtc3RhdGUpYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGlzcGF0Y2hlZEFjdGlvbiA9IG5leHQoYWN0aW9uKTtcbiAgICAgICAgbWVhc3VyZVV0aWxzLm1lYXN1cmVUaW1lKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZSA9IGdldFN0YXRlKCk7XG4gICAgICAgICAgcmVzdWx0ID0gdHJhY2tlci5kZXRlY3RNdXRhdGlvbnMoKTtcbiAgICAgICAgICB0cmFja2VyID0gdHJhY2soc3RhdGUpO1xuICAgICAgICAgIGlmIChyZXN1bHQud2FzTXV0YXRlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjApIDogYEEgc3RhdGUgbXV0YXRpb24gd2FzIGRldGVjdGVkIGluc2lkZSBhIGRpc3BhdGNoLCBpbiB0aGUgcGF0aDogJHtyZXN1bHQucGF0aCB8fCBcIlwifS4gVGFrZSBhIGxvb2sgYXQgdGhlIHJlZHVjZXIocykgaGFuZGxpbmcgdGhlIGFjdGlvbiAke3N0cmluZ2lmeTIoYWN0aW9uKX0uIChodHRwczovL3JlZHV4LmpzLm9yZy9zdHlsZS1ndWlkZS9zdHlsZS1ndWlkZSNkby1ub3QtbXV0YXRlLXN0YXRlKWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG1lYXN1cmVVdGlscy53YXJuSWZFeGNlZWRlZCgpO1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hlZEFjdGlvbjtcbiAgICAgIH07XG4gICAgfTtcbiAgfVxufVxuXG4vLyBzcmMvc2VyaWFsaXphYmxlU3RhdGVJbnZhcmlhbnRNaWRkbGV3YXJlLnRzXG5pbXBvcnQgeyBpc0FjdGlvbiBhcyBpc0FjdGlvbjIsIGlzUGxhaW5PYmplY3QgfSBmcm9tIFwicmVkdXhcIjtcbmZ1bmN0aW9uIGlzUGxhaW4odmFsKSB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsO1xuICByZXR1cm4gdmFsID09IG51bGwgfHwgdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiIHx8IEFycmF5LmlzQXJyYXkodmFsKSB8fCBpc1BsYWluT2JqZWN0KHZhbCk7XG59XG5mdW5jdGlvbiBmaW5kTm9uU2VyaWFsaXphYmxlVmFsdWUodmFsdWUsIHBhdGggPSBcIlwiLCBpc1NlcmlhbGl6YWJsZSA9IGlzUGxhaW4sIGdldEVudHJpZXMsIGlnbm9yZWRQYXRocyA9IFtdLCBjYWNoZSkge1xuICBsZXQgZm91bmROZXN0ZWRTZXJpYWxpemFibGU7XG4gIGlmICghaXNTZXJpYWxpemFibGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleVBhdGg6IHBhdGggfHwgXCI8cm9vdD5cIixcbiAgICAgIHZhbHVlXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChjYWNoZT8uaGFzKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBlbnRyaWVzID0gZ2V0RW50cmllcyAhPSBudWxsID8gZ2V0RW50cmllcyh2YWx1ZSkgOiBPYmplY3QuZW50cmllcyh2YWx1ZSk7XG4gIGNvbnN0IGhhc0lnbm9yZWRQYXRocyA9IGlnbm9yZWRQYXRocy5sZW5ndGggPiAwO1xuICBmb3IgKGNvbnN0IFtrZXksIG5lc3RlZFZhbHVlXSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgbmVzdGVkUGF0aCA9IHBhdGggPyBwYXRoICsgXCIuXCIgKyBrZXkgOiBrZXk7XG4gICAgaWYgKGhhc0lnbm9yZWRQYXRocykge1xuICAgICAgY29uc3QgaGFzTWF0Y2hlcyA9IGlnbm9yZWRQYXRocy5zb21lKChpZ25vcmVkKSA9PiB7XG4gICAgICAgIGlmIChpZ25vcmVkIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgICAgcmV0dXJuIGlnbm9yZWQudGVzdChuZXN0ZWRQYXRoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmVzdGVkUGF0aCA9PT0gaWdub3JlZDtcbiAgICAgIH0pO1xuICAgICAgaWYgKGhhc01hdGNoZXMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghaXNTZXJpYWxpemFibGUobmVzdGVkVmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXlQYXRoOiBuZXN0ZWRQYXRoLFxuICAgICAgICB2YWx1ZTogbmVzdGVkVmFsdWVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbmVzdGVkVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGZvdW5kTmVzdGVkU2VyaWFsaXphYmxlID0gZmluZE5vblNlcmlhbGl6YWJsZVZhbHVlKG5lc3RlZFZhbHVlLCBuZXN0ZWRQYXRoLCBpc1NlcmlhbGl6YWJsZSwgZ2V0RW50cmllcywgaWdub3JlZFBhdGhzLCBjYWNoZSk7XG4gICAgICBpZiAoZm91bmROZXN0ZWRTZXJpYWxpemFibGUpIHtcbiAgICAgICAgcmV0dXJuIGZvdW5kTmVzdGVkU2VyaWFsaXphYmxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY2FjaGUgJiYgaXNOZXN0ZWRGcm96ZW4odmFsdWUpKSBjYWNoZS5hZGQodmFsdWUpO1xuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc05lc3RlZEZyb3plbih2YWx1ZSkge1xuICBpZiAoIU9iamVjdC5pc0Zyb3plbih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCBuZXN0ZWRWYWx1ZSBvZiBPYmplY3QudmFsdWVzKHZhbHVlKSkge1xuICAgIGlmICh0eXBlb2YgbmVzdGVkVmFsdWUgIT09IFwib2JqZWN0XCIgfHwgbmVzdGVkVmFsdWUgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgIGlmICghaXNOZXN0ZWRGcm96ZW4obmVzdGVkVmFsdWUpKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjcmVhdGVTZXJpYWxpemFibGVTdGF0ZUludmFyaWFudE1pZGRsZXdhcmUob3B0aW9ucyA9IHt9KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICByZXR1cm4gKCkgPT4gKG5leHQpID0+IChhY3Rpb24pID0+IG5leHQoYWN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7XG4gICAgICBpc1NlcmlhbGl6YWJsZSA9IGlzUGxhaW4sXG4gICAgICBnZXRFbnRyaWVzLFxuICAgICAgaWdub3JlZEFjdGlvbnMgPSBbXSxcbiAgICAgIGlnbm9yZWRBY3Rpb25QYXRocyA9IFtcIm1ldGEuYXJnXCIsIFwibWV0YS5iYXNlUXVlcnlNZXRhXCJdLFxuICAgICAgaWdub3JlZFBhdGhzID0gW10sXG4gICAgICB3YXJuQWZ0ZXIgPSAzMixcbiAgICAgIGlnbm9yZVN0YXRlID0gZmFsc2UsXG4gICAgICBpZ25vcmVBY3Rpb25zID0gZmFsc2UsXG4gICAgICBkaXNhYmxlQ2FjaGUgPSBmYWxzZVxuICAgIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGNhY2hlID0gIWRpc2FibGVDYWNoZSAmJiBXZWFrU2V0ID8gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrU2V0KCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIChzdG9yZUFQSSkgPT4gKG5leHQpID0+IChhY3Rpb24pID0+IHtcbiAgICAgIGlmICghaXNBY3Rpb24yKGFjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG5leHQoYWN0aW9uKTtcbiAgICAgIGNvbnN0IG1lYXN1cmVVdGlscyA9IGdldFRpbWVNZWFzdXJlVXRpbHMod2FybkFmdGVyLCBcIlNlcmlhbGl6YWJsZVN0YXRlSW52YXJpYW50TWlkZGxld2FyZVwiKTtcbiAgICAgIGlmICghaWdub3JlQWN0aW9ucyAmJiAhKGlnbm9yZWRBY3Rpb25zLmxlbmd0aCAmJiBpZ25vcmVkQWN0aW9ucy5pbmRleE9mKGFjdGlvbi50eXBlKSAhPT0gLTEpKSB7XG4gICAgICAgIG1lYXN1cmVVdGlscy5tZWFzdXJlVGltZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmRBY3Rpb25Ob25TZXJpYWxpemFibGVWYWx1ZSA9IGZpbmROb25TZXJpYWxpemFibGVWYWx1ZShhY3Rpb24sIFwiXCIsIGlzU2VyaWFsaXphYmxlLCBnZXRFbnRyaWVzLCBpZ25vcmVkQWN0aW9uUGF0aHMsIGNhY2hlKTtcbiAgICAgICAgICBpZiAoZm91bmRBY3Rpb25Ob25TZXJpYWxpemFibGVWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICBrZXlQYXRoLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgfSA9IGZvdW5kQWN0aW9uTm9uU2VyaWFsaXphYmxlVmFsdWU7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBBIG5vbi1zZXJpYWxpemFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIGFuIGFjdGlvbiwgaW4gdGhlIHBhdGg6IFxcYCR7a2V5UGF0aH1cXGAuIFZhbHVlOmAsIHZhbHVlLCBcIlxcblRha2UgYSBsb29rIGF0IHRoZSBsb2dpYyB0aGF0IGRpc3BhdGNoZWQgdGhpcyBhY3Rpb246IFwiLCBhY3Rpb24sIFwiXFxuKFNlZSBodHRwczovL3JlZHV4LmpzLm9yZy9mYXEvYWN0aW9ucyN3aHktc2hvdWxkLXR5cGUtYmUtYS1zdHJpbmctb3ItYXQtbGVhc3Qtc2VyaWFsaXphYmxlLXdoeS1zaG91bGQtbXktYWN0aW9uLXR5cGVzLWJlLWNvbnN0YW50cylcIiwgXCJcXG4oVG8gYWxsb3cgbm9uLXNlcmlhbGl6YWJsZSB2YWx1ZXMgc2VlOiBodHRwczovL3JlZHV4LXRvb2xraXQuanMub3JnL3VzYWdlL3VzYWdlLWd1aWRlI3dvcmtpbmctd2l0aC1ub24tc2VyaWFsaXphYmxlLWRhdGEpXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIWlnbm9yZVN0YXRlKSB7XG4gICAgICAgIG1lYXN1cmVVdGlscy5tZWFzdXJlVGltZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZUFQSS5nZXRTdGF0ZSgpO1xuICAgICAgICAgIGNvbnN0IGZvdW5kU3RhdGVOb25TZXJpYWxpemFibGVWYWx1ZSA9IGZpbmROb25TZXJpYWxpemFibGVWYWx1ZShzdGF0ZSwgXCJcIiwgaXNTZXJpYWxpemFibGUsIGdldEVudHJpZXMsIGlnbm9yZWRQYXRocywgY2FjaGUpO1xuICAgICAgICAgIGlmIChmb3VuZFN0YXRlTm9uU2VyaWFsaXphYmxlVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAga2V5UGF0aCxcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgIH0gPSBmb3VuZFN0YXRlTm9uU2VyaWFsaXphYmxlVmFsdWU7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBBIG5vbi1zZXJpYWxpemFibGUgdmFsdWUgd2FzIGRldGVjdGVkIGluIHRoZSBzdGF0ZSwgaW4gdGhlIHBhdGg6IFxcYCR7a2V5UGF0aH1cXGAuIFZhbHVlOmAsIHZhbHVlLCBgXG5UYWtlIGEgbG9vayBhdCB0aGUgcmVkdWNlcihzKSBoYW5kbGluZyB0aGlzIGFjdGlvbiB0eXBlOiAke2FjdGlvbi50eXBlfS5cbihTZWUgaHR0cHM6Ly9yZWR1eC5qcy5vcmcvZmFxL29yZ2FuaXppbmctc3RhdGUjY2FuLWktcHV0LWZ1bmN0aW9ucy1wcm9taXNlcy1vci1vdGhlci1ub24tc2VyaWFsaXphYmxlLWl0ZW1zLWluLW15LXN0b3JlLXN0YXRlKWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG1lYXN1cmVVdGlscy53YXJuSWZFeGNlZWRlZCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICB9XG59XG5cbi8vIHNyYy9nZXREZWZhdWx0TWlkZGxld2FyZS50c1xuZnVuY3Rpb24gaXNCb29sZWFuKHgpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcImJvb2xlYW5cIjtcbn1cbnZhciBidWlsZEdldERlZmF1bHRNaWRkbGV3YXJlID0gKCkgPT4gZnVuY3Rpb24gZ2V0RGVmYXVsdE1pZGRsZXdhcmUob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgdGh1bmsgPSB0cnVlLFxuICAgIGltbXV0YWJsZUNoZWNrID0gdHJ1ZSxcbiAgICBzZXJpYWxpemFibGVDaGVjayA9IHRydWUsXG4gICAgYWN0aW9uQ3JlYXRvckNoZWNrID0gdHJ1ZVxuICB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgbGV0IG1pZGRsZXdhcmVBcnJheSA9IG5ldyBUdXBsZSgpO1xuICBpZiAodGh1bmspIHtcbiAgICBpZiAoaXNCb29sZWFuKHRodW5rKSkge1xuICAgICAgbWlkZGxld2FyZUFycmF5LnB1c2godGh1bmtNaWRkbGV3YXJlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWlkZGxld2FyZUFycmF5LnB1c2god2l0aEV4dHJhQXJndW1lbnQodGh1bmsuZXh0cmFBcmd1bWVudCkpO1xuICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKGltbXV0YWJsZUNoZWNrKSB7XG4gICAgICBsZXQgaW1tdXRhYmxlT3B0aW9ucyA9IHt9O1xuICAgICAgaWYgKCFpc0Jvb2xlYW4oaW1tdXRhYmxlQ2hlY2spKSB7XG4gICAgICAgIGltbXV0YWJsZU9wdGlvbnMgPSBpbW11dGFibGVDaGVjaztcbiAgICAgIH1cbiAgICAgIG1pZGRsZXdhcmVBcnJheS51bnNoaWZ0KGNyZWF0ZUltbXV0YWJsZVN0YXRlSW52YXJpYW50TWlkZGxld2FyZShpbW11dGFibGVPcHRpb25zKSk7XG4gICAgfVxuICAgIGlmIChzZXJpYWxpemFibGVDaGVjaykge1xuICAgICAgbGV0IHNlcmlhbGl6YWJsZU9wdGlvbnMgPSB7fTtcbiAgICAgIGlmICghaXNCb29sZWFuKHNlcmlhbGl6YWJsZUNoZWNrKSkge1xuICAgICAgICBzZXJpYWxpemFibGVPcHRpb25zID0gc2VyaWFsaXphYmxlQ2hlY2s7XG4gICAgICB9XG4gICAgICBtaWRkbGV3YXJlQXJyYXkucHVzaChjcmVhdGVTZXJpYWxpemFibGVTdGF0ZUludmFyaWFudE1pZGRsZXdhcmUoc2VyaWFsaXphYmxlT3B0aW9ucykpO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uQ3JlYXRvckNoZWNrKSB7XG4gICAgICBsZXQgYWN0aW9uQ3JlYXRvck9wdGlvbnMgPSB7fTtcbiAgICAgIGlmICghaXNCb29sZWFuKGFjdGlvbkNyZWF0b3JDaGVjaykpIHtcbiAgICAgICAgYWN0aW9uQ3JlYXRvck9wdGlvbnMgPSBhY3Rpb25DcmVhdG9yQ2hlY2s7XG4gICAgICB9XG4gICAgICBtaWRkbGV3YXJlQXJyYXkudW5zaGlmdChjcmVhdGVBY3Rpb25DcmVhdG9ySW52YXJpYW50TWlkZGxld2FyZShhY3Rpb25DcmVhdG9yT3B0aW9ucykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWlkZGxld2FyZUFycmF5O1xufTtcblxuLy8gc3JjL2F1dG9CYXRjaEVuaGFuY2VyLnRzXG52YXIgU0hPVUxEX0FVVE9CQVRDSCA9IFwiUlRLX2F1dG9CYXRjaFwiO1xudmFyIHByZXBhcmVBdXRvQmF0Y2hlZCA9ICgpID0+IChwYXlsb2FkKSA9PiAoe1xuICBwYXlsb2FkLFxuICBtZXRhOiB7XG4gICAgW1NIT1VMRF9BVVRPQkFUQ0hdOiB0cnVlXG4gIH1cbn0pO1xudmFyIGNyZWF0ZVF1ZXVlV2l0aFRpbWVyID0gKHRpbWVvdXQpID0+IHtcbiAgcmV0dXJuIChub3RpZnkpID0+IHtcbiAgICBzZXRUaW1lb3V0KG5vdGlmeSwgdGltZW91dCk7XG4gIH07XG59O1xudmFyIGF1dG9CYXRjaEVuaGFuY2VyID0gKG9wdGlvbnMgPSB7XG4gIHR5cGU6IFwicmFmXCJcbn0pID0+IChuZXh0KSA9PiAoLi4uYXJncykgPT4ge1xuICBjb25zdCBzdG9yZSA9IG5leHQoLi4uYXJncyk7XG4gIGxldCBub3RpZnlpbmcgPSB0cnVlO1xuICBsZXQgc2hvdWxkTm90aWZ5QXRFbmRPZlRpY2sgPSBmYWxzZTtcbiAgbGV0IG5vdGlmaWNhdGlvblF1ZXVlZCA9IGZhbHNlO1xuICBjb25zdCBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBxdWV1ZUNhbGxiYWNrID0gb3B0aW9ucy50eXBlID09PSBcInRpY2tcIiA/IHF1ZXVlTWljcm90YXNrIDogb3B0aW9ucy50eXBlID09PSBcInJhZlwiID8gKFxuICAgIC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSB3b24ndCBleGlzdCBpbiBTU1IgZW52aXJvbm1lbnRzLiBGYWxsIGJhY2sgdG8gYSB2YWd1ZSBhcHByb3hpbWF0aW9uIGp1c3QgdG8ga2VlcCBmcm9tIGVycm9yaW5nLlxuICAgIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA/IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBjcmVhdGVRdWV1ZVdpdGhUaW1lcigxMClcbiAgKSA6IG9wdGlvbnMudHlwZSA9PT0gXCJjYWxsYmFja1wiID8gb3B0aW9ucy5xdWV1ZU5vdGlmaWNhdGlvbiA6IGNyZWF0ZVF1ZXVlV2l0aFRpbWVyKG9wdGlvbnMudGltZW91dCk7XG4gIGNvbnN0IG5vdGlmeUxpc3RlbmVycyA9ICgpID0+IHtcbiAgICBub3RpZmljYXRpb25RdWV1ZWQgPSBmYWxzZTtcbiAgICBpZiAoc2hvdWxkTm90aWZ5QXRFbmRPZlRpY2spIHtcbiAgICAgIHNob3VsZE5vdGlmeUF0RW5kT2ZUaWNrID0gZmFsc2U7XG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgobCkgPT4gbCgpKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdG9yZSwge1xuICAgIC8vIE92ZXJyaWRlIHRoZSBiYXNlIGBzdG9yZS5zdWJzY3JpYmVgIG1ldGhvZCB0byBrZWVwIG9yaWdpbmFsIGxpc3RlbmVyc1xuICAgIC8vIGZyb20gcnVubmluZyBpZiB3ZSdyZSBkZWxheWluZyBub3RpZmljYXRpb25zXG4gICAgc3Vic2NyaWJlKGxpc3RlbmVyMikge1xuICAgICAgY29uc3Qgd3JhcHBlZExpc3RlbmVyID0gKCkgPT4gbm90aWZ5aW5nICYmIGxpc3RlbmVyMigpO1xuICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUod3JhcHBlZExpc3RlbmVyKTtcbiAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIyKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIyKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICAvLyBPdmVycmlkZSB0aGUgYmFzZSBgc3RvcmUuZGlzcGF0Y2hgIG1ldGhvZCBzbyB0aGF0IHdlIGNhbiBjaGVjayBhY3Rpb25zXG4gICAgLy8gZm9yIHRoZSBgc2hvdWxkQXV0b0JhdGNoYCBmbGFnIGFuZCBkZXRlcm1pbmUgaWYgYmF0Y2hpbmcgaXMgYWN0aXZlXG4gICAgZGlzcGF0Y2goYWN0aW9uKSB7XG4gICAgICB0cnkge1xuICAgICAgICBub3RpZnlpbmcgPSAhYWN0aW9uPy5tZXRhPy5bU0hPVUxEX0FVVE9CQVRDSF07XG4gICAgICAgIHNob3VsZE5vdGlmeUF0RW5kT2ZUaWNrID0gIW5vdGlmeWluZztcbiAgICAgICAgaWYgKHNob3VsZE5vdGlmeUF0RW5kT2ZUaWNrKSB7XG4gICAgICAgICAgaWYgKCFub3RpZmljYXRpb25RdWV1ZWQpIHtcbiAgICAgICAgICAgIG5vdGlmaWNhdGlvblF1ZXVlZCA9IHRydWU7XG4gICAgICAgICAgICBxdWV1ZUNhbGxiYWNrKG5vdGlmeUxpc3RlbmVycyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9yZS5kaXNwYXRjaChhY3Rpb24pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgbm90aWZ5aW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuLy8gc3JjL2dldERlZmF1bHRFbmhhbmNlcnMudHNcbnZhciBidWlsZEdldERlZmF1bHRFbmhhbmNlcnMgPSAobWlkZGxld2FyZUVuaGFuY2VyKSA9PiBmdW5jdGlvbiBnZXREZWZhdWx0RW5oYW5jZXJzKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIGF1dG9CYXRjaCA9IHRydWVcbiAgfSA9IG9wdGlvbnMgPz8ge307XG4gIGxldCBlbmhhbmNlckFycmF5ID0gbmV3IFR1cGxlKG1pZGRsZXdhcmVFbmhhbmNlcik7XG4gIGlmIChhdXRvQmF0Y2gpIHtcbiAgICBlbmhhbmNlckFycmF5LnB1c2goYXV0b0JhdGNoRW5oYW5jZXIodHlwZW9mIGF1dG9CYXRjaCA9PT0gXCJvYmplY3RcIiA/IGF1dG9CYXRjaCA6IHZvaWQgMCkpO1xuICB9XG4gIHJldHVybiBlbmhhbmNlckFycmF5O1xufTtcblxuLy8gc3JjL2NvbmZpZ3VyZVN0b3JlLnRzXG5mdW5jdGlvbiBjb25maWd1cmVTdG9yZShvcHRpb25zKSB7XG4gIGNvbnN0IGdldERlZmF1bHRNaWRkbGV3YXJlID0gYnVpbGRHZXREZWZhdWx0TWlkZGxld2FyZSgpO1xuICBjb25zdCB7XG4gICAgcmVkdWNlciA9IHZvaWQgMCxcbiAgICBtaWRkbGV3YXJlLFxuICAgIGRldlRvb2xzID0gdHJ1ZSxcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHZvaWQgMCxcbiAgICBlbmhhbmNlcnMgPSB2b2lkIDBcbiAgfSA9IG9wdGlvbnMgfHwge307XG4gIGxldCByb290UmVkdWNlcjtcbiAgaWYgKHR5cGVvZiByZWR1Y2VyID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByb290UmVkdWNlciA9IHJlZHVjZXI7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdDIocmVkdWNlcikpIHtcbiAgICByb290UmVkdWNlciA9IGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2VyKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxKSA6IFwiYHJlZHVjZXJgIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQsIGFuZCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gb2JqZWN0IG9mIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gY29tYmluZVJlZHVjZXJzXCIpO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgJiYgbWlkZGxld2FyZSAmJiB0eXBlb2YgbWlkZGxld2FyZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMikgOiBcImBtaWRkbGV3YXJlYCBmaWVsZCBtdXN0IGJlIGEgY2FsbGJhY2tcIik7XG4gIH1cbiAgbGV0IGZpbmFsTWlkZGxld2FyZTtcbiAgaWYgKHR5cGVvZiBtaWRkbGV3YXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBmaW5hbE1pZGRsZXdhcmUgPSBtaWRkbGV3YXJlKGdldERlZmF1bHRNaWRkbGV3YXJlKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiICYmICFBcnJheS5pc0FycmF5KGZpbmFsTWlkZGxld2FyZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMpIDogXCJ3aGVuIHVzaW5nIGEgbWlkZGxld2FyZSBidWlsZGVyIGZ1bmN0aW9uLCBhbiBhcnJheSBvZiBtaWRkbGV3YXJlIG11c3QgYmUgcmV0dXJuZWRcIik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZpbmFsTWlkZGxld2FyZSA9IGdldERlZmF1bHRNaWRkbGV3YXJlKCk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiBmaW5hbE1pZGRsZXdhcmUuc29tZSgoaXRlbSkgPT4gdHlwZW9mIGl0ZW0gIT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0KSA6IFwiZWFjaCBtaWRkbGV3YXJlIHByb3ZpZGVkIHRvIGNvbmZpZ3VyZVN0b3JlIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiAgfVxuICBsZXQgZmluYWxDb21wb3NlID0gY29tcG9zZTI7XG4gIGlmIChkZXZUb29scykge1xuICAgIGZpbmFsQ29tcG9zZSA9IGNvbXBvc2VXaXRoRGV2VG9vbHMoe1xuICAgICAgLy8gRW5hYmxlIGNhcHR1cmUgb2Ygc3RhY2sgdHJhY2VzIGZvciBkaXNwYXRjaGVkIFJlZHV4IGFjdGlvbnNcbiAgICAgIHRyYWNlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIsXG4gICAgICAuLi50eXBlb2YgZGV2VG9vbHMgPT09IFwib2JqZWN0XCIgJiYgZGV2VG9vbHNcbiAgICB9KTtcbiAgfVxuICBjb25zdCBtaWRkbGV3YXJlRW5oYW5jZXIgPSBhcHBseU1pZGRsZXdhcmUoLi4uZmluYWxNaWRkbGV3YXJlKTtcbiAgY29uc3QgZ2V0RGVmYXVsdEVuaGFuY2VycyA9IGJ1aWxkR2V0RGVmYXVsdEVuaGFuY2VycyhtaWRkbGV3YXJlRW5oYW5jZXIpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiICYmIGVuaGFuY2VycyAmJiB0eXBlb2YgZW5oYW5jZXJzICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg1KSA6IFwiYGVuaGFuY2Vyc2AgZmllbGQgbXVzdCBiZSBhIGNhbGxiYWNrXCIpO1xuICB9XG4gIGxldCBzdG9yZUVuaGFuY2VycyA9IHR5cGVvZiBlbmhhbmNlcnMgPT09IFwiZnVuY3Rpb25cIiA/IGVuaGFuY2VycyhnZXREZWZhdWx0RW5oYW5jZXJzKSA6IGdldERlZmF1bHRFbmhhbmNlcnMoKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiAhQXJyYXkuaXNBcnJheShzdG9yZUVuaGFuY2VycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg2KSA6IFwiYGVuaGFuY2Vyc2AgY2FsbGJhY2sgbXVzdCByZXR1cm4gYW4gYXJyYXlcIik7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiBzdG9yZUVuaGFuY2Vycy5zb21lKChpdGVtKSA9PiB0eXBlb2YgaXRlbSAhPT0gXCJmdW5jdGlvblwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDcpIDogXCJlYWNoIGVuaGFuY2VyIHByb3ZpZGVkIHRvIGNvbmZpZ3VyZVN0b3JlIG11c3QgYmUgYSBmdW5jdGlvblwiKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiICYmIGZpbmFsTWlkZGxld2FyZS5sZW5ndGggJiYgIXN0b3JlRW5oYW5jZXJzLmluY2x1ZGVzKG1pZGRsZXdhcmVFbmhhbmNlcikpIHtcbiAgICBjb25zb2xlLmVycm9yKFwibWlkZGxld2FyZXMgd2VyZSBwcm92aWRlZCwgYnV0IG1pZGRsZXdhcmUgZW5oYW5jZXIgd2FzIG5vdCBpbmNsdWRlZCBpbiBmaW5hbCBlbmhhbmNlcnMgLSBtYWtlIHN1cmUgdG8gY2FsbCBgZ2V0RGVmYXVsdEVuaGFuY2Vyc2BcIik7XG4gIH1cbiAgY29uc3QgY29tcG9zZWRFbmhhbmNlciA9IGZpbmFsQ29tcG9zZSguLi5zdG9yZUVuaGFuY2Vycyk7XG4gIHJldHVybiBjcmVhdGVTdG9yZShyb290UmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGNvbXBvc2VkRW5oYW5jZXIpO1xufVxuXG4vLyBzcmMvY3JlYXRlUmVkdWNlci50c1xuaW1wb3J0IHsgcHJvZHVjZSBhcyBjcmVhdGVOZXh0U3RhdGUyLCBpc0RyYWZ0IGFzIGlzRHJhZnQyLCBpc0RyYWZ0YWJsZSBhcyBpc0RyYWZ0YWJsZTIgfSBmcm9tIFwiaW1tZXJcIjtcblxuLy8gc3JjL21hcEJ1aWxkZXJzLnRzXG5mdW5jdGlvbiBleGVjdXRlUmVkdWNlckJ1aWxkZXJDYWxsYmFjayhidWlsZGVyQ2FsbGJhY2spIHtcbiAgY29uc3QgYWN0aW9uc01hcCA9IHt9O1xuICBjb25zdCBhY3Rpb25NYXRjaGVycyA9IFtdO1xuICBsZXQgZGVmYXVsdENhc2VSZWR1Y2VyO1xuICBjb25zdCBidWlsZGVyID0ge1xuICAgIGFkZENhc2UodHlwZU9yQWN0aW9uQ3JlYXRvciwgcmVkdWNlcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBpZiAoYWN0aW9uTWF0Y2hlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDI2KSA6IFwiYGJ1aWxkZXIuYWRkQ2FzZWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIGBidWlsZGVyLmFkZE1hdGNoZXJgXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0Q2FzZVJlZHVjZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyNykgOiBcImBidWlsZGVyLmFkZENhc2VgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBgYnVpbGRlci5hZGREZWZhdWx0Q2FzZWBcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdHlwZU9yQWN0aW9uQ3JlYXRvciA9PT0gXCJzdHJpbmdcIiA/IHR5cGVPckFjdGlvbkNyZWF0b3IgOiB0eXBlT3JBY3Rpb25DcmVhdG9yLnR5cGU7XG4gICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjgpIDogXCJgYnVpbGRlci5hZGRDYXNlYCBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYW4gZW1wdHkgYWN0aW9uIHR5cGVcIik7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSBpbiBhY3Rpb25zTWFwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDI5KSA6IGBcXGBidWlsZGVyLmFkZENhc2VcXGAgY2Fubm90IGJlIGNhbGxlZCB3aXRoIHR3byByZWR1Y2VycyBmb3IgdGhlIHNhbWUgYWN0aW9uIHR5cGUgJyR7dHlwZX0nYCk7XG4gICAgICB9XG4gICAgICBhY3Rpb25zTWFwW3R5cGVdID0gcmVkdWNlcjtcbiAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH0sXG4gICAgYWRkTWF0Y2hlcihtYXRjaGVyLCByZWR1Y2VyKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGlmIChkZWZhdWx0Q2FzZVJlZHVjZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMCkgOiBcImBidWlsZGVyLmFkZE1hdGNoZXJgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBgYnVpbGRlci5hZGREZWZhdWx0Q2FzZWBcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFjdGlvbk1hdGNoZXJzLnB1c2goe1xuICAgICAgICBtYXRjaGVyLFxuICAgICAgICByZWR1Y2VyXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH0sXG4gICAgYWRkRGVmYXVsdENhc2UocmVkdWNlcikge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBpZiAoZGVmYXVsdENhc2VSZWR1Y2VyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzEpIDogXCJgYnVpbGRlci5hZGREZWZhdWx0Q2FzZWAgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmF1bHRDYXNlUmVkdWNlciA9IHJlZHVjZXI7XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9XG4gIH07XG4gIGJ1aWxkZXJDYWxsYmFjayhidWlsZGVyKTtcbiAgcmV0dXJuIFthY3Rpb25zTWFwLCBhY3Rpb25NYXRjaGVycywgZGVmYXVsdENhc2VSZWR1Y2VyXTtcbn1cblxuLy8gc3JjL2NyZWF0ZVJlZHVjZXIudHNcbmZ1bmN0aW9uIGlzU3RhdGVGdW5jdGlvbih4KSB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gXCJmdW5jdGlvblwiO1xufVxuZnVuY3Rpb24gY3JlYXRlUmVkdWNlcihpbml0aWFsU3RhdGUsIG1hcE9yQnVpbGRlckNhbGxiYWNrKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAodHlwZW9mIG1hcE9yQnVpbGRlckNhbGxiYWNrID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg4KSA6IFwiVGhlIG9iamVjdCBub3RhdGlvbiBmb3IgYGNyZWF0ZVJlZHVjZXJgIGhhcyBiZWVuIHJlbW92ZWQuIFBsZWFzZSB1c2UgdGhlICdidWlsZGVyIGNhbGxiYWNrJyBub3RhdGlvbiBpbnN0ZWFkOiBodHRwczovL3JlZHV4LXRvb2xraXQuanMub3JnL2FwaS9jcmVhdGVSZWR1Y2VyXCIpO1xuICAgIH1cbiAgfVxuICBsZXQgW2FjdGlvbnNNYXAsIGZpbmFsQWN0aW9uTWF0Y2hlcnMsIGZpbmFsRGVmYXVsdENhc2VSZWR1Y2VyXSA9IGV4ZWN1dGVSZWR1Y2VyQnVpbGRlckNhbGxiYWNrKG1hcE9yQnVpbGRlckNhbGxiYWNrKTtcbiAgbGV0IGdldEluaXRpYWxTdGF0ZTtcbiAgaWYgKGlzU3RhdGVGdW5jdGlvbihpbml0aWFsU3RhdGUpKSB7XG4gICAgZ2V0SW5pdGlhbFN0YXRlID0gKCkgPT4gZnJlZXplRHJhZnRhYmxlKGluaXRpYWxTdGF0ZSgpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmcm96ZW5Jbml0aWFsU3RhdGUgPSBmcmVlemVEcmFmdGFibGUoaW5pdGlhbFN0YXRlKTtcbiAgICBnZXRJbml0aWFsU3RhdGUgPSAoKSA9PiBmcm96ZW5Jbml0aWFsU3RhdGU7XG4gIH1cbiAgZnVuY3Rpb24gcmVkdWNlcihzdGF0ZSA9IGdldEluaXRpYWxTdGF0ZSgpLCBhY3Rpb24pIHtcbiAgICBsZXQgY2FzZVJlZHVjZXJzID0gW2FjdGlvbnNNYXBbYWN0aW9uLnR5cGVdLCAuLi5maW5hbEFjdGlvbk1hdGNoZXJzLmZpbHRlcigoe1xuICAgICAgbWF0Y2hlclxuICAgIH0pID0+IG1hdGNoZXIoYWN0aW9uKSkubWFwKCh7XG4gICAgICByZWR1Y2VyOiByZWR1Y2VyMlxuICAgIH0pID0+IHJlZHVjZXIyKV07XG4gICAgaWYgKGNhc2VSZWR1Y2Vycy5maWx0ZXIoKGNyKSA9PiAhIWNyKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGNhc2VSZWR1Y2VycyA9IFtmaW5hbERlZmF1bHRDYXNlUmVkdWNlcl07XG4gICAgfVxuICAgIHJldHVybiBjYXNlUmVkdWNlcnMucmVkdWNlKChwcmV2aW91c1N0YXRlLCBjYXNlUmVkdWNlcikgPT4ge1xuICAgICAgaWYgKGNhc2VSZWR1Y2VyKSB7XG4gICAgICAgIGlmIChpc0RyYWZ0MihwcmV2aW91c1N0YXRlKSkge1xuICAgICAgICAgIGNvbnN0IGRyYWZ0ID0gcHJldmlvdXNTdGF0ZTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBjYXNlUmVkdWNlcihkcmFmdCwgYWN0aW9uKTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1N0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0RyYWZ0YWJsZTIocHJldmlvdXNTdGF0ZSkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBjYXNlUmVkdWNlcihwcmV2aW91c1N0YXRlLCBhY3Rpb24pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzU3RhdGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzU3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkEgY2FzZSByZWR1Y2VyIG9uIGEgbm9uLWRyYWZ0YWJsZSB2YWx1ZSBtdXN0IG5vdCByZXR1cm4gdW5kZWZpbmVkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVOZXh0U3RhdGUyKHByZXZpb3VzU3RhdGUsIChkcmFmdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNhc2VSZWR1Y2VyKGRyYWZ0LCBhY3Rpb24pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldmlvdXNTdGF0ZTtcbiAgICB9LCBzdGF0ZSk7XG4gIH1cbiAgcmVkdWNlci5nZXRJbml0aWFsU3RhdGUgPSBnZXRJbml0aWFsU3RhdGU7XG4gIHJldHVybiByZWR1Y2VyO1xufVxuXG4vLyBzcmMvbWF0Y2hlcnMudHNcbnZhciBtYXRjaGVzID0gKG1hdGNoZXIsIGFjdGlvbikgPT4ge1xuICBpZiAoaGFzTWF0Y2hGdW5jdGlvbihtYXRjaGVyKSkge1xuICAgIHJldHVybiBtYXRjaGVyLm1hdGNoKGFjdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG1hdGNoZXIoYWN0aW9uKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGlzQW55T2YoLi4ubWF0Y2hlcnMpIHtcbiAgcmV0dXJuIChhY3Rpb24pID0+IHtcbiAgICByZXR1cm4gbWF0Y2hlcnMuc29tZSgobWF0Y2hlcikgPT4gbWF0Y2hlcyhtYXRjaGVyLCBhY3Rpb24pKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzQWxsT2YoLi4ubWF0Y2hlcnMpIHtcbiAgcmV0dXJuIChhY3Rpb24pID0+IHtcbiAgICByZXR1cm4gbWF0Y2hlcnMuZXZlcnkoKG1hdGNoZXIpID0+IG1hdGNoZXMobWF0Y2hlciwgYWN0aW9uKSk7XG4gIH07XG59XG5mdW5jdGlvbiBoYXNFeHBlY3RlZFJlcXVlc3RNZXRhZGF0YShhY3Rpb24sIHZhbGlkU3RhdHVzKSB7XG4gIGlmICghYWN0aW9uIHx8ICFhY3Rpb24ubWV0YSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBoYXNWYWxpZFJlcXVlc3RJZCA9IHR5cGVvZiBhY3Rpb24ubWV0YS5yZXF1ZXN0SWQgPT09IFwic3RyaW5nXCI7XG4gIGNvbnN0IGhhc1ZhbGlkUmVxdWVzdFN0YXR1cyA9IHZhbGlkU3RhdHVzLmluZGV4T2YoYWN0aW9uLm1ldGEucmVxdWVzdFN0YXR1cykgPiAtMTtcbiAgcmV0dXJuIGhhc1ZhbGlkUmVxdWVzdElkICYmIGhhc1ZhbGlkUmVxdWVzdFN0YXR1cztcbn1cbmZ1bmN0aW9uIGlzQXN5bmNUaHVua0FycmF5KGEpIHtcbiAgcmV0dXJuIHR5cGVvZiBhWzBdID09PSBcImZ1bmN0aW9uXCIgJiYgXCJwZW5kaW5nXCIgaW4gYVswXSAmJiBcImZ1bGZpbGxlZFwiIGluIGFbMF0gJiYgXCJyZWplY3RlZFwiIGluIGFbMF07XG59XG5mdW5jdGlvbiBpc1BlbmRpbmcoLi4uYXN5bmNUaHVua3MpIHtcbiAgaWYgKGFzeW5jVGh1bmtzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoYWN0aW9uKSA9PiBoYXNFeHBlY3RlZFJlcXVlc3RNZXRhZGF0YShhY3Rpb24sIFtcInBlbmRpbmdcIl0pO1xuICB9XG4gIGlmICghaXNBc3luY1RodW5rQXJyYXkoYXN5bmNUaHVua3MpKSB7XG4gICAgcmV0dXJuIGlzUGVuZGluZygpKGFzeW5jVGh1bmtzWzBdKTtcbiAgfVxuICByZXR1cm4gaXNBbnlPZiguLi5hc3luY1RodW5rcy5tYXAoKGFzeW5jVGh1bmspID0+IGFzeW5jVGh1bmsucGVuZGluZykpO1xufVxuZnVuY3Rpb24gaXNSZWplY3RlZCguLi5hc3luY1RodW5rcykge1xuICBpZiAoYXN5bmNUaHVua3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChhY3Rpb24pID0+IGhhc0V4cGVjdGVkUmVxdWVzdE1ldGFkYXRhKGFjdGlvbiwgW1wicmVqZWN0ZWRcIl0pO1xuICB9XG4gIGlmICghaXNBc3luY1RodW5rQXJyYXkoYXN5bmNUaHVua3MpKSB7XG4gICAgcmV0dXJuIGlzUmVqZWN0ZWQoKShhc3luY1RodW5rc1swXSk7XG4gIH1cbiAgcmV0dXJuIGlzQW55T2YoLi4uYXN5bmNUaHVua3MubWFwKChhc3luY1RodW5rKSA9PiBhc3luY1RodW5rLnJlamVjdGVkKSk7XG59XG5mdW5jdGlvbiBpc1JlamVjdGVkV2l0aFZhbHVlKC4uLmFzeW5jVGh1bmtzKSB7XG4gIGNvbnN0IGhhc0ZsYWcgPSAoYWN0aW9uKSA9PiB7XG4gICAgcmV0dXJuIGFjdGlvbiAmJiBhY3Rpb24ubWV0YSAmJiBhY3Rpb24ubWV0YS5yZWplY3RlZFdpdGhWYWx1ZTtcbiAgfTtcbiAgaWYgKGFzeW5jVGh1bmtzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBpc0FsbE9mKGlzUmVqZWN0ZWQoLi4uYXN5bmNUaHVua3MpLCBoYXNGbGFnKTtcbiAgfVxuICBpZiAoIWlzQXN5bmNUaHVua0FycmF5KGFzeW5jVGh1bmtzKSkge1xuICAgIHJldHVybiBpc1JlamVjdGVkV2l0aFZhbHVlKCkoYXN5bmNUaHVua3NbMF0pO1xuICB9XG4gIHJldHVybiBpc0FsbE9mKGlzUmVqZWN0ZWQoLi4uYXN5bmNUaHVua3MpLCBoYXNGbGFnKTtcbn1cbmZ1bmN0aW9uIGlzRnVsZmlsbGVkKC4uLmFzeW5jVGh1bmtzKSB7XG4gIGlmIChhc3luY1RodW5rcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gKGFjdGlvbikgPT4gaGFzRXhwZWN0ZWRSZXF1ZXN0TWV0YWRhdGEoYWN0aW9uLCBbXCJmdWxmaWxsZWRcIl0pO1xuICB9XG4gIGlmICghaXNBc3luY1RodW5rQXJyYXkoYXN5bmNUaHVua3MpKSB7XG4gICAgcmV0dXJuIGlzRnVsZmlsbGVkKCkoYXN5bmNUaHVua3NbMF0pO1xuICB9XG4gIHJldHVybiBpc0FueU9mKC4uLmFzeW5jVGh1bmtzLm1hcCgoYXN5bmNUaHVuaykgPT4gYXN5bmNUaHVuay5mdWxmaWxsZWQpKTtcbn1cbmZ1bmN0aW9uIGlzQXN5bmNUaHVua0FjdGlvbiguLi5hc3luY1RodW5rcykge1xuICBpZiAoYXN5bmNUaHVua3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChhY3Rpb24pID0+IGhhc0V4cGVjdGVkUmVxdWVzdE1ldGFkYXRhKGFjdGlvbiwgW1wicGVuZGluZ1wiLCBcImZ1bGZpbGxlZFwiLCBcInJlamVjdGVkXCJdKTtcbiAgfVxuICBpZiAoIWlzQXN5bmNUaHVua0FycmF5KGFzeW5jVGh1bmtzKSkge1xuICAgIHJldHVybiBpc0FzeW5jVGh1bmtBY3Rpb24oKShhc3luY1RodW5rc1swXSk7XG4gIH1cbiAgcmV0dXJuIGlzQW55T2YoLi4uYXN5bmNUaHVua3MuZmxhdE1hcCgoYXN5bmNUaHVuaykgPT4gW2FzeW5jVGh1bmsucGVuZGluZywgYXN5bmNUaHVuay5yZWplY3RlZCwgYXN5bmNUaHVuay5mdWxmaWxsZWRdKSk7XG59XG5cbi8vIHNyYy9uYW5vaWQudHNcbnZhciB1cmxBbHBoYWJldCA9IFwiTW9kdWxlU3ltYmhhc093blByLTAxMjM0NTY3ODlBQkNERUZHSE5SVmZnY3RpVXZ6X0txWVRKa0x4cFpYSWpRV1wiO1xudmFyIG5hbm9pZCA9IChzaXplID0gMjEpID0+IHtcbiAgbGV0IGlkID0gXCJcIjtcbiAgbGV0IGkgPSBzaXplO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgaWQgKz0gdXJsQWxwaGFiZXRbTWF0aC5yYW5kb20oKSAqIDY0IHwgMF07XG4gIH1cbiAgcmV0dXJuIGlkO1xufTtcblxuLy8gc3JjL2NyZWF0ZUFzeW5jVGh1bmsudHNcbnZhciBjb21tb25Qcm9wZXJ0aWVzID0gW1wibmFtZVwiLCBcIm1lc3NhZ2VcIiwgXCJzdGFja1wiLCBcImNvZGVcIl07XG52YXIgUmVqZWN0V2l0aFZhbHVlID0gY2xhc3Mge1xuICBjb25zdHJ1Y3RvcihwYXlsb2FkLCBtZXRhKSB7XG4gICAgdGhpcy5wYXlsb2FkID0gcGF5bG9hZDtcbiAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICB9XG4gIC8qXG4gIHR5cGUtb25seSBwcm9wZXJ0eSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFJlamVjdFdpdGhWYWx1ZSBhbmQgRnVsZmlsbFdpdGhNZXRhXG4gIGRvZXMgbm90IGV4aXN0IGF0IHJ1bnRpbWVcbiAgKi9cbiAgX3R5cGU7XG59O1xudmFyIEZ1bGZpbGxXaXRoTWV0YSA9IGNsYXNzIHtcbiAgY29uc3RydWN0b3IocGF5bG9hZCwgbWV0YSkge1xuICAgIHRoaXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgfVxuICAvKlxuICB0eXBlLW9ubHkgcHJvcGVydHkgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBSZWplY3RXaXRoVmFsdWUgYW5kIEZ1bGZpbGxXaXRoTWV0YVxuICBkb2VzIG5vdCBleGlzdCBhdCBydW50aW1lXG4gICovXG4gIF90eXBlO1xufTtcbnZhciBtaW5pU2VyaWFsaXplRXJyb3IgPSAodmFsdWUpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNpbXBsZUVycm9yID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBjb21tb25Qcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlW3Byb3BlcnR5XSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBzaW1wbGVFcnJvcltwcm9wZXJ0eV0gPSB2YWx1ZVtwcm9wZXJ0eV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzaW1wbGVFcnJvcjtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2U6IFN0cmluZyh2YWx1ZSlcbiAgfTtcbn07XG52YXIgY3JlYXRlQXN5bmNUaHVuayA9IC8qIEBfX1BVUkVfXyAqLyAoKCkgPT4ge1xuICBmdW5jdGlvbiBjcmVhdGVBc3luY1RodW5rMih0eXBlUHJlZml4LCBwYXlsb2FkQ3JlYXRvciwgb3B0aW9ucykge1xuICAgIGNvbnN0IGZ1bGZpbGxlZCA9IGNyZWF0ZUFjdGlvbih0eXBlUHJlZml4ICsgXCIvZnVsZmlsbGVkXCIsIChwYXlsb2FkLCByZXF1ZXN0SWQsIGFyZywgbWV0YSkgPT4gKHtcbiAgICAgIHBheWxvYWQsXG4gICAgICBtZXRhOiB7XG4gICAgICAgIC4uLm1ldGEgfHwge30sXG4gICAgICAgIGFyZyxcbiAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICByZXF1ZXN0U3RhdHVzOiBcImZ1bGZpbGxlZFwiXG4gICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IHBlbmRpbmcgPSBjcmVhdGVBY3Rpb24odHlwZVByZWZpeCArIFwiL3BlbmRpbmdcIiwgKHJlcXVlc3RJZCwgYXJnLCBtZXRhKSA9PiAoe1xuICAgICAgcGF5bG9hZDogdm9pZCAwLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5tZXRhIHx8IHt9LFxuICAgICAgICBhcmcsXG4gICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgcmVxdWVzdFN0YXR1czogXCJwZW5kaW5nXCJcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgY29uc3QgcmVqZWN0ZWQgPSBjcmVhdGVBY3Rpb24odHlwZVByZWZpeCArIFwiL3JlamVjdGVkXCIsIChlcnJvciwgcmVxdWVzdElkLCBhcmcsIHBheWxvYWQsIG1ldGEpID0+ICh7XG4gICAgICBwYXlsb2FkLFxuICAgICAgZXJyb3I6IChvcHRpb25zICYmIG9wdGlvbnMuc2VyaWFsaXplRXJyb3IgfHwgbWluaVNlcmlhbGl6ZUVycm9yKShlcnJvciB8fCBcIlJlamVjdGVkXCIpLFxuICAgICAgbWV0YToge1xuICAgICAgICAuLi5tZXRhIHx8IHt9LFxuICAgICAgICBhcmcsXG4gICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgcmVqZWN0ZWRXaXRoVmFsdWU6ICEhcGF5bG9hZCxcbiAgICAgICAgcmVxdWVzdFN0YXR1czogXCJyZWplY3RlZFwiLFxuICAgICAgICBhYm9ydGVkOiBlcnJvcj8ubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIsXG4gICAgICAgIGNvbmRpdGlvbjogZXJyb3I/Lm5hbWUgPT09IFwiQ29uZGl0aW9uRXJyb3JcIlxuICAgICAgfVxuICAgIH0pKTtcbiAgICBmdW5jdGlvbiBhY3Rpb25DcmVhdG9yKGFyZykge1xuICAgICAgcmV0dXJuIChkaXNwYXRjaCwgZ2V0U3RhdGUsIGV4dHJhKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IG9wdGlvbnM/LmlkR2VuZXJhdG9yID8gb3B0aW9ucy5pZEdlbmVyYXRvcihhcmcpIDogbmFub2lkKCk7XG4gICAgICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgbGV0IGFib3J0SGFuZGxlcjtcbiAgICAgICAgbGV0IGFib3J0UmVhc29uO1xuICAgICAgICBmdW5jdGlvbiBhYm9ydChyZWFzb24pIHtcbiAgICAgICAgICBhYm9ydFJlYXNvbiA9IHJlYXNvbjtcbiAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9taXNlID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgbGV0IGZpbmFsQWN0aW9uO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgY29uZGl0aW9uUmVzdWx0ID0gb3B0aW9ucz8uY29uZGl0aW9uPy4oYXJnLCB7XG4gICAgICAgICAgICAgIGdldFN0YXRlLFxuICAgICAgICAgICAgICBleHRyYVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXNUaGVuYWJsZShjb25kaXRpb25SZXN1bHQpKSB7XG4gICAgICAgICAgICAgIGNvbmRpdGlvblJlc3VsdCA9IGF3YWl0IGNvbmRpdGlvblJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb25kaXRpb25SZXN1bHQgPT09IGZhbHNlIHx8IGFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJDb25kaXRpb25FcnJvclwiLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiQWJvcnRlZCBkdWUgdG8gY29uZGl0aW9uIGNhbGxiYWNrIHJldHVybmluZyBmYWxzZS5cIlxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWJvcnRlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGFib3J0SGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZWplY3Qoe1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJBYm9ydEVycm9yXCIsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBhYm9ydFJlYXNvbiB8fCBcIkFib3J0ZWRcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBhYm9ydEhhbmRsZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaChwZW5kaW5nKHJlcXVlc3RJZCwgYXJnLCBvcHRpb25zPy5nZXRQZW5kaW5nTWV0YT8uKHtcbiAgICAgICAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAgICAgICBhcmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgZ2V0U3RhdGUsXG4gICAgICAgICAgICAgIGV4dHJhXG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICAgICAgZmluYWxBY3Rpb24gPSBhd2FpdCBQcm9taXNlLnJhY2UoW2Fib3J0ZWRQcm9taXNlLCBQcm9taXNlLnJlc29sdmUocGF5bG9hZENyZWF0b3IoYXJnLCB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoLFxuICAgICAgICAgICAgICBnZXRTdGF0ZSxcbiAgICAgICAgICAgICAgZXh0cmEsXG4gICAgICAgICAgICAgIHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICAgICAgICBhYm9ydCxcbiAgICAgICAgICAgICAgcmVqZWN0V2l0aFZhbHVlOiAodmFsdWUsIG1ldGEpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlamVjdFdpdGhWYWx1ZSh2YWx1ZSwgbWV0YSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGZ1bGZpbGxXaXRoVmFsdWU6ICh2YWx1ZSwgbWV0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRnVsZmlsbFdpdGhNZXRhKHZhbHVlLCBtZXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUmVqZWN0V2l0aFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBGdWxmaWxsV2l0aE1ldGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVsZmlsbGVkKHJlc3VsdC5wYXlsb2FkLCByZXF1ZXN0SWQsIGFyZywgcmVzdWx0Lm1ldGEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmdWxmaWxsZWQocmVzdWx0LCByZXF1ZXN0SWQsIGFyZyk7XG4gICAgICAgICAgICB9KV0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZmluYWxBY3Rpb24gPSBlcnIgaW5zdGFuY2VvZiBSZWplY3RXaXRoVmFsdWUgPyByZWplY3RlZChudWxsLCByZXF1ZXN0SWQsIGFyZywgZXJyLnBheWxvYWQsIGVyci5tZXRhKSA6IHJlamVjdGVkKGVyciwgcmVxdWVzdElkLCBhcmcpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoYWJvcnRIYW5kbGVyKSB7XG4gICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHNraXBEaXNwYXRjaCA9IG9wdGlvbnMgJiYgIW9wdGlvbnMuZGlzcGF0Y2hDb25kaXRpb25SZWplY3Rpb24gJiYgcmVqZWN0ZWQubWF0Y2goZmluYWxBY3Rpb24pICYmIGZpbmFsQWN0aW9uLm1ldGEuY29uZGl0aW9uO1xuICAgICAgICAgIGlmICghc2tpcERpc3BhdGNoKSB7XG4gICAgICAgICAgICBkaXNwYXRjaChmaW5hbEFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmaW5hbEFjdGlvbjtcbiAgICAgICAgfSgpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihwcm9taXNlLCB7XG4gICAgICAgICAgYWJvcnQsXG4gICAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAgIGFyZyxcbiAgICAgICAgICB1bndyYXAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKHVud3JhcFJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjdGlvbkNyZWF0b3IsIHtcbiAgICAgIHBlbmRpbmcsXG4gICAgICByZWplY3RlZCxcbiAgICAgIGZ1bGZpbGxlZCxcbiAgICAgIHNldHRsZWQ6IGlzQW55T2YocmVqZWN0ZWQsIGZ1bGZpbGxlZCksXG4gICAgICB0eXBlUHJlZml4XG4gICAgfSk7XG4gIH1cbiAgY3JlYXRlQXN5bmNUaHVuazIud2l0aFR5cGVzID0gKCkgPT4gY3JlYXRlQXN5bmNUaHVuazI7XG4gIHJldHVybiBjcmVhdGVBc3luY1RodW5rMjtcbn0pKCk7XG5mdW5jdGlvbiB1bndyYXBSZXN1bHQoYWN0aW9uKSB7XG4gIGlmIChhY3Rpb24ubWV0YSAmJiBhY3Rpb24ubWV0YS5yZWplY3RlZFdpdGhWYWx1ZSkge1xuICAgIHRocm93IGFjdGlvbi5wYXlsb2FkO1xuICB9XG4gIGlmIChhY3Rpb24uZXJyb3IpIHtcbiAgICB0aHJvdyBhY3Rpb24uZXJyb3I7XG4gIH1cbiAgcmV0dXJuIGFjdGlvbi5wYXlsb2FkO1xufVxuZnVuY3Rpb24gaXNUaGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbi8vIHNyYy9jcmVhdGVTbGljZS50c1xudmFyIGFzeW5jVGh1bmtTeW1ib2wgPSAvKiBAX19QVVJFX18gKi8gU3ltYm9sLmZvcihcInJ0ay1zbGljZS1jcmVhdGVhc3luY3RodW5rXCIpO1xudmFyIGFzeW5jVGh1bmtDcmVhdG9yID0ge1xuICBbYXN5bmNUaHVua1N5bWJvbF06IGNyZWF0ZUFzeW5jVGh1bmtcbn07XG52YXIgUmVkdWNlclR5cGUgPSAvKiBAX19QVVJFX18gKi8gKChSZWR1Y2VyVHlwZTIpID0+IHtcbiAgUmVkdWNlclR5cGUyW1wicmVkdWNlclwiXSA9IFwicmVkdWNlclwiO1xuICBSZWR1Y2VyVHlwZTJbXCJyZWR1Y2VyV2l0aFByZXBhcmVcIl0gPSBcInJlZHVjZXJXaXRoUHJlcGFyZVwiO1xuICBSZWR1Y2VyVHlwZTJbXCJhc3luY1RodW5rXCJdID0gXCJhc3luY1RodW5rXCI7XG4gIHJldHVybiBSZWR1Y2VyVHlwZTI7XG59KShSZWR1Y2VyVHlwZSB8fCB7fSk7XG5mdW5jdGlvbiBnZXRUeXBlKHNsaWNlLCBhY3Rpb25LZXkpIHtcbiAgcmV0dXJuIGAke3NsaWNlfS8ke2FjdGlvbktleX1gO1xufVxuZnVuY3Rpb24gYnVpbGRDcmVhdGVTbGljZSh7XG4gIGNyZWF0b3JzXG59ID0ge30pIHtcbiAgY29uc3QgY0FUID0gY3JlYXRvcnM/LmFzeW5jVGh1bms/Llthc3luY1RodW5rU3ltYm9sXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVNsaWNlMihvcHRpb25zKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIHJlZHVjZXJQYXRoID0gbmFtZVxuICAgIH0gPSBvcHRpb25zO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTEpIDogXCJgbmFtZWAgaXMgYSByZXF1aXJlZCBvcHRpb24gZm9yIGNyZWF0ZVNsaWNlXCIpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbFN0YXRlID09PSB2b2lkIDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIllvdSBtdXN0IHByb3ZpZGUgYW4gYGluaXRpYWxTdGF0ZWAgdmFsdWUgdGhhdCBpcyBub3QgYHVuZGVmaW5lZGAuIFlvdSBtYXkgaGF2ZSBtaXNzcGVsbGVkIGBpbml0aWFsU3RhdGVgXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByZWR1Y2VycyA9ICh0eXBlb2Ygb3B0aW9ucy5yZWR1Y2VycyA9PT0gXCJmdW5jdGlvblwiID8gb3B0aW9ucy5yZWR1Y2VycyhidWlsZFJlZHVjZXJDcmVhdG9ycygpKSA6IG9wdGlvbnMucmVkdWNlcnMpIHx8IHt9O1xuICAgIGNvbnN0IHJlZHVjZXJOYW1lcyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtcbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgc2xpY2VDYXNlUmVkdWNlcnNCeU5hbWU6IHt9LFxuICAgICAgc2xpY2VDYXNlUmVkdWNlcnNCeVR5cGU6IHt9LFxuICAgICAgYWN0aW9uQ3JlYXRvcnM6IHt9LFxuICAgICAgc2xpY2VNYXRjaGVyczogW11cbiAgICB9O1xuICAgIGNvbnN0IGNvbnRleHRNZXRob2RzID0ge1xuICAgICAgYWRkQ2FzZSh0eXBlT3JBY3Rpb25DcmVhdG9yLCByZWR1Y2VyMikge1xuICAgICAgICBjb25zdCB0eXBlID0gdHlwZW9mIHR5cGVPckFjdGlvbkNyZWF0b3IgPT09IFwic3RyaW5nXCIgPyB0eXBlT3JBY3Rpb25DcmVhdG9yIDogdHlwZU9yQWN0aW9uQ3JlYXRvci50eXBlO1xuICAgICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxMikgOiBcImBjb250ZXh0LmFkZENhc2VgIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhbiBlbXB0eSBhY3Rpb24gdHlwZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSBpbiBjb250ZXh0LnNsaWNlQ2FzZVJlZHVjZXJzQnlUeXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTMpIDogXCJgY29udGV4dC5hZGRDYXNlYCBjYW5ub3QgYmUgY2FsbGVkIHdpdGggdHdvIHJlZHVjZXJzIGZvciB0aGUgc2FtZSBhY3Rpb24gdHlwZTogXCIgKyB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LnNsaWNlQ2FzZVJlZHVjZXJzQnlUeXBlW3R5cGVdID0gcmVkdWNlcjI7XG4gICAgICAgIHJldHVybiBjb250ZXh0TWV0aG9kcztcbiAgICAgIH0sXG4gICAgICBhZGRNYXRjaGVyKG1hdGNoZXIsIHJlZHVjZXIyKSB7XG4gICAgICAgIGNvbnRleHQuc2xpY2VNYXRjaGVycy5wdXNoKHtcbiAgICAgICAgICBtYXRjaGVyLFxuICAgICAgICAgIHJlZHVjZXI6IHJlZHVjZXIyXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29udGV4dE1ldGhvZHM7XG4gICAgICB9LFxuICAgICAgZXhwb3NlQWN0aW9uKG5hbWUyLCBhY3Rpb25DcmVhdG9yKSB7XG4gICAgICAgIGNvbnRleHQuYWN0aW9uQ3JlYXRvcnNbbmFtZTJdID0gYWN0aW9uQ3JlYXRvcjtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRNZXRob2RzO1xuICAgICAgfSxcbiAgICAgIGV4cG9zZUNhc2VSZWR1Y2VyKG5hbWUyLCByZWR1Y2VyMikge1xuICAgICAgICBjb250ZXh0LnNsaWNlQ2FzZVJlZHVjZXJzQnlOYW1lW25hbWUyXSA9IHJlZHVjZXIyO1xuICAgICAgICByZXR1cm4gY29udGV4dE1ldGhvZHM7XG4gICAgICB9XG4gICAgfTtcbiAgICByZWR1Y2VyTmFtZXMuZm9yRWFjaCgocmVkdWNlck5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHJlZHVjZXJEZWZpbml0aW9uID0gcmVkdWNlcnNbcmVkdWNlck5hbWVdO1xuICAgICAgY29uc3QgcmVkdWNlckRldGFpbHMgPSB7XG4gICAgICAgIHJlZHVjZXJOYW1lLFxuICAgICAgICB0eXBlOiBnZXRUeXBlKG5hbWUsIHJlZHVjZXJOYW1lKSxcbiAgICAgICAgY3JlYXRlTm90YXRpb246IHR5cGVvZiBvcHRpb25zLnJlZHVjZXJzID09PSBcImZ1bmN0aW9uXCJcbiAgICAgIH07XG4gICAgICBpZiAoaXNBc3luY1RodW5rU2xpY2VSZWR1Y2VyRGVmaW5pdGlvbihyZWR1Y2VyRGVmaW5pdGlvbikpIHtcbiAgICAgICAgaGFuZGxlVGh1bmtDYXNlUmVkdWNlckRlZmluaXRpb24ocmVkdWNlckRldGFpbHMsIHJlZHVjZXJEZWZpbml0aW9uLCBjb250ZXh0TWV0aG9kcywgY0FUKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZU5vcm1hbFJlZHVjZXJEZWZpbml0aW9uKHJlZHVjZXJEZXRhaWxzLCByZWR1Y2VyRGVmaW5pdGlvbiwgY29udGV4dE1ldGhvZHMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGJ1aWxkUmVkdWNlcigpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmV4dHJhUmVkdWNlcnMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNCkgOiBcIlRoZSBvYmplY3Qgbm90YXRpb24gZm9yIGBjcmVhdGVTbGljZS5leHRyYVJlZHVjZXJzYCBoYXMgYmVlbiByZW1vdmVkLiBQbGVhc2UgdXNlIHRoZSAnYnVpbGRlciBjYWxsYmFjaycgbm90YXRpb24gaW5zdGVhZDogaHR0cHM6Ly9yZWR1eC10b29sa2l0LmpzLm9yZy9hcGkvY3JlYXRlU2xpY2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IFtleHRyYVJlZHVjZXJzID0ge30sIGFjdGlvbk1hdGNoZXJzID0gW10sIGRlZmF1bHRDYXNlUmVkdWNlciA9IHZvaWQgMF0gPSB0eXBlb2Ygb3B0aW9ucy5leHRyYVJlZHVjZXJzID09PSBcImZ1bmN0aW9uXCIgPyBleGVjdXRlUmVkdWNlckJ1aWxkZXJDYWxsYmFjayhvcHRpb25zLmV4dHJhUmVkdWNlcnMpIDogW29wdGlvbnMuZXh0cmFSZWR1Y2Vyc107XG4gICAgICBjb25zdCBmaW5hbENhc2VSZWR1Y2VycyA9IHtcbiAgICAgICAgLi4uZXh0cmFSZWR1Y2VycyxcbiAgICAgICAgLi4uY29udGV4dC5zbGljZUNhc2VSZWR1Y2Vyc0J5VHlwZVxuICAgICAgfTtcbiAgICAgIHJldHVybiBjcmVhdGVSZWR1Y2VyKG9wdGlvbnMuaW5pdGlhbFN0YXRlLCAoYnVpbGRlcikgPT4ge1xuICAgICAgICBmb3IgKGxldCBrZXkgaW4gZmluYWxDYXNlUmVkdWNlcnMpIHtcbiAgICAgICAgICBidWlsZGVyLmFkZENhc2Uoa2V5LCBmaW5hbENhc2VSZWR1Y2Vyc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBzTSBvZiBjb250ZXh0LnNsaWNlTWF0Y2hlcnMpIHtcbiAgICAgICAgICBidWlsZGVyLmFkZE1hdGNoZXIoc00ubWF0Y2hlciwgc00ucmVkdWNlcik7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgbSBvZiBhY3Rpb25NYXRjaGVycykge1xuICAgICAgICAgIGJ1aWxkZXIuYWRkTWF0Y2hlcihtLm1hdGNoZXIsIG0ucmVkdWNlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmF1bHRDYXNlUmVkdWNlcikge1xuICAgICAgICAgIGJ1aWxkZXIuYWRkRGVmYXVsdENhc2UoZGVmYXVsdENhc2VSZWR1Y2VyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdFNlbGYgPSAoc3RhdGUpID0+IHN0YXRlO1xuICAgIGNvbnN0IGluamVjdGVkU2VsZWN0b3JDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgbGV0IF9yZWR1Y2VyO1xuICAgIGZ1bmN0aW9uIHJlZHVjZXIoc3RhdGUsIGFjdGlvbikge1xuICAgICAgaWYgKCFfcmVkdWNlcikgX3JlZHVjZXIgPSBidWlsZFJlZHVjZXIoKTtcbiAgICAgIHJldHVybiBfcmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgICAgaWYgKCFfcmVkdWNlcikgX3JlZHVjZXIgPSBidWlsZFJlZHVjZXIoKTtcbiAgICAgIHJldHVybiBfcmVkdWNlci5nZXRJbml0aWFsU3RhdGUoKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZVNlbGVjdG9yUHJvcHMocmVkdWNlclBhdGgyLCBpbmplY3RlZCA9IGZhbHNlKSB7XG4gICAgICBmdW5jdGlvbiBzZWxlY3RTbGljZShzdGF0ZSkge1xuICAgICAgICBsZXQgc2xpY2VTdGF0ZSA9IHN0YXRlW3JlZHVjZXJQYXRoMl07XG4gICAgICAgIGlmICh0eXBlb2Ygc2xpY2VTdGF0ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGlmIChpbmplY3RlZCkge1xuICAgICAgICAgICAgc2xpY2VTdGF0ZSA9IGdldEluaXRpYWxTdGF0ZSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNSkgOiBcInNlbGVjdFNsaWNlIHJldHVybmVkIHVuZGVmaW5lZCBmb3IgYW4gdW5pbmplY3RlZCBzbGljZSByZWR1Y2VyXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xpY2VTdGF0ZTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9ycyhzZWxlY3RTdGF0ZSA9IHNlbGVjdFNlbGYpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JDYWNoZSA9IGdldE9ySW5zZXJ0Q29tcHV0ZWQoaW5qZWN0ZWRTZWxlY3RvckNhY2hlLCBpbmplY3RlZCwgKCkgPT4gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCkpO1xuICAgICAgICByZXR1cm4gZ2V0T3JJbnNlcnRDb21wdXRlZChzZWxlY3RvckNhY2hlLCBzZWxlY3RTdGF0ZSwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hcCA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgW25hbWUyLCBzZWxlY3Rvcl0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucy5zZWxlY3RvcnMgPz8ge30pKSB7XG4gICAgICAgICAgICBtYXBbbmFtZTJdID0gd3JhcFNlbGVjdG9yKHNlbGVjdG9yLCBzZWxlY3RTdGF0ZSwgZ2V0SW5pdGlhbFN0YXRlLCBpbmplY3RlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVkdWNlclBhdGg6IHJlZHVjZXJQYXRoMixcbiAgICAgICAgZ2V0U2VsZWN0b3JzLFxuICAgICAgICBnZXQgc2VsZWN0b3JzKCkge1xuICAgICAgICAgIHJldHVybiBnZXRTZWxlY3RvcnMoc2VsZWN0U2xpY2UpO1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RTbGljZVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2xpY2UgPSB7XG4gICAgICBuYW1lLFxuICAgICAgcmVkdWNlcixcbiAgICAgIGFjdGlvbnM6IGNvbnRleHQuYWN0aW9uQ3JlYXRvcnMsXG4gICAgICBjYXNlUmVkdWNlcnM6IGNvbnRleHQuc2xpY2VDYXNlUmVkdWNlcnNCeU5hbWUsXG4gICAgICBnZXRJbml0aWFsU3RhdGUsXG4gICAgICAuLi5tYWtlU2VsZWN0b3JQcm9wcyhyZWR1Y2VyUGF0aCksXG4gICAgICBpbmplY3RJbnRvKGluamVjdGFibGUsIHtcbiAgICAgICAgcmVkdWNlclBhdGg6IHBhdGhPcHQsXG4gICAgICAgIC4uLmNvbmZpZ1xuICAgICAgfSA9IHt9KSB7XG4gICAgICAgIGNvbnN0IG5ld1JlZHVjZXJQYXRoID0gcGF0aE9wdCA/PyByZWR1Y2VyUGF0aDtcbiAgICAgICAgaW5qZWN0YWJsZS5pbmplY3Qoe1xuICAgICAgICAgIHJlZHVjZXJQYXRoOiBuZXdSZWR1Y2VyUGF0aCxcbiAgICAgICAgICByZWR1Y2VyXG4gICAgICAgIH0sIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc2xpY2UsXG4gICAgICAgICAgLi4ubWFrZVNlbGVjdG9yUHJvcHMobmV3UmVkdWNlclBhdGgsIHRydWUpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gc2xpY2U7XG4gIH07XG59XG5mdW5jdGlvbiB3cmFwU2VsZWN0b3Ioc2VsZWN0b3IsIHNlbGVjdFN0YXRlLCBnZXRJbml0aWFsU3RhdGUsIGluamVjdGVkKSB7XG4gIGZ1bmN0aW9uIHdyYXBwZXIocm9vdFN0YXRlLCAuLi5hcmdzKSB7XG4gICAgbGV0IHNsaWNlU3RhdGUgPSBzZWxlY3RTdGF0ZShyb290U3RhdGUpO1xuICAgIGlmICh0eXBlb2Ygc2xpY2VTdGF0ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKGluamVjdGVkKSB7XG4gICAgICAgIHNsaWNlU3RhdGUgPSBnZXRJbml0aWFsU3RhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2KSA6IFwic2VsZWN0U3RhdGUgcmV0dXJuZWQgdW5kZWZpbmVkIGZvciBhbiB1bmluamVjdGVkIHNsaWNlIHJlZHVjZXJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcihzbGljZVN0YXRlLCAuLi5hcmdzKTtcbiAgfVxuICB3cmFwcGVyLnVud3JhcHBlZCA9IHNlbGVjdG9yO1xuICByZXR1cm4gd3JhcHBlcjtcbn1cbnZhciBjcmVhdGVTbGljZSA9IC8qIEBfX1BVUkVfXyAqLyBidWlsZENyZWF0ZVNsaWNlKCk7XG5mdW5jdGlvbiBidWlsZFJlZHVjZXJDcmVhdG9ycygpIHtcbiAgZnVuY3Rpb24gYXN5bmNUaHVuayhwYXlsb2FkQ3JlYXRvciwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9yZWR1Y2VyRGVmaW5pdGlvblR5cGU6IFwiYXN5bmNUaHVua1wiIC8qIGFzeW5jVGh1bmsgKi8sXG4gICAgICBwYXlsb2FkQ3JlYXRvcixcbiAgICAgIC4uLmNvbmZpZ1xuICAgIH07XG4gIH1cbiAgYXN5bmNUaHVuay53aXRoVHlwZXMgPSAoKSA9PiBhc3luY1RodW5rO1xuICByZXR1cm4ge1xuICAgIHJlZHVjZXIoY2FzZVJlZHVjZXIpIHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgLy8gaGFjayBzbyB0aGUgd3JhcHBpbmcgZnVuY3Rpb24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG9yaWdpbmFsXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gY3JlYXRlIGEgd3JhcHBlciBzbyB0aGUgYHJlZHVjZXJEZWZpbml0aW9uVHlwZWAgaXMgbm90IGFzc2lnbmVkIHRvIHRoZSBvcmlnaW5hbFxuICAgICAgICBbY2FzZVJlZHVjZXIubmFtZV0oLi4uYXJncykge1xuICAgICAgICAgIHJldHVybiBjYXNlUmVkdWNlciguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVtjYXNlUmVkdWNlci5uYW1lXSwge1xuICAgICAgICBfcmVkdWNlckRlZmluaXRpb25UeXBlOiBcInJlZHVjZXJcIiAvKiByZWR1Y2VyICovXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHByZXBhcmVkUmVkdWNlcihwcmVwYXJlLCByZWR1Y2VyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfcmVkdWNlckRlZmluaXRpb25UeXBlOiBcInJlZHVjZXJXaXRoUHJlcGFyZVwiIC8qIHJlZHVjZXJXaXRoUHJlcGFyZSAqLyxcbiAgICAgICAgcHJlcGFyZSxcbiAgICAgICAgcmVkdWNlclxuICAgICAgfTtcbiAgICB9LFxuICAgIGFzeW5jVGh1bmtcbiAgfTtcbn1cbmZ1bmN0aW9uIGhhbmRsZU5vcm1hbFJlZHVjZXJEZWZpbml0aW9uKHtcbiAgdHlwZSxcbiAgcmVkdWNlck5hbWUsXG4gIGNyZWF0ZU5vdGF0aW9uXG59LCBtYXliZVJlZHVjZXJXaXRoUHJlcGFyZSwgY29udGV4dCkge1xuICBsZXQgY2FzZVJlZHVjZXI7XG4gIGxldCBwcmVwYXJlQ2FsbGJhY2s7XG4gIGlmIChcInJlZHVjZXJcIiBpbiBtYXliZVJlZHVjZXJXaXRoUHJlcGFyZSkge1xuICAgIGlmIChjcmVhdGVOb3RhdGlvbiAmJiAhaXNDYXNlUmVkdWNlcldpdGhQcmVwYXJlRGVmaW5pdGlvbihtYXliZVJlZHVjZXJXaXRoUHJlcGFyZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE3KSA6IFwiUGxlYXNlIHVzZSB0aGUgYGNyZWF0ZS5wcmVwYXJlZFJlZHVjZXJgIG5vdGF0aW9uIGZvciBwcmVwYXJlZCBhY3Rpb24gY3JlYXRvcnMgd2l0aCB0aGUgYGNyZWF0ZWAgbm90YXRpb24uXCIpO1xuICAgIH1cbiAgICBjYXNlUmVkdWNlciA9IG1heWJlUmVkdWNlcldpdGhQcmVwYXJlLnJlZHVjZXI7XG4gICAgcHJlcGFyZUNhbGxiYWNrID0gbWF5YmVSZWR1Y2VyV2l0aFByZXBhcmUucHJlcGFyZTtcbiAgfSBlbHNlIHtcbiAgICBjYXNlUmVkdWNlciA9IG1heWJlUmVkdWNlcldpdGhQcmVwYXJlO1xuICB9XG4gIGNvbnRleHQuYWRkQ2FzZSh0eXBlLCBjYXNlUmVkdWNlcikuZXhwb3NlQ2FzZVJlZHVjZXIocmVkdWNlck5hbWUsIGNhc2VSZWR1Y2VyKS5leHBvc2VBY3Rpb24ocmVkdWNlck5hbWUsIHByZXBhcmVDYWxsYmFjayA/IGNyZWF0ZUFjdGlvbih0eXBlLCBwcmVwYXJlQ2FsbGJhY2spIDogY3JlYXRlQWN0aW9uKHR5cGUpKTtcbn1cbmZ1bmN0aW9uIGlzQXN5bmNUaHVua1NsaWNlUmVkdWNlckRlZmluaXRpb24ocmVkdWNlckRlZmluaXRpb24pIHtcbiAgcmV0dXJuIHJlZHVjZXJEZWZpbml0aW9uLl9yZWR1Y2VyRGVmaW5pdGlvblR5cGUgPT09IFwiYXN5bmNUaHVua1wiIC8qIGFzeW5jVGh1bmsgKi87XG59XG5mdW5jdGlvbiBpc0Nhc2VSZWR1Y2VyV2l0aFByZXBhcmVEZWZpbml0aW9uKHJlZHVjZXJEZWZpbml0aW9uKSB7XG4gIHJldHVybiByZWR1Y2VyRGVmaW5pdGlvbi5fcmVkdWNlckRlZmluaXRpb25UeXBlID09PSBcInJlZHVjZXJXaXRoUHJlcGFyZVwiIC8qIHJlZHVjZXJXaXRoUHJlcGFyZSAqLztcbn1cbmZ1bmN0aW9uIGhhbmRsZVRodW5rQ2FzZVJlZHVjZXJEZWZpbml0aW9uKHtcbiAgdHlwZSxcbiAgcmVkdWNlck5hbWVcbn0sIHJlZHVjZXJEZWZpbml0aW9uLCBjb250ZXh0LCBjQVQpIHtcbiAgaWYgKCFjQVQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxOCkgOiBcIkNhbm5vdCB1c2UgYGNyZWF0ZS5hc3luY1RodW5rYCBpbiB0aGUgYnVpbHQtaW4gYGNyZWF0ZVNsaWNlYC4gVXNlIGBidWlsZENyZWF0ZVNsaWNlKHsgY3JlYXRvcnM6IHsgYXN5bmNUaHVuazogYXN5bmNUaHVua0NyZWF0b3IgfSB9KWAgdG8gY3JlYXRlIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mIGBjcmVhdGVTbGljZWAuXCIpO1xuICB9XG4gIGNvbnN0IHtcbiAgICBwYXlsb2FkQ3JlYXRvcixcbiAgICBmdWxmaWxsZWQsXG4gICAgcGVuZGluZyxcbiAgICByZWplY3RlZCxcbiAgICBzZXR0bGVkLFxuICAgIG9wdGlvbnNcbiAgfSA9IHJlZHVjZXJEZWZpbml0aW9uO1xuICBjb25zdCB0aHVuayA9IGNBVCh0eXBlLCBwYXlsb2FkQ3JlYXRvciwgb3B0aW9ucyk7XG4gIGNvbnRleHQuZXhwb3NlQWN0aW9uKHJlZHVjZXJOYW1lLCB0aHVuayk7XG4gIGlmIChmdWxmaWxsZWQpIHtcbiAgICBjb250ZXh0LmFkZENhc2UodGh1bmsuZnVsZmlsbGVkLCBmdWxmaWxsZWQpO1xuICB9XG4gIGlmIChwZW5kaW5nKSB7XG4gICAgY29udGV4dC5hZGRDYXNlKHRodW5rLnBlbmRpbmcsIHBlbmRpbmcpO1xuICB9XG4gIGlmIChyZWplY3RlZCkge1xuICAgIGNvbnRleHQuYWRkQ2FzZSh0aHVuay5yZWplY3RlZCwgcmVqZWN0ZWQpO1xuICB9XG4gIGlmIChzZXR0bGVkKSB7XG4gICAgY29udGV4dC5hZGRNYXRjaGVyKHRodW5rLnNldHRsZWQsIHNldHRsZWQpO1xuICB9XG4gIGNvbnRleHQuZXhwb3NlQ2FzZVJlZHVjZXIocmVkdWNlck5hbWUsIHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCB8fCBub29wLFxuICAgIHBlbmRpbmc6IHBlbmRpbmcgfHwgbm9vcCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWQgfHwgbm9vcCxcbiAgICBzZXR0bGVkOiBzZXR0bGVkIHx8IG5vb3BcbiAgfSk7XG59XG5mdW5jdGlvbiBub29wKCkge1xufVxuXG4vLyBzcmMvZW50aXRpZXMvZW50aXR5X3N0YXRlLnRzXG5mdW5jdGlvbiBnZXRJbml0aWFsRW50aXR5U3RhdGUoKSB7XG4gIHJldHVybiB7XG4gICAgaWRzOiBbXSxcbiAgICBlbnRpdGllczoge31cbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxTdGF0ZUZhY3Rvcnkoc3RhdGVBZGFwdGVyKSB7XG4gIGZ1bmN0aW9uIGdldEluaXRpYWxTdGF0ZShhZGRpdGlvbmFsU3RhdGUgPSB7fSwgZW50aXRpZXMpIHtcbiAgICBjb25zdCBzdGF0ZSA9IE9iamVjdC5hc3NpZ24oZ2V0SW5pdGlhbEVudGl0eVN0YXRlKCksIGFkZGl0aW9uYWxTdGF0ZSk7XG4gICAgcmV0dXJuIGVudGl0aWVzID8gc3RhdGVBZGFwdGVyLnNldEFsbChzdGF0ZSwgZW50aXRpZXMpIDogc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBnZXRJbml0aWFsU3RhdGVcbiAgfTtcbn1cblxuLy8gc3JjL2VudGl0aWVzL3N0YXRlX3NlbGVjdG9ycy50c1xuZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3JzRmFjdG9yeSgpIHtcbiAgZnVuY3Rpb24gZ2V0U2VsZWN0b3JzKHNlbGVjdFN0YXRlLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBjcmVhdGVTZWxlY3RvcjogY3JlYXRlU2VsZWN0b3IyID0gY3JlYXRlRHJhZnRTYWZlU2VsZWN0b3JcbiAgICB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzZWxlY3RJZHMgPSAoc3RhdGUpID0+IHN0YXRlLmlkcztcbiAgICBjb25zdCBzZWxlY3RFbnRpdGllcyA9IChzdGF0ZSkgPT4gc3RhdGUuZW50aXRpZXM7XG4gICAgY29uc3Qgc2VsZWN0QWxsID0gY3JlYXRlU2VsZWN0b3IyKHNlbGVjdElkcywgc2VsZWN0RW50aXRpZXMsIChpZHMsIGVudGl0aWVzKSA9PiBpZHMubWFwKChpZCkgPT4gZW50aXRpZXNbaWRdKSk7XG4gICAgY29uc3Qgc2VsZWN0SWQgPSAoXywgaWQpID0+IGlkO1xuICAgIGNvbnN0IHNlbGVjdEJ5SWQgPSAoZW50aXRpZXMsIGlkKSA9PiBlbnRpdGllc1tpZF07XG4gICAgY29uc3Qgc2VsZWN0VG90YWwgPSBjcmVhdGVTZWxlY3RvcjIoc2VsZWN0SWRzLCAoaWRzKSA9PiBpZHMubGVuZ3RoKTtcbiAgICBpZiAoIXNlbGVjdFN0YXRlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZWxlY3RJZHMsXG4gICAgICAgIHNlbGVjdEVudGl0aWVzLFxuICAgICAgICBzZWxlY3RBbGwsXG4gICAgICAgIHNlbGVjdFRvdGFsLFxuICAgICAgICBzZWxlY3RCeUlkOiBjcmVhdGVTZWxlY3RvcjIoc2VsZWN0RW50aXRpZXMsIHNlbGVjdElkLCBzZWxlY3RCeUlkKVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0R2xvYmFsaXplZEVudGl0aWVzID0gY3JlYXRlU2VsZWN0b3IyKHNlbGVjdFN0YXRlLCBzZWxlY3RFbnRpdGllcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdElkczogY3JlYXRlU2VsZWN0b3IyKHNlbGVjdFN0YXRlLCBzZWxlY3RJZHMpLFxuICAgICAgc2VsZWN0RW50aXRpZXM6IHNlbGVjdEdsb2JhbGl6ZWRFbnRpdGllcyxcbiAgICAgIHNlbGVjdEFsbDogY3JlYXRlU2VsZWN0b3IyKHNlbGVjdFN0YXRlLCBzZWxlY3RBbGwpLFxuICAgICAgc2VsZWN0VG90YWw6IGNyZWF0ZVNlbGVjdG9yMihzZWxlY3RTdGF0ZSwgc2VsZWN0VG90YWwpLFxuICAgICAgc2VsZWN0QnlJZDogY3JlYXRlU2VsZWN0b3IyKHNlbGVjdEdsb2JhbGl6ZWRFbnRpdGllcywgc2VsZWN0SWQsIHNlbGVjdEJ5SWQpXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGdldFNlbGVjdG9yc1xuICB9O1xufVxuXG4vLyBzcmMvZW50aXRpZXMvc3RhdGVfYWRhcHRlci50c1xuaW1wb3J0IHsgcHJvZHVjZSBhcyBjcmVhdGVOZXh0U3RhdGUzLCBpc0RyYWZ0IGFzIGlzRHJhZnQzIH0gZnJvbSBcImltbWVyXCI7XG52YXIgaXNEcmFmdFR5cGVkID0gaXNEcmFmdDM7XG5mdW5jdGlvbiBjcmVhdGVTaW5nbGVBcmd1bWVudFN0YXRlT3BlcmF0b3IobXV0YXRvcikge1xuICBjb25zdCBvcGVyYXRvciA9IGNyZWF0ZVN0YXRlT3BlcmF0b3IoKF8sIHN0YXRlKSA9PiBtdXRhdG9yKHN0YXRlKSk7XG4gIHJldHVybiBmdW5jdGlvbiBvcGVyYXRpb24oc3RhdGUpIHtcbiAgICByZXR1cm4gb3BlcmF0b3Ioc3RhdGUsIHZvaWQgMCk7XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTdGF0ZU9wZXJhdG9yKG11dGF0b3IpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG9wZXJhdGlvbihzdGF0ZSwgYXJnKSB7XG4gICAgZnVuY3Rpb24gaXNQYXlsb2FkQWN0aW9uQXJndW1lbnQoYXJnMikge1xuICAgICAgcmV0dXJuIGlzRlNBKGFyZzIpO1xuICAgIH1cbiAgICBjb25zdCBydW5NdXRhdG9yID0gKGRyYWZ0KSA9PiB7XG4gICAgICBpZiAoaXNQYXlsb2FkQWN0aW9uQXJndW1lbnQoYXJnKSkge1xuICAgICAgICBtdXRhdG9yKGFyZy5wYXlsb2FkLCBkcmFmdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtdXRhdG9yKGFyZywgZHJhZnQpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGlzRHJhZnRUeXBlZChzdGF0ZSkpIHtcbiAgICAgIHJ1bk11dGF0b3Ioc3RhdGUpO1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlTmV4dFN0YXRlMyhzdGF0ZSwgcnVuTXV0YXRvcik7XG4gIH07XG59XG5cbi8vIHNyYy9lbnRpdGllcy91dGlscy50c1xuaW1wb3J0IHsgY3VycmVudCBhcyBjdXJyZW50MiwgaXNEcmFmdCBhcyBpc0RyYWZ0NCB9IGZyb20gXCJpbW1lclwiO1xuZnVuY3Rpb24gc2VsZWN0SWRWYWx1ZShlbnRpdHksIHNlbGVjdElkKSB7XG4gIGNvbnN0IGtleSA9IHNlbGVjdElkKGVudGl0eSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgJiYga2V5ID09PSB2b2lkIDApIHtcbiAgICBjb25zb2xlLndhcm4oXCJUaGUgZW50aXR5IHBhc3NlZCB0byB0aGUgYHNlbGVjdElkYCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCB1bmRlZmluZWQuXCIsIFwiWW91IHNob3VsZCBwcm9iYWJseSBwcm92aWRlIHlvdXIgb3duIGBzZWxlY3RJZGAgaW1wbGVtZW50YXRpb24uXCIsIFwiVGhlIGVudGl0eSB0aGF0IHdhcyBwYXNzZWQ6XCIsIGVudGl0eSwgXCJUaGUgYHNlbGVjdElkYCBpbXBsZW1lbnRhdGlvbjpcIiwgc2VsZWN0SWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgcmV0dXJuIGtleTtcbn1cbmZ1bmN0aW9uIGVuc3VyZUVudGl0aWVzQXJyYXkoZW50aXRpZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGVudGl0aWVzKSkge1xuICAgIGVudGl0aWVzID0gT2JqZWN0LnZhbHVlcyhlbnRpdGllcyk7XG4gIH1cbiAgcmV0dXJuIGVudGl0aWVzO1xufVxuZnVuY3Rpb24gZ2V0Q3VycmVudCh2YWx1ZSkge1xuICByZXR1cm4gaXNEcmFmdDQodmFsdWUpID8gY3VycmVudDIodmFsdWUpIDogdmFsdWU7XG59XG5mdW5jdGlvbiBzcGxpdEFkZGVkVXBkYXRlZEVudGl0aWVzKG5ld0VudGl0aWVzLCBzZWxlY3RJZCwgc3RhdGUpIHtcbiAgbmV3RW50aXRpZXMgPSBlbnN1cmVFbnRpdGllc0FycmF5KG5ld0VudGl0aWVzKTtcbiAgY29uc3QgZXhpc3RpbmdJZHNBcnJheSA9IGdldEN1cnJlbnQoc3RhdGUuaWRzKTtcbiAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KGV4aXN0aW5nSWRzQXJyYXkpO1xuICBjb25zdCBhZGRlZCA9IFtdO1xuICBjb25zdCB1cGRhdGVkID0gW107XG4gIGZvciAoY29uc3QgZW50aXR5IG9mIG5ld0VudGl0aWVzKSB7XG4gICAgY29uc3QgaWQgPSBzZWxlY3RJZFZhbHVlKGVudGl0eSwgc2VsZWN0SWQpO1xuICAgIGlmIChleGlzdGluZ0lkcy5oYXMoaWQpKSB7XG4gICAgICB1cGRhdGVkLnB1c2goe1xuICAgICAgICBpZCxcbiAgICAgICAgY2hhbmdlczogZW50aXR5XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkZWQucHVzaChlbnRpdHkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2FkZGVkLCB1cGRhdGVkLCBleGlzdGluZ0lkc0FycmF5XTtcbn1cblxuLy8gc3JjL2VudGl0aWVzL3Vuc29ydGVkX3N0YXRlX2FkYXB0ZXIudHNcbmZ1bmN0aW9uIGNyZWF0ZVVuc29ydGVkU3RhdGVBZGFwdGVyKHNlbGVjdElkKSB7XG4gIGZ1bmN0aW9uIGFkZE9uZU11dGFibHkoZW50aXR5LCBzdGF0ZSkge1xuICAgIGNvbnN0IGtleSA9IHNlbGVjdElkVmFsdWUoZW50aXR5LCBzZWxlY3RJZCk7XG4gICAgaWYgKGtleSBpbiBzdGF0ZS5lbnRpdGllcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzdGF0ZS5pZHMucHVzaChrZXkpO1xuICAgIHN0YXRlLmVudGl0aWVzW2tleV0gPSBlbnRpdHk7XG4gIH1cbiAgZnVuY3Rpb24gYWRkTWFueU11dGFibHkobmV3RW50aXRpZXMsIHN0YXRlKSB7XG4gICAgbmV3RW50aXRpZXMgPSBlbnN1cmVFbnRpdGllc0FycmF5KG5ld0VudGl0aWVzKTtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBuZXdFbnRpdGllcykge1xuICAgICAgYWRkT25lTXV0YWJseShlbnRpdHksIHN0YXRlKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gc2V0T25lTXV0YWJseShlbnRpdHksIHN0YXRlKSB7XG4gICAgY29uc3Qga2V5ID0gc2VsZWN0SWRWYWx1ZShlbnRpdHksIHNlbGVjdElkKTtcbiAgICBpZiAoIShrZXkgaW4gc3RhdGUuZW50aXRpZXMpKSB7XG4gICAgICBzdGF0ZS5pZHMucHVzaChrZXkpO1xuICAgIH1cbiAgICA7XG4gICAgc3RhdGUuZW50aXRpZXNba2V5XSA9IGVudGl0eTtcbiAgfVxuICBmdW5jdGlvbiBzZXRNYW55TXV0YWJseShuZXdFbnRpdGllcywgc3RhdGUpIHtcbiAgICBuZXdFbnRpdGllcyA9IGVuc3VyZUVudGl0aWVzQXJyYXkobmV3RW50aXRpZXMpO1xuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIG5ld0VudGl0aWVzKSB7XG4gICAgICBzZXRPbmVNdXRhYmx5KGVudGl0eSwgc3RhdGUpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBzZXRBbGxNdXRhYmx5KG5ld0VudGl0aWVzLCBzdGF0ZSkge1xuICAgIG5ld0VudGl0aWVzID0gZW5zdXJlRW50aXRpZXNBcnJheShuZXdFbnRpdGllcyk7XG4gICAgc3RhdGUuaWRzID0gW107XG4gICAgc3RhdGUuZW50aXRpZXMgPSB7fTtcbiAgICBhZGRNYW55TXV0YWJseShuZXdFbnRpdGllcywgc3RhdGUpO1xuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZU9uZU11dGFibHkoa2V5LCBzdGF0ZSkge1xuICAgIHJldHVybiByZW1vdmVNYW55TXV0YWJseShba2V5XSwgc3RhdGUpO1xuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZU1hbnlNdXRhYmx5KGtleXMsIHN0YXRlKSB7XG4gICAgbGV0IGRpZE11dGF0ZSA9IGZhbHNlO1xuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5IGluIHN0YXRlLmVudGl0aWVzKSB7XG4gICAgICAgIGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1trZXldO1xuICAgICAgICBkaWRNdXRhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChkaWRNdXRhdGUpIHtcbiAgICAgIHN0YXRlLmlkcyA9IHN0YXRlLmlkcy5maWx0ZXIoKGlkKSA9PiBpZCBpbiBzdGF0ZS5lbnRpdGllcyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHJlbW92ZUFsbE11dGFibHkoc3RhdGUpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLCB7XG4gICAgICBpZHM6IFtdLFxuICAgICAgZW50aXRpZXM6IHt9XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gdGFrZU5ld0tleShrZXlzLCB1cGRhdGUsIHN0YXRlKSB7XG4gICAgY29uc3Qgb3JpZ2luYWwzID0gc3RhdGUuZW50aXRpZXNbdXBkYXRlLmlkXTtcbiAgICBpZiAob3JpZ2luYWwzID09PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZCA9IE9iamVjdC5hc3NpZ24oe30sIG9yaWdpbmFsMywgdXBkYXRlLmNoYW5nZXMpO1xuICAgIGNvbnN0IG5ld0tleSA9IHNlbGVjdElkVmFsdWUodXBkYXRlZCwgc2VsZWN0SWQpO1xuICAgIGNvbnN0IGhhc05ld0tleSA9IG5ld0tleSAhPT0gdXBkYXRlLmlkO1xuICAgIGlmIChoYXNOZXdLZXkpIHtcbiAgICAgIGtleXNbdXBkYXRlLmlkXSA9IG5ld0tleTtcbiAgICAgIGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1t1cGRhdGUuaWRdO1xuICAgIH1cbiAgICA7XG4gICAgc3RhdGUuZW50aXRpZXNbbmV3S2V5XSA9IHVwZGF0ZWQ7XG4gICAgcmV0dXJuIGhhc05ld0tleTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVPbmVNdXRhYmx5KHVwZGF0ZSwgc3RhdGUpIHtcbiAgICByZXR1cm4gdXBkYXRlTWFueU11dGFibHkoW3VwZGF0ZV0sIHN0YXRlKTtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVNYW55TXV0YWJseSh1cGRhdGVzLCBzdGF0ZSkge1xuICAgIGNvbnN0IG5ld0tleXMgPSB7fTtcbiAgICBjb25zdCB1cGRhdGVzUGVyRW50aXR5ID0ge307XG4gICAgdXBkYXRlcy5mb3JFYWNoKCh1cGRhdGUpID0+IHtcbiAgICAgIGlmICh1cGRhdGUuaWQgaW4gc3RhdGUuZW50aXRpZXMpIHtcbiAgICAgICAgdXBkYXRlc1BlckVudGl0eVt1cGRhdGUuaWRdID0ge1xuICAgICAgICAgIGlkOiB1cGRhdGUuaWQsXG4gICAgICAgICAgLy8gU3ByZWFkcyBpZ25vcmUgZmFsc3kgdmFsdWVzLCBzbyB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlcmUgaXNuJ3RcbiAgICAgICAgICAvLyBhbiBleGlzdGluZyB1cGRhdGUgYWxyZWFkeSBhdCB0aGlzIGtleVxuICAgICAgICAgIGNoYW5nZXM6IHtcbiAgICAgICAgICAgIC4uLnVwZGF0ZXNQZXJFbnRpdHlbdXBkYXRlLmlkXT8uY2hhbmdlcyxcbiAgICAgICAgICAgIC4uLnVwZGF0ZS5jaGFuZ2VzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHVwZGF0ZXMgPSBPYmplY3QudmFsdWVzKHVwZGF0ZXNQZXJFbnRpdHkpO1xuICAgIGNvbnN0IGRpZE11dGF0ZUVudGl0aWVzID0gdXBkYXRlcy5sZW5ndGggPiAwO1xuICAgIGlmIChkaWRNdXRhdGVFbnRpdGllcykge1xuICAgICAgY29uc3QgZGlkTXV0YXRlSWRzID0gdXBkYXRlcy5maWx0ZXIoKHVwZGF0ZSkgPT4gdGFrZU5ld0tleShuZXdLZXlzLCB1cGRhdGUsIHN0YXRlKSkubGVuZ3RoID4gMDtcbiAgICAgIGlmIChkaWRNdXRhdGVJZHMpIHtcbiAgICAgICAgc3RhdGUuaWRzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5lbnRpdGllcykubWFwKChlKSA9PiBzZWxlY3RJZFZhbHVlKGUsIHNlbGVjdElkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHVwc2VydE9uZU11dGFibHkoZW50aXR5LCBzdGF0ZSkge1xuICAgIHJldHVybiB1cHNlcnRNYW55TXV0YWJseShbZW50aXR5XSwgc3RhdGUpO1xuICB9XG4gIGZ1bmN0aW9uIHVwc2VydE1hbnlNdXRhYmx5KG5ld0VudGl0aWVzLCBzdGF0ZSkge1xuICAgIGNvbnN0IFthZGRlZCwgdXBkYXRlZF0gPSBzcGxpdEFkZGVkVXBkYXRlZEVudGl0aWVzKG5ld0VudGl0aWVzLCBzZWxlY3RJZCwgc3RhdGUpO1xuICAgIHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZWQsIHN0YXRlKTtcbiAgICBhZGRNYW55TXV0YWJseShhZGRlZCwgc3RhdGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgcmVtb3ZlQWxsOiBjcmVhdGVTaW5nbGVBcmd1bWVudFN0YXRlT3BlcmF0b3IocmVtb3ZlQWxsTXV0YWJseSksXG4gICAgYWRkT25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKGFkZE9uZU11dGFibHkpLFxuICAgIGFkZE1hbnk6IGNyZWF0ZVN0YXRlT3BlcmF0b3IoYWRkTWFueU11dGFibHkpLFxuICAgIHNldE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcihzZXRPbmVNdXRhYmx5KSxcbiAgICBzZXRNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHNldE1hbnlNdXRhYmx5KSxcbiAgICBzZXRBbGw6IGNyZWF0ZVN0YXRlT3BlcmF0b3Ioc2V0QWxsTXV0YWJseSksXG4gICAgdXBkYXRlT25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwZGF0ZU9uZU11dGFibHkpLFxuICAgIHVwZGF0ZU1hbnk6IGNyZWF0ZVN0YXRlT3BlcmF0b3IodXBkYXRlTWFueU11dGFibHkpLFxuICAgIHVwc2VydE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcih1cHNlcnRPbmVNdXRhYmx5KSxcbiAgICB1cHNlcnRNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwc2VydE1hbnlNdXRhYmx5KSxcbiAgICByZW1vdmVPbmU6IGNyZWF0ZVN0YXRlT3BlcmF0b3IocmVtb3ZlT25lTXV0YWJseSksXG4gICAgcmVtb3ZlTWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcihyZW1vdmVNYW55TXV0YWJseSlcbiAgfTtcbn1cblxuLy8gc3JjL2VudGl0aWVzL3NvcnRlZF9zdGF0ZV9hZGFwdGVyLnRzXG5mdW5jdGlvbiBmaW5kSW5zZXJ0SW5kZXgoc29ydGVkSXRlbXMsIGl0ZW0sIGNvbXBhcmlzb25GdW5jdGlvbikge1xuICBsZXQgbG93SW5kZXggPSAwO1xuICBsZXQgaGlnaEluZGV4ID0gc29ydGVkSXRlbXMubGVuZ3RoO1xuICB3aGlsZSAobG93SW5kZXggPCBoaWdoSW5kZXgpIHtcbiAgICBsZXQgbWlkZGxlSW5kZXggPSBsb3dJbmRleCArIGhpZ2hJbmRleCA+Pj4gMTtcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHNvcnRlZEl0ZW1zW21pZGRsZUluZGV4XTtcbiAgICBjb25zdCByZXMgPSBjb21wYXJpc29uRnVuY3Rpb24oaXRlbSwgY3VycmVudEl0ZW0pO1xuICAgIGlmIChyZXMgPj0gMCkge1xuICAgICAgbG93SW5kZXggPSBtaWRkbGVJbmRleCArIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhpZ2hJbmRleCA9IG1pZGRsZUluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbG93SW5kZXg7XG59XG5mdW5jdGlvbiBpbnNlcnQoc29ydGVkSXRlbXMsIGl0ZW0sIGNvbXBhcmlzb25GdW5jdGlvbikge1xuICBjb25zdCBpbnNlcnRBdEluZGV4ID0gZmluZEluc2VydEluZGV4KHNvcnRlZEl0ZW1zLCBpdGVtLCBjb21wYXJpc29uRnVuY3Rpb24pO1xuICBzb3J0ZWRJdGVtcy5zcGxpY2UoaW5zZXJ0QXRJbmRleCwgMCwgaXRlbSk7XG4gIHJldHVybiBzb3J0ZWRJdGVtcztcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNvcnRlZFN0YXRlQWRhcHRlcihzZWxlY3RJZCwgY29tcGFyZXIpIHtcbiAgY29uc3Qge1xuICAgIHJlbW92ZU9uZSxcbiAgICByZW1vdmVNYW55LFxuICAgIHJlbW92ZUFsbFxuICB9ID0gY3JlYXRlVW5zb3J0ZWRTdGF0ZUFkYXB0ZXIoc2VsZWN0SWQpO1xuICBmdW5jdGlvbiBhZGRPbmVNdXRhYmx5KGVudGl0eSwgc3RhdGUpIHtcbiAgICByZXR1cm4gYWRkTWFueU11dGFibHkoW2VudGl0eV0sIHN0YXRlKTtcbiAgfVxuICBmdW5jdGlvbiBhZGRNYW55TXV0YWJseShuZXdFbnRpdGllcywgc3RhdGUsIGV4aXN0aW5nSWRzKSB7XG4gICAgbmV3RW50aXRpZXMgPSBlbnN1cmVFbnRpdGllc0FycmF5KG5ld0VudGl0aWVzKTtcbiAgICBjb25zdCBleGlzdGluZ0tleXMgPSBuZXcgU2V0KGV4aXN0aW5nSWRzID8/IGdldEN1cnJlbnQoc3RhdGUuaWRzKSk7XG4gICAgY29uc3QgbW9kZWxzID0gbmV3RW50aXRpZXMuZmlsdGVyKChtb2RlbCkgPT4gIWV4aXN0aW5nS2V5cy5oYXMoc2VsZWN0SWRWYWx1ZShtb2RlbCwgc2VsZWN0SWQpKSk7XG4gICAgaWYgKG1vZGVscy5sZW5ndGggIT09IDApIHtcbiAgICAgIG1lcmdlRnVuY3Rpb24oc3RhdGUsIG1vZGVscyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNldE9uZU11dGFibHkoZW50aXR5LCBzdGF0ZSkge1xuICAgIHJldHVybiBzZXRNYW55TXV0YWJseShbZW50aXR5XSwgc3RhdGUpO1xuICB9XG4gIGZ1bmN0aW9uIHNldE1hbnlNdXRhYmx5KG5ld0VudGl0aWVzLCBzdGF0ZSkge1xuICAgIG5ld0VudGl0aWVzID0gZW5zdXJlRW50aXRpZXNBcnJheShuZXdFbnRpdGllcyk7XG4gICAgaWYgKG5ld0VudGl0aWVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG5ld0VudGl0aWVzKSB7XG4gICAgICAgIGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1tzZWxlY3RJZChpdGVtKV07XG4gICAgICB9XG4gICAgICBtZXJnZUZ1bmN0aW9uKHN0YXRlLCBuZXdFbnRpdGllcyk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHNldEFsbE11dGFibHkobmV3RW50aXRpZXMsIHN0YXRlKSB7XG4gICAgbmV3RW50aXRpZXMgPSBlbnN1cmVFbnRpdGllc0FycmF5KG5ld0VudGl0aWVzKTtcbiAgICBzdGF0ZS5lbnRpdGllcyA9IHt9O1xuICAgIHN0YXRlLmlkcyA9IFtdO1xuICAgIGFkZE1hbnlNdXRhYmx5KG5ld0VudGl0aWVzLCBzdGF0ZSwgW10pO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZU9uZU11dGFibHkodXBkYXRlLCBzdGF0ZSkge1xuICAgIHJldHVybiB1cGRhdGVNYW55TXV0YWJseShbdXBkYXRlXSwgc3RhdGUpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZXMsIHN0YXRlKSB7XG4gICAgbGV0IGFwcGxpZWRVcGRhdGVzID0gZmFsc2U7XG4gICAgbGV0IHJlcGxhY2VkSWRzID0gZmFsc2U7XG4gICAgZm9yIChsZXQgdXBkYXRlIG9mIHVwZGF0ZXMpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHN0YXRlLmVudGl0aWVzW3VwZGF0ZS5pZF07XG4gICAgICBpZiAoIWVudGl0eSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGFwcGxpZWRVcGRhdGVzID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5hc3NpZ24oZW50aXR5LCB1cGRhdGUuY2hhbmdlcyk7XG4gICAgICBjb25zdCBuZXdJZCA9IHNlbGVjdElkKGVudGl0eSk7XG4gICAgICBpZiAodXBkYXRlLmlkICE9PSBuZXdJZCkge1xuICAgICAgICByZXBsYWNlZElkcyA9IHRydWU7XG4gICAgICAgIGRlbGV0ZSBzdGF0ZS5lbnRpdGllc1t1cGRhdGUuaWRdO1xuICAgICAgICBjb25zdCBvbGRJbmRleCA9IHN0YXRlLmlkcy5pbmRleE9mKHVwZGF0ZS5pZCk7XG4gICAgICAgIHN0YXRlLmlkc1tvbGRJbmRleF0gPSBuZXdJZDtcbiAgICAgICAgc3RhdGUuZW50aXRpZXNbbmV3SWRdID0gZW50aXR5O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYXBwbGllZFVwZGF0ZXMpIHtcbiAgICAgIG1lcmdlRnVuY3Rpb24oc3RhdGUsIFtdLCBhcHBsaWVkVXBkYXRlcywgcmVwbGFjZWRJZHMpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiB1cHNlcnRPbmVNdXRhYmx5KGVudGl0eSwgc3RhdGUpIHtcbiAgICByZXR1cm4gdXBzZXJ0TWFueU11dGFibHkoW2VudGl0eV0sIHN0YXRlKTtcbiAgfVxuICBmdW5jdGlvbiB1cHNlcnRNYW55TXV0YWJseShuZXdFbnRpdGllcywgc3RhdGUpIHtcbiAgICBjb25zdCBbYWRkZWQsIHVwZGF0ZWQsIGV4aXN0aW5nSWRzQXJyYXldID0gc3BsaXRBZGRlZFVwZGF0ZWRFbnRpdGllcyhuZXdFbnRpdGllcywgc2VsZWN0SWQsIHN0YXRlKTtcbiAgICBpZiAodXBkYXRlZC5sZW5ndGgpIHtcbiAgICAgIHVwZGF0ZU1hbnlNdXRhYmx5KHVwZGF0ZWQsIHN0YXRlKTtcbiAgICB9XG4gICAgaWYgKGFkZGVkLmxlbmd0aCkge1xuICAgICAgYWRkTWFueU11dGFibHkoYWRkZWQsIHN0YXRlLCBleGlzdGluZ0lkc0FycmF5KTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gYXJlQXJyYXlzRXF1YWwoYSwgYikge1xuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYVtpXSA9PT0gYltpXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgbWVyZ2VGdW5jdGlvbiA9IChzdGF0ZSwgYWRkZWRJdGVtcywgYXBwbGllZFVwZGF0ZXMsIHJlcGxhY2VkSWRzKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEVudGl0aWVzID0gZ2V0Q3VycmVudChzdGF0ZS5lbnRpdGllcyk7XG4gICAgY29uc3QgY3VycmVudElkcyA9IGdldEN1cnJlbnQoc3RhdGUuaWRzKTtcbiAgICBjb25zdCBzdGF0ZUVudGl0aWVzID0gc3RhdGUuZW50aXRpZXM7XG4gICAgbGV0IGlkcyA9IGN1cnJlbnRJZHM7XG4gICAgaWYgKHJlcGxhY2VkSWRzKSB7XG4gICAgICBpZHMgPSBuZXcgU2V0KGN1cnJlbnRJZHMpO1xuICAgIH1cbiAgICBsZXQgc29ydGVkRW50aXRpZXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xuICAgICAgY29uc3QgZW50aXR5ID0gY3VycmVudEVudGl0aWVzW2lkXTtcbiAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgc29ydGVkRW50aXRpZXMucHVzaChlbnRpdHkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3YXNQcmV2aW91c2x5RW1wdHkgPSBzb3J0ZWRFbnRpdGllcy5sZW5ndGggPT09IDA7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFkZGVkSXRlbXMpIHtcbiAgICAgIHN0YXRlRW50aXRpZXNbc2VsZWN0SWQoaXRlbSldID0gaXRlbTtcbiAgICAgIGlmICghd2FzUHJldmlvdXNseUVtcHR5KSB7XG4gICAgICAgIGluc2VydChzb3J0ZWRFbnRpdGllcywgaXRlbSwgY29tcGFyZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAod2FzUHJldmlvdXNseUVtcHR5KSB7XG4gICAgICBzb3J0ZWRFbnRpdGllcyA9IGFkZGVkSXRlbXMuc2xpY2UoKS5zb3J0KGNvbXBhcmVyKTtcbiAgICB9IGVsc2UgaWYgKGFwcGxpZWRVcGRhdGVzKSB7XG4gICAgICBzb3J0ZWRFbnRpdGllcy5zb3J0KGNvbXBhcmVyKTtcbiAgICB9XG4gICAgY29uc3QgbmV3U29ydGVkSWRzID0gc29ydGVkRW50aXRpZXMubWFwKHNlbGVjdElkKTtcbiAgICBpZiAoIWFyZUFycmF5c0VxdWFsKGN1cnJlbnRJZHMsIG5ld1NvcnRlZElkcykpIHtcbiAgICAgIHN0YXRlLmlkcyA9IG5ld1NvcnRlZElkcztcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgcmVtb3ZlT25lLFxuICAgIHJlbW92ZU1hbnksXG4gICAgcmVtb3ZlQWxsLFxuICAgIGFkZE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcihhZGRPbmVNdXRhYmx5KSxcbiAgICB1cGRhdGVPbmU6IGNyZWF0ZVN0YXRlT3BlcmF0b3IodXBkYXRlT25lTXV0YWJseSksXG4gICAgdXBzZXJ0T25lOiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHVwc2VydE9uZU11dGFibHkpLFxuICAgIHNldE9uZTogY3JlYXRlU3RhdGVPcGVyYXRvcihzZXRPbmVNdXRhYmx5KSxcbiAgICBzZXRNYW55OiBjcmVhdGVTdGF0ZU9wZXJhdG9yKHNldE1hbnlNdXRhYmx5KSxcbiAgICBzZXRBbGw6IGNyZWF0ZVN0YXRlT3BlcmF0b3Ioc2V0QWxsTXV0YWJseSksXG4gICAgYWRkTWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcihhZGRNYW55TXV0YWJseSksXG4gICAgdXBkYXRlTWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcih1cGRhdGVNYW55TXV0YWJseSksXG4gICAgdXBzZXJ0TWFueTogY3JlYXRlU3RhdGVPcGVyYXRvcih1cHNlcnRNYW55TXV0YWJseSlcbiAgfTtcbn1cblxuLy8gc3JjL2VudGl0aWVzL2NyZWF0ZV9hZGFwdGVyLnRzXG5mdW5jdGlvbiBjcmVhdGVFbnRpdHlBZGFwdGVyKG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgc2VsZWN0SWQsXG4gICAgc29ydENvbXBhcmVyXG4gIH0gPSB7XG4gICAgc29ydENvbXBhcmVyOiBmYWxzZSxcbiAgICBzZWxlY3RJZDogKGluc3RhbmNlKSA9PiBpbnN0YW5jZS5pZCxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHN0YXRlQWRhcHRlciA9IHNvcnRDb21wYXJlciA/IGNyZWF0ZVNvcnRlZFN0YXRlQWRhcHRlcihzZWxlY3RJZCwgc29ydENvbXBhcmVyKSA6IGNyZWF0ZVVuc29ydGVkU3RhdGVBZGFwdGVyKHNlbGVjdElkKTtcbiAgY29uc3Qgc3RhdGVGYWN0b3J5ID0gY3JlYXRlSW5pdGlhbFN0YXRlRmFjdG9yeShzdGF0ZUFkYXB0ZXIpO1xuICBjb25zdCBzZWxlY3RvcnNGYWN0b3J5ID0gY3JlYXRlU2VsZWN0b3JzRmFjdG9yeSgpO1xuICByZXR1cm4ge1xuICAgIHNlbGVjdElkLFxuICAgIHNvcnRDb21wYXJlcixcbiAgICAuLi5zdGF0ZUZhY3RvcnksXG4gICAgLi4uc2VsZWN0b3JzRmFjdG9yeSxcbiAgICAuLi5zdGF0ZUFkYXB0ZXJcbiAgfTtcbn1cblxuLy8gc3JjL2xpc3RlbmVyTWlkZGxld2FyZS9pbmRleC50c1xuaW1wb3J0IHsgaXNBY3Rpb24gYXMgaXNBY3Rpb24zIH0gZnJvbSBcInJlZHV4XCI7XG5cbi8vIHNyYy9saXN0ZW5lck1pZGRsZXdhcmUvZXhjZXB0aW9ucy50c1xudmFyIHRhc2sgPSBcInRhc2tcIjtcbnZhciBsaXN0ZW5lciA9IFwibGlzdGVuZXJcIjtcbnZhciBjb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xudmFyIGNhbmNlbGxlZCA9IFwiY2FuY2VsbGVkXCI7XG52YXIgdGFza0NhbmNlbGxlZCA9IGB0YXNrLSR7Y2FuY2VsbGVkfWA7XG52YXIgdGFza0NvbXBsZXRlZCA9IGB0YXNrLSR7Y29tcGxldGVkfWA7XG52YXIgbGlzdGVuZXJDYW5jZWxsZWQgPSBgJHtsaXN0ZW5lcn0tJHtjYW5jZWxsZWR9YDtcbnZhciBsaXN0ZW5lckNvbXBsZXRlZCA9IGAke2xpc3RlbmVyfS0ke2NvbXBsZXRlZH1gO1xudmFyIFRhc2tBYm9ydEVycm9yID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcihjb2RlKSB7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgJHt0YXNrfSAke2NhbmNlbGxlZH0gKHJlYXNvbjogJHtjb2RlfSlgO1xuICB9XG4gIG5hbWUgPSBcIlRhc2tBYm9ydEVycm9yXCI7XG4gIG1lc3NhZ2U7XG59O1xuXG4vLyBzcmMvbGlzdGVuZXJNaWRkbGV3YXJlL3V0aWxzLnRzXG52YXIgYXNzZXJ0RnVuY3Rpb24gPSAoZnVuYywgZXhwZWN0ZWQpID0+IHtcbiAgaWYgKHR5cGVvZiBmdW5jICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzIpIDogYCR7ZXhwZWN0ZWR9IGlzIG5vdCBhIGZ1bmN0aW9uYCk7XG4gIH1cbn07XG52YXIgbm9vcDIgPSAoKSA9PiB7XG59O1xudmFyIGNhdGNoUmVqZWN0aW9uID0gKHByb21pc2UsIG9uRXJyb3IgPSBub29wMikgPT4ge1xuICBwcm9taXNlLmNhdGNoKG9uRXJyb3IpO1xuICByZXR1cm4gcHJvbWlzZTtcbn07XG52YXIgYWRkQWJvcnRTaWduYWxMaXN0ZW5lciA9IChhYm9ydFNpZ25hbCwgY2FsbGJhY2spID0+IHtcbiAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGNhbGxiYWNrLCB7XG4gICAgb25jZTogdHJ1ZVxuICB9KTtcbiAgcmV0dXJuICgpID0+IGFib3J0U2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBjYWxsYmFjayk7XG59O1xudmFyIGFib3J0Q29udHJvbGxlcldpdGhSZWFzb24gPSAoYWJvcnRDb250cm9sbGVyLCByZWFzb24pID0+IHtcbiAgY29uc3Qgc2lnbmFsID0gYWJvcnRDb250cm9sbGVyLnNpZ25hbDtcbiAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghKFwicmVhc29uXCIgaW4gc2lnbmFsKSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzaWduYWwsIFwicmVhc29uXCIsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogcmVhc29uLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuICA7XG4gIGFib3J0Q29udHJvbGxlci5hYm9ydChyZWFzb24pO1xufTtcblxuLy8gc3JjL2xpc3RlbmVyTWlkZGxld2FyZS90YXNrLnRzXG52YXIgdmFsaWRhdGVBY3RpdmUgPSAoc2lnbmFsKSA9PiB7XG4gIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHJlYXNvblxuICAgIH0gPSBzaWduYWw7XG4gICAgdGhyb3cgbmV3IFRhc2tBYm9ydEVycm9yKHJlYXNvbik7XG4gIH1cbn07XG5mdW5jdGlvbiByYWNlV2l0aFNpZ25hbChzaWduYWwsIHByb21pc2UpIHtcbiAgbGV0IGNsZWFudXAgPSBub29wMjtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBub3RpZnlSZWplY3Rpb24gPSAoKSA9PiByZWplY3QobmV3IFRhc2tBYm9ydEVycm9yKHNpZ25hbC5yZWFzb24pKTtcbiAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIG5vdGlmeVJlamVjdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjbGVhbnVwID0gYWRkQWJvcnRTaWduYWxMaXN0ZW5lcihzaWduYWwsIG5vdGlmeVJlamVjdGlvbik7XG4gICAgcHJvbWlzZS5maW5hbGx5KCgpID0+IGNsZWFudXAoKSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICBjbGVhbnVwID0gbm9vcDI7XG4gIH0pO1xufVxudmFyIHJ1blRhc2sgPSBhc3luYyAodGFzazIsIGNsZWFuVXApID0+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRhc2syKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogXCJva1wiLFxuICAgICAgdmFsdWVcbiAgICB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IGVycm9yIGluc3RhbmNlb2YgVGFza0Fib3J0RXJyb3IgPyBcImNhbmNlbGxlZFwiIDogXCJyZWplY3RlZFwiLFxuICAgICAgZXJyb3JcbiAgICB9O1xuICB9IGZpbmFsbHkge1xuICAgIGNsZWFuVXA/LigpO1xuICB9XG59O1xudmFyIGNyZWF0ZVBhdXNlID0gKHNpZ25hbCkgPT4ge1xuICByZXR1cm4gKHByb21pc2UpID0+IHtcbiAgICByZXR1cm4gY2F0Y2hSZWplY3Rpb24ocmFjZVdpdGhTaWduYWwoc2lnbmFsLCBwcm9taXNlKS50aGVuKChvdXRwdXQpID0+IHtcbiAgICAgIHZhbGlkYXRlQWN0aXZlKHNpZ25hbCk7XG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH0pKTtcbiAgfTtcbn07XG52YXIgY3JlYXRlRGVsYXkgPSAoc2lnbmFsKSA9PiB7XG4gIGNvbnN0IHBhdXNlID0gY3JlYXRlUGF1c2Uoc2lnbmFsKTtcbiAgcmV0dXJuICh0aW1lb3V0TXMpID0+IHtcbiAgICByZXR1cm4gcGF1c2UobmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZW91dE1zKSkpO1xuICB9O1xufTtcblxuLy8gc3JjL2xpc3RlbmVyTWlkZGxld2FyZS9pbmRleC50c1xudmFyIHtcbiAgYXNzaWduXG59ID0gT2JqZWN0O1xudmFyIElOVEVSTkFMX05JTF9UT0tFTiA9IHt9O1xudmFyIGFsbSA9IFwibGlzdGVuZXJNaWRkbGV3YXJlXCI7XG52YXIgY3JlYXRlRm9yayA9IChwYXJlbnRBYm9ydFNpZ25hbCwgcGFyZW50QmxvY2tpbmdQcm9taXNlcykgPT4ge1xuICBjb25zdCBsaW5rQ29udHJvbGxlcnMgPSAoY29udHJvbGxlcikgPT4gYWRkQWJvcnRTaWduYWxMaXN0ZW5lcihwYXJlbnRBYm9ydFNpZ25hbCwgKCkgPT4gYWJvcnRDb250cm9sbGVyV2l0aFJlYXNvbihjb250cm9sbGVyLCBwYXJlbnRBYm9ydFNpZ25hbC5yZWFzb24pKTtcbiAgcmV0dXJuICh0YXNrRXhlY3V0b3IsIG9wdHMpID0+IHtcbiAgICBhc3NlcnRGdW5jdGlvbih0YXNrRXhlY3V0b3IsIFwidGFza0V4ZWN1dG9yXCIpO1xuICAgIGNvbnN0IGNoaWxkQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGxpbmtDb250cm9sbGVycyhjaGlsZEFib3J0Q29udHJvbGxlcik7XG4gICAgY29uc3QgcmVzdWx0ID0gcnVuVGFzayhhc3luYyAoKSA9PiB7XG4gICAgICB2YWxpZGF0ZUFjdGl2ZShwYXJlbnRBYm9ydFNpZ25hbCk7XG4gICAgICB2YWxpZGF0ZUFjdGl2ZShjaGlsZEFib3J0Q29udHJvbGxlci5zaWduYWwpO1xuICAgICAgY29uc3QgcmVzdWx0MiA9IGF3YWl0IHRhc2tFeGVjdXRvcih7XG4gICAgICAgIHBhdXNlOiBjcmVhdGVQYXVzZShjaGlsZEFib3J0Q29udHJvbGxlci5zaWduYWwpLFxuICAgICAgICBkZWxheTogY3JlYXRlRGVsYXkoY2hpbGRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKSxcbiAgICAgICAgc2lnbmFsOiBjaGlsZEFib3J0Q29udHJvbGxlci5zaWduYWxcbiAgICAgIH0pO1xuICAgICAgdmFsaWRhdGVBY3RpdmUoY2hpbGRBYm9ydENvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgIHJldHVybiByZXN1bHQyO1xuICAgIH0sICgpID0+IGFib3J0Q29udHJvbGxlcldpdGhSZWFzb24oY2hpbGRBYm9ydENvbnRyb2xsZXIsIHRhc2tDb21wbGV0ZWQpKTtcbiAgICBpZiAob3B0cz8uYXV0b0pvaW4pIHtcbiAgICAgIHBhcmVudEJsb2NraW5nUHJvbWlzZXMucHVzaChyZXN1bHQuY2F0Y2gobm9vcDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogY3JlYXRlUGF1c2UocGFyZW50QWJvcnRTaWduYWwpKHJlc3VsdCksXG4gICAgICBjYW5jZWwoKSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlcldpdGhSZWFzb24oY2hpbGRBYm9ydENvbnRyb2xsZXIsIHRhc2tDYW5jZWxsZWQpO1xuICAgICAgfVxuICAgIH07XG4gIH07XG59O1xudmFyIGNyZWF0ZVRha2VQYXR0ZXJuID0gKHN0YXJ0TGlzdGVuaW5nLCBzaWduYWwpID0+IHtcbiAgY29uc3QgdGFrZSA9IGFzeW5jIChwcmVkaWNhdGUsIHRpbWVvdXQpID0+IHtcbiAgICB2YWxpZGF0ZUFjdGl2ZShzaWduYWwpO1xuICAgIGxldCB1bnN1YnNjcmliZSA9ICgpID0+IHtcbiAgICB9O1xuICAgIGNvbnN0IHR1cGxlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBzdG9wTGlzdGVuaW5nID0gc3RhcnRMaXN0ZW5pbmcoe1xuICAgICAgICBwcmVkaWNhdGUsXG4gICAgICAgIGVmZmVjdDogKGFjdGlvbiwgbGlzdGVuZXJBcGkpID0+IHtcbiAgICAgICAgICBsaXN0ZW5lckFwaS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHJlc29sdmUoW2FjdGlvbiwgbGlzdGVuZXJBcGkuZ2V0U3RhdGUoKSwgbGlzdGVuZXJBcGkuZ2V0T3JpZ2luYWxTdGF0ZSgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdW5zdWJzY3JpYmUgPSAoKSA9PiB7XG4gICAgICAgIHN0b3BMaXN0ZW5pbmcoKTtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHByb21pc2VzID0gW3R1cGxlUHJvbWlzZV07XG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgcHJvbWlzZXMucHVzaChuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCB0aW1lb3V0LCBudWxsKSkpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgcmFjZVdpdGhTaWduYWwoc2lnbmFsLCBQcm9taXNlLnJhY2UocHJvbWlzZXMpKTtcbiAgICAgIHZhbGlkYXRlQWN0aXZlKHNpZ25hbCk7XG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChwcmVkaWNhdGUsIHRpbWVvdXQpID0+IGNhdGNoUmVqZWN0aW9uKHRha2UocHJlZGljYXRlLCB0aW1lb3V0KSk7XG59O1xudmFyIGdldExpc3RlbmVyRW50cnlQcm9wc0Zyb20gPSAob3B0aW9ucykgPT4ge1xuICBsZXQge1xuICAgIHR5cGUsXG4gICAgYWN0aW9uQ3JlYXRvcixcbiAgICBtYXRjaGVyLFxuICAgIHByZWRpY2F0ZSxcbiAgICBlZmZlY3RcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICh0eXBlKSB7XG4gICAgcHJlZGljYXRlID0gY3JlYXRlQWN0aW9uKHR5cGUpLm1hdGNoO1xuICB9IGVsc2UgaWYgKGFjdGlvbkNyZWF0b3IpIHtcbiAgICB0eXBlID0gYWN0aW9uQ3JlYXRvci50eXBlO1xuICAgIHByZWRpY2F0ZSA9IGFjdGlvbkNyZWF0b3IubWF0Y2g7XG4gIH0gZWxzZSBpZiAobWF0Y2hlcikge1xuICAgIHByZWRpY2F0ZSA9IG1hdGNoZXI7XG4gIH0gZWxzZSBpZiAocHJlZGljYXRlKSB7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjEpIDogXCJDcmVhdGluZyBvciByZW1vdmluZyBhIGxpc3RlbmVyIHJlcXVpcmVzIG9uZSBvZiB0aGUga25vd24gZmllbGRzIGZvciBtYXRjaGluZyBhbiBhY3Rpb25cIik7XG4gIH1cbiAgYXNzZXJ0RnVuY3Rpb24oZWZmZWN0LCBcIm9wdGlvbnMubGlzdGVuZXJcIik7XG4gIHJldHVybiB7XG4gICAgcHJlZGljYXRlLFxuICAgIHR5cGUsXG4gICAgZWZmZWN0XG4gIH07XG59O1xudmFyIGNyZWF0ZUxpc3RlbmVyRW50cnkgPSAvKiBAX19QVVJFX18gKi8gYXNzaWduKChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIHByZWRpY2F0ZSxcbiAgICBlZmZlY3RcbiAgfSA9IGdldExpc3RlbmVyRW50cnlQcm9wc0Zyb20ob3B0aW9ucyk7XG4gIGNvbnN0IGVudHJ5ID0ge1xuICAgIGlkOiBuYW5vaWQoKSxcbiAgICBlZmZlY3QsXG4gICAgdHlwZSxcbiAgICBwcmVkaWNhdGUsXG4gICAgcGVuZGluZzogLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSxcbiAgICB1bnN1YnNjcmliZTogKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjIpIDogXCJVbnN1YnNjcmliZSBub3QgaW5pdGlhbGl6ZWRcIik7XG4gICAgfVxuICB9O1xuICByZXR1cm4gZW50cnk7XG59LCB7XG4gIHdpdGhUeXBlczogKCkgPT4gY3JlYXRlTGlzdGVuZXJFbnRyeVxufSk7XG52YXIgZmluZExpc3RlbmVyRW50cnkgPSAobGlzdGVuZXJNYXAsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgZWZmZWN0LFxuICAgIHByZWRpY2F0ZVxuICB9ID0gZ2V0TGlzdGVuZXJFbnRyeVByb3BzRnJvbShvcHRpb25zKTtcbiAgcmV0dXJuIEFycmF5LmZyb20obGlzdGVuZXJNYXAudmFsdWVzKCkpLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgY29uc3QgbWF0Y2hQcmVkaWNhdGVPclR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiA/IGVudHJ5LnR5cGUgPT09IHR5cGUgOiBlbnRyeS5wcmVkaWNhdGUgPT09IHByZWRpY2F0ZTtcbiAgICByZXR1cm4gbWF0Y2hQcmVkaWNhdGVPclR5cGUgJiYgZW50cnkuZWZmZWN0ID09PSBlZmZlY3Q7XG4gIH0pO1xufTtcbnZhciBjYW5jZWxBY3RpdmVMaXN0ZW5lcnMgPSAoZW50cnkpID0+IHtcbiAgZW50cnkucGVuZGluZy5mb3JFYWNoKChjb250cm9sbGVyKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyV2l0aFJlYXNvbihjb250cm9sbGVyLCBsaXN0ZW5lckNhbmNlbGxlZCk7XG4gIH0pO1xufTtcbnZhciBjcmVhdGVDbGVhckxpc3RlbmVyTWlkZGxld2FyZSA9IChsaXN0ZW5lck1hcCkgPT4ge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGxpc3RlbmVyTWFwLmZvckVhY2goY2FuY2VsQWN0aXZlTGlzdGVuZXJzKTtcbiAgICBsaXN0ZW5lck1hcC5jbGVhcigpO1xuICB9O1xufTtcbnZhciBzYWZlbHlOb3RpZnlFcnJvciA9IChlcnJvckhhbmRsZXIsIGVycm9yVG9Ob3RpZnksIGVycm9ySW5mbykgPT4ge1xuICB0cnkge1xuICAgIGVycm9ySGFuZGxlcihlcnJvclRvTm90aWZ5LCBlcnJvckluZm8pO1xuICB9IGNhdGNoIChlcnJvckhhbmRsZXJFcnJvcikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhyb3cgZXJyb3JIYW5kbGVyRXJyb3I7XG4gICAgfSwgMCk7XG4gIH1cbn07XG52YXIgYWRkTGlzdGVuZXIgPSAvKiBAX19QVVJFX18gKi8gYXNzaWduKC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVBY3Rpb24oYCR7YWxtfS9hZGRgKSwge1xuICB3aXRoVHlwZXM6ICgpID0+IGFkZExpc3RlbmVyXG59KTtcbnZhciBjbGVhckFsbExpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVBY3Rpb24oYCR7YWxtfS9yZW1vdmVBbGxgKTtcbnZhciByZW1vdmVMaXN0ZW5lciA9IC8qIEBfX1BVUkVfXyAqLyBhc3NpZ24oLyogQF9fUFVSRV9fICovIGNyZWF0ZUFjdGlvbihgJHthbG19L3JlbW92ZWApLCB7XG4gIHdpdGhUeXBlczogKCkgPT4gcmVtb3ZlTGlzdGVuZXJcbn0pO1xudmFyIGRlZmF1bHRFcnJvckhhbmRsZXIgPSAoLi4uYXJncykgPT4ge1xuICBjb25zb2xlLmVycm9yKGAke2FsbX0vZXJyb3JgLCAuLi5hcmdzKTtcbn07XG52YXIgY3JlYXRlTGlzdGVuZXJNaWRkbGV3YXJlID0gKG1pZGRsZXdhcmVPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgbGlzdGVuZXJNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICBjb25zdCB7XG4gICAgZXh0cmEsXG4gICAgb25FcnJvciA9IGRlZmF1bHRFcnJvckhhbmRsZXJcbiAgfSA9IG1pZGRsZXdhcmVPcHRpb25zO1xuICBhc3NlcnRGdW5jdGlvbihvbkVycm9yLCBcIm9uRXJyb3JcIik7XG4gIGNvbnN0IGluc2VydEVudHJ5ID0gKGVudHJ5KSA9PiB7XG4gICAgZW50cnkudW5zdWJzY3JpYmUgPSAoKSA9PiBsaXN0ZW5lck1hcC5kZWxldGUoZW50cnkuaWQpO1xuICAgIGxpc3RlbmVyTWFwLnNldChlbnRyeS5pZCwgZW50cnkpO1xuICAgIHJldHVybiAoY2FuY2VsT3B0aW9ucykgPT4ge1xuICAgICAgZW50cnkudW5zdWJzY3JpYmUoKTtcbiAgICAgIGlmIChjYW5jZWxPcHRpb25zPy5jYW5jZWxBY3RpdmUpIHtcbiAgICAgICAgY2FuY2VsQWN0aXZlTGlzdGVuZXJzKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICBjb25zdCBzdGFydExpc3RlbmluZyA9IChvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgZW50cnkgPSBmaW5kTGlzdGVuZXJFbnRyeShsaXN0ZW5lck1hcCwgb3B0aW9ucykgPz8gY3JlYXRlTGlzdGVuZXJFbnRyeShvcHRpb25zKTtcbiAgICByZXR1cm4gaW5zZXJ0RW50cnkoZW50cnkpO1xuICB9O1xuICBhc3NpZ24oc3RhcnRMaXN0ZW5pbmcsIHtcbiAgICB3aXRoVHlwZXM6ICgpID0+IHN0YXJ0TGlzdGVuaW5nXG4gIH0pO1xuICBjb25zdCBzdG9wTGlzdGVuaW5nID0gKG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbmRMaXN0ZW5lckVudHJ5KGxpc3RlbmVyTWFwLCBvcHRpb25zKTtcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnVuc3Vic2NyaWJlKCk7XG4gICAgICBpZiAob3B0aW9ucy5jYW5jZWxBY3RpdmUpIHtcbiAgICAgICAgY2FuY2VsQWN0aXZlTGlzdGVuZXJzKGVudHJ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICEhZW50cnk7XG4gIH07XG4gIGFzc2lnbihzdG9wTGlzdGVuaW5nLCB7XG4gICAgd2l0aFR5cGVzOiAoKSA9PiBzdG9wTGlzdGVuaW5nXG4gIH0pO1xuICBjb25zdCBub3RpZnlMaXN0ZW5lciA9IGFzeW5jIChlbnRyeSwgYWN0aW9uLCBhcGksIGdldE9yaWdpbmFsU3RhdGUpID0+IHtcbiAgICBjb25zdCBpbnRlcm5hbFRhc2tDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIGNvbnN0IHRha2UgPSBjcmVhdGVUYWtlUGF0dGVybihzdGFydExpc3RlbmluZywgaW50ZXJuYWxUYXNrQ29udHJvbGxlci5zaWduYWwpO1xuICAgIGNvbnN0IGF1dG9Kb2luUHJvbWlzZXMgPSBbXTtcbiAgICB0cnkge1xuICAgICAgZW50cnkucGVuZGluZy5hZGQoaW50ZXJuYWxUYXNrQ29udHJvbGxlcik7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoZW50cnkuZWZmZWN0KFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIC8vIFVzZSBhc3NpZ24oKSByYXRoZXIgdGhhbiAuLi4gdG8gYXZvaWQgZXh0cmEgaGVscGVyIGZ1bmN0aW9ucyBhZGRlZCB0byBidW5kbGVcbiAgICAgICAgYXNzaWduKHt9LCBhcGksIHtcbiAgICAgICAgICBnZXRPcmlnaW5hbFN0YXRlLFxuICAgICAgICAgIGNvbmRpdGlvbjogKHByZWRpY2F0ZSwgdGltZW91dCkgPT4gdGFrZShwcmVkaWNhdGUsIHRpbWVvdXQpLnRoZW4oQm9vbGVhbiksXG4gICAgICAgICAgdGFrZSxcbiAgICAgICAgICBkZWxheTogY3JlYXRlRGVsYXkoaW50ZXJuYWxUYXNrQ29udHJvbGxlci5zaWduYWwpLFxuICAgICAgICAgIHBhdXNlOiBjcmVhdGVQYXVzZShpbnRlcm5hbFRhc2tDb250cm9sbGVyLnNpZ25hbCksXG4gICAgICAgICAgZXh0cmEsXG4gICAgICAgICAgc2lnbmFsOiBpbnRlcm5hbFRhc2tDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgICBmb3JrOiBjcmVhdGVGb3JrKGludGVybmFsVGFza0NvbnRyb2xsZXIuc2lnbmFsLCBhdXRvSm9pblByb21pc2VzKSxcbiAgICAgICAgICB1bnN1YnNjcmliZTogZW50cnkudW5zdWJzY3JpYmUsXG4gICAgICAgICAgc3Vic2NyaWJlOiAoKSA9PiB7XG4gICAgICAgICAgICBsaXN0ZW5lck1hcC5zZXQoZW50cnkuaWQsIGVudHJ5KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNhbmNlbEFjdGl2ZUxpc3RlbmVyczogKCkgPT4ge1xuICAgICAgICAgICAgZW50cnkucGVuZGluZy5mb3JFYWNoKChjb250cm9sbGVyLCBfLCBzZXQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGNvbnRyb2xsZXIgIT09IGludGVybmFsVGFza0NvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXJXaXRoUmVhc29uKGNvbnRyb2xsZXIsIGxpc3RlbmVyQ2FuY2VsbGVkKTtcbiAgICAgICAgICAgICAgICBzZXQuZGVsZXRlKGNvbnRyb2xsZXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xuICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyV2l0aFJlYXNvbihpbnRlcm5hbFRhc2tDb250cm9sbGVyLCBsaXN0ZW5lckNhbmNlbGxlZCk7XG4gICAgICAgICAgICBlbnRyeS5wZW5kaW5nLmRlbGV0ZShpbnRlcm5hbFRhc2tDb250cm9sbGVyKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRocm93SWZDYW5jZWxsZWQ6ICgpID0+IHtcbiAgICAgICAgICAgIHZhbGlkYXRlQWN0aXZlKGludGVybmFsVGFza0NvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApKTtcbiAgICB9IGNhdGNoIChsaXN0ZW5lckVycm9yKSB7XG4gICAgICBpZiAoIShsaXN0ZW5lckVycm9yIGluc3RhbmNlb2YgVGFza0Fib3J0RXJyb3IpKSB7XG4gICAgICAgIHNhZmVseU5vdGlmeUVycm9yKG9uRXJyb3IsIGxpc3RlbmVyRXJyb3IsIHtcbiAgICAgICAgICByYWlzZWRCeTogXCJlZmZlY3RcIlxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoYXV0b0pvaW5Qcm9taXNlcyk7XG4gICAgICBhYm9ydENvbnRyb2xsZXJXaXRoUmVhc29uKGludGVybmFsVGFza0NvbnRyb2xsZXIsIGxpc3RlbmVyQ29tcGxldGVkKTtcbiAgICAgIGVudHJ5LnBlbmRpbmcuZGVsZXRlKGludGVybmFsVGFza0NvbnRyb2xsZXIpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY2xlYXJMaXN0ZW5lck1pZGRsZXdhcmUgPSBjcmVhdGVDbGVhckxpc3RlbmVyTWlkZGxld2FyZShsaXN0ZW5lck1hcCk7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSAoYXBpKSA9PiAobmV4dCkgPT4gKGFjdGlvbikgPT4ge1xuICAgIGlmICghaXNBY3Rpb24zKGFjdGlvbikpIHtcbiAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgfVxuICAgIGlmIChhZGRMaXN0ZW5lci5tYXRjaChhY3Rpb24pKSB7XG4gICAgICByZXR1cm4gc3RhcnRMaXN0ZW5pbmcoYWN0aW9uLnBheWxvYWQpO1xuICAgIH1cbiAgICBpZiAoY2xlYXJBbGxMaXN0ZW5lcnMubWF0Y2goYWN0aW9uKSkge1xuICAgICAgY2xlYXJMaXN0ZW5lck1pZGRsZXdhcmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlbW92ZUxpc3RlbmVyLm1hdGNoKGFjdGlvbikpIHtcbiAgICAgIHJldHVybiBzdG9wTGlzdGVuaW5nKGFjdGlvbi5wYXlsb2FkKTtcbiAgICB9XG4gICAgbGV0IG9yaWdpbmFsU3RhdGUgPSBhcGkuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBnZXRPcmlnaW5hbFN0YXRlID0gKCkgPT4ge1xuICAgICAgaWYgKG9yaWdpbmFsU3RhdGUgPT09IElOVEVSTkFMX05JTF9UT0tFTikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyMykgOiBgJHthbG19OiBnZXRPcmlnaW5hbFN0YXRlIGNhbiBvbmx5IGJlIGNhbGxlZCBzeW5jaHJvbm91c2x5YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ2luYWxTdGF0ZTtcbiAgICB9O1xuICAgIGxldCByZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IG5leHQoYWN0aW9uKTtcbiAgICAgIGlmIChsaXN0ZW5lck1hcC5zaXplID4gMCkge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBhcGkuZ2V0U3RhdGUoKTtcbiAgICAgICAgY29uc3QgbGlzdGVuZXJFbnRyaWVzID0gQXJyYXkuZnJvbShsaXN0ZW5lck1hcC52YWx1ZXMoKSk7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgbGlzdGVuZXJFbnRyaWVzKSB7XG4gICAgICAgICAgbGV0IHJ1bkxpc3RlbmVyID0gZmFsc2U7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJ1bkxpc3RlbmVyID0gZW50cnkucHJlZGljYXRlKGFjdGlvbiwgY3VycmVudFN0YXRlLCBvcmlnaW5hbFN0YXRlKTtcbiAgICAgICAgICB9IGNhdGNoIChwcmVkaWNhdGVFcnJvcikge1xuICAgICAgICAgICAgcnVuTGlzdGVuZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHNhZmVseU5vdGlmeUVycm9yKG9uRXJyb3IsIHByZWRpY2F0ZUVycm9yLCB7XG4gICAgICAgICAgICAgIHJhaXNlZEJ5OiBcInByZWRpY2F0ZVwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFydW5MaXN0ZW5lcikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vdGlmeUxpc3RlbmVyKGVudHJ5LCBhY3Rpb24sIGFwaSwgZ2V0T3JpZ2luYWxTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgb3JpZ2luYWxTdGF0ZSA9IElOVEVSTkFMX05JTF9UT0tFTjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBtaWRkbGV3YXJlLFxuICAgIHN0YXJ0TGlzdGVuaW5nLFxuICAgIHN0b3BMaXN0ZW5pbmcsXG4gICAgY2xlYXJMaXN0ZW5lcnM6IGNsZWFyTGlzdGVuZXJNaWRkbGV3YXJlXG4gIH07XG59O1xuXG4vLyBzcmMvZHluYW1pY01pZGRsZXdhcmUvaW5kZXgudHNcbmltcG9ydCB7IGNvbXBvc2UgYXMgY29tcG9zZTMgfSBmcm9tIFwicmVkdXhcIjtcbnZhciBjcmVhdGVNaWRkbGV3YXJlRW50cnkgPSAobWlkZGxld2FyZSkgPT4gKHtcbiAgbWlkZGxld2FyZSxcbiAgYXBwbGllZDogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKVxufSk7XG52YXIgbWF0Y2hJbnN0YW5jZSA9IChpbnN0YW5jZUlkKSA9PiAoYWN0aW9uKSA9PiBhY3Rpb24/Lm1ldGE/Lmluc3RhbmNlSWQgPT09IGluc3RhbmNlSWQ7XG52YXIgY3JlYXRlRHluYW1pY01pZGRsZXdhcmUgPSAoKSA9PiB7XG4gIGNvbnN0IGluc3RhbmNlSWQgPSBuYW5vaWQoKTtcbiAgY29uc3QgbWlkZGxld2FyZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdpdGhNaWRkbGV3YXJlID0gT2JqZWN0LmFzc2lnbihjcmVhdGVBY3Rpb24oXCJkeW5hbWljTWlkZGxld2FyZS9hZGRcIiwgKC4uLm1pZGRsZXdhcmVzKSA9PiAoe1xuICAgIHBheWxvYWQ6IG1pZGRsZXdhcmVzLFxuICAgIG1ldGE6IHtcbiAgICAgIGluc3RhbmNlSWRcbiAgICB9XG4gIH0pKSwge1xuICAgIHdpdGhUeXBlczogKCkgPT4gd2l0aE1pZGRsZXdhcmVcbiAgfSk7XG4gIGNvbnN0IGFkZE1pZGRsZXdhcmUgPSBPYmplY3QuYXNzaWduKGZ1bmN0aW9uIGFkZE1pZGRsZXdhcmUyKC4uLm1pZGRsZXdhcmVzKSB7XG4gICAgbWlkZGxld2FyZXMuZm9yRWFjaCgobWlkZGxld2FyZTIpID0+IHtcbiAgICAgIGdldE9ySW5zZXJ0Q29tcHV0ZWQobWlkZGxld2FyZU1hcCwgbWlkZGxld2FyZTIsIGNyZWF0ZU1pZGRsZXdhcmVFbnRyeSk7XG4gICAgfSk7XG4gIH0sIHtcbiAgICB3aXRoVHlwZXM6ICgpID0+IGFkZE1pZGRsZXdhcmVcbiAgfSk7XG4gIGNvbnN0IGdldEZpbmFsTWlkZGxld2FyZSA9IChhcGkpID0+IHtcbiAgICBjb25zdCBhcHBsaWVkTWlkZGxld2FyZSA9IEFycmF5LmZyb20obWlkZGxld2FyZU1hcC52YWx1ZXMoKSkubWFwKChlbnRyeSkgPT4gZ2V0T3JJbnNlcnRDb21wdXRlZChlbnRyeS5hcHBsaWVkLCBhcGksIGVudHJ5Lm1pZGRsZXdhcmUpKTtcbiAgICByZXR1cm4gY29tcG9zZTMoLi4uYXBwbGllZE1pZGRsZXdhcmUpO1xuICB9O1xuICBjb25zdCBpc1dpdGhNaWRkbGV3YXJlID0gaXNBbGxPZih3aXRoTWlkZGxld2FyZSwgbWF0Y2hJbnN0YW5jZShpbnN0YW5jZUlkKSk7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSAoYXBpKSA9PiAobmV4dCkgPT4gKGFjdGlvbikgPT4ge1xuICAgIGlmIChpc1dpdGhNaWRkbGV3YXJlKGFjdGlvbikpIHtcbiAgICAgIGFkZE1pZGRsZXdhcmUoLi4uYWN0aW9uLnBheWxvYWQpO1xuICAgICAgcmV0dXJuIGFwaS5kaXNwYXRjaDtcbiAgICB9XG4gICAgcmV0dXJuIGdldEZpbmFsTWlkZGxld2FyZShhcGkpKG5leHQpKGFjdGlvbik7XG4gIH07XG4gIHJldHVybiB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBhZGRNaWRkbGV3YXJlLFxuICAgIHdpdGhNaWRkbGV3YXJlLFxuICAgIGluc3RhbmNlSWRcbiAgfTtcbn07XG5cbi8vIHNyYy9jb21iaW5lU2xpY2VzLnRzXG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgYXMgY29tYmluZVJlZHVjZXJzMiB9IGZyb20gXCJyZWR1eFwiO1xudmFyIGlzU2xpY2VMaWtlID0gKG1heWJlU2xpY2VMaWtlKSA9PiBcInJlZHVjZXJQYXRoXCIgaW4gbWF5YmVTbGljZUxpa2UgJiYgdHlwZW9mIG1heWJlU2xpY2VMaWtlLnJlZHVjZXJQYXRoID09PSBcInN0cmluZ1wiO1xudmFyIGdldFJlZHVjZXJzID0gKHNsaWNlcykgPT4gc2xpY2VzLmZsYXRNYXAoKHNsaWNlT3JNYXApID0+IGlzU2xpY2VMaWtlKHNsaWNlT3JNYXApID8gW1tzbGljZU9yTWFwLnJlZHVjZXJQYXRoLCBzbGljZU9yTWFwLnJlZHVjZXJdXSA6IE9iamVjdC5lbnRyaWVzKHNsaWNlT3JNYXApKTtcbnZhciBPUklHSU5BTF9TVEFURSA9IFN5bWJvbC5mb3IoXCJydGstc3RhdGUtcHJveHktb3JpZ2luYWxcIik7XG52YXIgaXNTdGF0ZVByb3h5ID0gKHZhbHVlKSA9PiAhIXZhbHVlICYmICEhdmFsdWVbT1JJR0lOQUxfU1RBVEVdO1xudmFyIHN0YXRlUHJveHlNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTtcbnZhciBjcmVhdGVTdGF0ZVByb3h5ID0gKHN0YXRlLCByZWR1Y2VyTWFwKSA9PiBnZXRPckluc2VydENvbXB1dGVkKHN0YXRlUHJveHlNYXAsIHN0YXRlLCAoKSA9PiBuZXcgUHJveHkoc3RhdGUsIHtcbiAgZ2V0OiAodGFyZ2V0LCBwcm9wLCByZWNlaXZlcikgPT4ge1xuICAgIGlmIChwcm9wID09PSBPUklHSU5BTF9TVEFURSkgcmV0dXJuIHRhcmdldDtcbiAgICBjb25zdCByZXN1bHQgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJNYXBbcHJvcC50b1N0cmluZygpXTtcbiAgICAgIGlmIChyZWR1Y2VyKSB7XG4gICAgICAgIGNvbnN0IHJlZHVjZXJSZXN1bHQgPSByZWR1Y2VyKHZvaWQgMCwge1xuICAgICAgICAgIHR5cGU6IG5hbm9pZCgpXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHlwZW9mIHJlZHVjZXJSZXN1bHQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyNCkgOiBgVGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcIiR7cHJvcC50b1N0cmluZygpfVwiIHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIGNhbGxlZCBmb3Igc2VsZWN0b3IoKS4gSWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGUgcmVkdWNlciBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgeW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVkdWNlclJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSkpO1xudmFyIG9yaWdpbmFsID0gKHN0YXRlKSA9PiB7XG4gIGlmICghaXNTdGF0ZVByb3h5KHN0YXRlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDI1KSA6IFwib3JpZ2luYWwgbXVzdCBiZSB1c2VkIG9uIHN0YXRlIFByb3h5XCIpO1xuICB9XG4gIHJldHVybiBzdGF0ZVtPUklHSU5BTF9TVEFURV07XG59O1xudmFyIG5vb3BSZWR1Y2VyID0gKHN0YXRlID0ge30pID0+IHN0YXRlO1xuZnVuY3Rpb24gY29tYmluZVNsaWNlcyguLi5zbGljZXMpIHtcbiAgY29uc3QgcmVkdWNlck1hcCA9IE9iamVjdC5mcm9tRW50cmllcyhnZXRSZWR1Y2VycyhzbGljZXMpKTtcbiAgY29uc3QgZ2V0UmVkdWNlciA9ICgpID0+IE9iamVjdC5rZXlzKHJlZHVjZXJNYXApLmxlbmd0aCA/IGNvbWJpbmVSZWR1Y2VyczIocmVkdWNlck1hcCkgOiBub29wUmVkdWNlcjtcbiAgbGV0IHJlZHVjZXIgPSBnZXRSZWR1Y2VyKCk7XG4gIGZ1bmN0aW9uIGNvbWJpbmVkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gICAgcmV0dXJuIHJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XG4gIH1cbiAgY29tYmluZWRSZWR1Y2VyLndpdGhMYXp5TG9hZGVkU2xpY2VzID0gKCkgPT4gY29tYmluZWRSZWR1Y2VyO1xuICBjb25zdCBpbmplY3QgPSAoc2xpY2UsIGNvbmZpZyA9IHt9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcmVkdWNlclBhdGgsXG4gICAgICByZWR1Y2VyOiByZWR1Y2VyVG9JbmplY3RcbiAgICB9ID0gc2xpY2U7XG4gICAgY29uc3QgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyTWFwW3JlZHVjZXJQYXRoXTtcbiAgICBpZiAoIWNvbmZpZy5vdmVycmlkZUV4aXN0aW5nICYmIGN1cnJlbnRSZWR1Y2VyICYmIGN1cnJlbnRSZWR1Y2VyICE9PSByZWR1Y2VyVG9JbmplY3QpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYGNhbGxlZCBcXGBpbmplY3RcXGAgdG8gb3ZlcnJpZGUgYWxyZWFkeS1leGlzdGluZyByZWR1Y2VyICR7cmVkdWNlclBhdGh9IHdpdGhvdXQgc3BlY2lmeWluZyBcXGBvdmVycmlkZUV4aXN0aW5nOiB0cnVlXFxgYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tYmluZWRSZWR1Y2VyO1xuICAgIH1cbiAgICByZWR1Y2VyTWFwW3JlZHVjZXJQYXRoXSA9IHJlZHVjZXJUb0luamVjdDtcbiAgICByZWR1Y2VyID0gZ2V0UmVkdWNlcigpO1xuICAgIHJldHVybiBjb21iaW5lZFJlZHVjZXI7XG4gIH07XG4gIGNvbnN0IHNlbGVjdG9yID0gT2JqZWN0LmFzc2lnbihmdW5jdGlvbiBtYWtlU2VsZWN0b3Ioc2VsZWN0b3JGbiwgc2VsZWN0U3RhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gc2VsZWN0b3IyKHN0YXRlLCAuLi5hcmdzKSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3JGbihjcmVhdGVTdGF0ZVByb3h5KHNlbGVjdFN0YXRlID8gc2VsZWN0U3RhdGUoc3RhdGUsIC4uLmFyZ3MpIDogc3RhdGUsIHJlZHVjZXJNYXApLCAuLi5hcmdzKTtcbiAgICB9O1xuICB9LCB7XG4gICAgb3JpZ2luYWxcbiAgfSk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKGNvbWJpbmVkUmVkdWNlciwge1xuICAgIGluamVjdCxcbiAgICBzZWxlY3RvclxuICB9KTtcbn1cblxuLy8gc3JjL2Zvcm1hdFByb2RFcnJvck1lc3NhZ2UudHNcbmZ1bmN0aW9uIGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoY29kZSkge1xuICByZXR1cm4gYE1pbmlmaWVkIFJlZHV4IFRvb2xraXQgZXJyb3IgIyR7Y29kZX07IHZpc2l0IGh0dHBzOi8vcmVkdXgtdG9vbGtpdC5qcy5vcmcvRXJyb3JzP2NvZGU9JHtjb2RlfSBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzLiBgO1xufVxuZXhwb3J0IHtcbiAgUmVkdWNlclR5cGUsXG4gIFNIT1VMRF9BVVRPQkFUQ0gsXG4gIFRhc2tBYm9ydEVycm9yLFxuICBUdXBsZSxcbiAgYWRkTGlzdGVuZXIsXG4gIGFzeW5jVGh1bmtDcmVhdG9yLFxuICBhdXRvQmF0Y2hFbmhhbmNlcixcbiAgYnVpbGRDcmVhdGVTbGljZSxcbiAgY2xlYXJBbGxMaXN0ZW5lcnMsXG4gIGNvbWJpbmVTbGljZXMsXG4gIGNvbmZpZ3VyZVN0b3JlLFxuICBjcmVhdGVBY3Rpb24sXG4gIGNyZWF0ZUFjdGlvbkNyZWF0b3JJbnZhcmlhbnRNaWRkbGV3YXJlLFxuICBjcmVhdGVBc3luY1RodW5rLFxuICBjcmVhdGVEcmFmdFNhZmVTZWxlY3RvcixcbiAgY3JlYXRlRHJhZnRTYWZlU2VsZWN0b3JDcmVhdG9yLFxuICBjcmVhdGVEeW5hbWljTWlkZGxld2FyZSxcbiAgY3JlYXRlRW50aXR5QWRhcHRlcixcbiAgY3JlYXRlSW1tdXRhYmxlU3RhdGVJbnZhcmlhbnRNaWRkbGV3YXJlLFxuICBjcmVhdGVMaXN0ZW5lck1pZGRsZXdhcmUsXG4gIHByb2R1Y2UgYXMgY3JlYXRlTmV4dFN0YXRlLFxuICBjcmVhdGVSZWR1Y2VyLFxuICBjcmVhdGVTZWxlY3RvcixcbiAgY3JlYXRlU2VsZWN0b3JDcmVhdG9yMiBhcyBjcmVhdGVTZWxlY3RvckNyZWF0b3IsXG4gIGNyZWF0ZVNlcmlhbGl6YWJsZVN0YXRlSW52YXJpYW50TWlkZGxld2FyZSxcbiAgY3JlYXRlU2xpY2UsXG4gIGN1cnJlbnQzIGFzIGN1cnJlbnQsXG4gIGZpbmROb25TZXJpYWxpemFibGVWYWx1ZSxcbiAgZm9ybWF0UHJvZEVycm9yTWVzc2FnZSxcbiAgZnJlZXplLFxuICBpc0FjdGlvbkNyZWF0b3IsXG4gIGlzQWxsT2YsXG4gIGlzQW55T2YsXG4gIGlzQXN5bmNUaHVua0FjdGlvbixcbiAgaXNEcmFmdDUgYXMgaXNEcmFmdCxcbiAgaXNGU0EgYXMgaXNGbHV4U3RhbmRhcmRBY3Rpb24sXG4gIGlzRnVsZmlsbGVkLFxuICBpc0ltbXV0YWJsZURlZmF1bHQsXG4gIGlzUGVuZGluZyxcbiAgaXNQbGFpbixcbiAgaXNSZWplY3RlZCxcbiAgaXNSZWplY3RlZFdpdGhWYWx1ZSxcbiAgbHJ1TWVtb2l6ZSxcbiAgbWluaVNlcmlhbGl6ZUVycm9yLFxuICBuYW5vaWQsXG4gIG9yaWdpbmFsMiBhcyBvcmlnaW5hbCxcbiAgcHJlcGFyZUF1dG9CYXRjaGVkLFxuICByZW1vdmVMaXN0ZW5lcixcbiAgdW53cmFwUmVzdWx0LFxuICB3ZWFrTWFwTWVtb2l6ZTIgYXMgd2Vha01hcE1lbW9pemVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZWR1eC10b29sa2l0Lm1vZGVybi5tanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs\n"));
/***/ }),
/***/ "./node_modules/@reduxjs/toolkit/node_modules/reselect/dist/reselect.mjs":
/*!*******************************************************************************!*\
!*** ./node_modules/@reduxjs/toolkit/node_modules/reselect/dist/reselect.mjs ***!
\*******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSelector: function() { return /* binding */ createSelector; },\n/* harmony export */ createSelectorCreator: function() { return /* binding */ createSelectorCreator; },\n/* harmony export */ createStructuredSelector: function() { return /* binding */ createStructuredSelector; },\n/* harmony export */ lruMemoize: function() { return /* binding */ lruMemoize; },\n/* harmony export */ referenceEqualityCheck: function() { return /* binding */ referenceEqualityCheck; },\n/* harmony export */ setGlobalDevModeChecks: function() { return /* binding */ setGlobalDevModeChecks; },\n/* harmony export */ unstable_autotrackMemoize: function() { return /* binding */ autotrackMemoize; },\n/* harmony export */ weakMapMemoize: function() { return /* binding */ weakMapMemoize; }\n/* harmony export */ });\n// src/devModeChecks/identityFunctionCheck.ts\nvar runIdentityFunctionCheck = (resultFunc, inputSelectorsResults, outputSelectorResult) => {\n if (inputSelectorsResults.length === 1 && inputSelectorsResults[0] === outputSelectorResult) {\n let isInputSameAsOutput = false;\n try {\n const emptyObject = {};\n if (resultFunc(emptyObject) === emptyObject)\n isInputSameAsOutput = true;\n } catch {\n }\n if (isInputSameAsOutput) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"The result function returned its own inputs without modification. e.g\\n`createSelector([state => state.todos], todos => todos)`\\nThis could lead to inefficient memoization and unnecessary re-renders.\\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.\",\n { stack }\n );\n }\n }\n};\n\n// src/devModeChecks/inputStabilityCheck.ts\nvar runInputStabilityCheck = (inputSelectorResultsObject, options, inputSelectorArgs) => {\n const { memoize, memoizeOptions } = options;\n const { inputSelectorResults, inputSelectorResultsCopy } = inputSelectorResultsObject;\n const createAnEmptyObject = memoize(() => ({}), ...memoizeOptions);\n const areInputSelectorResultsEqual = createAnEmptyObject.apply(null, inputSelectorResults) === createAnEmptyObject.apply(null, inputSelectorResultsCopy);\n if (!areInputSelectorResultsEqual) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"An input selector returned a different result when passed same arguments.\\nThis means your output selector will likely run more frequently than intended.\\nAvoid returning a new reference inside your input selector, e.g.\\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`\",\n {\n arguments: inputSelectorArgs,\n firstInputs: inputSelectorResults,\n secondInputs: inputSelectorResultsCopy,\n stack\n }\n );\n }\n};\n\n// src/devModeChecks/setGlobalDevModeChecks.ts\nvar globalDevModeChecks = {\n inputStabilityCheck: \"once\",\n identityFunctionCheck: \"once\"\n};\nvar setGlobalDevModeChecks = (devModeChecks) => {\n Object.assign(globalDevModeChecks, devModeChecks);\n};\n\n// src/utils.ts\nvar NOT_FOUND = /* @__PURE__ */ Symbol(\"NOT_FOUND\");\nfunction assertIsFunction(func, errorMessage = `expected a function, instead received ${typeof func}`) {\n if (typeof func !== \"function\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsObject(object, errorMessage = `expected an object, instead received ${typeof object}`) {\n if (typeof object !== \"object\") {\n throw new TypeError(errorMessage);\n }\n}\nfunction assertIsArrayOfFunctions(array, errorMessage = `expected all items to be functions, instead received the following types: `) {\n if (!array.every((item) => typeof item === \"function\")) {\n const itemTypes = array.map(\n (item) => typeof item === \"function\" ? `function ${item.name || \"unnamed\"}()` : typeof item\n ).join(\", \");\n throw new TypeError(`${errorMessage}[${itemTypes}]`);\n }\n}\nvar ensureIsArray = (item) => {\n return Array.isArray(item) ? item : [item];\n};\nfunction getDependencies(createSelectorArgs) {\n const dependencies = Array.isArray(createSelectorArgs[0]) ? createSelectorArgs[0] : createSelectorArgs;\n assertIsArrayOfFunctions(\n dependencies,\n `createSelector expects all input-selectors to be functions, but received the following types: `\n );\n return dependencies;\n}\nfunction collectInputSelectorResults(dependencies, inputSelectorArgs) {\n const inputSelectorResults = [];\n const { length } = dependencies;\n for (let i = 0; i < length; i++) {\n inputSelectorResults.push(dependencies[i].apply(null, inputSelectorArgs));\n }\n return inputSelectorResults;\n}\nvar getDevModeChecksExecutionInfo = (firstRun, devModeChecks) => {\n const { identityFunctionCheck, inputStabilityCheck } = {\n ...globalDevModeChecks,\n ...devModeChecks\n };\n return {\n identityFunctionCheck: {\n shouldRun: identityFunctionCheck === \"always\" || identityFunctionCheck === \"once\" && firstRun,\n run: runIdentityFunctionCheck\n },\n inputStabilityCheck: {\n shouldRun: inputStabilityCheck === \"always\" || inputStabilityCheck === \"once\" && firstRun,\n run: runInputStabilityCheck\n }\n };\n};\n\n// src/autotrackMemoize/autotracking.ts\nvar $REVISION = 0;\nvar CURRENT_TRACKER = null;\nvar Cell = class {\n revision = $REVISION;\n _value;\n _lastValue;\n _isEqual = tripleEq;\n constructor(initialValue, isEqual = tripleEq) {\n this._value = this._lastValue = initialValue;\n this._isEqual = isEqual;\n }\n // Whenever a storage value is read, it'll add itself to the current tracker if\n // one exists, entangling its state with that cache.\n get value() {\n CURRENT_TRACKER?.add(this);\n return this._value;\n }\n // Whenever a storage value is updated, we bump the global revision clock,\n // assign the revision for this storage to the new value, _and_ we schedule a\n // rerender. This is important, and it's what makes autotracking _pull_\n // based. We don't actively tell the caches which depend on the storage that\n // anything has happened. Instead, we recompute the caches when needed.\n set value(newValue) {\n if (this.value === newValue)\n return;\n this._value = newValue;\n this.revision = ++$REVISION;\n }\n};\nfunction tripleEq(a, b) {\n return a === b;\n}\nvar TrackingCache = class {\n _cachedValue;\n _cachedRevision = -1;\n _deps = [];\n hits = 0;\n fn;\n constructor(fn) {\n this.fn = fn;\n }\n clear() {\n this._cachedValue = void 0;\n this._cachedRevision = -1;\n this._deps = [];\n this.hits = 0;\n }\n get value() {\n if (this.revision > this._cachedRevision) {\n const { fn } = this;\n const currentTracker = /* @__PURE__ */ new Set();\n const prevTracker = CURRENT_TRACKER;\n CURRENT_TRACKER = currentTracker;\n this._cachedValue = fn();\n CURRENT_TRACKER = prevTracker;\n this.hits++;\n this._deps = Array.from(currentTracker);\n this._cachedRevision = this.revision;\n }\n CURRENT_TRACKER?.add(this);\n return this._cachedValue;\n }\n get revision() {\n return Math.max(...this._deps.map((d) => d.revision), 0);\n }\n};\nfunction getValue(cell) {\n if (!(cell instanceof Cell)) {\n console.warn(\"Not a valid cell! \", cell);\n }\n return cell.value;\n}\nfunction setValue(storage, value) {\n if (!(storage instanceof Cell)) {\n throw new TypeError(\n \"setValue must be passed a tracked store created with `createStorage`.\"\n );\n }\n storage.value = storage._lastValue = value;\n}\nfunction createCell(initialValue, isEqual = tripleEq) {\n return new Cell(initialValue, isEqual);\n}\nfunction createCache(fn) {\n assertIsFunction(\n fn,\n \"the first parameter to `createCache` must be a function\"\n );\n return new TrackingCache(fn);\n}\n\n// src/autotrackMemoize/tracking.ts\nvar neverEq = (a, b) => false;\nfunction createTag() {\n return createCell(null, neverEq);\n}\nfunction dirtyTag(tag, value) {\n setValue(tag, value);\n}\nvar consumeCollection = (node) => {\n let tag = node.collectionTag;\n if (tag === null) {\n tag = node.collectionTag = createTag();\n }\n getValue(tag);\n};\nvar dirtyCollection = (node) => {\n const tag = node.collectionTag;\n if (tag !== null) {\n dirtyTag(tag, null);\n }\n};\n\n// src/autotrackMemoize/proxy.ts\nvar REDUX_PROXY_LABEL = Symbol();\nvar nextId = 0;\nvar proto = Object.getPrototypeOf({});\nvar ObjectTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy(this, objectProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar objectProxyHandler = {\n get(node, key) {\n function calculateResult() {\n const { value } = node;\n const childValue = Reflect.get(value, key);\n if (typeof key === \"symbol\") {\n return childValue;\n }\n if (key in proto) {\n return childValue;\n }\n if (typeof childValue === \"object\" && childValue !== null) {\n let childNode = node.children[key];\n if (childNode === void 0) {\n childNode = node.children[key] = createNode(childValue);\n }\n if (childNode.tag) {\n getValue(childNode.tag);\n }\n return childNode.proxy;\n } else {\n let tag = node.tags[key];\n if (tag === void 0) {\n tag = node.tags[key] = createTag();\n tag.value = childValue;\n }\n getValue(tag);\n return childValue;\n }\n }\n const res = calculateResult();\n return res;\n },\n ownKeys(node) {\n consumeCollection(node);\n return Reflect.ownKeys(node.value);\n },\n getOwnPropertyDescriptor(node, prop) {\n return Reflect.getOwnPropertyDescriptor(node.value, prop);\n },\n has(node, prop) {\n return Reflect.has(node.value, prop);\n }\n};\nvar ArrayTreeNode = class {\n constructor(value) {\n this.value = value;\n this.value = value;\n this.tag.value = value;\n }\n proxy = new Proxy([this], arrayProxyHandler);\n tag = createTag();\n tags = {};\n children = {};\n collectionTag = null;\n id = nextId++;\n};\nvar arrayProxyHandler = {\n get([node], key) {\n if (key === \"length\") {\n consumeCollection(node);\n }\n return objectProxyHandler.get(node, key);\n },\n ownKeys([node]) {\n return objectProxyHandler.ownKeys(node);\n },\n getOwnPropertyDescriptor([node], prop) {\n return objectProxyHandler.getOwnPropertyDescriptor(node, prop);\n },\n has([node], prop) {\n return objectProxyHandler.has(node, prop);\n }\n};\nfunction createNode(value) {\n if (Array.isArray(value)) {\n return new ArrayTreeNode(value);\n }\n return new ObjectTreeNode(value);\n}\nfunction updateNode(node, newValue) {\n const { value, tags, children } = node;\n node.value = newValue;\n if (Array.isArray(value) && Array.isArray(newValue) && value.length !== newValue.length) {\n dirtyCollection(node);\n } else {\n if (value !== newValue) {\n let oldKeysSize = 0;\n let newKeysSize = 0;\n let anyKeysAdded = false;\n for (const _key in value) {\n oldKeysSize++;\n }\n for (const key in newValue) {\n newKeysSize++;\n if (!(key in value)) {\n anyKeysAdded = true;\n break;\n }\n }\n const isDifferent = anyKeysAdded || oldKeysSize !== newKeysSize;\n if (isDifferent) {\n dirtyCollection(node);\n }\n }\n }\n for (const key in tags) {\n const childValue = value[key];\n const newChildValue = newValue[key];\n if (childValue !== newChildValue) {\n dirtyCollection(node);\n dirtyTag(tags[key], newChildValue);\n }\n if (typeof newChildValue === \"object\" && newChildValue !== null) {\n delete tags[key];\n }\n }\n for (const key in children) {\n const childNode = children[key];\n const newChildValue = newValue[key];\n const childValue = childNode.value;\n if (childValue === newChildValue) {\n continue;\n } else if (typeof newChildValue === \"object\" && newChildValue !== null) {\n updateNode(childNode, newChildValue);\n } else {\n deleteNode(childNode);\n delete children[key];\n }\n }\n}\nfunction deleteNode(node) {\n if (node.tag) {\n dirtyTag(node.tag, null);\n }\n dirtyCollection(node);\n for (const key in node.tags) {\n dirtyTag(node.tags[key], null);\n }\n for (const key in node.children) {\n deleteNode(node.children[key]);\n }\n}\n\n// src/lruMemoize.ts\nfunction createSingletonCache(equals) {\n let entry;\n return {\n get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put(key, value) {\n entry = { key, value };\n },\n getEntries() {\n return entry ? [entry] : [];\n },\n clear() {\n entry = void 0;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n let entries = [];\n function get(key) {\n const cacheIndex = entries.findIndex((entry) => equals(key, entry.key));\n if (cacheIndex > -1) {\n const entry = entries[cacheIndex];\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n }\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n entries.unshift({ key, value });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return { get, put, getEntries, clear };\n}\nvar referenceEqualityCheck = (a, b) => a === b;\nfunction createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n const { length } = prev;\n for (let i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\nfunction lruMemoize(func, equalityCheckOrOptions) {\n const providedOptions = typeof equalityCheckOrOptions === \"object\" ? equalityCheckOrOptions : { equalityCheck: equalityCheckOrOptions };\n const {\n equalityCheck = referenceEqualityCheck,\n maxSize = 1,\n resultEqualityCheck\n } = providedOptions;\n const comparator = createCacheKeyComparator(equalityCheck);\n let resultsCount = 0;\n const cache = maxSize <= 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);\n function memoized() {\n let value = cache.get(arguments);\n if (value === NOT_FOUND) {\n value = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const entries = cache.getEntries();\n const matchingEntry = entries.find(\n (entry) => resultEqualityCheck(entry.value, value)\n );\n if (matchingEntry) {\n value = matchingEntry.value;\n resultsCount !== 0 && resultsCount--;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = () => {\n cache.clear();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/autotrackMemoize/autotrackMemoize.ts\nfunction autotrackMemoize(func) {\n const node = createNode(\n []\n );\n let lastArgs = null;\n const shallowEqual = createCacheKeyComparator(referenceEqualityCheck);\n const cache = createCache(() => {\n const res = func.apply(null, node.proxy);\n return res;\n });\n function memoized() {\n if (!shallowEqual(lastArgs, arguments)) {\n updateNode(node, arguments);\n lastArgs = arguments;\n }\n return cache.value;\n }\n memoized.clearCache = () => {\n return cache.clear();\n };\n return memoized;\n}\n\n// src/weakMapMemoize.ts\nvar StrongRef = class {\n constructor(value) {\n this.value = value;\n }\n deref() {\n return this.value;\n }\n};\nvar Ref = typeof WeakRef !== \"undefined\" ? WeakRef : StrongRef;\nvar UNTERMINATED = 0;\nvar TERMINATED = 1;\nfunction createCacheNode() {\n return {\n s: UNTERMINATED,\n v: void 0,\n o: null,\n p: null\n };\n}\nfunction weakMapMemoize(func, options = {}) {\n let fnNode = createCacheNode();\n const { resultEqualityCheck } = options;\n let lastResult;\n let resultsCount = 0;\n function memoized() {\n let cacheNode = fnNode;\n const { length } = arguments;\n for (let i = 0, l = length; i < l; i++) {\n const arg = arguments[i];\n if (typeof arg === \"function\" || typeof arg === \"object\" && arg !== null) {\n let objectCache = cacheNode.o;\n if (objectCache === null) {\n cacheNode.o = objectCache = /* @__PURE__ */ new WeakMap();\n }\n const objectNode = objectCache.get(arg);\n if (objectNode === void 0) {\n cacheNode = createCacheNode();\n objectCache.set(arg, cacheNode);\n } else {\n cacheNode = objectNode;\n }\n } else {\n let primitiveCache = cacheNode.p;\n if (primitiveCache === null) {\n cacheNode.p = primitiveCache = /* @__PURE__ */ new Map();\n }\n const primitiveNode = primitiveCache.get(arg);\n if (primitiveNode === void 0) {\n cacheNode = createCacheNode();\n primitiveCache.set(arg, cacheNode);\n } else {\n cacheNode = primitiveNode;\n }\n }\n }\n const terminatedNode = cacheNode;\n let result;\n if (cacheNode.s === TERMINATED) {\n result = cacheNode.v;\n } else {\n result = func.apply(null, arguments);\n resultsCount++;\n if (resultEqualityCheck) {\n const lastResultValue = lastResult?.deref?.() ?? lastResult;\n if (lastResultValue != null && resultEqualityCheck(lastResultValue, result)) {\n result = lastResultValue;\n resultsCount !== 0 && resultsCount--;\n }\n const needsWeakRef = typeof result === \"object\" && result !== null || typeof result === \"function\";\n lastResult = needsWeakRef ? new Ref(result) : result;\n }\n }\n terminatedNode.s = TERMINATED;\n terminatedNode.v = result;\n return result;\n }\n memoized.clearCache = () => {\n fnNode = createCacheNode();\n memoized.resetResultsCount();\n };\n memoized.resultsCount = () => resultsCount;\n memoized.resetResultsCount = () => {\n resultsCount = 0;\n };\n return memoized;\n}\n\n// src/createSelectorCreator.ts\nfunction createSelectorCreator(memoizeOrOptions, ...memoizeOptionsFromArgs) {\n const createSelectorCreatorOptions = typeof memoizeOrOptions === \"function\" ? {\n memoize: memoizeOrOptions,\n memoizeOptions: memoizeOptionsFromArgs\n } : memoizeOrOptions;\n const createSelector2 = (...createSelectorArgs) => {\n let recomputations = 0;\n let dependencyRecomputations = 0;\n let lastResult;\n let directlyPassedOptions = {};\n let resultFunc = createSelectorArgs.pop();\n if (typeof resultFunc === \"object\") {\n directlyPassedOptions = resultFunc;\n resultFunc = createSelectorArgs.pop();\n }\n assertIsFunction(\n resultFunc,\n `createSelector expects an output function after the inputs, but received: [${typeof resultFunc}]`\n );\n const combinedOptions = {\n ...createSelectorCreatorOptions,\n ...directlyPassedOptions\n };\n const {\n memoize,\n memoizeOptions = [],\n argsMemoize = weakMapMemoize,\n argsMemoizeOptions = [],\n devModeChecks = {}\n } = combinedOptions;\n const finalMemoizeOptions = ensureIsArray(memoizeOptions);\n const finalArgsMemoizeOptions = ensureIsArray(argsMemoizeOptions);\n const dependencies = getDependencies(createSelectorArgs);\n const memoizedResultFunc = memoize(function recomputationWrapper() {\n recomputations++;\n return resultFunc.apply(\n null,\n arguments\n );\n }, ...finalMemoizeOptions);\n let firstRun = true;\n const selector = argsMemoize(function dependenciesChecker() {\n dependencyRecomputations++;\n const inputSelectorResults = collectInputSelectorResults(\n dependencies,\n arguments\n );\n lastResult = memoizedResultFunc.apply(null, inputSelectorResults);\n if (true) {\n const { identityFunctionCheck, inputStabilityCheck } = getDevModeChecksExecutionInfo(firstRun, devModeChecks);\n if (identityFunctionCheck.shouldRun) {\n identityFunctionCheck.run(\n resultFunc,\n inputSelectorResults,\n lastResult\n );\n }\n if (inputStabilityCheck.shouldRun) {\n const inputSelectorResultsCopy = collectInputSelectorResults(\n dependencies,\n arguments\n );\n inputStabilityCheck.run(\n { inputSelectorResults, inputSelectorResultsCopy },\n { memoize, memoizeOptions: finalMemoizeOptions },\n arguments\n );\n }\n if (firstRun)\n firstRun = false;\n }\n return lastResult;\n }, ...finalArgsMemoizeOptions);\n return Object.assign(selector, {\n resultFunc,\n memoizedResultFunc,\n dependencies,\n dependencyRecomputations: () => dependencyRecomputations,\n resetDependencyRecomputations: () => {\n dependencyRecomputations = 0;\n },\n lastResult: () => lastResult,\n recomputations: () => recomputations,\n resetRecomputations: () => {\n recomputations = 0;\n },\n memoize,\n argsMemoize\n });\n };\n Object.assign(createSelector2, {\n withTypes: () => createSelector2\n });\n return createSelector2;\n}\nvar createSelector = /* @__PURE__ */ createSelectorCreator(weakMapMemoize);\n\n// src/createStructuredSelector.ts\nvar createStructuredSelector = Object.assign(\n (inputSelectorsObject, selectorCreator = createSelector) => {\n assertIsObject(\n inputSelectorsObject,\n `createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof inputSelectorsObject}`\n );\n const inputSelectorKeys = Object.keys(inputSelectorsObject);\n const dependencies = inputSelectorKeys.map(\n (key) => inputSelectorsObject[key]\n );\n const structuredSelector = selectorCreator(\n dependencies,\n (...inputSelectorResults) => {\n return inputSelectorResults.reduce((composition, value, index) => {\n composition[inputSelectorKeys[index]] = value;\n return composition;\n }, {});\n }\n );\n return structuredSelector;\n },\n { withTypes: () => createStructuredSelector }\n);\n\n//# sourceMappingURL=reselect.mjs.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHJlZHV4anMvdG9vbGtpdC9ub2RlX21vZHVsZXMvcmVzZWxlY3QvZGlzdC9yZXNlbGVjdC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLDBCQUEwQjtBQUNwQyxVQUFVLGlEQUFpRDtBQUMzRCwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLFNBQVMsUUFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0ZBQXdGLFlBQVk7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RkFBdUYsY0FBYztBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCx1QkFBdUI7QUFDaEY7QUFDQSwyQkFBMkIsYUFBYSxHQUFHLFVBQVU7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUFTO0FBQ25CLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDZDQUE2QztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsS0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRkFBb0Ysa0JBQWtCO0FBQ3RHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLElBQXFDO0FBQy9DLGdCQUFnQiw2Q0FBNkM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGdEQUFnRDtBQUM5RCxjQUFjLDhDQUE4QztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtIQUErSCw0QkFBNEI7QUFDM0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsSUFBSTtBQUNiO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxJQUFJO0FBQ0o7QUFVRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AcmVkdXhqcy90b29sa2l0L25vZGVfbW9kdWxlcy9yZXNlbGVjdC9kaXN0L3Jlc2VsZWN0Lm1qcz9iMzBiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9kZXZNb2RlQ2hlY2tzL2lkZW50aXR5RnVuY3Rpb25DaGVjay50c1xudmFyIHJ1bklkZW50aXR5RnVuY3Rpb25DaGVjayA9IChyZXN1bHRGdW5jLCBpbnB1dFNlbGVjdG9yc1Jlc3VsdHMsIG91dHB1dFNlbGVjdG9yUmVzdWx0KSA9PiB7XG4gIGlmIChpbnB1dFNlbGVjdG9yc1Jlc3VsdHMubGVuZ3RoID09PSAxICYmIGlucHV0U2VsZWN0b3JzUmVzdWx0c1swXSA9PT0gb3V0cHV0U2VsZWN0b3JSZXN1bHQpIHtcbiAgICBsZXQgaXNJbnB1dFNhbWVBc091dHB1dCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbXB0eU9iamVjdCA9IHt9O1xuICAgICAgaWYgKHJlc3VsdEZ1bmMoZW1wdHlPYmplY3QpID09PSBlbXB0eU9iamVjdClcbiAgICAgICAgaXNJbnB1dFNhbWVBc091dHB1dCA9IHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgfVxuICAgIGlmIChpc0lucHV0U2FtZUFzT3V0cHV0KSB7XG4gICAgICBsZXQgc3RhY2sgPSB2b2lkIDA7XG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgO1xuICAgICAgICAoeyBzdGFjayB9ID0gZSk7XG4gICAgICB9XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGhlIHJlc3VsdCBmdW5jdGlvbiByZXR1cm5lZCBpdHMgb3duIGlucHV0cyB3aXRob3V0IG1vZGlmaWNhdGlvbi4gZS5nXFxuYGNyZWF0ZVNlbGVjdG9yKFtzdGF0ZSA9PiBzdGF0ZS50b2Rvc10sIHRvZG9zID0+IHRvZG9zKWBcXG5UaGlzIGNvdWxkIGxlYWQgdG8gaW5lZmZpY2llbnQgbWVtb2l6YXRpb24gYW5kIHVubmVjZXNzYXJ5IHJlLXJlbmRlcnMuXFxuRW5zdXJlIHRyYW5zZm9ybWF0aW9uIGxvZ2ljIGlzIGluIHRoZSByZXN1bHQgZnVuY3Rpb24sIGFuZCBleHRyYWN0aW9uIGxvZ2ljIGlzIGluIHRoZSBpbnB1dCBzZWxlY3RvcnMuXCIsXG4gICAgICAgIHsgc3RhY2sgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIHNyYy9kZXZNb2RlQ2hlY2tzL2lucHV0U3RhYmlsaXR5Q2hlY2sudHNcbnZhciBydW5JbnB1dFN0YWJpbGl0eUNoZWNrID0gKGlucHV0U2VsZWN0b3JSZXN1bHRzT2JqZWN0LCBvcHRpb25zLCBpbnB1dFNlbGVjdG9yQXJncykgPT4ge1xuICBjb25zdCB7IG1lbW9pemUsIG1lbW9pemVPcHRpb25zIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IGlucHV0U2VsZWN0b3JSZXN1bHRzLCBpbnB1dFNlbGVjdG9yUmVzdWx0c0NvcHkgfSA9IGlucHV0U2VsZWN0b3JSZXN1bHRzT2JqZWN0O1xuICBjb25zdCBjcmVhdGVBbkVtcHR5T2JqZWN0ID0gbWVtb2l6ZSgoKSA9PiAoe30pLCAuLi5tZW1vaXplT3B0aW9ucyk7XG4gIGNvbnN0IGFyZUlucHV0U2VsZWN0b3JSZXN1bHRzRXF1YWwgPSBjcmVhdGVBbkVtcHR5T2JqZWN0LmFwcGx5KG51bGwsIGlucHV0U2VsZWN0b3JSZXN1bHRzKSA9PT0gY3JlYXRlQW5FbXB0eU9iamVjdC5hcHBseShudWxsLCBpbnB1dFNlbGVjdG9yUmVzdWx0c0NvcHkpO1xuICBpZiAoIWFyZUlucHV0U2VsZWN0b3JSZXN1bHRzRXF1YWwpIHtcbiAgICBsZXQgc3RhY2sgPSB2b2lkIDA7XG4gICAgdHJ5IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIDtcbiAgICAgICh7IHN0YWNrIH0gPSBlKTtcbiAgICB9XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJBbiBpbnB1dCBzZWxlY3RvciByZXR1cm5lZCBhIGRpZmZlcmVudCByZXN1bHQgd2hlbiBwYXNzZWQgc2FtZSBhcmd1bWVudHMuXFxuVGhpcyBtZWFucyB5b3VyIG91dHB1dCBzZWxlY3RvciB3aWxsIGxpa2VseSBydW4gbW9yZSBmcmVxdWVudGx5IHRoYW4gaW50ZW5kZWQuXFxuQXZvaWQgcmV0dXJuaW5nIGEgbmV3IHJlZmVyZW5jZSBpbnNpZGUgeW91ciBpbnB1dCBzZWxlY3RvciwgZS5nLlxcbmBjcmVhdGVTZWxlY3Rvcihbc3RhdGUgPT4gc3RhdGUudG9kb3MubWFwKHRvZG8gPT4gdG9kby5pZCldLCB0b2RvSWRzID0+IHRvZG9JZHMubGVuZ3RoKWBcIixcbiAgICAgIHtcbiAgICAgICAgYXJndW1lbnRzOiBpbnB1dFNlbGVjdG9yQXJncyxcbiAgICAgICAgZmlyc3RJbnB1dHM6IGlucHV0U2VsZWN0b3JSZXN1bHRzLFxuICAgICAgICBzZWNvbmRJbnB1dHM6IGlucHV0U2VsZWN0b3JSZXN1bHRzQ29weSxcbiAgICAgICAgc3RhY2tcbiAgICAgIH1cbiAgICApO1xuICB9XG59O1xuXG4vLyBzcmMvZGV2TW9kZUNoZWNrcy9zZXRHbG9iYWxEZXZNb2RlQ2hlY2tzLnRzXG52YXIgZ2xvYmFsRGV2TW9kZUNoZWNrcyA9IHtcbiAgaW5wdXRTdGFiaWxpdHlDaGVjazogXCJvbmNlXCIsXG4gIGlkZW50aXR5RnVuY3Rpb25DaGVjazogXCJvbmNlXCJcbn07XG52YXIgc2V0R2xvYmFsRGV2TW9kZUNoZWNrcyA9IChkZXZNb2RlQ2hlY2tzKSA9PiB7XG4gIE9iamVjdC5hc3NpZ24oZ2xvYmFsRGV2TW9kZUNoZWNrcywgZGV2TW9kZUNoZWNrcyk7XG59O1xuXG4vLyBzcmMvdXRpbHMudHNcbnZhciBOT1RfRk9VTkQgPSAvKiBAX19QVVJFX18gKi8gU3ltYm9sKFwiTk9UX0ZPVU5EXCIpO1xuZnVuY3Rpb24gYXNzZXJ0SXNGdW5jdGlvbihmdW5jLCBlcnJvck1lc3NhZ2UgPSBgZXhwZWN0ZWQgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAke3R5cGVvZiBmdW5jfWApIHtcbiAgaWYgKHR5cGVvZiBmdW5jICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGVycm9yTWVzc2FnZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGFzc2VydElzT2JqZWN0KG9iamVjdCwgZXJyb3JNZXNzYWdlID0gYGV4cGVjdGVkIGFuIG9iamVjdCwgaW5zdGVhZCByZWNlaXZlZCAke3R5cGVvZiBvYmplY3R9YCkge1xuICBpZiAodHlwZW9mIG9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxufVxuZnVuY3Rpb24gYXNzZXJ0SXNBcnJheU9mRnVuY3Rpb25zKGFycmF5LCBlcnJvck1lc3NhZ2UgPSBgZXhwZWN0ZWQgYWxsIGl0ZW1zIHRvIGJlIGZ1bmN0aW9ucywgaW5zdGVhZCByZWNlaXZlZCB0aGUgZm9sbG93aW5nIHR5cGVzOiBgKSB7XG4gIGlmICghYXJyYXkuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgY29uc3QgaXRlbVR5cGVzID0gYXJyYXkubWFwKFxuICAgICAgKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSBcImZ1bmN0aW9uXCIgPyBgZnVuY3Rpb24gJHtpdGVtLm5hbWUgfHwgXCJ1bm5hbWVkXCJ9KClgIDogdHlwZW9mIGl0ZW1cbiAgICApLmpvaW4oXCIsIFwiKTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke2Vycm9yTWVzc2FnZX1bJHtpdGVtVHlwZXN9XWApO1xuICB9XG59XG52YXIgZW5zdXJlSXNBcnJheSA9IChpdGVtKSA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbn07XG5mdW5jdGlvbiBnZXREZXBlbmRlbmNpZXMoY3JlYXRlU2VsZWN0b3JBcmdzKSB7XG4gIGNvbnN0IGRlcGVuZGVuY2llcyA9IEFycmF5LmlzQXJyYXkoY3JlYXRlU2VsZWN0b3JBcmdzWzBdKSA/IGNyZWF0ZVNlbGVjdG9yQXJnc1swXSA6IGNyZWF0ZVNlbGVjdG9yQXJncztcbiAgYXNzZXJ0SXNBcnJheU9mRnVuY3Rpb25zKFxuICAgIGRlcGVuZGVuY2llcyxcbiAgICBgY3JlYXRlU2VsZWN0b3IgZXhwZWN0cyBhbGwgaW5wdXQtc2VsZWN0b3JzIHRvIGJlIGZ1bmN0aW9ucywgYnV0IHJlY2VpdmVkIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBcbiAgKTtcbiAgcmV0dXJuIGRlcGVuZGVuY2llcztcbn1cbmZ1bmN0aW9uIGNvbGxlY3RJbnB1dFNlbGVjdG9yUmVzdWx0cyhkZXBlbmRlbmNpZXMsIGlucHV0U2VsZWN0b3JBcmdzKSB7XG4gIGNvbnN0IGlucHV0U2VsZWN0b3JSZXN1bHRzID0gW107XG4gIGNvbnN0IHsgbGVuZ3RoIH0gPSBkZXBlbmRlbmNpZXM7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBpbnB1dFNlbGVjdG9yUmVzdWx0cy5wdXNoKGRlcGVuZGVuY2llc1tpXS5hcHBseShudWxsLCBpbnB1dFNlbGVjdG9yQXJncykpO1xuICB9XG4gIHJldHVybiBpbnB1dFNlbGVjdG9yUmVzdWx0cztcbn1cbnZhciBnZXREZXZNb2RlQ2hlY2tzRXhlY3V0aW9uSW5mbyA9IChmaXJzdFJ1biwgZGV2TW9kZUNoZWNrcykgPT4ge1xuICBjb25zdCB7IGlkZW50aXR5RnVuY3Rpb25DaGVjaywgaW5wdXRTdGFiaWxpdHlDaGVjayB9ID0ge1xuICAgIC4uLmdsb2JhbERldk1vZGVDaGVja3MsXG4gICAgLi4uZGV2TW9kZUNoZWNrc1xuICB9O1xuICByZXR1cm4ge1xuICAgIGlkZW50aXR5RnVuY3Rpb25DaGVjazoge1xuICAgICAgc2hvdWxkUnVuOiBpZGVudGl0eUZ1bmN0aW9uQ2hlY2sgPT09IFwiYWx3YXlzXCIgfHwgaWRlbnRpdHlGdW5jdGlvbkNoZWNrID09PSBcIm9uY2VcIiAmJiBmaXJzdFJ1bixcbiAgICAgIHJ1bjogcnVuSWRlbnRpdHlGdW5jdGlvbkNoZWNrXG4gICAgfSxcbiAgICBpbnB1dFN0YWJpbGl0eUNoZWNrOiB7XG4gICAgICBzaG91bGRSdW46IGlucHV0U3RhYmlsaXR5Q2hlY2sgPT09IFwiYWx3YXlzXCIgfHwgaW5wdXRTdGFiaWxpdHlDaGVjayA9PT0gXCJvbmNlXCIgJiYgZmlyc3RSdW4sXG4gICAgICBydW46IHJ1bklucHV0U3RhYmlsaXR5Q2hlY2tcbiAgICB9XG4gIH07XG59O1xuXG4vLyBzcmMvYXV0b3RyYWNrTWVtb2l6ZS9hdXRvdHJhY2tpbmcudHNcbnZhciAkUkVWSVNJT04gPSAwO1xudmFyIENVUlJFTlRfVFJBQ0tFUiA9IG51bGw7XG52YXIgQ2VsbCA9IGNsYXNzIHtcbiAgcmV2aXNpb24gPSAkUkVWSVNJT047XG4gIF92YWx1ZTtcbiAgX2xhc3RWYWx1ZTtcbiAgX2lzRXF1YWwgPSB0cmlwbGVFcTtcbiAgY29uc3RydWN0b3IoaW5pdGlhbFZhbHVlLCBpc0VxdWFsID0gdHJpcGxlRXEpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2xhc3RWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLl9pc0VxdWFsID0gaXNFcXVhbDtcbiAgfVxuICAvLyBXaGVuZXZlciBhIHN0b3JhZ2UgdmFsdWUgaXMgcmVhZCwgaXQnbGwgYWRkIGl0c2VsZiB0byB0aGUgY3VycmVudCB0cmFja2VyIGlmXG4gIC8vIG9uZSBleGlzdHMsIGVudGFuZ2xpbmcgaXRzIHN0YXRlIHdpdGggdGhhdCBjYWNoZS5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIENVUlJFTlRfVFJBQ0tFUj8uYWRkKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICAvLyBXaGVuZXZlciBhIHN0b3JhZ2UgdmFsdWUgaXMgdXBkYXRlZCwgd2UgYnVtcCB0aGUgZ2xvYmFsIHJldmlzaW9uIGNsb2NrLFxuICAvLyBhc3NpZ24gdGhlIHJldmlzaW9uIGZvciB0aGlzIHN0b3JhZ2UgdG8gdGhlIG5ldyB2YWx1ZSwgX2FuZF8gd2Ugc2NoZWR1bGUgYVxuICAvLyByZXJlbmRlci4gVGhpcyBpcyBpbXBvcnRhbnQsIGFuZCBpdCdzIHdoYXQgbWFrZXMgYXV0b3RyYWNraW5nICBfcHVsbF9cbiAgLy8gYmFzZWQuIFdlIGRvbid0IGFjdGl2ZWx5IHRlbGwgdGhlIGNhY2hlcyB3aGljaCBkZXBlbmQgb24gdGhlIHN0b3JhZ2UgdGhhdFxuICAvLyBhbnl0aGluZyBoYXMgaGFwcGVuZWQuIEluc3RlYWQsIHdlIHJlY29tcHV0ZSB0aGUgY2FjaGVzIHdoZW4gbmVlZGVkLlxuICBzZXQgdmFsdWUobmV3VmFsdWUpIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gbmV3VmFsdWUpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnJldmlzaW9uID0gKyskUkVWSVNJT047XG4gIH1cbn07XG5mdW5jdGlvbiB0cmlwbGVFcShhLCBiKSB7XG4gIHJldHVybiBhID09PSBiO1xufVxudmFyIFRyYWNraW5nQ2FjaGUgPSBjbGFzcyB7XG4gIF9jYWNoZWRWYWx1ZTtcbiAgX2NhY2hlZFJldmlzaW9uID0gLTE7XG4gIF9kZXBzID0gW107XG4gIGhpdHMgPSAwO1xuICBmbjtcbiAgY29uc3RydWN0b3IoZm4pIHtcbiAgICB0aGlzLmZuID0gZm47XG4gIH1cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5fY2FjaGVkVmFsdWUgPSB2b2lkIDA7XG4gICAgdGhpcy5fY2FjaGVkUmV2aXNpb24gPSAtMTtcbiAgICB0aGlzLl9kZXBzID0gW107XG4gICAgdGhpcy5oaXRzID0gMDtcbiAgfVxuICBnZXQgdmFsdWUoKSB7XG4gICAgaWYgKHRoaXMucmV2aXNpb24gPiB0aGlzLl9jYWNoZWRSZXZpc2lvbikge1xuICAgICAgY29uc3QgeyBmbiB9ID0gdGhpcztcbiAgICAgIGNvbnN0IGN1cnJlbnRUcmFja2VyID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIGNvbnN0IHByZXZUcmFja2VyID0gQ1VSUkVOVF9UUkFDS0VSO1xuICAgICAgQ1VSUkVOVF9UUkFDS0VSID0gY3VycmVudFRyYWNrZXI7XG4gICAgICB0aGlzLl9jYWNoZWRWYWx1ZSA9IGZuKCk7XG4gICAgICBDVVJSRU5UX1RSQUNLRVIgPSBwcmV2VHJhY2tlcjtcbiAgICAgIHRoaXMuaGl0cysrO1xuICAgICAgdGhpcy5fZGVwcyA9IEFycmF5LmZyb20oY3VycmVudFRyYWNrZXIpO1xuICAgICAgdGhpcy5fY2FjaGVkUmV2aXNpb24gPSB0aGlzLnJldmlzaW9uO1xuICAgIH1cbiAgICBDVVJSRU5UX1RSQUNLRVI/LmFkZCh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVkVmFsdWU7XG4gIH1cbiAgZ2V0IHJldmlzaW9uKCkge1xuICAgIHJldHVybiBNYXRoLm1heCguLi50aGlzLl9kZXBzLm1hcCgoZCkgPT4gZC5yZXZpc2lvbiksIDApO1xuICB9XG59O1xuZnVuY3Rpb24gZ2V0VmFsdWUoY2VsbCkge1xuICBpZiAoIShjZWxsIGluc3RhbmNlb2YgQ2VsbCkpIHtcbiAgICBjb25zb2xlLndhcm4oXCJOb3QgYSB2YWxpZCBjZWxsISBcIiwgY2VsbCk7XG4gIH1cbiAgcmV0dXJuIGNlbGwudmFsdWU7XG59XG5mdW5jdGlvbiBzZXRWYWx1ZShzdG9yYWdlLCB2YWx1ZSkge1xuICBpZiAoIShzdG9yYWdlIGluc3RhbmNlb2YgQ2VsbCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJzZXRWYWx1ZSBtdXN0IGJlIHBhc3NlZCBhIHRyYWNrZWQgc3RvcmUgY3JlYXRlZCB3aXRoIGBjcmVhdGVTdG9yYWdlYC5cIlxuICAgICk7XG4gIH1cbiAgc3RvcmFnZS52YWx1ZSA9IHN0b3JhZ2UuX2xhc3RWYWx1ZSA9IHZhbHVlO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2VsbChpbml0aWFsVmFsdWUsIGlzRXF1YWwgPSB0cmlwbGVFcSkge1xuICByZXR1cm4gbmV3IENlbGwoaW5pdGlhbFZhbHVlLCBpc0VxdWFsKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlKGZuKSB7XG4gIGFzc2VydElzRnVuY3Rpb24oXG4gICAgZm4sXG4gICAgXCJ0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIGBjcmVhdGVDYWNoZWAgbXVzdCBiZSBhIGZ1bmN0aW9uXCJcbiAgKTtcbiAgcmV0dXJuIG5ldyBUcmFja2luZ0NhY2hlKGZuKTtcbn1cblxuLy8gc3JjL2F1dG90cmFja01lbW9pemUvdHJhY2tpbmcudHNcbnZhciBuZXZlckVxID0gKGEsIGIpID0+IGZhbHNlO1xuZnVuY3Rpb24gY3JlYXRlVGFnKCkge1xuICByZXR1cm4gY3JlYXRlQ2VsbChudWxsLCBuZXZlckVxKTtcbn1cbmZ1bmN0aW9uIGRpcnR5VGFnKHRhZywgdmFsdWUpIHtcbiAgc2V0VmFsdWUodGFnLCB2YWx1ZSk7XG59XG52YXIgY29uc3VtZUNvbGxlY3Rpb24gPSAobm9kZSkgPT4ge1xuICBsZXQgdGFnID0gbm9kZS5jb2xsZWN0aW9uVGFnO1xuICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgdGFnID0gbm9kZS5jb2xsZWN0aW9uVGFnID0gY3JlYXRlVGFnKCk7XG4gIH1cbiAgZ2V0VmFsdWUodGFnKTtcbn07XG52YXIgZGlydHlDb2xsZWN0aW9uID0gKG5vZGUpID0+IHtcbiAgY29uc3QgdGFnID0gbm9kZS5jb2xsZWN0aW9uVGFnO1xuICBpZiAodGFnICE9PSBudWxsKSB7XG4gICAgZGlydHlUYWcodGFnLCBudWxsKTtcbiAgfVxufTtcblxuLy8gc3JjL2F1dG90cmFja01lbW9pemUvcHJveHkudHNcbnZhciBSRURVWF9QUk9YWV9MQUJFTCA9IFN5bWJvbCgpO1xudmFyIG5leHRJZCA9IDA7XG52YXIgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pO1xudmFyIE9iamVjdFRyZWVOb2RlID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy50YWcudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwcm94eSA9IG5ldyBQcm94eSh0aGlzLCBvYmplY3RQcm94eUhhbmRsZXIpO1xuICB0YWcgPSBjcmVhdGVUYWcoKTtcbiAgdGFncyA9IHt9O1xuICBjaGlsZHJlbiA9IHt9O1xuICBjb2xsZWN0aW9uVGFnID0gbnVsbDtcbiAgaWQgPSBuZXh0SWQrKztcbn07XG52YXIgb2JqZWN0UHJveHlIYW5kbGVyID0ge1xuICBnZXQobm9kZSwga2V5KSB7XG4gICAgZnVuY3Rpb24gY2FsY3VsYXRlUmVzdWx0KCkge1xuICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gbm9kZTtcbiAgICAgIGNvbnN0IGNoaWxkVmFsdWUgPSBSZWZsZWN0LmdldCh2YWx1ZSwga2V5KTtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSBcInN5bWJvbFwiKSB7XG4gICAgICAgIHJldHVybiBjaGlsZFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGtleSBpbiBwcm90bykge1xuICAgICAgICByZXR1cm4gY2hpbGRWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY2hpbGRWYWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBjaGlsZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGxldCBjaGlsZE5vZGUgPSBub2RlLmNoaWxkcmVuW2tleV07XG4gICAgICAgIGlmIChjaGlsZE5vZGUgPT09IHZvaWQgMCkge1xuICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGUuY2hpbGRyZW5ba2V5XSA9IGNyZWF0ZU5vZGUoY2hpbGRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkTm9kZS50YWcpIHtcbiAgICAgICAgICBnZXRWYWx1ZShjaGlsZE5vZGUudGFnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2hpbGROb2RlLnByb3h5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHRhZyA9IG5vZGUudGFnc1trZXldO1xuICAgICAgICBpZiAodGFnID09PSB2b2lkIDApIHtcbiAgICAgICAgICB0YWcgPSBub2RlLnRhZ3Nba2V5XSA9IGNyZWF0ZVRhZygpO1xuICAgICAgICAgIHRhZy52YWx1ZSA9IGNoaWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0VmFsdWUodGFnKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkVmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJlcyA9IGNhbGN1bGF0ZVJlc3VsdCgpO1xuICAgIHJldHVybiByZXM7XG4gIH0sXG4gIG93bktleXMobm9kZSkge1xuICAgIGNvbnN1bWVDb2xsZWN0aW9uKG5vZGUpO1xuICAgIHJldHVybiBSZWZsZWN0Lm93bktleXMobm9kZS52YWx1ZSk7XG4gIH0sXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLCBwcm9wKSB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5vZGUudmFsdWUsIHByb3ApO1xuICB9LFxuICBoYXMobm9kZSwgcHJvcCkge1xuICAgIHJldHVybiBSZWZsZWN0Lmhhcyhub2RlLnZhbHVlLCBwcm9wKTtcbiAgfVxufTtcbnZhciBBcnJheVRyZWVOb2RlID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy50YWcudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwcm94eSA9IG5ldyBQcm94eShbdGhpc10sIGFycmF5UHJveHlIYW5kbGVyKTtcbiAgdGFnID0gY3JlYXRlVGFnKCk7XG4gIHRhZ3MgPSB7fTtcbiAgY2hpbGRyZW4gPSB7fTtcbiAgY29sbGVjdGlvblRhZyA9IG51bGw7XG4gIGlkID0gbmV4dElkKys7XG59O1xudmFyIGFycmF5UHJveHlIYW5kbGVyID0ge1xuICBnZXQoW25vZGVdLCBrZXkpIHtcbiAgICBpZiAoa2V5ID09PSBcImxlbmd0aFwiKSB7XG4gICAgICBjb25zdW1lQ29sbGVjdGlvbihub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdFByb3h5SGFuZGxlci5nZXQobm9kZSwga2V5KTtcbiAgfSxcbiAgb3duS2V5cyhbbm9kZV0pIHtcbiAgICByZXR1cm4gb2JqZWN0UHJveHlIYW5kbGVyLm93bktleXMobm9kZSk7XG4gIH0sXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihbbm9kZV0sIHByb3ApIHtcbiAgICByZXR1cm4gb2JqZWN0UHJveHlIYW5kbGVyLmdldE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLCBwcm9wKTtcbiAgfSxcbiAgaGFzKFtub2RlXSwgcHJvcCkge1xuICAgIHJldHVybiBvYmplY3RQcm94eUhhbmRsZXIuaGFzKG5vZGUsIHByb3ApO1xuICB9XG59O1xuZnVuY3Rpb24gY3JlYXRlTm9kZSh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5VHJlZU5vZGUodmFsdWUpO1xuICB9XG4gIHJldHVybiBuZXcgT2JqZWN0VHJlZU5vZGUodmFsdWUpO1xufVxuZnVuY3Rpb24gdXBkYXRlTm9kZShub2RlLCBuZXdWYWx1ZSkge1xuICBjb25zdCB7IHZhbHVlLCB0YWdzLCBjaGlsZHJlbiB9ID0gbm9kZTtcbiAgbm9kZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkgJiYgdmFsdWUubGVuZ3RoICE9PSBuZXdWYWx1ZS5sZW5ndGgpIHtcbiAgICBkaXJ0eUNvbGxlY3Rpb24obm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgbGV0IG9sZEtleXNTaXplID0gMDtcbiAgICAgIGxldCBuZXdLZXlzU2l6ZSA9IDA7XG4gICAgICBsZXQgYW55S2V5c0FkZGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGNvbnN0IF9rZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgb2xkS2V5c1NpemUrKztcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG5ld1ZhbHVlKSB7XG4gICAgICAgIG5ld0tleXNTaXplKys7XG4gICAgICAgIGlmICghKGtleSBpbiB2YWx1ZSkpIHtcbiAgICAgICAgICBhbnlLZXlzQWRkZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBpc0RpZmZlcmVudCA9IGFueUtleXNBZGRlZCB8fCBvbGRLZXlzU2l6ZSAhPT0gbmV3S2V5c1NpemU7XG4gICAgICBpZiAoaXNEaWZmZXJlbnQpIHtcbiAgICAgICAgZGlydHlDb2xsZWN0aW9uKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiB0YWdzKSB7XG4gICAgY29uc3QgY2hpbGRWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgY29uc3QgbmV3Q2hpbGRWYWx1ZSA9IG5ld1ZhbHVlW2tleV07XG4gICAgaWYgKGNoaWxkVmFsdWUgIT09IG5ld0NoaWxkVmFsdWUpIHtcbiAgICAgIGRpcnR5Q29sbGVjdGlvbihub2RlKTtcbiAgICAgIGRpcnR5VGFnKHRhZ3Nba2V5XSwgbmV3Q2hpbGRWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbmV3Q2hpbGRWYWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBuZXdDaGlsZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICBkZWxldGUgdGFnc1trZXldO1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiBjaGlsZHJlbikge1xuICAgIGNvbnN0IGNoaWxkTm9kZSA9IGNoaWxkcmVuW2tleV07XG4gICAgY29uc3QgbmV3Q2hpbGRWYWx1ZSA9IG5ld1ZhbHVlW2tleV07XG4gICAgY29uc3QgY2hpbGRWYWx1ZSA9IGNoaWxkTm9kZS52YWx1ZTtcbiAgICBpZiAoY2hpbGRWYWx1ZSA9PT0gbmV3Q2hpbGRWYWx1ZSkge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbmV3Q2hpbGRWYWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBuZXdDaGlsZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICB1cGRhdGVOb2RlKGNoaWxkTm9kZSwgbmV3Q2hpbGRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZU5vZGUoY2hpbGROb2RlKTtcbiAgICAgIGRlbGV0ZSBjaGlsZHJlbltrZXldO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gZGVsZXRlTm9kZShub2RlKSB7XG4gIGlmIChub2RlLnRhZykge1xuICAgIGRpcnR5VGFnKG5vZGUudGFnLCBudWxsKTtcbiAgfVxuICBkaXJ0eUNvbGxlY3Rpb24obm9kZSk7XG4gIGZvciAoY29uc3Qga2V5IGluIG5vZGUudGFncykge1xuICAgIGRpcnR5VGFnKG5vZGUudGFnc1trZXldLCBudWxsKTtcbiAgfVxuICBmb3IgKGNvbnN0IGtleSBpbiBub2RlLmNoaWxkcmVuKSB7XG4gICAgZGVsZXRlTm9kZShub2RlLmNoaWxkcmVuW2tleV0pO1xuICB9XG59XG5cbi8vIHNyYy9scnVNZW1vaXplLnRzXG5mdW5jdGlvbiBjcmVhdGVTaW5nbGV0b25DYWNoZShlcXVhbHMpIHtcbiAgbGV0IGVudHJ5O1xuICByZXR1cm4ge1xuICAgIGdldChrZXkpIHtcbiAgICAgIGlmIChlbnRyeSAmJiBlcXVhbHMoZW50cnkua2V5LCBrZXkpKSB7XG4gICAgICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBOT1RfRk9VTkQ7XG4gICAgfSxcbiAgICBwdXQoa2V5LCB2YWx1ZSkge1xuICAgICAgZW50cnkgPSB7IGtleSwgdmFsdWUgfTtcbiAgICB9LFxuICAgIGdldEVudHJpZXMoKSB7XG4gICAgICByZXR1cm4gZW50cnkgPyBbZW50cnldIDogW107XG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGVudHJ5ID0gdm9pZCAwO1xuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUxydUNhY2hlKG1heFNpemUsIGVxdWFscykge1xuICBsZXQgZW50cmllcyA9IFtdO1xuICBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgY29uc3QgY2FjaGVJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gZXF1YWxzKGtleSwgZW50cnkua2V5KSk7XG4gICAgaWYgKGNhY2hlSW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzW2NhY2hlSW5kZXhdO1xuICAgICAgaWYgKGNhY2hlSW5kZXggPiAwKSB7XG4gICAgICAgIGVudHJpZXMuc3BsaWNlKGNhY2hlSW5kZXgsIDEpO1xuICAgICAgICBlbnRyaWVzLnVuc2hpZnQoZW50cnkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVudHJ5LnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gTk9UX0ZPVU5EO1xuICB9XG4gIGZ1bmN0aW9uIHB1dChrZXksIHZhbHVlKSB7XG4gICAgaWYgKGdldChrZXkpID09PSBOT1RfRk9VTkQpIHtcbiAgICAgIGVudHJpZXMudW5zaGlmdCh7IGtleSwgdmFsdWUgfSk7XG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPiBtYXhTaXplKSB7XG4gICAgICAgIGVudHJpZXMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdldEVudHJpZXMoKSB7XG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbiAgZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgZW50cmllcyA9IFtdO1xuICB9XG4gIHJldHVybiB7IGdldCwgcHV0LCBnZXRFbnRyaWVzLCBjbGVhciB9O1xufVxudmFyIHJlZmVyZW5jZUVxdWFsaXR5Q2hlY2sgPSAoYSwgYikgPT4gYSA9PT0gYjtcbmZ1bmN0aW9uIGNyZWF0ZUNhY2hlS2V5Q29tcGFyYXRvcihlcXVhbGl0eUNoZWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiBhcmVBcmd1bWVudHNTaGFsbG93bHlFcXVhbChwcmV2LCBuZXh0KSB7XG4gICAgaWYgKHByZXYgPT09IG51bGwgfHwgbmV4dCA9PT0gbnVsbCB8fCBwcmV2Lmxlbmd0aCAhPT0gbmV4dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgeyBsZW5ndGggfSA9IHByZXY7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFlcXVhbGl0eUNoZWNrKHByZXZbaV0sIG5leHRbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59XG5mdW5jdGlvbiBscnVNZW1vaXplKGZ1bmMsIGVxdWFsaXR5Q2hlY2tPck9wdGlvbnMpIHtcbiAgY29uc3QgcHJvdmlkZWRPcHRpb25zID0gdHlwZW9mIGVxdWFsaXR5Q2hlY2tPck9wdGlvbnMgPT09IFwib2JqZWN0XCIgPyBlcXVhbGl0eUNoZWNrT3JPcHRpb25zIDogeyBlcXVhbGl0eUNoZWNrOiBlcXVhbGl0eUNoZWNrT3JPcHRpb25zIH07XG4gIGNvbnN0IHtcbiAgICBlcXVhbGl0eUNoZWNrID0gcmVmZXJlbmNlRXF1YWxpdHlDaGVjayxcbiAgICBtYXhTaXplID0gMSxcbiAgICByZXN1bHRFcXVhbGl0eUNoZWNrXG4gIH0gPSBwcm92aWRlZE9wdGlvbnM7XG4gIGNvbnN0IGNvbXBhcmF0b3IgPSBjcmVhdGVDYWNoZUtleUNvbXBhcmF0b3IoZXF1YWxpdHlDaGVjayk7XG4gIGxldCByZXN1bHRzQ291bnQgPSAwO1xuICBjb25zdCBjYWNoZSA9IG1heFNpemUgPD0gMSA/IGNyZWF0ZVNpbmdsZXRvbkNhY2hlKGNvbXBhcmF0b3IpIDogY3JlYXRlTHJ1Q2FjaGUobWF4U2l6ZSwgY29tcGFyYXRvcik7XG4gIGZ1bmN0aW9uIG1lbW9pemVkKCkge1xuICAgIGxldCB2YWx1ZSA9IGNhY2hlLmdldChhcmd1bWVudHMpO1xuICAgIGlmICh2YWx1ZSA9PT0gTk9UX0ZPVU5EKSB7XG4gICAgICB2YWx1ZSA9IGZ1bmMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgIHJlc3VsdHNDb3VudCsrO1xuICAgICAgaWYgKHJlc3VsdEVxdWFsaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGNhY2hlLmdldEVudHJpZXMoKTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdFbnRyeSA9IGVudHJpZXMuZmluZChcbiAgICAgICAgICAoZW50cnkpID0+IHJlc3VsdEVxdWFsaXR5Q2hlY2soZW50cnkudmFsdWUsIHZhbHVlKVxuICAgICAgICApO1xuICAgICAgICBpZiAobWF0Y2hpbmdFbnRyeSkge1xuICAgICAgICAgIHZhbHVlID0gbWF0Y2hpbmdFbnRyeS52YWx1ZTtcbiAgICAgICAgICByZXN1bHRzQ291bnQgIT09IDAgJiYgcmVzdWx0c0NvdW50LS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhY2hlLnB1dChhcmd1bWVudHMsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIG1lbW9pemVkLmNsZWFyQ2FjaGUgPSAoKSA9PiB7XG4gICAgY2FjaGUuY2xlYXIoKTtcbiAgICBtZW1vaXplZC5yZXNldFJlc3VsdHNDb3VudCgpO1xuICB9O1xuICBtZW1vaXplZC5yZXN1bHRzQ291bnQgPSAoKSA9PiByZXN1bHRzQ291bnQ7XG4gIG1lbW9pemVkLnJlc2V0UmVzdWx0c0NvdW50ID0gKCkgPT4ge1xuICAgIHJlc3VsdHNDb3VudCA9IDA7XG4gIH07XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gc3JjL2F1dG90cmFja01lbW9pemUvYXV0b3RyYWNrTWVtb2l6ZS50c1xuZnVuY3Rpb24gYXV0b3RyYWNrTWVtb2l6ZShmdW5jKSB7XG4gIGNvbnN0IG5vZGUgPSBjcmVhdGVOb2RlKFxuICAgIFtdXG4gICk7XG4gIGxldCBsYXN0QXJncyA9IG51bGw7XG4gIGNvbnN0IHNoYWxsb3dFcXVhbCA9IGNyZWF0ZUNhY2hlS2V5Q29tcGFyYXRvcihyZWZlcmVuY2VFcXVhbGl0eUNoZWNrKTtcbiAgY29uc3QgY2FjaGUgPSBjcmVhdGVDYWNoZSgoKSA9PiB7XG4gICAgY29uc3QgcmVzID0gZnVuYy5hcHBseShudWxsLCBub2RlLnByb3h5KTtcbiAgICByZXR1cm4gcmVzO1xuICB9KTtcbiAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgaWYgKCFzaGFsbG93RXF1YWwobGFzdEFyZ3MsIGFyZ3VtZW50cykpIHtcbiAgICAgIHVwZGF0ZU5vZGUobm9kZSwgYXJndW1lbnRzKTtcbiAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIH1cbiAgICByZXR1cm4gY2FjaGUudmFsdWU7XG4gIH1cbiAgbWVtb2l6ZWQuY2xlYXJDYWNoZSA9ICgpID0+IHtcbiAgICByZXR1cm4gY2FjaGUuY2xlYXIoKTtcbiAgfTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBzcmMvd2Vha01hcE1lbW9pemUudHNcbnZhciBTdHJvbmdSZWYgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIGRlcmVmKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59O1xudmFyIFJlZiA9IHR5cGVvZiBXZWFrUmVmICE9PSBcInVuZGVmaW5lZFwiID8gV2Vha1JlZiA6IFN0cm9uZ1JlZjtcbnZhciBVTlRFUk1JTkFURUQgPSAwO1xudmFyIFRFUk1JTkFURUQgPSAxO1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGVOb2RlKCkge1xuICByZXR1cm4ge1xuICAgIHM6IFVOVEVSTUlOQVRFRCxcbiAgICB2OiB2b2lkIDAsXG4gICAgbzogbnVsbCxcbiAgICBwOiBudWxsXG4gIH07XG59XG5mdW5jdGlvbiB3ZWFrTWFwTWVtb2l6ZShmdW5jLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGZuTm9kZSA9IGNyZWF0ZUNhY2hlTm9kZSgpO1xuICBjb25zdCB7IHJlc3VsdEVxdWFsaXR5Q2hlY2sgfSA9IG9wdGlvbnM7XG4gIGxldCBsYXN0UmVzdWx0O1xuICBsZXQgcmVzdWx0c0NvdW50ID0gMDtcbiAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7XG4gICAgbGV0IGNhY2hlTm9kZSA9IGZuTm9kZTtcbiAgICBjb25zdCB7IGxlbmd0aCB9ID0gYXJndW1lbnRzO1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBhcmcgPSBhcmd1bWVudHNbaV07XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiBhcmcgPT09IFwib2JqZWN0XCIgJiYgYXJnICE9PSBudWxsKSB7XG4gICAgICAgIGxldCBvYmplY3RDYWNoZSA9IGNhY2hlTm9kZS5vO1xuICAgICAgICBpZiAob2JqZWN0Q2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgICBjYWNoZU5vZGUubyA9IG9iamVjdENhY2hlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2JqZWN0Tm9kZSA9IG9iamVjdENhY2hlLmdldChhcmcpO1xuICAgICAgICBpZiAob2JqZWN0Tm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgb2JqZWN0Q2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBvYmplY3ROb2RlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpbWl0aXZlQ2FjaGUgPSBjYWNoZU5vZGUucDtcbiAgICAgICAgaWYgKHByaW1pdGl2ZUNhY2hlID09PSBudWxsKSB7XG4gICAgICAgICAgY2FjaGVOb2RlLnAgPSBwcmltaXRpdmVDYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJpbWl0aXZlTm9kZSA9IHByaW1pdGl2ZUNhY2hlLmdldChhcmcpO1xuICAgICAgICBpZiAocHJpbWl0aXZlTm9kZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgY2FjaGVOb2RlID0gY3JlYXRlQ2FjaGVOb2RlKCk7XG4gICAgICAgICAgcHJpbWl0aXZlQ2FjaGUuc2V0KGFyZywgY2FjaGVOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYWNoZU5vZGUgPSBwcmltaXRpdmVOb2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRlcm1pbmF0ZWROb2RlID0gY2FjaGVOb2RlO1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKGNhY2hlTm9kZS5zID09PSBURVJNSU5BVEVEKSB7XG4gICAgICByZXN1bHQgPSBjYWNoZU5vZGUudjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gZnVuYy5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgcmVzdWx0c0NvdW50Kys7XG4gICAgICBpZiAocmVzdWx0RXF1YWxpdHlDaGVjaykge1xuICAgICAgICBjb25zdCBsYXN0UmVzdWx0VmFsdWUgPSBsYXN0UmVzdWx0Py5kZXJlZj8uKCkgPz8gbGFzdFJlc3VsdDtcbiAgICAgICAgaWYgKGxhc3RSZXN1bHRWYWx1ZSAhPSBudWxsICYmIHJlc3VsdEVxdWFsaXR5Q2hlY2sobGFzdFJlc3VsdFZhbHVlLCByZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0ID0gbGFzdFJlc3VsdFZhbHVlO1xuICAgICAgICAgIHJlc3VsdHNDb3VudCAhPT0gMCAmJiByZXN1bHRzQ291bnQtLTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZWVkc1dlYWtSZWYgPSB0eXBlb2YgcmVzdWx0ID09PSBcIm9iamVjdFwiICYmIHJlc3VsdCAhPT0gbnVsbCB8fCB0eXBlb2YgcmVzdWx0ID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICAgIGxhc3RSZXN1bHQgPSBuZWVkc1dlYWtSZWYgPyBuZXcgUmVmKHJlc3VsdCkgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRlcm1pbmF0ZWROb2RlLnMgPSBURVJNSU5BVEVEO1xuICAgIHRlcm1pbmF0ZWROb2RlLnYgPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBtZW1vaXplZC5jbGVhckNhY2hlID0gKCkgPT4ge1xuICAgIGZuTm9kZSA9IGNyZWF0ZUNhY2hlTm9kZSgpO1xuICAgIG1lbW9pemVkLnJlc2V0UmVzdWx0c0NvdW50KCk7XG4gIH07XG4gIG1lbW9pemVkLnJlc3VsdHNDb3VudCA9ICgpID0+IHJlc3VsdHNDb3VudDtcbiAgbWVtb2l6ZWQucmVzZXRSZXN1bHRzQ291bnQgPSAoKSA9PiB7XG4gICAgcmVzdWx0c0NvdW50ID0gMDtcbiAgfTtcbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG4vLyBzcmMvY3JlYXRlU2VsZWN0b3JDcmVhdG9yLnRzXG5mdW5jdGlvbiBjcmVhdGVTZWxlY3RvckNyZWF0b3IobWVtb2l6ZU9yT3B0aW9ucywgLi4ubWVtb2l6ZU9wdGlvbnNGcm9tQXJncykge1xuICBjb25zdCBjcmVhdGVTZWxlY3RvckNyZWF0b3JPcHRpb25zID0gdHlwZW9mIG1lbW9pemVPck9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIiA/IHtcbiAgICBtZW1vaXplOiBtZW1vaXplT3JPcHRpb25zLFxuICAgIG1lbW9pemVPcHRpb25zOiBtZW1vaXplT3B0aW9uc0Zyb21BcmdzXG4gIH0gOiBtZW1vaXplT3JPcHRpb25zO1xuICBjb25zdCBjcmVhdGVTZWxlY3RvcjIgPSAoLi4uY3JlYXRlU2VsZWN0b3JBcmdzKSA9PiB7XG4gICAgbGV0IHJlY29tcHV0YXRpb25zID0gMDtcbiAgICBsZXQgZGVwZW5kZW5jeVJlY29tcHV0YXRpb25zID0gMDtcbiAgICBsZXQgbGFzdFJlc3VsdDtcbiAgICBsZXQgZGlyZWN0bHlQYXNzZWRPcHRpb25zID0ge307XG4gICAgbGV0IHJlc3VsdEZ1bmMgPSBjcmVhdGVTZWxlY3RvckFyZ3MucG9wKCk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHRGdW5jID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBkaXJlY3RseVBhc3NlZE9wdGlvbnMgPSByZXN1bHRGdW5jO1xuICAgICAgcmVzdWx0RnVuYyA9IGNyZWF0ZVNlbGVjdG9yQXJncy5wb3AoKTtcbiAgICB9XG4gICAgYXNzZXJ0SXNGdW5jdGlvbihcbiAgICAgIHJlc3VsdEZ1bmMsXG4gICAgICBgY3JlYXRlU2VsZWN0b3IgZXhwZWN0cyBhbiBvdXRwdXQgZnVuY3Rpb24gYWZ0ZXIgdGhlIGlucHV0cywgYnV0IHJlY2VpdmVkOiBbJHt0eXBlb2YgcmVzdWx0RnVuY31dYFxuICAgICk7XG4gICAgY29uc3QgY29tYmluZWRPcHRpb25zID0ge1xuICAgICAgLi4uY3JlYXRlU2VsZWN0b3JDcmVhdG9yT3B0aW9ucyxcbiAgICAgIC4uLmRpcmVjdGx5UGFzc2VkT3B0aW9uc1xuICAgIH07XG4gICAgY29uc3Qge1xuICAgICAgbWVtb2l6ZSxcbiAgICAgIG1lbW9pemVPcHRpb25zID0gW10sXG4gICAgICBhcmdzTWVtb2l6ZSA9IHdlYWtNYXBNZW1vaXplLFxuICAgICAgYXJnc01lbW9pemVPcHRpb25zID0gW10sXG4gICAgICBkZXZNb2RlQ2hlY2tzID0ge31cbiAgICB9ID0gY29tYmluZWRPcHRpb25zO1xuICAgIGNvbnN0IGZpbmFsTWVtb2l6ZU9wdGlvbnMgPSBlbnN1cmVJc0FycmF5KG1lbW9pemVPcHRpb25zKTtcbiAgICBjb25zdCBmaW5hbEFyZ3NNZW1vaXplT3B0aW9ucyA9IGVuc3VyZUlzQXJyYXkoYXJnc01lbW9pemVPcHRpb25zKTtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBnZXREZXBlbmRlbmNpZXMoY3JlYXRlU2VsZWN0b3JBcmdzKTtcbiAgICBjb25zdCBtZW1vaXplZFJlc3VsdEZ1bmMgPSBtZW1vaXplKGZ1bmN0aW9uIHJlY29tcHV0YXRpb25XcmFwcGVyKCkge1xuICAgICAgcmVjb21wdXRhdGlvbnMrKztcbiAgICAgIHJldHVybiByZXN1bHRGdW5jLmFwcGx5KFxuICAgICAgICBudWxsLFxuICAgICAgICBhcmd1bWVudHNcbiAgICAgICk7XG4gICAgfSwgLi4uZmluYWxNZW1vaXplT3B0aW9ucyk7XG4gICAgbGV0IGZpcnN0UnVuID0gdHJ1ZTtcbiAgICBjb25zdCBzZWxlY3RvciA9IGFyZ3NNZW1vaXplKGZ1bmN0aW9uIGRlcGVuZGVuY2llc0NoZWNrZXIoKSB7XG4gICAgICBkZXBlbmRlbmN5UmVjb21wdXRhdGlvbnMrKztcbiAgICAgIGNvbnN0IGlucHV0U2VsZWN0b3JSZXN1bHRzID0gY29sbGVjdElucHV0U2VsZWN0b3JSZXN1bHRzKFxuICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgIGFyZ3VtZW50c1xuICAgICAgKTtcbiAgICAgIGxhc3RSZXN1bHQgPSBtZW1vaXplZFJlc3VsdEZ1bmMuYXBwbHkobnVsbCwgaW5wdXRTZWxlY3RvclJlc3VsdHMpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zdCB7IGlkZW50aXR5RnVuY3Rpb25DaGVjaywgaW5wdXRTdGFiaWxpdHlDaGVjayB9ID0gZ2V0RGV2TW9kZUNoZWNrc0V4ZWN1dGlvbkluZm8oZmlyc3RSdW4sIGRldk1vZGVDaGVja3MpO1xuICAgICAgICBpZiAoaWRlbnRpdHlGdW5jdGlvbkNoZWNrLnNob3VsZFJ1bikge1xuICAgICAgICAgIGlkZW50aXR5RnVuY3Rpb25DaGVjay5ydW4oXG4gICAgICAgICAgICByZXN1bHRGdW5jLFxuICAgICAgICAgICAgaW5wdXRTZWxlY3RvclJlc3VsdHMsXG4gICAgICAgICAgICBsYXN0UmVzdWx0XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRTdGFiaWxpdHlDaGVjay5zaG91bGRSdW4pIHtcbiAgICAgICAgICBjb25zdCBpbnB1dFNlbGVjdG9yUmVzdWx0c0NvcHkgPSBjb2xsZWN0SW5wdXRTZWxlY3RvclJlc3VsdHMoXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgICAgICBhcmd1bWVudHNcbiAgICAgICAgICApO1xuICAgICAgICAgIGlucHV0U3RhYmlsaXR5Q2hlY2sucnVuKFxuICAgICAgICAgICAgeyBpbnB1dFNlbGVjdG9yUmVzdWx0cywgaW5wdXRTZWxlY3RvclJlc3VsdHNDb3B5IH0sXG4gICAgICAgICAgICB7IG1lbW9pemUsIG1lbW9pemVPcHRpb25zOiBmaW5hbE1lbW9pemVPcHRpb25zIH0sXG4gICAgICAgICAgICBhcmd1bWVudHNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdFJ1bilcbiAgICAgICAgICBmaXJzdFJ1biA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7XG4gICAgfSwgLi4uZmluYWxBcmdzTWVtb2l6ZU9wdGlvbnMpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHNlbGVjdG9yLCB7XG4gICAgICByZXN1bHRGdW5jLFxuICAgICAgbWVtb2l6ZWRSZXN1bHRGdW5jLFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgZGVwZW5kZW5jeVJlY29tcHV0YXRpb25zOiAoKSA9PiBkZXBlbmRlbmN5UmVjb21wdXRhdGlvbnMsXG4gICAgICByZXNldERlcGVuZGVuY3lSZWNvbXB1dGF0aW9uczogKCkgPT4ge1xuICAgICAgICBkZXBlbmRlbmN5UmVjb21wdXRhdGlvbnMgPSAwO1xuICAgICAgfSxcbiAgICAgIGxhc3RSZXN1bHQ6ICgpID0+IGxhc3RSZXN1bHQsXG4gICAgICByZWNvbXB1dGF0aW9uczogKCkgPT4gcmVjb21wdXRhdGlvbnMsXG4gICAgICByZXNldFJlY29tcHV0YXRpb25zOiAoKSA9PiB7XG4gICAgICAgIHJlY29tcHV0YXRpb25zID0gMDtcbiAgICAgIH0sXG4gICAgICBtZW1vaXplLFxuICAgICAgYXJnc01lbW9pemVcbiAgICB9KTtcbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihjcmVhdGVTZWxlY3RvcjIsIHtcbiAgICB3aXRoVHlwZXM6ICgpID0+IGNyZWF0ZVNlbGVjdG9yMlxuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZVNlbGVjdG9yMjtcbn1cbnZhciBjcmVhdGVTZWxlY3RvciA9IC8qIEBfX1BVUkVfXyAqLyBjcmVhdGVTZWxlY3RvckNyZWF0b3Iod2Vha01hcE1lbW9pemUpO1xuXG4vLyBzcmMvY3JlYXRlU3RydWN0dXJlZFNlbGVjdG9yLnRzXG52YXIgY3JlYXRlU3RydWN0dXJlZFNlbGVjdG9yID0gT2JqZWN0LmFzc2lnbihcbiAgKGlucHV0U2VsZWN0b3JzT2JqZWN0LCBzZWxlY3RvckNyZWF0b3IgPSBjcmVhdGVTZWxlY3RvcikgPT4ge1xuICAgIGFzc2VydElzT2JqZWN0KFxuICAgICAgaW5wdXRTZWxlY3RvcnNPYmplY3QsXG4gICAgICBgY3JlYXRlU3RydWN0dXJlZFNlbGVjdG9yIGV4cGVjdHMgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdoZXJlIGVhY2ggcHJvcGVydHkgaXMgYSBzZWxlY3RvciwgaW5zdGVhZCByZWNlaXZlZCBhICR7dHlwZW9mIGlucHV0U2VsZWN0b3JzT2JqZWN0fWBcbiAgICApO1xuICAgIGNvbnN0IGlucHV0U2VsZWN0b3JLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRTZWxlY3RvcnNPYmplY3QpO1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IGlucHV0U2VsZWN0b3JLZXlzLm1hcChcbiAgICAgIChrZXkpID0+IGlucHV0U2VsZWN0b3JzT2JqZWN0W2tleV1cbiAgICApO1xuICAgIGNvbnN0IHN0cnVjdHVyZWRTZWxlY3RvciA9IHNlbGVjdG9yQ3JlYXRvcihcbiAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgICguLi5pbnB1dFNlbGVjdG9yUmVzdWx0cykgPT4ge1xuICAgICAgICByZXR1cm4gaW5wdXRTZWxlY3RvclJlc3VsdHMucmVkdWNlKChjb21wb3NpdGlvbiwgdmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29tcG9zaXRpb25baW5wdXRTZWxlY3RvcktleXNbaW5kZXhdXSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiBjb21wb3NpdGlvbjtcbiAgICAgICAgfSwge30pO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRTZWxlY3RvcjtcbiAgfSxcbiAgeyB3aXRoVHlwZXM6ICgpID0+IGNyZWF0ZVN0cnVjdHVyZWRTZWxlY3RvciB9XG4pO1xuZXhwb3J0IHtcbiAgY3JlYXRlU2VsZWN0b3IsXG4gIGNyZWF0ZVNlbGVjdG9yQ3JlYXRvcixcbiAgY3JlYXRlU3RydWN0dXJlZFNlbGVjdG9yLFxuICBscnVNZW1vaXplLFxuICByZWZlcmVuY2VFcXVhbGl0eUNoZWNrLFxuICBzZXRHbG9iYWxEZXZNb2RlQ2hlY2tzLFxuICBhdXRvdHJhY2tNZW1vaXplIGFzIHVuc3RhYmxlX2F1dG90cmFja01lbW9pemUsXG4gIHdlYWtNYXBNZW1vaXplXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVzZWxlY3QubWpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@reduxjs/toolkit/node_modules/reselect/dist/reselect.mjs\n"));
/***/ }),
/***/ "./node_modules/axios/index.js":
/*!*************************************!*\
!*** ./node_modules/axios/index.js ***!
\*************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Axios: function() { return /* binding */ Axios; },\n/* harmony export */ AxiosError: function() { return /* binding */ AxiosError; },\n/* harmony export */ AxiosHeaders: function() { return /* binding */ AxiosHeaders; },\n/* harmony export */ Cancel: function() { return /* binding */ Cancel; },\n/* harmony export */ CancelToken: function() { return /* binding */ CancelToken; },\n/* harmony export */ CanceledError: function() { return /* binding */ CanceledError; },\n/* harmony export */ HttpStatusCode: function() { return /* binding */ HttpStatusCode; },\n/* harmony export */ VERSION: function() { return /* binding */ VERSION; },\n/* harmony export */ all: function() { return /* binding */ all; },\n/* harmony export */ \"default\": function() { return /* reexport safe */ _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */ formToJSON: function() { return /* binding */ formToJSON; },\n/* harmony export */ getAdapter: function() { return /* binding */ getAdapter; },\n/* harmony export */ isAxiosError: function() { return /* binding */ isAxiosError; },\n/* harmony export */ isCancel: function() { return /* binding */ isCancel; },\n/* harmony export */ mergeConfig: function() { return /* binding */ mergeConfig; },\n/* harmony export */ spread: function() { return /* binding */ spread; },\n/* harmony export */ toFormData: function() { return /* binding */ toFormData; }\n/* harmony export */ });\n/* harmony import */ var _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/axios.js */ \"./node_modules/axios/lib/axios.js\");\n\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW1DOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxFQUFFLHFEQUFLOztBQW9CUiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanM/MjY1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MgZnJvbSAnLi9saWIvYXhpb3MuanMnO1xuXG4vLyBUaGlzIG1vZHVsZSBpcyBpbnRlbmRlZCB0byB1bndyYXAgQXhpb3MgZGVmYXVsdCBleHBvcnQgYXMgbmFtZWQuXG4vLyBLZWVwIHRvcC1sZXZlbCBleHBvcnQgc2FtZSB3aXRoIHN0YXRpYyBwcm9wZXJ0aWVzXG4vLyBzbyB0aGF0IGl0IGNhbiBrZWVwIHNhbWUgd2l0aCBlcyBtb2R1bGUgb3IgY2pzXG5jb25zdCB7XG4gIEF4aW9zLFxuICBBeGlvc0Vycm9yLFxuICBDYW5jZWxlZEVycm9yLFxuICBpc0NhbmNlbCxcbiAgQ2FuY2VsVG9rZW4sXG4gIFZFUlNJT04sXG4gIGFsbCxcbiAgQ2FuY2VsLFxuICBpc0F4aW9zRXJyb3IsXG4gIHNwcmVhZCxcbiAgdG9Gb3JtRGF0YSxcbiAgQXhpb3NIZWFkZXJzLFxuICBIdHRwU3RhdHVzQ29kZSxcbiAgZm9ybVRvSlNPTixcbiAgZ2V0QWRhcHRlcixcbiAgbWVyZ2VDb25maWdcbn0gPSBheGlvcztcblxuZXhwb3J0IHtcbiAgYXhpb3MgYXMgZGVmYXVsdCxcbiAgQXhpb3MsXG4gIEF4aW9zRXJyb3IsXG4gIENhbmNlbGVkRXJyb3IsXG4gIGlzQ2FuY2VsLFxuICBDYW5jZWxUb2tlbixcbiAgVkVSU0lPTixcbiAgYWxsLFxuICBDYW5jZWwsXG4gIGlzQXhpb3NFcnJvcixcbiAgc3ByZWFkLFxuICB0b0Zvcm1EYXRhLFxuICBBeGlvc0hlYWRlcnMsXG4gIEh0dHBTdGF0dXNDb2RlLFxuICBmb3JtVG9KU09OLFxuICBnZXRBZGFwdGVyLFxuICBtZXJnZUNvbmZpZ1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/index.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/adapters/adapters.js":
/*!*****************************************************!*\
!*** ./node_modules/axios/lib/adapters/adapters.js ***!
\*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _http_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./http.js */ \"./node_modules/axios/lib/helpers/null.js\");\n/* harmony import */ var _xhr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./xhr.js */ \"./node_modules/axios/lib/adapters/xhr.js\");\n/* harmony import */ var _fetch_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fetch.js */ \"./node_modules/axios/lib/adapters/fetch.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n\n\nconst knownAdapters = {\n http: _http_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n xhr: _xhr_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n fetch: _fetch_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n}\n\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isFunction(adapter) || adapter === null || adapter === false;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getAdapter: (adapters) => {\n adapters = _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"](\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFnQztBQUNJO0FBQ0Y7QUFDSTtBQUNTOztBQUUvQztBQUNBLFFBQVEsZ0RBQVc7QUFDbkIsT0FBTywrQ0FBVTtBQUNqQixTQUFTLGlEQUFZO0FBQ3JCOztBQUVBLHlEQUFhO0FBQ2I7QUFDQTtBQUNBLHlDQUF5QyxNQUFNO0FBQy9DLE1BQU07QUFDTjtBQUNBO0FBQ0EsOENBQThDLE1BQU07QUFDcEQ7QUFDQSxDQUFDOztBQUVELHNDQUFzQyxPQUFPOztBQUU3QyxzQ0FBc0MsNERBQWdCOztBQUV0RCwrREFBZTtBQUNmO0FBQ0EsZUFBZSx5REFBYTs7QUFFNUIsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7O0FBRUE7O0FBRUEsb0JBQW9CLFlBQVk7QUFDaEM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDJEQUFVLHFCQUFxQixHQUFHO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx5Q0FBeUMsSUFBSTtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsMkRBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvYWRhcHRlcnMuanM/MGMzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IGh0dHBBZGFwdGVyIGZyb20gJy4vaHR0cC5qcyc7XG5pbXBvcnQgeGhyQWRhcHRlciBmcm9tICcuL3hoci5qcyc7XG5pbXBvcnQgZmV0Y2hBZGFwdGVyIGZyb20gJy4vZmV0Y2guanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuXG5jb25zdCBrbm93bkFkYXB0ZXJzID0ge1xuICBodHRwOiBodHRwQWRhcHRlcixcbiAgeGhyOiB4aHJBZGFwdGVyLFxuICBmZXRjaDogZmV0Y2hBZGFwdGVyXG59XG5cbnV0aWxzLmZvckVhY2goa25vd25BZGFwdGVycywgKGZuLCB2YWx1ZSkgPT4ge1xuICBpZiAoZm4pIHtcbiAgICB0cnkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHt2YWx1ZX0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sICdhZGFwdGVyTmFtZScsIHt2YWx1ZX0pO1xuICB9XG59KTtcblxuY29uc3QgcmVuZGVyUmVhc29uID0gKHJlYXNvbikgPT4gYC0gJHtyZWFzb259YDtcblxuY29uc3QgaXNSZXNvbHZlZEhhbmRsZSA9IChhZGFwdGVyKSA9PiB1dGlscy5pc0Z1bmN0aW9uKGFkYXB0ZXIpIHx8IGFkYXB0ZXIgPT09IG51bGwgfHwgYWRhcHRlciA9PT0gZmFsc2U7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QWRhcHRlcjogKGFkYXB0ZXJzKSA9PiB7XG4gICAgYWRhcHRlcnMgPSB1dGlscy5pc0FycmF5KGFkYXB0ZXJzKSA/IGFkYXB0ZXJzIDogW2FkYXB0ZXJzXTtcblxuICAgIGNvbnN0IHtsZW5ndGh9ID0gYWRhcHRlcnM7XG4gICAgbGV0IG5hbWVPckFkYXB0ZXI7XG4gICAgbGV0IGFkYXB0ZXI7XG5cbiAgICBjb25zdCByZWplY3RlZFJlYXNvbnMgPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWVPckFkYXB0ZXIgPSBhZGFwdGVyc1tpXTtcbiAgICAgIGxldCBpZDtcblxuICAgICAgYWRhcHRlciA9IG5hbWVPckFkYXB0ZXI7XG5cbiAgICAgIGlmICghaXNSZXNvbHZlZEhhbmRsZShuYW1lT3JBZGFwdGVyKSkge1xuICAgICAgICBhZGFwdGVyID0ga25vd25BZGFwdGVyc1soaWQgPSBTdHJpbmcobmFtZU9yQWRhcHRlcikpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgIGlmIChhZGFwdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgVW5rbm93biBhZGFwdGVyICcke2lkfSdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWRhcHRlcikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmVqZWN0ZWRSZWFzb25zW2lkIHx8ICcjJyArIGldID0gYWRhcHRlcjtcbiAgICB9XG5cbiAgICBpZiAoIWFkYXB0ZXIpIHtcblxuICAgICAgY29uc3QgcmVhc29ucyA9IE9iamVjdC5lbnRyaWVzKHJlamVjdGVkUmVhc29ucylcbiAgICAgICAgLm1hcCgoW2lkLCBzdGF0ZV0pID0+IGBhZGFwdGVyICR7aWR9IGAgK1xuICAgICAgICAgIChzdGF0ZSA9PT0gZmFsc2UgPyAnaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW52aXJvbm1lbnQnIDogJ2lzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJ1aWxkJylcbiAgICAgICAgKTtcblxuICAgICAgbGV0IHMgPSBsZW5ndGggP1xuICAgICAgICAocmVhc29ucy5sZW5ndGggPiAxID8gJ3NpbmNlIDpcXG4nICsgcmVhc29ucy5tYXAocmVuZGVyUmVhc29uKS5qb2luKCdcXG4nKSA6ICcgJyArIHJlbmRlclJlYXNvbihyZWFzb25zWzBdKSkgOlxuICAgICAgICAnYXMgbm8gYWRhcHRlciBzcGVjaWZpZWQnO1xuXG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgYFRoZXJlIGlzIG5vIHN1aXRhYmxlIGFkYXB0ZXIgdG8gZGlzcGF0Y2ggdGhlIHJlcXVlc3QgYCArIHMsXG4gICAgICAgICdFUlJfTk9UX1NVUFBPUlQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBhZGFwdGVyO1xuICB9LFxuICBhZGFwdGVyczoga25vd25BZGFwdGVyc1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/adapters.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/adapters/fetch.js":
/*!**************************************************!*\
!*** ./node_modules/axios/lib/adapters/fetch.js ***!
\**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _helpers_composeSignals_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/composeSignals.js */ \"./node_modules/axios/lib/helpers/composeSignals.js\");\n/* harmony import */ var _helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/trackStream.js */ \"./node_modules/axios/lib/helpers/trackStream.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../helpers/progressEventReducer.js */ \"./node_modules/axios/lib/helpers/progressEventReducer.js\");\n/* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/resolveConfig.js */ \"./node_modules/axios/lib/helpers/resolveConfig.js\");\n/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/settle.js */ \"./node_modules/axios/lib/core/settle.js\");\n\n\n\n\n\n\n\n\n\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"](`Response type '${type}' is not supported`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isBlob(body)) {\n return body.size;\n }\n\n if(_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSpecCompliantForm(body)) {\n const _request = new Request(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isArrayBufferView(body) || _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = (0,_helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = (0,_helpers_composeSignals_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventDecorator)(\n requestContentLength,\n (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventReducer)((0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.asyncDecorator)(onUploadProgress))\n );\n\n data = (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__.trackStream)(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventDecorator)(\n responseContentLength,\n (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.progressEventReducer)((0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_5__.asyncDecorator)(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n (0,_helpers_trackStream_js__WEBPACK_IMPORTED_MODULE_6__.trackStream)(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n (0,_core_settle_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(resolve, reject, {\n data: responseData,\n headers: _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"].from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Network Error', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].from(err, err && err.code, config, request);\n }\n}));\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL2ZldGNoLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBNEM7QUFDWjtBQUNlO0FBQ1c7QUFDSjtBQUNIO0FBQzZEO0FBQ3hEO0FBQ2pCOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHFDQUFxQyxpRUFBZTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0EsYUFBYSxrRUFBc0I7OztBQUduQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQyw0REFBZ0I7QUFDM0Q7QUFDQSxrQkFBa0IsMkRBQVUsbUJBQW1CLEtBQUsscUJBQXFCLDJFQUEwQjtBQUNuRyxPQUFPO0FBQ1AsR0FBRztBQUNILENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSyx3REFBWTtBQUNqQjtBQUNBOztBQUVBLEtBQUsscUVBQXlCO0FBQzlCLGlDQUFpQyxpRUFBZTtBQUNoRDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUEsS0FBSyxtRUFBdUIsVUFBVSwrREFBbUI7QUFDekQ7QUFDQTs7QUFFQSxLQUFLLG1FQUF1QjtBQUM1QjtBQUNBOztBQUVBLEtBQUssMERBQWM7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGdFQUFvQjs7QUFFckM7QUFDQTs7QUFFQSwrREFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLHFFQUFhOztBQUVuQjs7QUFFQSx1QkFBdUIsc0VBQWM7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7O0FBRUEsVUFBVSw0REFBZ0I7QUFDMUI7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyx3RkFBc0I7QUFDMUQ7QUFDQSxVQUFVLHNGQUFvQixDQUFDLGdGQUFjO0FBQzdDOztBQUVBLGVBQWUsb0VBQVc7QUFDMUI7QUFDQTs7QUFFQSxTQUFTLDBEQUFjO0FBQ3ZCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxvQ0FBb0MsZ0VBQW9COztBQUV4RCx3REFBd0Qsd0ZBQXNCO0FBQzlFO0FBQ0EsUUFBUSxzRkFBb0IsQ0FBQyxnRkFBYztBQUMzQzs7QUFFQTtBQUNBLFFBQVEsb0VBQVc7QUFDbkI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsdUNBQXVDLHlEQUFhOztBQUVwRDs7QUFFQTtBQUNBLE1BQU0sMkRBQU07QUFDWjtBQUNBLGlCQUFpQixrRUFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0EsWUFBWSwyREFBVSxrQkFBa0IsdUVBQXNCO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxnRUFBZTtBQUN6QjtBQUNBLENBQUMsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvZmV0Y2guanM/NGMxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGxhdGZvcm0gZnJvbSBcIi4uL3BsYXRmb3JtL2luZGV4LmpzXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tIFwiLi4vY29yZS9BeGlvc0Vycm9yLmpzXCI7XG5pbXBvcnQgY29tcG9zZVNpZ25hbHMgZnJvbSBcIi4uL2hlbHBlcnMvY29tcG9zZVNpZ25hbHMuanNcIjtcbmltcG9ydCB7dHJhY2tTdHJlYW19IGZyb20gXCIuLi9oZWxwZXJzL3RyYWNrU3RyZWFtLmpzXCI7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gXCIuLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IHtwcm9ncmVzc0V2ZW50UmVkdWNlciwgcHJvZ3Jlc3NFdmVudERlY29yYXRvciwgYXN5bmNEZWNvcmF0b3J9IGZyb20gXCIuLi9oZWxwZXJzL3Byb2dyZXNzRXZlbnRSZWR1Y2VyLmpzXCI7XG5pbXBvcnQgcmVzb2x2ZUNvbmZpZyBmcm9tIFwiLi4vaGVscGVycy9yZXNvbHZlQ29uZmlnLmpzXCI7XG5pbXBvcnQgc2V0dGxlIGZyb20gXCIuLi9jb3JlL3NldHRsZS5qc1wiO1xuXG5jb25zdCBpc0ZldGNoU3VwcG9ydGVkID0gdHlwZW9mIGZldGNoID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBSZXF1ZXN0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBSZXNwb25zZSA9PT0gJ2Z1bmN0aW9uJztcbmNvbnN0IGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgPSBpc0ZldGNoU3VwcG9ydGVkICYmIHR5cGVvZiBSZWFkYWJsZVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJztcblxuLy8gdXNlZCBvbmx5IGluc2lkZSB0aGUgZmV0Y2ggYWRhcHRlclxuY29uc3QgZW5jb2RlVGV4dCA9IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgKHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgKChlbmNvZGVyKSA9PiAoc3RyKSA9PiBlbmNvZGVyLmVuY29kZShzdHIpKShuZXcgVGV4dEVuY29kZXIoKSkgOlxuICAgIGFzeW5jIChzdHIpID0+IG5ldyBVaW50OEFycmF5KGF3YWl0IG5ldyBSZXNwb25zZShzdHIpLmFycmF5QnVmZmVyKCkpXG4pO1xuXG5jb25zdCB0ZXN0ID0gKGZuLCAuLi5hcmdzKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZm4oLi4uYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5jb25zdCBzdXBwb3J0c1JlcXVlc3RTdHJlYW0gPSBpc1JlYWRhYmxlU3RyZWFtU3VwcG9ydGVkICYmIHRlc3QoKCkgPT4ge1xuICBsZXQgZHVwbGV4QWNjZXNzZWQgPSBmYWxzZTtcblxuICBjb25zdCBoYXNDb250ZW50VHlwZSA9IG5ldyBSZXF1ZXN0KHBsYXRmb3JtLm9yaWdpbiwge1xuICAgIGJvZHk6IG5ldyBSZWFkYWJsZVN0cmVhbSgpLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGdldCBkdXBsZXgoKSB7XG4gICAgICBkdXBsZXhBY2Nlc3NlZCA9IHRydWU7XG4gICAgICByZXR1cm4gJ2hhbGYnO1xuICAgIH0sXG4gIH0pLmhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKTtcblxuICByZXR1cm4gZHVwbGV4QWNjZXNzZWQgJiYgIWhhc0NvbnRlbnRUeXBlO1xufSk7XG5cbmNvbnN0IERFRkFVTFRfQ0hVTktfU0laRSA9IDY0ICogMTAyNDtcblxuY29uc3Qgc3VwcG9ydHNSZXNwb25zZVN0cmVhbSA9IGlzUmVhZGFibGVTdHJlYW1TdXBwb3J0ZWQgJiZcbiAgdGVzdCgoKSA9PiB1dGlscy5pc1JlYWRhYmxlU3RyZWFtKG5ldyBSZXNwb25zZSgnJykuYm9keSkpO1xuXG5cbmNvbnN0IHJlc29sdmVycyA9IHtcbiAgc3RyZWFtOiBzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmICgocmVzKSA9PiByZXMuYm9keSlcbn07XG5cbmlzRmV0Y2hTdXBwb3J0ZWQgJiYgKCgocmVzKSA9PiB7XG4gIFsndGV4dCcsICdhcnJheUJ1ZmZlcicsICdibG9iJywgJ2Zvcm1EYXRhJywgJ3N0cmVhbSddLmZvckVhY2godHlwZSA9PiB7XG4gICAgIXJlc29sdmVyc1t0eXBlXSAmJiAocmVzb2x2ZXJzW3R5cGVdID0gdXRpbHMuaXNGdW5jdGlvbihyZXNbdHlwZV0pID8gKHJlcykgPT4gcmVzW3R5cGVdKCkgOlxuICAgICAgKF8sIGNvbmZpZykgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihgUmVzcG9uc2UgdHlwZSAnJHt0eXBlfScgaXMgbm90IHN1cHBvcnRlZGAsIEF4aW9zRXJyb3IuRVJSX05PVF9TVVBQT1JULCBjb25maWcpO1xuICAgICAgfSlcbiAgfSk7XG59KShuZXcgUmVzcG9uc2UpKTtcblxuY29uc3QgZ2V0Qm9keUxlbmd0aCA9IGFzeW5jIChib2R5KSA9PiB7XG4gIGlmIChib2R5ID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzQmxvYihib2R5KSkge1xuICAgIHJldHVybiBib2R5LnNpemU7XG4gIH1cblxuICBpZih1dGlscy5pc1NwZWNDb21wbGlhbnRGb3JtKGJvZHkpKSB7XG4gICAgY29uc3QgX3JlcXVlc3QgPSBuZXcgUmVxdWVzdChwbGF0Zm9ybS5vcmlnaW4sIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keSxcbiAgICB9KTtcbiAgICByZXR1cm4gKGF3YWl0IF9yZXF1ZXN0LmFycmF5QnVmZmVyKCkpLmJ5dGVMZW5ndGg7XG4gIH1cblxuICBpZih1dGlscy5pc0FycmF5QnVmZmVyVmlldyhib2R5KSB8fCB1dGlscy5pc0FycmF5QnVmZmVyKGJvZHkpKSB7XG4gICAgcmV0dXJuIGJvZHkuYnl0ZUxlbmd0aDtcbiAgfVxuXG4gIGlmKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGJvZHkpKSB7XG4gICAgYm9keSA9IGJvZHkgKyAnJztcbiAgfVxuXG4gIGlmKHV0aWxzLmlzU3RyaW5nKGJvZHkpKSB7XG4gICAgcmV0dXJuIChhd2FpdCBlbmNvZGVUZXh0KGJvZHkpKS5ieXRlTGVuZ3RoO1xuICB9XG59XG5cbmNvbnN0IHJlc29sdmVCb2R5TGVuZ3RoID0gYXN5bmMgKGhlYWRlcnMsIGJvZHkpID0+IHtcbiAgY29uc3QgbGVuZ3RoID0gdXRpbHMudG9GaW5pdGVOdW1iZXIoaGVhZGVycy5nZXRDb250ZW50TGVuZ3RoKCkpO1xuXG4gIHJldHVybiBsZW5ndGggPT0gbnVsbCA/IGdldEJvZHlMZW5ndGgoYm9keSkgOiBsZW5ndGg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRmV0Y2hTdXBwb3J0ZWQgJiYgKGFzeW5jIChjb25maWcpID0+IHtcbiAgbGV0IHtcbiAgICB1cmwsXG4gICAgbWV0aG9kLFxuICAgIGRhdGEsXG4gICAgc2lnbmFsLFxuICAgIGNhbmNlbFRva2VuLFxuICAgIHRpbWVvdXQsXG4gICAgb25Eb3dubG9hZFByb2dyZXNzLFxuICAgIG9uVXBsb2FkUHJvZ3Jlc3MsXG4gICAgcmVzcG9uc2VUeXBlLFxuICAgIGhlYWRlcnMsXG4gICAgd2l0aENyZWRlbnRpYWxzID0gJ3NhbWUtb3JpZ2luJyxcbiAgICBmZXRjaE9wdGlvbnNcbiAgfSA9IHJlc29sdmVDb25maWcoY29uZmlnKTtcblxuICByZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGUgPyAocmVzcG9uc2VUeXBlICsgJycpLnRvTG93ZXJDYXNlKCkgOiAndGV4dCc7XG5cbiAgbGV0IGNvbXBvc2VkU2lnbmFsID0gY29tcG9zZVNpZ25hbHMoW3NpZ25hbCwgY2FuY2VsVG9rZW4gJiYgY2FuY2VsVG9rZW4udG9BYm9ydFNpZ25hbCgpXSwgdGltZW91dCk7XG5cbiAgbGV0IHJlcXVlc3Q7XG5cbiAgY29uc3QgdW5zdWJzY3JpYmUgPSBjb21wb3NlZFNpZ25hbCAmJiBjb21wb3NlZFNpZ25hbC51bnN1YnNjcmliZSAmJiAoKCkgPT4ge1xuICAgICAgY29tcG9zZWRTaWduYWwudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG5cbiAgbGV0IHJlcXVlc3RDb250ZW50TGVuZ3RoO1xuXG4gIHRyeSB7XG4gICAgaWYgKFxuICAgICAgb25VcGxvYWRQcm9ncmVzcyAmJiBzdXBwb3J0c1JlcXVlc3RTdHJlYW0gJiYgbWV0aG9kICE9PSAnZ2V0JyAmJiBtZXRob2QgIT09ICdoZWFkJyAmJlxuICAgICAgKHJlcXVlc3RDb250ZW50TGVuZ3RoID0gYXdhaXQgcmVzb2x2ZUJvZHlMZW5ndGgoaGVhZGVycywgZGF0YSkpICE9PSAwXG4gICAgKSB7XG4gICAgICBsZXQgX3JlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGRhdGEsXG4gICAgICAgIGR1cGxleDogXCJoYWxmXCJcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgY29udGVudFR5cGVIZWFkZXI7XG5cbiAgICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpICYmIChjb250ZW50VHlwZUhlYWRlciA9IF9yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkpIHtcbiAgICAgICAgaGVhZGVycy5zZXRDb250ZW50VHlwZShjb250ZW50VHlwZUhlYWRlcilcbiAgICAgIH1cblxuICAgICAgaWYgKF9yZXF1ZXN0LmJvZHkpIHtcbiAgICAgICAgY29uc3QgW29uUHJvZ3Jlc3MsIGZsdXNoXSA9IHByb2dyZXNzRXZlbnREZWNvcmF0b3IoXG4gICAgICAgICAgcmVxdWVzdENvbnRlbnRMZW5ndGgsXG4gICAgICAgICAgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoYXN5bmNEZWNvcmF0b3Iob25VcGxvYWRQcm9ncmVzcykpXG4gICAgICAgICk7XG5cbiAgICAgICAgZGF0YSA9IHRyYWNrU3RyZWFtKF9yZXF1ZXN0LmJvZHksIERFRkFVTFRfQ0hVTktfU0laRSwgb25Qcm9ncmVzcywgZmx1c2gpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdXRpbHMuaXNTdHJpbmcod2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgd2l0aENyZWRlbnRpYWxzID0gd2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ29taXQnO1xuICAgIH1cblxuICAgIC8vIENsb3VkZmxhcmUgV29ya2VycyB0aHJvd3Mgd2hlbiBjcmVkZW50aWFscyBhcmUgZGVmaW5lZFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2xvdWRmbGFyZS93b3JrZXJkL2lzc3Vlcy85MDJcbiAgICBjb25zdCBpc0NyZWRlbnRpYWxzU3VwcG9ydGVkID0gXCJjcmVkZW50aWFsc1wiIGluIFJlcXVlc3QucHJvdG90eXBlO1xuICAgIHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIHtcbiAgICAgIC4uLmZldGNoT3B0aW9ucyxcbiAgICAgIHNpZ25hbDogY29tcG9zZWRTaWduYWwsXG4gICAgICBtZXRob2Q6IG1ldGhvZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgaGVhZGVyczogaGVhZGVycy5ub3JtYWxpemUoKS50b0pTT04oKSxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBkdXBsZXg6IFwiaGFsZlwiLFxuICAgICAgY3JlZGVudGlhbHM6IGlzQ3JlZGVudGlhbHNTdXBwb3J0ZWQgPyB3aXRoQ3JlZGVudGlhbHMgOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHJlcXVlc3QpO1xuXG4gICAgY29uc3QgaXNTdHJlYW1SZXNwb25zZSA9IHN1cHBvcnRzUmVzcG9uc2VTdHJlYW0gJiYgKHJlc3BvbnNlVHlwZSA9PT0gJ3N0cmVhbScgfHwgcmVzcG9uc2VUeXBlID09PSAncmVzcG9uc2UnKTtcblxuICAgIGlmIChzdXBwb3J0c1Jlc3BvbnNlU3RyZWFtICYmIChvbkRvd25sb2FkUHJvZ3Jlc3MgfHwgKGlzU3RyZWFtUmVzcG9uc2UgJiYgdW5zdWJzY3JpYmUpKSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHt9O1xuXG4gICAgICBbJ3N0YXR1cycsICdzdGF0dXNUZXh0JywgJ2hlYWRlcnMnXS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBvcHRpb25zW3Byb3BdID0gcmVzcG9uc2VbcHJvcF07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzcG9uc2VDb250ZW50TGVuZ3RoID0gdXRpbHMudG9GaW5pdGVOdW1iZXIocmVzcG9uc2UuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykpO1xuXG4gICAgICBjb25zdCBbb25Qcm9ncmVzcywgZmx1c2hdID0gb25Eb3dubG9hZFByb2dyZXNzICYmIHByb2dyZXNzRXZlbnREZWNvcmF0b3IoXG4gICAgICAgIHJlc3BvbnNlQ29udGVudExlbmd0aCxcbiAgICAgICAgcHJvZ3Jlc3NFdmVudFJlZHVjZXIoYXN5bmNEZWNvcmF0b3Iob25Eb3dubG9hZFByb2dyZXNzKSwgdHJ1ZSlcbiAgICAgICkgfHwgW107XG5cbiAgICAgIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKFxuICAgICAgICB0cmFja1N0cmVhbShyZXNwb25zZS5ib2R5LCBERUZBVUxUX0NIVU5LX1NJWkUsIG9uUHJvZ3Jlc3MsICgpID0+IHtcbiAgICAgICAgICBmbHVzaCAmJiBmbHVzaCgpO1xuICAgICAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIHJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSB8fCAndGV4dCc7XG5cbiAgICBsZXQgcmVzcG9uc2VEYXRhID0gYXdhaXQgcmVzb2x2ZXJzW3V0aWxzLmZpbmRLZXkocmVzb2x2ZXJzLCByZXNwb25zZVR5cGUpIHx8ICd0ZXh0J10ocmVzcG9uc2UsIGNvbmZpZyk7XG5cbiAgICAhaXNTdHJlYW1SZXNwb25zZSAmJiB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBoZWFkZXJzOiBBeGlvc0hlYWRlcnMuZnJvbShyZXNwb25zZS5oZWFkZXJzKSxcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdFxuICAgICAgfSlcbiAgICB9KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKGVyciAmJiBlcnIubmFtZSA9PT0gJ1R5cGVFcnJvcicgJiYgL2ZldGNoL2kudGVzdChlcnIubWVzc2FnZSkpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0KSxcbiAgICAgICAge1xuICAgICAgICAgIGNhdXNlOiBlcnIuY2F1c2UgfHwgZXJyXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICB0aHJvdyBBeGlvc0Vycm9yLmZyb20oZXJyLCBlcnIgJiYgZXJyLmNvZGUsIGNvbmZpZywgcmVxdWVzdCk7XG4gIH1cbn0pO1xuXG5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/fetch.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/adapters/xhr.js":
/*!************************************************!*\
!*** ./node_modules/axios/lib/adapters/xhr.js ***!
\************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../core/settle.js */ \"./node_modules/axios/lib/core/settle.js\");\n/* harmony import */ var _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../defaults/transitional.js */ \"./node_modules/axios/lib/defaults/transitional.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../helpers/parseProtocol.js */ \"./node_modules/axios/lib/helpers/parseProtocol.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/progressEventReducer.js */ \"./node_modules/axios/lib/helpers/progressEventReducer.js\");\n/* harmony import */ var _helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/resolveConfig.js */ \"./node_modules/axios/lib/helpers/resolveConfig.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = (0,_helpers_resolveConfig_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(config);\n let requestData = _config.data;\n const requestHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n (0,_core_settle_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Request aborted', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Network Error', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ETIMEDOUT : _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n _utils_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__.progressEventReducer)(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = (0,_helpers_progressEventReducer_js__WEBPACK_IMPORTED_MODULE_6__.progressEventReducer)(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"](null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = (0,_helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(_config.url);\n\n if (protocol && _platform_index_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"].protocols.indexOf(protocol) === -1) {\n reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]('Unsupported protocol ' + protocol + ':', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2FkYXB0ZXJzL3hoci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFrQztBQUNPO0FBQ3NCO0FBQ2hCO0FBQ1E7QUFDQztBQUNaO0FBQ087QUFDcUI7QUFDaEI7O0FBRXhEOztBQUVBLCtEQUFlO0FBQ2Y7QUFDQSxvQkFBb0IscUVBQWE7QUFDakM7QUFDQSwyQkFBMkIsa0VBQWlCO0FBQzVDLFNBQVMsb0RBQW9EO0FBQzdEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQztBQUNwQyx3Q0FBd0M7O0FBRXhDOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtFQUFpQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSwyREFBTTtBQUNaO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQiwyREFBVSxvQkFBb0Isd0VBQXVCOztBQUV0RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQVUsa0JBQWtCLHVFQUFzQjs7QUFFbkU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxpRUFBb0I7QUFDdkU7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDJEQUFVO0FBQzNCO0FBQ0EsMkNBQTJDLHFFQUFvQixHQUFHLHdFQUF1QjtBQUN6RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLHlEQUFhO0FBQ25CO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsU0FBUyw2REFBaUI7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDLHNGQUFvQjtBQUNoRTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0Msc0ZBQW9COztBQUU1RDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLGdFQUFhO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixxRUFBYTs7QUFFbEMsb0JBQW9CLG9FQUFrQjtBQUN0QyxpQkFBaUIsMkRBQVUsMkNBQTJDLDJFQUEwQjtBQUNoRztBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanM/MWJhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5pbXBvcnQgc2V0dGxlIGZyb20gJy4vLi4vY29yZS9zZXR0bGUuanMnO1xuaW1wb3J0IHRyYW5zaXRpb25hbERlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL3RyYW5zaXRpb25hbC5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IHBhcnNlUHJvdG9jb2wgZnJvbSAnLi4vaGVscGVycy9wYXJzZVByb3RvY29sLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzJztcbmltcG9ydCB7cHJvZ3Jlc3NFdmVudFJlZHVjZXJ9IGZyb20gJy4uL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMnO1xuaW1wb3J0IHJlc29sdmVDb25maWcgZnJvbSBcIi4uL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qc1wiO1xuXG5jb25zdCBpc1hIUkFkYXB0ZXJTdXBwb3J0ZWQgPSB0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnO1xuXG5leHBvcnQgZGVmYXVsdCBpc1hIUkFkYXB0ZXJTdXBwb3J0ZWQgJiYgZnVuY3Rpb24gKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIGNvbnN0IF9jb25maWcgPSByZXNvbHZlQ29uZmlnKGNvbmZpZyk7XG4gICAgbGV0IHJlcXVlc3REYXRhID0gX2NvbmZpZy5kYXRhO1xuICAgIGNvbnN0IHJlcXVlc3RIZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oX2NvbmZpZy5oZWFkZXJzKS5ub3JtYWxpemUoKTtcbiAgICBsZXQge3Jlc3BvbnNlVHlwZSwgb25VcGxvYWRQcm9ncmVzcywgb25Eb3dubG9hZFByb2dyZXNzfSA9IF9jb25maWc7XG4gICAgbGV0IG9uQ2FuY2VsZWQ7XG4gICAgbGV0IHVwbG9hZFRocm90dGxlZCwgZG93bmxvYWRUaHJvdHRsZWQ7XG4gICAgbGV0IGZsdXNoVXBsb2FkLCBmbHVzaERvd25sb2FkO1xuXG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGZsdXNoVXBsb2FkICYmIGZsdXNoVXBsb2FkKCk7IC8vIGZsdXNoIGV2ZW50c1xuICAgICAgZmx1c2hEb3dubG9hZCAmJiBmbHVzaERvd25sb2FkKCk7IC8vIGZsdXNoIGV2ZW50c1xuXG4gICAgICBfY29uZmlnLmNhbmNlbFRva2VuICYmIF9jb25maWcuY2FuY2VsVG9rZW4udW5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG5cbiAgICAgIF9jb25maWcuc2lnbmFsICYmIF9jb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgfVxuXG4gICAgbGV0IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIHJlcXVlc3Qub3BlbihfY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBfY29uZmlnLnVybCwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IF9jb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgY29uc3QgcmVzcG9uc2VIZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oXG4gICAgICAgICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgJiYgcmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiByZXF1ZXN0LnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgbGV0IHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBfY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgX2NvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25hbCA9IF9jb25maWcudHJhbnNpdGlvbmFsIHx8IHRyYW5zaXRpb25hbERlZmF1bHRzO1xuICAgICAgaWYgKF9jb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gX2NvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgIHJlcXVlc3REYXRhID09PSB1bmRlZmluZWQgJiYgcmVxdWVzdEhlYWRlcnMuc2V0Q29udGVudFR5cGUobnVsbCk7XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycy50b0pTT04oKSwgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoX2NvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhX2NvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gX2NvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmIChvbkRvd25sb2FkUHJvZ3Jlc3MpIHtcbiAgICAgIChbZG93bmxvYWRUaHJvdHRsZWQsIGZsdXNoRG93bmxvYWRdID0gcHJvZ3Jlc3NFdmVudFJlZHVjZXIob25Eb3dubG9hZFByb2dyZXNzLCB0cnVlKSk7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgZG93bmxvYWRUaHJvdHRsZWQpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKG9uVXBsb2FkUHJvZ3Jlc3MgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIChbdXBsb2FkVGhyb3R0bGVkLCBmbHVzaFVwbG9hZF0gPSBwcm9ncmVzc0V2ZW50UmVkdWNlcihvblVwbG9hZFByb2dyZXNzKSk7XG5cbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgdXBsb2FkVGhyb3R0bGVkKTtcblxuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIGZsdXNoVXBsb2FkKTtcbiAgICB9XG5cbiAgICBpZiAoX2NvbmZpZy5jYW5jZWxUb2tlbiB8fCBfY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBjYW5jZWwgPT4ge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgY2FuY2VsLnR5cGUgPyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcsIHJlcXVlc3QpIDogY2FuY2VsKTtcbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIF9jb25maWcuY2FuY2VsVG9rZW4gJiYgX2NvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoX2NvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgX2NvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IF9jb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdG9jb2wgPSBwYXJzZVByb3RvY29sKF9jb25maWcudXJsKTtcblxuICAgIGlmIChwcm90b2NvbCAmJiBwbGF0Zm9ybS5wcm90b2NvbHMuaW5kZXhPZihwcm90b2NvbCkgPT09IC0xKSB7XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1Vuc3VwcG9ydGVkIHByb3RvY29sICcgKyBwcm90b2NvbCArICc6JywgQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIGNvbmZpZykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuXG4gICAgLy8gU2VuZCB0aGUgcmVxdWVzdFxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSB8fCBudWxsKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/adapters/xhr.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/axios.js":
/*!*****************************************!*\
!*** ./node_modules/axios/lib/axios.js ***!
\*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/bind.js */ \"./node_modules/axios/lib/helpers/bind.js\");\n/* harmony import */ var _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/Axios.js */ \"./node_modules/axios/lib/core/Axios.js\");\n/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/mergeConfig.js */ \"./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaults/index.js */ \"./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./helpers/formDataToJSON.js */ \"./node_modules/axios/lib/helpers/formDataToJSON.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cancel/CanceledError.js */ \"./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cancel/CancelToken.js */ \"./node_modules/axios/lib/cancel/CancelToken.js\");\n/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cancel/isCancel.js */ \"./node_modules/axios/lib/cancel/isCancel.js\");\n/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./env/data.js */ \"./node_modules/axios/lib/env/data.js\");\n/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./helpers/toFormData.js */ \"./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _helpers_spread_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./helpers/spread.js */ \"./node_modules/axios/lib/helpers/spread.js\");\n/* harmony import */ var _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/isAxiosError.js */ \"./node_modules/axios/lib/helpers/isAxiosError.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./adapters/adapters.js */ \"./node_modules/axios/lib/adapters/adapters.js\");\n/* harmony import */ var _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./helpers/HttpStatusCode.js */ \"./node_modules/axios/lib/helpers/HttpStatusCode.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](defaultConfig);\n const instance = (0,_helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype.request, context);\n\n // Copy axios.prototype to instance\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(instance, _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance((0,_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(_defaults_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = _core_Axios_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\n// Expose Cancel & CancelToken\naxios.CanceledError = _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\naxios.CancelToken = _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"];\naxios.isCancel = _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\naxios.VERSION = _env_data_js__WEBPACK_IMPORTED_MODULE_8__.VERSION;\naxios.toFormData = _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_9__[\"default\"];\n\n// Expose AxiosError class\naxios.AxiosError = _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_10__[\"default\"];\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = _helpers_spread_js__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n\n// Expose isAxiosError\naxios.isAxiosError = _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n\n// Expose mergeConfig\naxios.mergeConfig = _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n\naxios.AxiosHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_13__[\"default\"];\n\naxios.formToJSON = thing => (0,_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_14__[\"default\"])(_utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_15__[\"default\"].getAdapter;\n\naxios.HttpStatusCode = _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_16__[\"default\"];\n\naxios.default = axios;\n\n// this module should only have a default export\n/* harmony default export */ __webpack_exports__[\"default\"] = (axios);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFhOztBQUVrQjtBQUNNO0FBQ0Q7QUFDWTtBQUNMO0FBQ2M7QUFDSDtBQUNKO0FBQ047QUFDTjtBQUNXO0FBQ0g7QUFDTDtBQUNZO0FBQ0g7QUFDSjtBQUNXOztBQUV6RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBLHNCQUFzQixzREFBSztBQUMzQixtQkFBbUIsNERBQUksQ0FBQyxnRUFBZTs7QUFFdkM7QUFDQSxFQUFFLHdEQUFZLFdBQVcsZ0VBQWUsWUFBWSxpQkFBaUI7O0FBRXJFO0FBQ0EsRUFBRSx3REFBWSwyQkFBMkIsaUJBQWlCOztBQUUxRDtBQUNBO0FBQ0EsMEJBQTBCLGdFQUFXO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkIsMERBQVE7O0FBRXJDO0FBQ0EsY0FBYyxzREFBSzs7QUFFbkI7QUFDQSxzQkFBc0IsZ0VBQWE7QUFDbkMsb0JBQW9CLDhEQUFXO0FBQy9CLGlCQUFpQiwyREFBUTtBQUN6QixnQkFBZ0IsaURBQU87QUFDdkIsbUJBQW1CLDhEQUFVOztBQUU3QjtBQUNBLG1CQUFtQiw0REFBVTs7QUFFN0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLDJEQUFNOztBQUVyQjtBQUNBLHFCQUFxQixpRUFBWTs7QUFFakM7QUFDQSxvQkFBb0IsNERBQVc7O0FBRS9CLHFCQUFxQiw4REFBWTs7QUFFakMsNEJBQTRCLHVFQUFjLENBQUMsNERBQWdCOztBQUUzRCxtQkFBbUIseUVBQW1COztBQUV0Qyx1QkFBdUIsbUVBQWM7O0FBRXJDOztBQUVBO0FBQ0EsK0RBQWUsS0FBSyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2F4aW9zLmpzPzQ1YzMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQgYmluZCBmcm9tICcuL2hlbHBlcnMvYmluZC5qcyc7XG5pbXBvcnQgQXhpb3MgZnJvbSAnLi9jb3JlL0F4aW9zLmpzJztcbmltcG9ydCBtZXJnZUNvbmZpZyBmcm9tICcuL2NvcmUvbWVyZ2VDb25maWcuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IGZvcm1EYXRhVG9KU09OIGZyb20gJy4vaGVscGVycy9mb3JtRGF0YVRvSlNPTi5qcyc7XG5pbXBvcnQgQ2FuY2VsZWRFcnJvciBmcm9tICcuL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzJztcbmltcG9ydCBDYW5jZWxUb2tlbiBmcm9tICcuL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyc7XG5pbXBvcnQgaXNDYW5jZWwgZnJvbSAnLi9jYW5jZWwvaXNDYW5jZWwuanMnO1xuaW1wb3J0IHtWRVJTSU9OfSBmcm9tICcuL2Vudi9kYXRhLmpzJztcbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4vaGVscGVycy90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCBBeGlvc0Vycm9yIGZyb20gJy4vY29yZS9BeGlvc0Vycm9yLmpzJztcbmltcG9ydCBzcHJlYWQgZnJvbSAnLi9oZWxwZXJzL3NwcmVhZC5qcyc7XG5pbXBvcnQgaXNBeGlvc0Vycm9yIGZyb20gJy4vaGVscGVycy9pc0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi9jb3JlL0F4aW9zSGVhZGVycy5qc1wiO1xuaW1wb3J0IGFkYXB0ZXJzIGZyb20gJy4vYWRhcHRlcnMvYWRhcHRlcnMuanMnO1xuaW1wb3J0IEh0dHBTdGF0dXNDb2RlIGZyb20gJy4vaGVscGVycy9IdHRwU3RhdHVzQ29kZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJucyB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgY29uc3QgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCwge2FsbE93bktleXM6IHRydWV9KTtcblxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBjb250ZXh0LCBudWxsLCB7YWxsT3duS2V5czogdHJ1ZX0pO1xuXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWcsIGluc3RhbmNlQ29uZmlnKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbmNvbnN0IGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsZWRFcnJvciA9IENhbmNlbGVkRXJyb3I7XG5heGlvcy5DYW5jZWxUb2tlbiA9IENhbmNlbFRva2VuO1xuYXhpb3MuaXNDYW5jZWwgPSBpc0NhbmNlbDtcbmF4aW9zLlZFUlNJT04gPSBWRVJTSU9OO1xuYXhpb3MudG9Gb3JtRGF0YSA9IHRvRm9ybURhdGE7XG5cbi8vIEV4cG9zZSBBeGlvc0Vycm9yIGNsYXNzXG5heGlvcy5BeGlvc0Vycm9yID0gQXhpb3NFcnJvcjtcblxuLy8gYWxpYXMgZm9yIENhbmNlbGVkRXJyb3IgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmF4aW9zLkNhbmNlbCA9IGF4aW9zLkNhbmNlbGVkRXJyb3I7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5cbmF4aW9zLnNwcmVhZCA9IHNwcmVhZDtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gaXNBeGlvc0Vycm9yO1xuXG4vLyBFeHBvc2UgbWVyZ2VDb25maWdcbmF4aW9zLm1lcmdlQ29uZmlnID0gbWVyZ2VDb25maWc7XG5cbmF4aW9zLkF4aW9zSGVhZGVycyA9IEF4aW9zSGVhZGVycztcblxuYXhpb3MuZm9ybVRvSlNPTiA9IHRoaW5nID0+IGZvcm1EYXRhVG9KU09OKHV0aWxzLmlzSFRNTEZvcm0odGhpbmcpID8gbmV3IEZvcm1EYXRhKHRoaW5nKSA6IHRoaW5nKTtcblxuYXhpb3MuZ2V0QWRhcHRlciA9IGFkYXB0ZXJzLmdldEFkYXB0ZXI7XG5cbmF4aW9zLkh0dHBTdGF0dXNDb2RlID0gSHR0cFN0YXR1c0NvZGU7XG5cbmF4aW9zLmRlZmF1bHQgPSBheGlvcztcblxuLy8gdGhpcyBtb2R1bGUgc2hvdWxkIG9ubHkgaGF2ZSBhIGRlZmF1bHQgZXhwb3J0XG5leHBvcnQgZGVmYXVsdCBheGlvc1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/axios.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
\******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CanceledError.js */ \"./node_modules/axios/lib/cancel/CanceledError.js\");\n\n\n\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CancelToken);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyIsIm1hcHBpbmdzIjoiOztBQUFhOztBQUVrQzs7QUFFL0M7QUFDQTtBQUNBO0FBQ0EsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5Qix5REFBYTtBQUN0QztBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrREFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanM/ODg4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gJy4vQ2FuY2VsZWRFcnJvci5qcyc7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKlxuICogQHJldHVybnMge0NhbmNlbFRva2VufVxuICovXG5jbGFzcyBDYW5jZWxUb2tlbiB7XG4gIGNvbnN0cnVjdG9yKGV4ZWN1dG9yKSB7XG4gICAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcblxuICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VFeGVjdXRvcihyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2tlbiA9IHRoaXM7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuKGNhbmNlbCA9PiB7XG4gICAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgICAgbGV0IGkgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgICAgfVxuICAgICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHRoaXMucHJvbWlzZS50aGVuID0gb25mdWxmaWxsZWQgPT4ge1xuICAgICAgbGV0IF9yZXNvbHZlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcblxuICAgICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG5cbiAgICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gICAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWxlZEVycm9yKG1lc3NhZ2UsIGNvbmZpZywgcmVxdWVzdCk7XG4gICAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgKi9cbiAgdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICAgIHRocm93IHRoaXMucmVhc29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAgICovXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN1YnNjcmliZSBmcm9tIHRoZSBjYW5jZWwgc2lnbmFsXG4gICAqL1xuXG4gIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5fbGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgdG9BYm9ydFNpZ25hbCgpIHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgY29uc3QgYWJvcnQgPSAoZXJyKSA9PiB7XG4gICAgICBjb250cm9sbGVyLmFib3J0KGVycik7XG4gICAgfTtcblxuICAgIHRoaXMuc3Vic2NyaWJlKGFib3J0KTtcblxuICAgIGNvbnRyb2xsZXIuc2lnbmFsLnVuc3Vic2NyaWJlID0gKCkgPT4gdGhpcy51bnN1YnNjcmliZShhYm9ydCk7XG5cbiAgICByZXR1cm4gY29udHJvbGxlci5zaWduYWw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICAgKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICAgKi9cbiAgc3RhdGljIHNvdXJjZSgpIHtcbiAgICBsZXQgY2FuY2VsO1xuICAgIGNvbnN0IHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICAgIGNhbmNlbCA9IGM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRva2VuLFxuICAgICAgY2FuY2VsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYW5jZWxUb2tlbjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/CancelToken.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/cancel/CanceledError.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/cancel/CanceledError.js ***!
\********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].call(this, message == null ? 'canceled' : message, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\n_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].inherits(CanceledError, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n __CANCEL__: true\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (CanceledError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzIiwibWFwcGluZ3MiOiI7OztBQUFhOztBQUVrQztBQUNmOztBQUVoQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBLGFBQWEsZUFBZTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxFQUFFLGdFQUFlLCtDQUErQyx3RUFBdUI7QUFDdkY7QUFDQTs7QUFFQSwwREFBYyxnQkFBZ0IsMkRBQVU7QUFDeEM7QUFDQSxDQUFDOztBQUVELCtEQUFlLGFBQWEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzP2E0OWMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBBIGBDYW5jZWxlZEVycm9yYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3Q9fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0PX0gcmVxdWVzdCBUaGUgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJucyB7Q2FuY2VsZWRFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbGVkRXJyb3IobWVzc2FnZSwgY29uZmlnLCByZXF1ZXN0KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBBeGlvc0Vycm9yLmNhbGwodGhpcywgbWVzc2FnZSA9PSBudWxsID8gJ2NhbmNlbGVkJyA6IG1lc3NhZ2UsIEF4aW9zRXJyb3IuRVJSX0NBTkNFTEVELCBjb25maWcsIHJlcXVlc3QpO1xuICB0aGlzLm5hbWUgPSAnQ2FuY2VsZWRFcnJvcic7XG59XG5cbnV0aWxzLmluaGVyaXRzKENhbmNlbGVkRXJyb3IsIEF4aW9zRXJyb3IsIHtcbiAgX19DQU5DRUxfXzogdHJ1ZVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IENhbmNlbGVkRXJyb3I7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/CanceledError.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/cancel/isCancel.js":
/*!***************************************************!*\
!*** ./node_modules/axios/lib/cancel/isCancel.js ***!
\***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isCancel; }\n/* harmony export */ });\n\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRUU7QUFDZjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzPzEyN2EiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/cancel/isCancel.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/Axios.js":
/*!**********************************************!*\
!*** ./node_modules/axios/lib/core/Axios.js ***!
\**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../helpers/buildURL.js */ \"./node_modules/axios/lib/helpers/buildURL.js\");\n/* harmony import */ var _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./InterceptorManager.js */ \"./node_modules/axios/lib/core/InterceptorManager.js\");\n/* harmony import */ var _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dispatchRequest.js */ \"./node_modules/axios/lib/core/dispatchRequest.js\");\n/* harmony import */ var _mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mergeConfig.js */ \"./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _buildFullPath_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./buildFullPath.js */ \"./node_modules/axios/lib/core/buildFullPath.js\");\n/* harmony import */ var _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/validator.js */ \"./node_modules/axios/lib/helpers/validator.js\");\n/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n\n\n\n\n\n\n\n\n\n\n\nconst validators = _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](),\n response: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = (0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n _helpers_validator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].merge(\n headers.common,\n headers[config.method]\n );\n\n headers && _utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [_dispatchRequest_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = (0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this.defaults, config);\n const fullPath = (0,_buildFullPath_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(config.baseURL, config.url);\n return (0,_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request((0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\n_utils_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request((0,_mergeConfig_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Axios);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWE7O0FBRXFCO0FBQ1k7QUFDVztBQUNOO0FBQ1I7QUFDSTtBQUNDO0FBQ0g7O0FBRTdDLG1CQUFtQix3RUFBb0I7O0FBRXZDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDhEQUFrQjtBQUNyQyxvQkFBb0IsOERBQWtCO0FBQ3RDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxlQUFlO0FBQzVCLGFBQWEsU0FBUztBQUN0QjtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsYUFBYSwyREFBVzs7QUFFeEIsV0FBVyx5Q0FBeUM7O0FBRXBEO0FBQ0EsTUFBTSwyRUFBdUI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsVUFBVSw0REFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLFFBQVEsMkVBQXVCO0FBQy9CO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxJQUFJLDJFQUF1QjtBQUMzQjtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLHVEQUFXO0FBQy9DO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLHlEQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtEQUFtQjs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLGdFQUFvQjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixnRUFBb0I7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGFBQWEsMkRBQVc7QUFDeEIscUJBQXFCLDZEQUFhO0FBQ2xDLFdBQVcsZ0VBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBLHlEQUFhO0FBQ2I7QUFDQTtBQUNBLHdCQUF3QiwyREFBVyxhQUFhO0FBQ2hEO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIsS0FBSztBQUNMO0FBQ0EsQ0FBQzs7QUFFRCx5REFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsMkRBQVcsYUFBYTtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxVQUFVLElBQUk7QUFDZDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxDQUFDOztBQUVELCtEQUFlLEtBQUssRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanM/OThkMSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBidWlsZFVSTCBmcm9tICcuLi9oZWxwZXJzL2J1aWxkVVJMLmpzJztcbmltcG9ydCBJbnRlcmNlcHRvck1hbmFnZXIgZnJvbSAnLi9JbnRlcmNlcHRvck1hbmFnZXIuanMnO1xuaW1wb3J0IGRpc3BhdGNoUmVxdWVzdCBmcm9tICcuL2Rpc3BhdGNoUmVxdWVzdC5qcyc7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSAnLi9tZXJnZUNvbmZpZy5qcyc7XG5pbXBvcnQgYnVpbGRGdWxsUGF0aCBmcm9tICcuL2J1aWxkRnVsbFBhdGguanMnO1xuaW1wb3J0IHZhbGlkYXRvciBmcm9tICcuLi9oZWxwZXJzL3ZhbGlkYXRvci5qcyc7XG5pbXBvcnQgQXhpb3NIZWFkZXJzIGZyb20gJy4vQXhpb3NIZWFkZXJzLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5jbGFzcyBBeGlvcyB7XG4gIGNvbnN0cnVjdG9yKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gY29uZmlnT3JVcmwgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICAgKiBAcGFyYW0gez9PYmplY3R9IGNvbmZpZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gICAqL1xuICBhc3luYyByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbGV0IGR1bW15ID0ge307XG5cbiAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPyBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShkdW1teSkgOiAoZHVtbXkgPSBuZXcgRXJyb3IoKSk7XG5cbiAgICAgICAgLy8gc2xpY2Ugb2ZmIHRoZSBFcnJvcjogLi4uIGxpbmVcbiAgICAgICAgY29uc3Qgc3RhY2sgPSBkdW1teS5zdGFjayA/IGR1bW15LnN0YWNrLnJlcGxhY2UoL14uK1xcbi8sICcnKSA6ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmICghZXJyLnN0YWNrKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgICAgIC8vIG1hdGNoIHdpdGhvdXQgdGhlIDIgdG9wIHN0YWNrIGxpbmVzXG4gICAgICAgICAgfSBlbHNlIGlmIChzdGFjayAmJiAhU3RyaW5nKGVyci5zdGFjaykuZW5kc1dpdGgoc3RhY2sucmVwbGFjZSgvXi4rXFxuLitcXG4vLCAnJykpKSB7XG4gICAgICAgICAgICBlcnIuc3RhY2sgKz0gJ1xcbicgKyBzdGFja1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlnbm9yZSB0aGUgY2FzZSB3aGVyZSBcInN0YWNrXCIgaXMgYW4gdW4td3JpdGFibGUgcHJvcGVydHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgX3JlcXVlc3QoY29uZmlnT3JVcmwsIGNvbmZpZykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgICBpZiAodHlwZW9mIGNvbmZpZ09yVXJsID09PSAnc3RyaW5nJykge1xuICAgICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgICAgY29uZmlnLnVybCA9IGNvbmZpZ09yVXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgICB9XG5cbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuXG4gICAgY29uc3Qge3RyYW5zaXRpb25hbCwgcGFyYW1zU2VyaWFsaXplciwgaGVhZGVyc30gPSBjb25maWc7XG5cbiAgICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhbGlkYXRvci5hc3NlcnRPcHRpb25zKHRyYW5zaXRpb25hbCwge1xuICAgICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICAgIGNsYXJpZnlUaW1lb3V0RXJyb3I6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbilcbiAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zU2VyaWFsaXplciAhPSBudWxsKSB7XG4gICAgICBpZiAodXRpbHMuaXNGdW5jdGlvbihwYXJhbXNTZXJpYWxpemVyKSkge1xuICAgICAgICBjb25maWcucGFyYW1zU2VyaWFsaXplciA9IHtcbiAgICAgICAgICBzZXJpYWxpemU6IHBhcmFtc1NlcmlhbGl6ZXJcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMocGFyYW1zU2VyaWFsaXplciwge1xuICAgICAgICAgIGVuY29kZTogdmFsaWRhdG9ycy5mdW5jdGlvbixcbiAgICAgICAgICBzZXJpYWxpemU6IHZhbGlkYXRvcnMuZnVuY3Rpb25cbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnMoY29uZmlnLCB7XG4gICAgICBiYXNlVXJsOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCdiYXNlVVJMJyksXG4gICAgICB3aXRoWHNyZlRva2VuOiB2YWxpZGF0b3JzLnNwZWxsaW5nKCd3aXRoWFNSRlRva2VuJylcbiAgICB9LCB0cnVlKTtcblxuICAgIC8vIFNldCBjb25maWcubWV0aG9kXG4gICAgY29uZmlnLm1ldGhvZCA9IChjb25maWcubWV0aG9kIHx8IHRoaXMuZGVmYXVsdHMubWV0aG9kIHx8ICdnZXQnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gICAgbGV0IGNvbnRleHRIZWFkZXJzID0gaGVhZGVycyAmJiB1dGlscy5tZXJnZShcbiAgICAgIGhlYWRlcnMuY29tbW9uLFxuICAgICAgaGVhZGVyc1tjb25maWcubWV0aG9kXVxuICAgICk7XG5cbiAgICBoZWFkZXJzICYmIHV0aWxzLmZvckVhY2goXG4gICAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICAgIChtZXRob2QpID0+IHtcbiAgICAgICAgZGVsZXRlIGhlYWRlcnNbbWV0aG9kXTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuY29uY2F0KGNvbnRleHRIZWFkZXJzLCBoZWFkZXJzKTtcblxuICAgIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgICBjb25zdCByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICAgIGxldCBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICAgIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgJiYgaW50ZXJjZXB0b3Iuc3luY2hyb25vdXM7XG5cbiAgICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcHJvbWlzZTtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGxlbjtcblxuICAgIGlmICghc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzKSB7XG4gICAgICBjb25zdCBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QuYmluZCh0aGlzKSwgdW5kZWZpbmVkXTtcbiAgICAgIGNoYWluLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICAgIGNoYWluLnB1c2guYXBwbHkoY2hhaW4sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG4gICAgICBsZW4gPSBjaGFpbi5sZW5ndGg7XG5cbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcblxuICAgICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbltpKytdLCBjaGFpbltpKytdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgbGVuID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgbGV0IG5ld0NvbmZpZyA9IGNvbmZpZztcblxuICAgIGkgPSAwO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGNvbnN0IG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW5baSsrXTtcbiAgICAgIGNvbnN0IG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbltpKytdO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uUmVqZWN0ZWQuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0LmNhbGwodGhpcywgbmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpID0gMDtcbiAgICBsZW4gPSByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluW2krK10sIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbltpKytdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIGdldFVyaShjb25maWcpIHtcbiAgICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmV0dXJuIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG4gIH1cbn1cblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG5cbiAgZnVuY3Rpb24gZ2VuZXJhdGVIVFRQTWV0aG9kKGlzRm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBodHRwTWV0aG9kKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgICBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGlzRm9ybSA/IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICAgIH0gOiB7fSxcbiAgICAgICAgdXJsLFxuICAgICAgICBkYXRhXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZ2VuZXJhdGVIVFRQTWV0aG9kKCk7XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZCArICdGb3JtJ10gPSBnZW5lcmF0ZUhUVFBNZXRob2QodHJ1ZSk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQXhpb3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/Axios.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/AxiosError.js":
/*!***************************************************!*\
!*** ./node_modules/axios/lib/core/AxiosError.js ***!
\***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AxiosError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIm1hcHBpbmdzIjoiOztBQUFhOztBQUVtQjs7QUFFaEM7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBEQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsOERBQWtCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QixDQUFDOztBQUVEO0FBQ0Esa0RBQWtELFlBQVk7O0FBRTlEO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLDhEQUFrQjtBQUNwQjtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSwrREFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zRXJyb3IuanM/YzU5OSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbY29uZmlnXSBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBBeGlvc0Vycm9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgRXJyb3IuY2FsbCh0aGlzKTtcblxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjaztcbiAgfVxuXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIHRoaXMubmFtZSA9ICdBeGlvc0Vycm9yJztcbiAgY29kZSAmJiAodGhpcy5jb2RlID0gY29kZSk7XG4gIGNvbmZpZyAmJiAodGhpcy5jb25maWcgPSBjb25maWcpO1xuICByZXF1ZXN0ICYmICh0aGlzLnJlcXVlc3QgPSByZXF1ZXN0KTtcbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgdGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICAgIHRoaXMuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzID8gcmVzcG9uc2Uuc3RhdHVzIDogbnVsbDtcbiAgfVxufVxuXG51dGlscy5pbmhlcml0cyhBeGlvc0Vycm9yLCBFcnJvciwge1xuICB0b0pTT046IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB1dGlscy50b0pTT05PYmplY3QodGhpcy5jb25maWcpLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1c1xuICAgIH07XG4gIH1cbn0pO1xuXG5jb25zdCBwcm90b3R5cGUgPSBBeGlvc0Vycm9yLnByb3RvdHlwZTtcbmNvbnN0IGRlc2NyaXB0b3JzID0ge307XG5cbltcbiAgJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJyxcbiAgJ0VSUl9CQURfT1BUSU9OJyxcbiAgJ0VDT05OQUJPUlRFRCcsXG4gICdFVElNRURPVVQnLFxuICAnRVJSX05FVFdPUksnLFxuICAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycsXG4gICdFUlJfREVQUkVDQVRFRCcsXG4gICdFUlJfQkFEX1JFU1BPTlNFJyxcbiAgJ0VSUl9CQURfUkVRVUVTVCcsXG4gICdFUlJfQ0FOQ0VMRUQnLFxuICAnRVJSX05PVF9TVVBQT1JUJyxcbiAgJ0VSUl9JTlZBTElEX1VSTCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5dLmZvckVhY2goY29kZSA9PiB7XG4gIGRlc2NyaXB0b3JzW2NvZGVdID0ge3ZhbHVlOiBjb2RlfTtcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhBeGlvc0Vycm9yLCBkZXNjcmlwdG9ycyk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnaXNBeGlvc0Vycm9yJywge3ZhbHVlOiB0cnVlfSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5BeGlvc0Vycm9yLmZyb20gPSAoZXJyb3IsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UsIGN1c3RvbVByb3BzKSA9PiB7XG4gIGNvbnN0IGF4aW9zRXJyb3IgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7XG5cbiAgdXRpbHMudG9GbGF0T2JqZWN0KGVycm9yLCBheGlvc0Vycm9yLCBmdW5jdGlvbiBmaWx0ZXIob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gRXJyb3IucHJvdG90eXBlO1xuICB9LCBwcm9wID0+IHtcbiAgICByZXR1cm4gcHJvcCAhPT0gJ2lzQXhpb3NFcnJvcic7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLmNhdXNlID0gZXJyb3I7XG5cbiAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcblxuICBjdXN0b21Qcm9wcyAmJiBPYmplY3QuYXNzaWduKGF4aW9zRXJyb3IsIGN1c3RvbVByb3BzKTtcblxuICByZXR1cm4gYXhpb3NFcnJvcjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zRXJyb3I7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/AxiosError.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/AxiosHeaders.js":
/*!*****************************************************!*\
!*** ./node_modules/axios/lib/core/AxiosHeaders.js ***!
\*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/parseHeaders.js */ \"./node_modules/axios/lib/helpers/parseHeaders.js\");\n\n\n\n\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(value)) return;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders((0,_helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(header), valueOrRewrite);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this, (value, header) => {\n const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].freezeMethods(AxiosHeaders);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AxiosHeaders);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NIZWFkZXJzLmpzIiwibWFwcGluZ3MiOiI7OztBQUFhOztBQUVtQjtBQUNzQjs7QUFFdEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMseURBQWE7QUFDdEI7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQixtQkFBbUI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxNQUFNLDREQUFnQjtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLDBEQUFjOztBQUVyQixNQUFNLDBEQUFjO0FBQ3BCO0FBQ0E7O0FBRUEsTUFBTSwwREFBYztBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSx1QkFBdUIsNkRBQWlCOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IseURBQWE7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSx5REFBYTs7QUFFbkIsUUFBUSwrREFBbUI7QUFDM0I7QUFDQSxNQUFNLFFBQVEsMERBQWM7QUFDNUIsaUJBQWlCLG9FQUFZO0FBQzdCLE1BQU0sU0FBUywyREFBZTtBQUM5QjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IseURBQWE7O0FBRS9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDREQUFnQjtBQUM1QjtBQUNBOztBQUVBLFlBQVksMERBQWM7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCLHlEQUFhOztBQUUvQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0IseURBQWE7O0FBRWpDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSx5REFBYTtBQUNyQjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSx5REFBYTtBQUNqQixrQkFBa0IseURBQWE7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLElBQUkseURBQWE7QUFDakIsc0VBQXNFLHlEQUFhO0FBQ25GLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSx5REFBYTs7QUFFakI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUVBQXVCLDJCQUEyQixNQUFNO0FBQ3hELG9EQUFvRDtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELCtEQUFtQjs7QUFFbkIsK0RBQWUsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvc0hlYWRlcnMuanM/YzNiNyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgcGFyc2VIZWFkZXJzIGZyb20gJy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzJztcblxuY29uc3QgJGludGVybmFscyA9IFN5bWJvbCgnaW50ZXJuYWxzJyk7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlciAmJiBTdHJpbmcoaGVhZGVyKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHV0aWxzLmlzQXJyYXkodmFsdWUpID8gdmFsdWUubWFwKG5vcm1hbGl6ZVZhbHVlKSA6IFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVG9rZW5zKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCB0b2tlbnNSRSA9IC8oW15cXHMsOz1dKylcXHMqKD86PVxccyooW14sO10rKSk/L2c7XG4gIGxldCBtYXRjaDtcblxuICB3aGlsZSAoKG1hdGNoID0gdG9rZW5zUkUuZXhlYyhzdHIpKSkge1xuICAgIHRva2Vuc1ttYXRjaFsxXV0gPSBtYXRjaFsyXTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmNvbnN0IGlzVmFsaWRIZWFkZXJOYW1lID0gKHN0cikgPT4gL15bLV9hLXpBLVowLTleYHx+LCEjJCUmJyorLl0rJC8udGVzdChzdHIudHJpbSgpKTtcblxuZnVuY3Rpb24gbWF0Y2hIZWFkZXJWYWx1ZShjb250ZXh0LCB2YWx1ZSwgaGVhZGVyLCBmaWx0ZXIsIGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICBpZiAodXRpbHMuaXNGdW5jdGlvbihmaWx0ZXIpKSB7XG4gICAgcmV0dXJuIGZpbHRlci5jYWxsKHRoaXMsIHZhbHVlLCBoZWFkZXIpO1xuICB9XG5cbiAgaWYgKGlzSGVhZGVyTmFtZUZpbHRlcikge1xuICAgIHZhbHVlID0gaGVhZGVyO1xuICB9XG5cbiAgaWYgKCF1dGlscy5pc1N0cmluZyh2YWx1ZSkpIHJldHVybjtcblxuICBpZiAodXRpbHMuaXNTdHJpbmcoZmlsdGVyKSkge1xuICAgIHJldHVybiB2YWx1ZS5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICB9XG5cbiAgaWYgKHV0aWxzLmlzUmVnRXhwKGZpbHRlcikpIHtcbiAgICByZXR1cm4gZmlsdGVyLnRlc3QodmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEhlYWRlcihoZWFkZXIpIHtcbiAgcmV0dXJuIGhlYWRlci50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8oW2EtelxcZF0pKFxcdyopL2csICh3LCBjaGFyLCBzdHIpID0+IHtcbiAgICAgIHJldHVybiBjaGFyLnRvVXBwZXJDYXNlKCkgKyBzdHI7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQWNjZXNzb3JzKG9iaiwgaGVhZGVyKSB7XG4gIGNvbnN0IGFjY2Vzc29yTmFtZSA9IHV0aWxzLnRvQ2FtZWxDYXNlKCcgJyArIGhlYWRlcik7XG5cbiAgWydnZXQnLCAnc2V0JywgJ2hhcyddLmZvckVhY2gobWV0aG9kTmFtZSA9PiB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgbWV0aG9kTmFtZSArIGFjY2Vzc29yTmFtZSwge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbWV0aG9kTmFtZV0uY2FsbCh0aGlzLCBoZWFkZXIsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgICAgfSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9KTtcbn1cblxuY2xhc3MgQXhpb3NIZWFkZXJzIHtcbiAgY29uc3RydWN0b3IoaGVhZGVycykge1xuICAgIGhlYWRlcnMgJiYgdGhpcy5zZXQoaGVhZGVycyk7XG4gIH1cblxuICBzZXQoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSwgcmV3cml0ZSkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gc2V0SGVhZGVyKF92YWx1ZSwgX2hlYWRlciwgX3Jld3JpdGUpIHtcbiAgICAgIGNvbnN0IGxIZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoX2hlYWRlcik7XG5cbiAgICAgIGlmICghbEhlYWRlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkoc2VsZiwgbEhlYWRlcik7XG5cbiAgICAgIGlmKCFrZXkgfHwgc2VsZltrZXldID09PSB1bmRlZmluZWQgfHwgX3Jld3JpdGUgPT09IHRydWUgfHwgKF9yZXdyaXRlID09PSB1bmRlZmluZWQgJiYgc2VsZltrZXldICE9PSBmYWxzZSkpIHtcbiAgICAgICAgc2VsZltrZXkgfHwgX2hlYWRlcl0gPSBub3JtYWxpemVWYWx1ZShfdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNldEhlYWRlcnMgPSAoaGVhZGVycywgX3Jld3JpdGUpID0+XG4gICAgICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIChfdmFsdWUsIF9oZWFkZXIpID0+IHNldEhlYWRlcihfdmFsdWUsIF9oZWFkZXIsIF9yZXdyaXRlKSk7XG5cbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChoZWFkZXIpIHx8IGhlYWRlciBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpIHtcbiAgICAgIHNldEhlYWRlcnMoaGVhZGVyLCB2YWx1ZU9yUmV3cml0ZSlcbiAgICB9IGVsc2UgaWYodXRpbHMuaXNTdHJpbmcoaGVhZGVyKSAmJiAoaGVhZGVyID0gaGVhZGVyLnRyaW0oKSkgJiYgIWlzVmFsaWRIZWFkZXJOYW1lKGhlYWRlcikpIHtcbiAgICAgIHNldEhlYWRlcnMocGFyc2VIZWFkZXJzKGhlYWRlciksIHZhbHVlT3JSZXdyaXRlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzSGVhZGVycyhoZWFkZXIpKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoZWFkZXIuZW50cmllcygpKSB7XG4gICAgICAgIHNldEhlYWRlcih2YWx1ZSwga2V5LCByZXdyaXRlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZGVyICE9IG51bGwgJiYgc2V0SGVhZGVyKHZhbHVlT3JSZXdyaXRlLCBoZWFkZXIsIHJld3JpdGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KGhlYWRlciwgcGFyc2VyKSB7XG4gICAgaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKGhlYWRlcik7XG5cbiAgICBpZiAoaGVhZGVyKSB7XG4gICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHRoaXMsIGhlYWRlcik7XG5cbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2tleV07XG5cbiAgICAgICAgaWYgKCFwYXJzZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyc2VyID09PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVG9rZW5zKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1dGlscy5pc0Z1bmN0aW9uKHBhcnNlcikpIHtcbiAgICAgICAgICByZXR1cm4gcGFyc2VyLmNhbGwodGhpcywgdmFsdWUsIGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXRpbHMuaXNSZWdFeHAocGFyc2VyKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZXIuZXhlYyh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJzZXIgbXVzdCBiZSBib29sZWFufHJlZ2V4cHxmdW5jdGlvbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhoZWFkZXIsIG1hdGNoZXIpIHtcbiAgICBoZWFkZXIgPSBub3JtYWxpemVIZWFkZXIoaGVhZGVyKTtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGNvbnN0IGtleSA9IHV0aWxzLmZpbmRLZXkodGhpcywgaGVhZGVyKTtcblxuICAgICAgcmV0dXJuICEhKGtleSAmJiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlcikpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBkZWxldGUoaGVhZGVyLCBtYXRjaGVyKSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUhlYWRlcihfaGVhZGVyKSB7XG4gICAgICBfaGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoX2hlYWRlcikge1xuICAgICAgICBjb25zdCBrZXkgPSB1dGlscy5maW5kS2V5KHNlbGYsIF9oZWFkZXIpO1xuXG4gICAgICAgIGlmIChrZXkgJiYgKCFtYXRjaGVyIHx8IG1hdGNoSGVhZGVyVmFsdWUoc2VsZiwgc2VsZltrZXldLCBrZXksIG1hdGNoZXIpKSkge1xuICAgICAgICAgIGRlbGV0ZSBzZWxmW2tleV07XG5cbiAgICAgICAgICBkZWxldGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlci5mb3JFYWNoKGRlbGV0ZUhlYWRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZUhlYWRlcihoZWFkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgY2xlYXIobWF0Y2hlcikge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzKTtcbiAgICBsZXQgaSA9IGtleXMubGVuZ3RoO1xuICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgaWYoIW1hdGNoZXIgfHwgbWF0Y2hIZWFkZXJWYWx1ZSh0aGlzLCB0aGlzW2tleV0sIGtleSwgbWF0Y2hlciwgdHJ1ZSkpIHtcbiAgICAgICAgZGVsZXRlIHRoaXNba2V5XTtcbiAgICAgICAgZGVsZXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICBub3JtYWxpemUoZm9ybWF0KSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgaGVhZGVycyA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLCAodmFsdWUsIGhlYWRlcikgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdXRpbHMuZmluZEtleShoZWFkZXJzLCBoZWFkZXIpO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHNlbGZba2V5XSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkID0gZm9ybWF0ID8gZm9ybWF0SGVhZGVyKGhlYWRlcikgOiBTdHJpbmcoaGVhZGVyKS50cmltKCk7XG5cbiAgICAgIGlmIChub3JtYWxpemVkICE9PSBoZWFkZXIpIHtcbiAgICAgICAgZGVsZXRlIHNlbGZbaGVhZGVyXTtcbiAgICAgIH1cblxuICAgICAgc2VsZltub3JtYWxpemVkXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgaGVhZGVyc1tub3JtYWxpemVkXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbmNhdCguLi50YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IuY29uY2F0KHRoaXMsIC4uLnRhcmdldHMpO1xuICB9XG5cbiAgdG9KU09OKGFzU3RyaW5ncykge1xuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICB1dGlscy5mb3JFYWNoKHRoaXMsICh2YWx1ZSwgaGVhZGVyKSA9PiB7XG4gICAgICB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9PSBmYWxzZSAmJiAob2JqW2hlYWRlcl0gPSBhc1N0cmluZ3MgJiYgdXRpbHMuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsICcpIDogdmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLnRvSlNPTigpKVtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy50b0pTT04oKSkubWFwKChbaGVhZGVyLCB2YWx1ZV0pID0+IGhlYWRlciArICc6ICcgKyB2YWx1ZSkuam9pbignXFxuJyk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdBeGlvc0hlYWRlcnMnO1xuICB9XG5cbiAgc3RhdGljIGZyb20odGhpbmcpIHtcbiAgICByZXR1cm4gdGhpbmcgaW5zdGFuY2VvZiB0aGlzID8gdGhpbmcgOiBuZXcgdGhpcyh0aGluZyk7XG4gIH1cblxuICBzdGF0aWMgY29uY2F0KGZpcnN0LCAuLi50YXJnZXRzKSB7XG4gICAgY29uc3QgY29tcHV0ZWQgPSBuZXcgdGhpcyhmaXJzdCk7XG5cbiAgICB0YXJnZXRzLmZvckVhY2goKHRhcmdldCkgPT4gY29tcHV0ZWQuc2V0KHRhcmdldCkpO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkO1xuICB9XG5cbiAgc3RhdGljIGFjY2Vzc29yKGhlYWRlcikge1xuICAgIGNvbnN0IGludGVybmFscyA9IHRoaXNbJGludGVybmFsc10gPSAodGhpc1skaW50ZXJuYWxzXSA9IHtcbiAgICAgIGFjY2Vzc29yczoge31cbiAgICB9KTtcblxuICAgIGNvbnN0IGFjY2Vzc29ycyA9IGludGVybmFscy5hY2Nlc3NvcnM7XG4gICAgY29uc3QgcHJvdG90eXBlID0gdGhpcy5wcm90b3R5cGU7XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVBY2Nlc3NvcihfaGVhZGVyKSB7XG4gICAgICBjb25zdCBsSGVhZGVyID0gbm9ybWFsaXplSGVhZGVyKF9oZWFkZXIpO1xuXG4gICAgICBpZiAoIWFjY2Vzc29yc1tsSGVhZGVyXSkge1xuICAgICAgICBidWlsZEFjY2Vzc29ycyhwcm90b3R5cGUsIF9oZWFkZXIpO1xuICAgICAgICBhY2Nlc3NvcnNbbEhlYWRlcl0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHV0aWxzLmlzQXJyYXkoaGVhZGVyKSA/IGhlYWRlci5mb3JFYWNoKGRlZmluZUFjY2Vzc29yKSA6IGRlZmluZUFjY2Vzc29yKGhlYWRlcik7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5BeGlvc0hlYWRlcnMuYWNjZXNzb3IoWydDb250ZW50LVR5cGUnLCAnQ29udGVudC1MZW5ndGgnLCAnQWNjZXB0JywgJ0FjY2VwdC1FbmNvZGluZycsICdVc2VyLUFnZW50JywgJ0F1dGhvcml6YXRpb24nXSk7XG5cbi8vIHJlc2VydmVkIG5hbWVzIGhvdGZpeFxudXRpbHMucmVkdWNlRGVzY3JpcHRvcnMoQXhpb3NIZWFkZXJzLnByb3RvdHlwZSwgKHt2YWx1ZX0sIGtleSkgPT4ge1xuICBsZXQgbWFwcGVkID0ga2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7IC8vIG1hcCBgc2V0YCA9PiBgU2V0YFxuICByZXR1cm4ge1xuICAgIGdldDogKCkgPT4gdmFsdWUsXG4gICAgc2V0KGhlYWRlclZhbHVlKSB7XG4gICAgICB0aGlzW21hcHBlZF0gPSBoZWFkZXJWYWx1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG51dGlscy5mcmVlemVNZXRob2RzKEF4aW9zSGVhZGVycyk7XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zSGVhZGVycztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/AxiosHeaders.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
/*!***********************************************************!*\
!*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
\***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (InterceptorManager);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzIiwibWFwcGluZ3MiOiI7O0FBQWE7O0FBRXFCOztBQUVsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFVBQVU7QUFDdkIsYUFBYSxVQUFVO0FBQ3ZCO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsZUFBZSxTQUFTO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsVUFBVTtBQUN2QjtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsSUFBSSx5REFBYTtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQSwrREFBZSxrQkFBa0IsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzPzYxYmUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbmNsYXNzIEludGVyY2VwdG9yTWFuYWdlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICAgKi9cbiAgdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgICAgZnVsZmlsbGVkLFxuICAgICAgcmVqZWN0ZWQsXG4gICAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSBpbnRlcmNlcHRvciB3YXMgcmVtb3ZlZCwgYGZhbHNlYCBvdGhlcndpc2VcbiAgICovXG4gIGVqZWN0KGlkKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBpbnRlcmNlcHRvcnMgZnJvbSB0aGUgc3RhY2tcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAodGhpcy5oYW5kbGVycykge1xuICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICAgKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmb3JFYWNoKGZuKSB7XG4gICAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgICBmbihoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmNlcHRvck1hbmFnZXI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/InterceptorManager.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/buildFullPath.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/core/buildFullPath.js ***!
\******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ buildFullPath; }\n/* harmony export */ });\n/* harmony import */ var _helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/isAbsoluteURL.js */ \"./node_modules/axios/lib/helpers/isAbsoluteURL.js\");\n/* harmony import */ var _helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/combineURLs.js */ \"./node_modules/axios/lib/helpers/combineURLs.js\");\n\n\n\n\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !(0,_helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(requestedURL)) {\n return (0,_helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(baseURL, requestedURL);\n }\n return requestedURL;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBYTs7QUFFMkM7QUFDSjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDZTtBQUNmLGtCQUFrQixxRUFBYTtBQUMvQixXQUFXLG1FQUFXO0FBQ3RCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcz84MmMyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGlzQWJzb2x1dGVVUkwgZnJvbSAnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMLmpzJztcbmltcG9ydCBjb21iaW5lVVJMcyBmcm9tICcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/buildFullPath.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
\********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ dispatchRequest; }\n/* harmony export */ });\n/* harmony import */ var _transformData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transformData.js */ \"./node_modules/axios/lib/core/transformData.js\");\n/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../cancel/isCancel.js */ \"./node_modules/axios/lib/cancel/isCancel.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../defaults/index.js */ \"./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../adapters/adapters.js */ \"./node_modules/axios/lib/adapters/adapters.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(config.headers);\n\n // Transform request data\n config.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getAdapter(config.adapter || _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!(0,_cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBYTs7QUFFa0M7QUFDRjtBQUNEO0FBQ1c7QUFDSjtBQUNKOztBQUUvQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsZ0VBQWE7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDZTtBQUNmOztBQUVBLG1CQUFtQixrRUFBaUI7O0FBRXBDO0FBQ0EsZ0JBQWdCLDhEQUFrQjtBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQix3RUFBbUIsbUJBQW1CLGtFQUFnQjs7QUFFeEU7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiw4REFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCLGtFQUFpQjs7QUFFeEM7QUFDQSxHQUFHO0FBQ0gsU0FBUywrREFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCLDhEQUFrQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxrRUFBaUI7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzPzgxNWUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHJhbnNmb3JtRGF0YSBmcm9tICcuL3RyYW5zZm9ybURhdGEuanMnO1xuaW1wb3J0IGlzQ2FuY2VsIGZyb20gJy4uL2NhbmNlbC9pc0NhbmNlbC5qcyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMvaW5kZXguanMnO1xuaW1wb3J0IENhbmNlbGVkRXJyb3IgZnJvbSAnLi4vY2FuY2VsL0NhbmNlbGVkRXJyb3IuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tICcuLi9jb3JlL0F4aW9zSGVhZGVycy5qcyc7XG5pbXBvcnQgYWRhcHRlcnMgZnJvbSBcIi4uL2FkYXB0ZXJzL2FkYXB0ZXJzLmpzXCI7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cblxuICBpZiAoY29uZmlnLnNpZ25hbCAmJiBjb25maWcuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICB0aHJvdyBuZXcgQ2FuY2VsZWRFcnJvcihudWxsLCBjb25maWcpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgY29uZmlnLmhlYWRlcnMgPSBBeGlvc0hlYWRlcnMuZnJvbShjb25maWcuaGVhZGVycyk7XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICBjb25maWcsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICBpZiAoWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLmluZGV4T2YoY29uZmlnLm1ldGhvZCkgIT09IC0xKSB7XG4gICAgY29uZmlnLmhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsIGZhbHNlKTtcbiAgfVxuXG4gIGNvbnN0IGFkYXB0ZXIgPSBhZGFwdGVycy5nZXRBZGFwdGVyKGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXIpO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgcmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlc3BvbnNlLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlLFxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZVxuICAgICAgICApO1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyA9IEF4aW9zSGVhZGVycy5mcm9tKHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/dispatchRequest.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/mergeConfig.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/core/mergeConfig.js ***!
\****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ mergeConfig; }\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n\n\n\n\n\nconst headersToObject = (thing) => thing instanceof _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(target) && _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(source)) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].merge.call({caseless}, target, source);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isPlainObject(source)) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].merge({}, source);\n } else if (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (_utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvbWVyZ2VDb25maWcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWE7O0FBRW1CO0FBQ2E7O0FBRTdDLG9EQUFvRCx3REFBWSxLQUFLLFdBQVc7O0FBRWhGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwrREFBbUIsWUFBWSwrREFBbUI7QUFDMUQsYUFBYSx1REFBVyxPQUFPLFNBQVM7QUFDeEMsTUFBTSxTQUFTLCtEQUFtQjtBQUNsQyxhQUFhLHVEQUFXLEdBQUc7QUFDM0IsTUFBTSxTQUFTLHlEQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLDZEQUFpQjtBQUMxQjtBQUNBLE1BQU0sVUFBVSw2REFBaUI7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLDZEQUFpQjtBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsNkRBQWlCO0FBQzFCO0FBQ0EsTUFBTSxVQUFVLDZEQUFpQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUseURBQWEsNkJBQTZCO0FBQzVDO0FBQ0E7QUFDQSxLQUFLLDZEQUFpQjtBQUN0QixHQUFHOztBQUVIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzPzhkOGQiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zSGVhZGVycyBmcm9tIFwiLi9BeGlvc0hlYWRlcnMuanNcIjtcblxuY29uc3QgaGVhZGVyc1RvT2JqZWN0ID0gKHRoaW5nKSA9PiB0aGluZyBpbnN0YW5jZW9mIEF4aW9zSGVhZGVycyA/IHsgLi4udGhpbmcgfSA6IHRoaW5nO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICBjb25zdCBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSwgcHJvcCwgY2FzZWxlc3MpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlLmNhbGwoe2Nhc2VsZXNzfSwgdGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKGEsIGIsIHByb3AgLCBjYXNlbGVzcykge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYikpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShhLCBiLCBwcm9wICwgY2FzZWxlc3MpO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGEpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBhLCBwcm9wICwgY2FzZWxlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKGEsIGIpIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGIpKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBiKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihhLCBiKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChiKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYik7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoYSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMoYSwgYiwgcHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShhLCBiKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgYSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVyZ2VNYXAgPSB7XG4gICAgdXJsOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIG1ldGhvZDogdmFsdWVGcm9tQ29uZmlnMixcbiAgICBkYXRhOiB2YWx1ZUZyb21Db25maWcyLFxuICAgIGJhc2VVUkw6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNmb3JtUmVxdWVzdDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB0cmFuc2Zvcm1SZXNwb25zZTogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBwYXJhbXNTZXJpYWxpemVyOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHRpbWVvdXQ6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdGltZW91dE1lc3NhZ2U6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHdpdGhYU1JGVG9rZW46IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYWRhcHRlcjogZGVmYXVsdFRvQ29uZmlnMixcbiAgICByZXNwb25zZVR5cGU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkNvb2tpZU5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgeHNyZkhlYWRlck5hbWU6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgb25VcGxvYWRQcm9ncmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBvbkRvd25sb2FkUHJvZ3Jlc3M6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgZGVjb21wcmVzczogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBtYXhDb250ZW50TGVuZ3RoOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIG1heEJvZHlMZW5ndGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgYmVmb3JlUmVkaXJlY3Q6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgdHJhbnNwb3J0OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGh0dHBBZ2VudDogZGVmYXVsdFRvQ29uZmlnMixcbiAgICBodHRwc0FnZW50OiBkZWZhdWx0VG9Db25maWcyLFxuICAgIGNhbmNlbFRva2VuOiBkZWZhdWx0VG9Db25maWcyLFxuICAgIHNvY2tldFBhdGg6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgcmVzcG9uc2VFbmNvZGluZzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICB2YWxpZGF0ZVN0YXR1czogbWVyZ2VEaXJlY3RLZXlzLFxuICAgIGhlYWRlcnM6IChhLCBiICwgcHJvcCkgPT4gbWVyZ2VEZWVwUHJvcGVydGllcyhoZWFkZXJzVG9PYmplY3QoYSksIGhlYWRlcnNUb09iamVjdChiKSxwcm9wLCB0cnVlKVxuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnMSwgY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xuICAgIGNvbnN0IG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IG1lcmdlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0sIHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/mergeConfig.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/settle.js":
/*!***********************************************!*\
!*** ./node_modules/axios/lib/core/settle.js ***!
\***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ settle; }\n/* harmony export */ });\n/* harmony import */ var _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](\n 'Request failed with status code ' + response.status,\n [_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_BAD_REQUEST, _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWE7O0FBRTRCOztBQUV6QztBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLGVBQWUsc0RBQVU7QUFDekI7QUFDQSxPQUFPLHNFQUEwQixFQUFFLHVFQUEyQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcz9mOTJmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi9BeGlvc0Vycm9yLmpzJztcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBUaGUgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIGNvbnN0IHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/settle.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/core/transformData.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/core/transformData.js ***!
\******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ transformData; }\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../defaults/index.js */ \"./node_modules/axios/lib/defaults/index.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n\n\n\n\n\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || _defaults_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n const context = response || config;\n const headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(context.headers);\n let data = context.data;\n\n _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWE7O0FBRXFCO0FBQ1U7QUFDTzs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0I7QUFDM0IsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsYUFBYSxHQUFHO0FBQ2hCO0FBQ2U7QUFDZix5QkFBeUIsMERBQVE7QUFDakM7QUFDQSxrQkFBa0Isa0VBQWlCO0FBQ25DOztBQUVBLEVBQUUseURBQWE7QUFDZjtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvdHJhbnNmb3JtRGF0YS5qcz85M2QxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzL2luZGV4LmpzJztcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSAnLi4vY29yZS9BeGlvc0hlYWRlcnMuanMnO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcGFyYW0gez9PYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3RcbiAqXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZm5zLCByZXNwb25zZSkge1xuICBjb25zdCBjb25maWcgPSB0aGlzIHx8IGRlZmF1bHRzO1xuICBjb25zdCBjb250ZXh0ID0gcmVzcG9uc2UgfHwgY29uZmlnO1xuICBjb25zdCBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oY29udGV4dC5oZWFkZXJzKTtcbiAgbGV0IGRhdGEgPSBjb250ZXh0LmRhdGE7XG5cbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xuICAgIGRhdGEgPSBmbi5jYWxsKGNvbmZpZywgZGF0YSwgaGVhZGVycy5ub3JtYWxpemUoKSwgcmVzcG9uc2UgPyByZXNwb25zZS5zdGF0dXMgOiB1bmRlZmluZWQpO1xuICB9KTtcblxuICBoZWFkZXJzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiBkYXRhO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/core/transformData.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/defaults/index.js":
/*!**************************************************!*\
!*** ./node_modules/axios/lib/defaults/index.js ***!
\**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _transitional_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitional.js */ \"./node_modules/axios/lib/defaults/transitional.js\");\n/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/toFormData.js */ \"./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/toURLEncodedForm.js */ \"./node_modules/axios/lib/helpers/toURLEncodedForm.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../helpers/formDataToJSON.js */ \"./node_modules/axios/lib/helpers/formDataToJSON.js\");\n\n\n\n\n\n\n\n\n\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: _transitional_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(data);\n\n if (isObjectPayload && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify((0,_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(data)) : data;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBuffer(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBuffer(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isStream(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFile(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlob(data) ||\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isReadableStream(data)\n ) {\n return data;\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBufferView(data)) {\n return data.buffer;\n }\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return (0,_helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(data, this.formSerializer).toString();\n }\n\n if ((isFileList = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return (0,_helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isResponse(data) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isReadableStream(data)) {\n return data;\n }\n\n if (data && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].from(e, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: _platform_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].classes.FormData,\n Blob: _platform_index_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"].classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\n_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (defaults);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWE7O0FBRW1CO0FBQ2U7QUFDTTtBQUNIO0FBQ1k7QUFDbEI7QUFDYzs7QUFFMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEtBQUs7QUFDaEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsTUFBTSwwREFBYztBQUNwQjtBQUNBO0FBQ0EsYUFBYSxzREFBVTtBQUN2QixNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLGdCQUFnQix3REFBb0I7O0FBRXBDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwREFBYzs7QUFFMUMsMkJBQTJCLDREQUFnQjtBQUMzQztBQUNBOztBQUVBLHVCQUF1Qiw0REFBZ0I7O0FBRXZDO0FBQ0EsaURBQWlELHNFQUFjO0FBQy9EOztBQUVBLFFBQVEsK0RBQW1CO0FBQzNCLE1BQU0sMERBQWM7QUFDcEIsTUFBTSwwREFBYztBQUNwQixNQUFNLHdEQUFZO0FBQ2xCLE1BQU0sd0RBQVk7QUFDbEIsTUFBTSxrRUFBc0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtRUFBdUI7QUFDL0I7QUFDQTtBQUNBLFFBQVEsbUVBQXVCO0FBQy9CLGdFQUFnRTtBQUNoRTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLHdFQUFnQjtBQUMvQjs7QUFFQSx3QkFBd0IsNERBQWdCO0FBQ3hDOztBQUVBLGVBQWUsa0VBQVU7QUFDekIsd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLDREQUFnQixVQUFVLGtFQUFzQjtBQUN4RDtBQUNBOztBQUVBLGdCQUFnQiwwREFBYztBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLGtCQUFrQixnRUFBZSxJQUFJLDRFQUEyQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGNBQWMsa0VBQWdCO0FBQzlCLFVBQVUsa0VBQWdCO0FBQzFCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseURBQWE7QUFDYjtBQUNBLENBQUM7O0FBRUQsK0RBQWUsUUFBUSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanM/NTVhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuaW1wb3J0IHRyYW5zaXRpb25hbERlZmF1bHRzIGZyb20gJy4vdHJhbnNpdGlvbmFsLmpzJztcbmltcG9ydCB0b0Zvcm1EYXRhIGZyb20gJy4uL2hlbHBlcnMvdG9Gb3JtRGF0YS5qcyc7XG5pbXBvcnQgdG9VUkxFbmNvZGVkRm9ybSBmcm9tICcuLi9oZWxwZXJzL3RvVVJMRW5jb2RlZEZvcm0uanMnO1xuaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4uL3BsYXRmb3JtL2luZGV4LmpzJztcbmltcG9ydCBmb3JtRGF0YVRvSlNPTiBmcm9tICcuLi9oZWxwZXJzL2Zvcm1EYXRhVG9KU09OLmpzJztcblxuLyoqXG4gKiBJdCB0YWtlcyBhIHN0cmluZywgdHJpZXMgdG8gcGFyc2UgaXQsIGFuZCBpZiBpdCBmYWlscywgaXQgcmV0dXJucyB0aGUgc3RyaW5naWZpZWQgdmVyc2lvblxuICogb2YgdGhlIGlucHV0XG4gKlxuICogQHBhcmFtIHthbnl9IHJhd1ZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHN0cmluZ2lmaWVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyc2VyIC0gQSBmdW5jdGlvbiB0aGF0IHBhcnNlcyBhIHN0cmluZyBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbmNvZGVyIC0gQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gQSBzdHJpbmdpZmllZCB2ZXJzaW9uIG9mIHRoZSByYXdWYWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5U2FmZWx5KHJhd1ZhbHVlLCBwYXJzZXIsIGVuY29kZXIpIHtcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICAocGFyc2VyIHx8IEpTT04ucGFyc2UpKHJhd1ZhbHVlKTtcbiAgICAgIHJldHVybiB1dGlscy50cmltKHJhd1ZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZS5uYW1lICE9PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChlbmNvZGVyIHx8IEpTT04uc3RyaW5naWZ5KShyYXdWYWx1ZSk7XG59XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXG5cbiAgYWRhcHRlcjogWyd4aHInLCAnaHR0cCcsICdmZXRjaCddLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0Q29udGVudFR5cGUoKSB8fCAnJztcbiAgICBjb25zdCBoYXNKU09OQ29udGVudFR5cGUgPSBjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgPiAtMTtcbiAgICBjb25zdCBpc09iamVjdFBheWxvYWQgPSB1dGlscy5pc09iamVjdChkYXRhKTtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQgJiYgdXRpbHMuaXNIVE1MRm9ybShkYXRhKSkge1xuICAgICAgZGF0YSA9IG5ldyBGb3JtRGF0YShkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0Zvcm1EYXRhID0gdXRpbHMuaXNGb3JtRGF0YShkYXRhKTtcblxuICAgIGlmIChpc0Zvcm1EYXRhKSB7XG4gICAgICByZXR1cm4gaGFzSlNPTkNvbnRlbnRUeXBlID8gSlNPTi5zdHJpbmdpZnkoZm9ybURhdGFUb0pTT04oZGF0YSkpIDogZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNSZWFkYWJsZVN0cmVhbShkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIGhlYWRlcnMuc2V0Q29udGVudFR5cGUoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04JywgZmFsc2UpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgaXNGaWxlTGlzdDtcblxuICAgIGlmIChpc09iamVjdFBheWxvYWQpIHtcbiAgICAgIGlmIChjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKSA+IC0xKSB7XG4gICAgICAgIHJldHVybiB0b1VSTEVuY29kZWRGb3JtKGRhdGEsIHRoaXMuZm9ybVNlcmlhbGl6ZXIpLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICgoaXNGaWxlTGlzdCA9IHV0aWxzLmlzRmlsZUxpc3QoZGF0YSkpIHx8IGNvbnRlbnRUeXBlLmluZGV4T2YoJ211bHRpcGFydC9mb3JtLWRhdGEnKSA+IC0xKSB7XG4gICAgICAgIGNvbnN0IF9Gb3JtRGF0YSA9IHRoaXMuZW52ICYmIHRoaXMuZW52LkZvcm1EYXRhO1xuXG4gICAgICAgIHJldHVybiB0b0Zvcm1EYXRhKFxuICAgICAgICAgIGlzRmlsZUxpc3QgPyB7J2ZpbGVzW10nOiBkYXRhfSA6IGRhdGEsXG4gICAgICAgICAgX0Zvcm1EYXRhICYmIG5ldyBfRm9ybURhdGEoKSxcbiAgICAgICAgICB0aGlzLmZvcm1TZXJpYWxpemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0UGF5bG9hZCB8fCBoYXNKU09OQ29udGVudFR5cGUgKSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKCdhcHBsaWNhdGlvbi9qc29uJywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgY29uc3QgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xuICAgIGNvbnN0IGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcbiAgICBjb25zdCBKU09OUmVxdWVzdGVkID0gdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcblxuICAgIGlmICh1dGlscy5pc1Jlc3BvbnNlKGRhdGEpIHx8IHV0aWxzLmlzUmVhZGFibGVTdHJlYW0oZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmIChkYXRhICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmICgoZm9yY2VkSlNPTlBhcnNpbmcgJiYgIXRoaXMucmVzcG9uc2VUeXBlKSB8fCBKU09OUmVxdWVzdGVkKSkge1xuICAgICAgY29uc3Qgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgICAgY29uc3Qgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgSlNPTlJlcXVlc3RlZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcGxhdGZvcm0uY2xhc3Nlcy5Gb3JtRGF0YSxcbiAgICBCbG9iOiBwbGF0Zm9ybS5jbGFzc2VzLkJsb2JcbiAgfSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9LFxuXG4gIGhlYWRlcnM6IHtcbiAgICBjb21tb246IHtcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJyxcbiAgICAgICdDb250ZW50LVR5cGUnOiB1bmRlZmluZWRcbiAgICB9XG4gIH1cbn07XG5cbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgKG1ldGhvZCkgPT4ge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0cztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/defaults/index.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/defaults/transitional.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/defaults/transitional.js ***!
\*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzL3RyYW5zaXRpb25hbC5qcyIsIm1hcHBpbmdzIjoiO0FBQWE7O0FBRWIsK0RBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanM/ZDc1MiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/defaults/transitional.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/env/data.js":
/*!********************************************!*\
!*** ./node_modules/axios/lib/env/data.js ***!
\********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ VERSION: function() { return /* binding */ VERSION; }\n/* harmony export */ });\nconst VERSION = \"1.7.9\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzP2ZlZjgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIjEuNy45XCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/env/data.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js":
/*!****************************************************************!*\
!*** ./node_modules/axios/lib/helpers/AxiosURLSearchParams.js ***!
\****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ \"./node_modules/axios/lib/helpers/toFormData.js\");\n\n\n\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && (0,_toFormData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AxiosURLSearchParams);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMiLCJtYXBwaW5ncyI6Ijs7QUFBYTs7QUFFNEI7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcscUJBQXFCO0FBQ2hDLFdBQVcscUJBQXFCO0FBQ2hDO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQSxZQUFZLDBEQUFVO0FBQ3RCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsK0RBQWUsb0JBQW9CLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL0F4aW9zVVJMU2VhcmNoUGFyYW1zLmpzPzJkMjciXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdG9Gb3JtRGF0YSBmcm9tICcuL3RvRm9ybURhdGEuanMnO1xuXG4vKipcbiAqIEl0IGVuY29kZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdW5yZXNlcnZlZCBzZXQgd2l0aFxuICogdGhlaXIgcGVyY2VudC1lbmNvZGVkIGVxdWl2YWxlbnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gZW5jb2RlLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNvZGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICBjb25zdCBjaGFyTWFwID0ge1xuICAgICchJzogJyUyMScsXG4gICAgXCInXCI6ICclMjcnLFxuICAgICcoJzogJyUyOCcsXG4gICAgJyknOiAnJTI5JyxcbiAgICAnfic6ICclN0UnLFxuICAgICclMjAnOiAnKycsXG4gICAgJyUwMCc6ICdcXHgwMCdcbiAgfTtcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChzdHIpLnJlcGxhY2UoL1shJygpfl18JTIwfCUwMC9nLCBmdW5jdGlvbiByZXBsYWNlcihtYXRjaCkge1xuICAgIHJldHVybiBjaGFyTWFwW21hdGNoXTtcbiAgfSk7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBwYXJhbXMgb2JqZWN0IGFuZCBjb252ZXJ0cyBpdCB0byBhIEZvcm1EYXRhIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PHN0cmluZywgYW55Pn0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gYmUgY29udmVydGVkIHRvIGEgRm9ybURhdGEgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBhbnk+fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byB0aGUgQXhpb3MgY29uc3RydWN0b3IuXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIEF4aW9zVVJMU2VhcmNoUGFyYW1zKHBhcmFtcywgb3B0aW9ucykge1xuICB0aGlzLl9wYWlycyA9IFtdO1xuXG4gIHBhcmFtcyAmJiB0b0Zvcm1EYXRhKHBhcmFtcywgdGhpcywgb3B0aW9ucyk7XG59XG5cbmNvbnN0IHByb3RvdHlwZSA9IEF4aW9zVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcblxucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuICB0aGlzLl9wYWlycy5wdXNoKFtuYW1lLCB2YWx1ZV0pO1xufTtcblxucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoZW5jb2Rlcikge1xuICBjb25zdCBfZW5jb2RlID0gZW5jb2RlciA/IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGVuY29kZXIuY2FsbCh0aGlzLCB2YWx1ZSwgZW5jb2RlKTtcbiAgfSA6IGVuY29kZTtcblxuICByZXR1cm4gdGhpcy5fcGFpcnMubWFwKGZ1bmN0aW9uIGVhY2gocGFpcikge1xuICAgIHJldHVybiBfZW5jb2RlKHBhaXJbMF0pICsgJz0nICsgX2VuY29kZShwYWlyWzFdKTtcbiAgfSwgJycpLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF4aW9zVVJMU2VhcmNoUGFyYW1zO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/HttpStatusCode.js":
/*!**********************************************************!*\
!*** ./node_modules/axios/lib/helpers/HttpStatusCode.js ***!
\**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (HttpStatusCode);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvSHR0cFN0YXR1c0NvZGUuanMiLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsK0RBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9IdHRwU3RhdHVzQ29kZS5qcz8xMzE0Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEh0dHBTdGF0dXNDb2RlID0ge1xuICBDb250aW51ZTogMTAwLFxuICBTd2l0Y2hpbmdQcm90b2NvbHM6IDEwMSxcbiAgUHJvY2Vzc2luZzogMTAyLFxuICBFYXJseUhpbnRzOiAxMDMsXG4gIE9rOiAyMDAsXG4gIENyZWF0ZWQ6IDIwMSxcbiAgQWNjZXB0ZWQ6IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uOiAyMDMsXG4gIE5vQ29udGVudDogMjA0LFxuICBSZXNldENvbnRlbnQ6IDIwNSxcbiAgUGFydGlhbENvbnRlbnQ6IDIwNixcbiAgTXVsdGlTdGF0dXM6IDIwNyxcbiAgQWxyZWFkeVJlcG9ydGVkOiAyMDgsXG4gIEltVXNlZDogMjI2LFxuICBNdWx0aXBsZUNob2ljZXM6IDMwMCxcbiAgTW92ZWRQZXJtYW5lbnRseTogMzAxLFxuICBGb3VuZDogMzAyLFxuICBTZWVPdGhlcjogMzAzLFxuICBOb3RNb2RpZmllZDogMzA0LFxuICBVc2VQcm94eTogMzA1LFxuICBVbnVzZWQ6IDMwNixcbiAgVGVtcG9yYXJ5UmVkaXJlY3Q6IDMwNyxcbiAgUGVybWFuZW50UmVkaXJlY3Q6IDMwOCxcbiAgQmFkUmVxdWVzdDogNDAwLFxuICBVbmF1dGhvcml6ZWQ6IDQwMSxcbiAgUGF5bWVudFJlcXVpcmVkOiA0MDIsXG4gIEZvcmJpZGRlbjogNDAzLFxuICBOb3RGb3VuZDogNDA0LFxuICBNZXRob2ROb3RBbGxvd2VkOiA0MDUsXG4gIE5vdEFjY2VwdGFibGU6IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA0MDcsXG4gIFJlcXVlc3RUaW1lb3V0OiA0MDgsXG4gIENvbmZsaWN0OiA0MDksXG4gIEdvbmU6IDQxMCxcbiAgTGVuZ3RoUmVxdWlyZWQ6IDQxMSxcbiAgUHJlY29uZGl0aW9uRmFpbGVkOiA0MTIsXG4gIFBheWxvYWRUb29MYXJnZTogNDEzLFxuICBVcmlUb29Mb25nOiA0MTQsXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlOiA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGU6IDQxNixcbiAgRXhwZWN0YXRpb25GYWlsZWQ6IDQxNyxcbiAgSW1BVGVhcG90OiA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdDogNDIxLFxuICBVbnByb2Nlc3NhYmxlRW50aXR5OiA0MjIsXG4gIExvY2tlZDogNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5OiA0MjQsXG4gIFRvb0Vhcmx5OiA0MjUsXG4gIFVwZ3JhZGVSZXF1aXJlZDogNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZDogNDI4LFxuICBUb29NYW55UmVxdWVzdHM6IDQyOSxcbiAgUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOiA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOiA0NTEsXG4gIEludGVybmFsU2VydmVyRXJyb3I6IDUwMCxcbiAgTm90SW1wbGVtZW50ZWQ6IDUwMSxcbiAgQmFkR2F0ZXdheTogNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGU6IDUwMyxcbiAgR2F0ZXdheVRpbWVvdXQ6IDUwNCxcbiAgSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzOiA1MDYsXG4gIEluc3VmZmljaWVudFN0b3JhZ2U6IDUwNyxcbiAgTG9vcERldGVjdGVkOiA1MDgsXG4gIE5vdEV4dGVuZGVkOiA1MTAsXG4gIE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOiA1MTEsXG59O1xuXG5PYmplY3QuZW50cmllcyhIdHRwU3RhdHVzQ29kZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gIEh0dHBTdGF0dXNDb2RlW3ZhbHVlXSA9IGtleTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBIdHRwU3RhdHVzQ29kZTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/HttpStatusCode.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/bind.js":
/*!************************************************!*\
!*** ./node_modules/axios/lib/helpers/bind.js ***!
\************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ bind; }\n/* harmony export */ });\n\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRUU7QUFDZjtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcz82NzVhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJndW1lbnRzKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/bind.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/buildURL.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/helpers/buildURL.js ***!
\****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ buildURL; }\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/AxiosURLSearchParams.js */ \"./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\");\n\n\n\n\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isURLSearchParams(params) ?\n params.toString() :\n new _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWE7O0FBRW1CO0FBQ3NDOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsb0JBQW9CO0FBQy9CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSw0REFBZ0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSix1QkFBdUIsbUVBQXVCO0FBQzlDO0FBQ0EsVUFBVSx3RUFBb0I7QUFDOUI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2J1aWxkVVJMLmpzP2U1MGEiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IEF4aW9zVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4uL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMnO1xuXG4vKipcbiAqIEl0IHJlcGxhY2VzIGFsbCBpbnN0YW5jZXMgb2YgdGhlIGNoYXJhY3RlcnMgYDpgLCBgJGAsIGAsYCwgYCtgLCBgW2AsIGFuZCBgXWAgd2l0aCB0aGVpclxuICogVVJJIGVuY29kZWQgY291bnRlcnBhcnRzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCBUaGUgdmFsdWUgdG8gYmUgZW5jb2RlZC5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEBwYXJhbSB7PyhvYmplY3R8RnVuY3Rpb24pfSBvcHRpb25zXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIG9wdGlvbnMpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICBcbiAgY29uc3QgX2VuY29kZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5lbmNvZGUgfHwgZW5jb2RlO1xuXG4gIGlmICh1dGlscy5pc0Z1bmN0aW9uKG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHNlcmlhbGl6ZTogb3B0aW9uc1xuICAgIH07XG4gIH0gXG5cbiAgY29uc3Qgc2VyaWFsaXplRm4gPSBvcHRpb25zICYmIG9wdGlvbnMuc2VyaWFsaXplO1xuXG4gIGxldCBzZXJpYWxpemVkUGFyYW1zO1xuXG4gIGlmIChzZXJpYWxpemVGbikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBzZXJpYWxpemVGbihwYXJhbXMsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSB1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpID9cbiAgICAgIHBhcmFtcy50b1N0cmluZygpIDpcbiAgICAgIG5ldyBBeGlvc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMsIG9wdGlvbnMpLnRvU3RyaW5nKF9lbmNvZGUpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICBjb25zdCBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoXCIjXCIpO1xuXG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/buildURL.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
/*!*******************************************************!*\
!*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
\*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ combineURLs; }\n/* harmony export */ });\n\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tYmluZVVSTHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcz9kOTEzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLz9cXC8kLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/combineURLs.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/composeSignals.js":
/*!**********************************************************!*\
!*** ./node_modules/axios/lib/helpers/composeSignals.js ***!
\**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cancel/CanceledError.js */ \"./node_modules/axios/lib/cancel/CanceledError.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? err : new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"](`timeout ${timeout} of ms exceeded`, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].asap(unsubscribe);\n\n return signal;\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (composeSignals);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29tcG9zZVNpZ25hbHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUF1RDtBQUNSO0FBQ2Y7O0FBRWhDO0FBQ0EsU0FBUyxRQUFROztBQUVqQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsMkRBQVUsYUFBYSxnRUFBYTtBQUM1RTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0IsMkRBQVUsWUFBWSxTQUFTLGlCQUFpQixxRUFBb0I7QUFDdEYsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBOztBQUVBLFdBQVcsUUFBUTs7QUFFbkIsK0JBQStCLHNEQUFVOztBQUV6QztBQUNBO0FBQ0E7O0FBRUEsK0RBQWUsY0FBYyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21wb3NlU2lnbmFscy5qcz8zYzAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYW5jZWxlZEVycm9yIGZyb20gXCIuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qc1wiO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSBcIi4uL2NvcmUvQXhpb3NFcnJvci5qc1wiO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzLmpzJztcblxuY29uc3QgY29tcG9zZVNpZ25hbHMgPSAoc2lnbmFscywgdGltZW91dCkgPT4ge1xuICBjb25zdCB7bGVuZ3RofSA9IChzaWduYWxzID0gc2lnbmFscyA/IHNpZ25hbHMuZmlsdGVyKEJvb2xlYW4pIDogW10pO1xuXG4gIGlmICh0aW1lb3V0IHx8IGxlbmd0aCkge1xuICAgIGxldCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgbGV0IGFib3J0ZWQ7XG5cbiAgICBjb25zdCBvbmFib3J0ID0gZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgaWYgKCFhYm9ydGVkKSB7XG4gICAgICAgIGFib3J0ZWQgPSB0cnVlO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgICBjb25zdCBlcnIgPSByZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlYXNvbiA6IHRoaXMucmVhc29uO1xuICAgICAgICBjb250cm9sbGVyLmFib3J0KGVyciBpbnN0YW5jZW9mIEF4aW9zRXJyb3IgPyBlcnIgOiBuZXcgQ2FuY2VsZWRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHRpbWVyID0gdGltZW91dCAmJiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRpbWVyID0gbnVsbDtcbiAgICAgIG9uYWJvcnQobmV3IEF4aW9zRXJyb3IoYHRpbWVvdXQgJHt0aW1lb3V0fSBvZiBtcyBleGNlZWRlZGAsIEF4aW9zRXJyb3IuRVRJTUVET1VUKSlcbiAgICB9LCB0aW1lb3V0KVxuXG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSAoKSA9PiB7XG4gICAgICBpZiAoc2lnbmFscykge1xuICAgICAgICB0aW1lciAmJiBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB0aW1lciA9IG51bGw7XG4gICAgICAgIHNpZ25hbHMuZm9yRWFjaChzaWduYWwgPT4ge1xuICAgICAgICAgIHNpZ25hbC51bnN1YnNjcmliZSA/IHNpZ25hbC51bnN1YnNjcmliZShvbmFib3J0KSA6IHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgc2lnbmFscyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2lnbmFscy5mb3JFYWNoKChzaWduYWwpID0+IHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uYWJvcnQpKTtcblxuICAgIGNvbnN0IHtzaWduYWx9ID0gY29udHJvbGxlcjtcblxuICAgIHNpZ25hbC51bnN1YnNjcmliZSA9ICgpID0+IHV0aWxzLmFzYXAodW5zdWJzY3JpYmUpO1xuXG4gICAgcmV0dXJuIHNpZ25hbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlU2lnbmFscztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/composeSignals.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/cookies.js":
/*!***************************************************!*\
!*** ./node_modules/axios/lib/helpers/cookies.js ***!
\***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(path) && cookie.push('path=' + path);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBa0M7QUFDVTs7QUFFNUMsK0RBQWUsZ0ZBQThCOztBQUU3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLDBEQUFjOztBQUVwQixNQUFNLDBEQUFjOztBQUVwQixNQUFNLDBEQUFjOztBQUVwQjs7QUFFQSx1Q0FBdUM7QUFDdkMsS0FBSzs7QUFFTDtBQUNBLDBEQUEwRCx3QkFBd0I7QUFDbEY7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUcsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcz82ZjI3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dGlscyBmcm9tICcuLy4uL3V0aWxzLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/XG5cbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIHN1cHBvcnQgZG9jdW1lbnQuY29va2llXG4gIHtcbiAgICB3cml0ZShuYW1lLCB2YWx1ZSwgZXhwaXJlcywgcGF0aCwgZG9tYWluLCBzZWN1cmUpIHtcbiAgICAgIGNvbnN0IGNvb2tpZSA9IFtuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKV07XG5cbiAgICAgIHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpICYmIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcblxuICAgICAgdXRpbHMuaXNTdHJpbmcocGF0aCkgJiYgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuXG4gICAgICB1dGlscy5pc1N0cmluZyhkb21haW4pICYmIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XG5cbiAgICAgIHNlY3VyZSA9PT0gdHJ1ZSAmJiBjb29raWUucHVzaCgnc2VjdXJlJyk7XG5cbiAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xuICAgIH0sXG5cbiAgICByZWFkKG5hbWUpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgfSxcblxuICAgIHJlbW92ZShuYW1lKSB7XG4gICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgIH1cbiAgfVxuXG4gIDpcblxuICAvLyBOb24tc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gIHtcbiAgICB3cml0ZSgpIHt9LFxuICAgIHJlYWQoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LFxuICAgIHJlbW92ZSgpIHt9XG4gIH07XG5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/cookies.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/formDataToJSON.js":
/*!**********************************************************!*\
!*** ./node_modules/axios/lib/helpers/formDataToJSON.js ***!
\**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(target) ? target.length : name;\n\n if (isLast) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFormData(formData) && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(formData.entries)) {\n const obj = {};\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (formDataToJSON);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanMiLCJtYXBwaW5ncyI6Ijs7QUFBYTs7QUFFbUI7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywwREFBYztBQUN2QjtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFlBQVk7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSw0QkFBNEI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQix5REFBYTs7QUFFakM7QUFDQSxVQUFVLDREQUFnQjtBQUMxQjtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMEJBQTBCLDBEQUFjO0FBQ3hDO0FBQ0E7O0FBRUE7O0FBRUEsa0JBQWtCLHlEQUFhO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLDREQUFnQixjQUFjLDREQUFnQjtBQUNwRDs7QUFFQSxJQUFJLDhEQUFrQjtBQUN0QjtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBOztBQUVBLCtEQUFlLGNBQWMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvZm9ybURhdGFUb0pTT04uanM/ZDQ4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogSXQgdGFrZXMgYSBzdHJpbmcgbGlrZSBgZm9vW3hdW3ldW3pdYCBhbmQgcmV0dXJucyBhbiBhcnJheSBsaWtlIGBbJ2ZvbycsICd4JywgJ3knLCAneiddXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUHJvcFBhdGgobmFtZSkge1xuICAvLyBmb29beF1beV1bel1cbiAgLy8gZm9vLngueS56XG4gIC8vIGZvby14LXktelxuICAvLyBmb28geCB5IHpcbiAgcmV0dXJuIHV0aWxzLm1hdGNoQWxsKC9cXHcrfFxcWyhcXHcqKV0vZywgbmFtZSkubWFwKG1hdGNoID0+IHtcbiAgICByZXR1cm4gbWF0Y2hbMF0gPT09ICdbXScgPyAnJyA6IG1hdGNoWzFdIHx8IG1hdGNoWzBdO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFycmF5IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IGFyciAtIFRoZSBhcnJheSB0byBjb252ZXJ0IHRvIGFuIG9iamVjdC5cbiAqXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFuZCB2YWx1ZXMgYXMgdGhlIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheVRvT2JqZWN0KGFycikge1xuICBjb25zdCBvYmogPSB7fTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFycik7XG4gIGxldCBpO1xuICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aDtcbiAgbGV0IGtleTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICBvYmpba2V5XSA9IGFycltrZXldO1xuICB9XG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSBGb3JtRGF0YSBvYmplY3QgYW5kIHJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtRGF0YSBUaGUgRm9ybURhdGEgb2JqZWN0IHRvIGNvbnZlcnQgdG8gSlNPTi5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0PHN0cmluZywgYW55PiB8IG51bGx9IFRoZSBjb252ZXJ0ZWQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBmb3JtRGF0YVRvSlNPTihmb3JtRGF0YSkge1xuICBmdW5jdGlvbiBidWlsZFBhdGgocGF0aCwgdmFsdWUsIHRhcmdldCwgaW5kZXgpIHtcbiAgICBsZXQgbmFtZSA9IHBhdGhbaW5kZXgrK107XG5cbiAgICBpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgaXNOdW1lcmljS2V5ID0gTnVtYmVyLmlzRmluaXRlKCtuYW1lKTtcbiAgICBjb25zdCBpc0xhc3QgPSBpbmRleCA+PSBwYXRoLmxlbmd0aDtcbiAgICBuYW1lID0gIW5hbWUgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXQpID8gdGFyZ2V0Lmxlbmd0aCA6IG5hbWU7XG5cbiAgICBpZiAoaXNMYXN0KSB7XG4gICAgICBpZiAodXRpbHMuaGFzT3duUHJvcCh0YXJnZXQsIG5hbWUpKSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IFt0YXJnZXRbbmFtZV0sIHZhbHVlXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldFtuYW1lXSA9IHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzTnVtZXJpY0tleTtcbiAgICB9XG5cbiAgICBpZiAoIXRhcmdldFtuYW1lXSB8fCAhdXRpbHMuaXNPYmplY3QodGFyZ2V0W25hbWVdKSkge1xuICAgICAgdGFyZ2V0W25hbWVdID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYnVpbGRQYXRoKHBhdGgsIHZhbHVlLCB0YXJnZXRbbmFtZV0sIGluZGV4KTtcblxuICAgIGlmIChyZXN1bHQgJiYgdXRpbHMuaXNBcnJheSh0YXJnZXRbbmFtZV0pKSB7XG4gICAgICB0YXJnZXRbbmFtZV0gPSBhcnJheVRvT2JqZWN0KHRhcmdldFtuYW1lXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFpc051bWVyaWNLZXk7XG4gIH1cblxuICBpZiAodXRpbHMuaXNGb3JtRGF0YShmb3JtRGF0YSkgJiYgdXRpbHMuaXNGdW5jdGlvbihmb3JtRGF0YS5lbnRyaWVzKSkge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuXG4gICAgdXRpbHMuZm9yRWFjaEVudHJ5KGZvcm1EYXRhLCAobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgIGJ1aWxkUGF0aChwYXJzZVByb3BQYXRoKG5hbWUpLCB2YWx1ZSwgb2JqLCAwKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybURhdGFUb0pTT047XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/formDataToJSON.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
\*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isAbsoluteURL; }\n/* harmony export */ });\n\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzP2JiZmIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAbsoluteURL.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
\********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isAxiosError; }\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(payload) && (payload.isAxiosError === true);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWE7O0FBRXFCOztBQUVsQztBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZDtBQUNBLGFBQWEsU0FBUztBQUN0QjtBQUNlO0FBQ2YsU0FBUywwREFBYztBQUN2QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNBeGlvc0Vycm9yLmpzPzBiNWIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi8uLi91dGlscy5qcyc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isAxiosError.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
/*!***********************************************************!*\
!*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
\***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, _platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].origin),\n _platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].navigator && /(msie|trident)/i.test(_platform_index_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].navigator.userAgent)\n) : () => true);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luLmpzIiwibWFwcGluZ3MiOiI7O0FBQTRDOztBQUU1QywrREFBZSxnRkFBOEI7QUFDN0MscUJBQXFCLGlFQUFlOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFVBQVUsaUVBQWU7QUFDekIsRUFBRSxvRUFBa0IsMkJBQTJCLG9FQUFrQjtBQUNqRSxjQUFjLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcz8yMmEzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudiA/ICgob3JpZ2luLCBpc01TSUUpID0+ICh1cmwpID0+IHtcbiAgdXJsID0gbmV3IFVSTCh1cmwsIHBsYXRmb3JtLm9yaWdpbik7XG5cbiAgcmV0dXJuIChcbiAgICBvcmlnaW4ucHJvdG9jb2wgPT09IHVybC5wcm90b2NvbCAmJlxuICAgIG9yaWdpbi5ob3N0ID09PSB1cmwuaG9zdCAmJlxuICAgIChpc01TSUUgfHwgb3JpZ2luLnBvcnQgPT09IHVybC5wb3J0KVxuICApO1xufSkoXG4gIG5ldyBVUkwocGxhdGZvcm0ub3JpZ2luKSxcbiAgcGxhdGZvcm0ubmF2aWdhdG9yICYmIC8obXNpZXx0cmlkZW50KS9pLnRlc3QocGxhdGZvcm0ubmF2aWdhdG9yLnVzZXJBZ2VudClcbikgOiAoKSA9PiB0cnVlO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/isURLSameOrigin.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/null.js":
/*!************************************************!*\
!*** ./node_modules/axios/lib/helpers/null.js ***!
\************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n// eslint-disable-next-line strict\n/* harmony default export */ __webpack_exports__[\"default\"] = (null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbnVsbC5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7QUFDQSwrREFBZSxJQUFJLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL251bGwuanM/YzkwMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc3RyaWN0XG5leHBvcnQgZGVmYXVsdCBudWxsO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/null.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
/*!********************************************************!*\
!*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
\********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\n/* harmony default export */ __webpack_exports__[\"default\"] = (rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwibWFwcGluZ3MiOiI7O0FBQWE7O0FBRXFCOztBQUVsQztBQUNBO0FBQ0EsMEJBQTBCLDZEQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsK0RBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcz84YmRmIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHV0aWxzIGZyb20gJy4vLi4vdXRpbHMuanMnO1xuXG4vLyBSYXdBeGlvc0hlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG5jb25zdCBpZ25vcmVEdXBsaWNhdGVPZiA9IHV0aWxzLnRvT2JqZWN0U2V0KFtcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcbiAgJ2V4cGlyZXMnLCAnZnJvbScsICdob3N0JywgJ2lmLW1vZGlmaWVkLXNpbmNlJywgJ2lmLXVubW9kaWZpZWQtc2luY2UnLFxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXG5dKTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHJhd0hlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbmV4cG9ydCBkZWZhdWx0IHJhd0hlYWRlcnMgPT4ge1xuICBjb25zdCBwYXJzZWQgPSB7fTtcbiAgbGV0IGtleTtcbiAgbGV0IHZhbDtcbiAgbGV0IGk7XG5cbiAgcmF3SGVhZGVycyAmJiByYXdIZWFkZXJzLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IGxpbmUuc3Vic3RyaW5nKDAsIGkpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IGxpbmUuc3Vic3RyaW5nKGkgKyAxKS50cmltKCk7XG5cbiAgICBpZiAoIWtleSB8fCAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2Zba2V5XSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIGlmIChwYXJzZWRba2V5XSkge1xuICAgICAgICBwYXJzZWRba2V5XS5wdXNoKHZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IFt2YWxdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/parseHeaders.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/parseProtocol.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/helpers/parseProtocol.js ***!
\*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ parseProtocol; }\n/* harmony export */ });\n\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VQcm90b2NvbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRUU7QUFDZiwwQkFBMEIsS0FBSztBQUMvQjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZVByb3RvY29sLmpzPzhlYjkiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICBjb25zdCBtYXRjaCA9IC9eKFstK1xcd117MSwyNX0pKDo/XFwvXFwvfDopLy5leGVjKHVybCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/parseProtocol.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/progressEventReducer.js":
/*!****************************************************************!*\
!*** ./node_modules/axios/lib/helpers/progressEventReducer.js ***!
\****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ asyncDecorator: function() { return /* binding */ asyncDecorator; },\n/* harmony export */ progressEventDecorator: function() { return /* binding */ progressEventDecorator; },\n/* harmony export */ progressEventReducer: function() { return /* binding */ progressEventReducer; }\n/* harmony export */ });\n/* harmony import */ var _speedometer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./speedometer.js */ \"./node_modules/axios/lib/helpers/speedometer.js\");\n/* harmony import */ var _throttle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./throttle.js */ \"./node_modules/axios/lib/helpers/throttle.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n\n\n\n\nconst progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = (0,_speedometer_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(50, 250);\n\n return (0,_throttle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nconst progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nconst asyncDecorator = (fn) => (...args) => _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].asap(() => fn(...args));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcHJvZ3Jlc3NFdmVudFJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTJDO0FBQ047QUFDTDs7QUFFekI7QUFDUDtBQUNBLHVCQUF1QiwyREFBVzs7QUFFbEMsU0FBUyx3REFBUTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFTyw0Q0FBNEMsc0RBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Byb2dyZXNzRXZlbnRSZWR1Y2VyLmpzP2Y0N2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNwZWVkb21ldGVyIGZyb20gXCIuL3NwZWVkb21ldGVyLmpzXCI7XG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcIi4vdGhyb3R0bGUuanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNvbnN0IHByb2dyZXNzRXZlbnRSZWR1Y2VyID0gKGxpc3RlbmVyLCBpc0Rvd25sb2FkU3RyZWFtLCBmcmVxID0gMykgPT4ge1xuICBsZXQgYnl0ZXNOb3RpZmllZCA9IDA7XG4gIGNvbnN0IF9zcGVlZG9tZXRlciA9IHNwZWVkb21ldGVyKDUwLCAyNTApO1xuXG4gIHJldHVybiB0aHJvdHRsZShlID0+IHtcbiAgICBjb25zdCBsb2FkZWQgPSBlLmxvYWRlZDtcbiAgICBjb25zdCB0b3RhbCA9IGUubGVuZ3RoQ29tcHV0YWJsZSA/IGUudG90YWwgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvZ3Jlc3NCeXRlcyA9IGxvYWRlZCAtIGJ5dGVzTm90aWZpZWQ7XG4gICAgY29uc3QgcmF0ZSA9IF9zcGVlZG9tZXRlcihwcm9ncmVzc0J5dGVzKTtcbiAgICBjb25zdCBpblJhbmdlID0gbG9hZGVkIDw9IHRvdGFsO1xuXG4gICAgYnl0ZXNOb3RpZmllZCA9IGxvYWRlZDtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBsb2FkZWQsXG4gICAgICB0b3RhbCxcbiAgICAgIHByb2dyZXNzOiB0b3RhbCA/IChsb2FkZWQgLyB0b3RhbCkgOiB1bmRlZmluZWQsXG4gICAgICBieXRlczogcHJvZ3Jlc3NCeXRlcyxcbiAgICAgIHJhdGU6IHJhdGUgPyByYXRlIDogdW5kZWZpbmVkLFxuICAgICAgZXN0aW1hdGVkOiByYXRlICYmIHRvdGFsICYmIGluUmFuZ2UgPyAodG90YWwgLSBsb2FkZWQpIC8gcmF0ZSA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50OiBlLFxuICAgICAgbGVuZ3RoQ29tcHV0YWJsZTogdG90YWwgIT0gbnVsbCxcbiAgICAgIFtpc0Rvd25sb2FkU3RyZWFtID8gJ2Rvd25sb2FkJyA6ICd1cGxvYWQnXTogdHJ1ZVxuICAgIH07XG5cbiAgICBsaXN0ZW5lcihkYXRhKTtcbiAgfSwgZnJlcSk7XG59XG5cbmV4cG9ydCBjb25zdCBwcm9ncmVzc0V2ZW50RGVjb3JhdG9yID0gKHRvdGFsLCB0aHJvdHRsZWQpID0+IHtcbiAgY29uc3QgbGVuZ3RoQ29tcHV0YWJsZSA9IHRvdGFsICE9IG51bGw7XG5cbiAgcmV0dXJuIFsobG9hZGVkKSA9PiB0aHJvdHRsZWRbMF0oe1xuICAgIGxlbmd0aENvbXB1dGFibGUsXG4gICAgdG90YWwsXG4gICAgbG9hZGVkXG4gIH0pLCB0aHJvdHRsZWRbMV1dO1xufVxuXG5leHBvcnQgY29uc3QgYXN5bmNEZWNvcmF0b3IgPSAoZm4pID0+ICguLi5hcmdzKSA9PiB1dGlscy5hc2FwKCgpID0+IGZuKC4uLmFyZ3MpKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/progressEventReducer.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/resolveConfig.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/helpers/resolveConfig.js ***!
\*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isURLSameOrigin.js */ \"./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\n/* harmony import */ var _cookies_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cookies.js */ \"./node_modules/axios/lib/helpers/cookies.js\");\n/* harmony import */ var _core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/buildFullPath.js */ \"./node_modules/axios/lib/core/buildFullPath.js\");\n/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/mergeConfig.js */ \"./node_modules/axios/lib/core/mergeConfig.js\");\n/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ \"./node_modules/axios/lib/core/AxiosHeaders.js\");\n/* harmony import */ var _buildURL_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./buildURL.js */ \"./node_modules/axios/lib/helpers/buildURL.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((config) => {\n const newConfig = (0,_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].from(headers);\n\n newConfig.url = (0,_buildURL_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((0,_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isFormData(data)) {\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserEnv || _platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hasStandardBrowserEnv) {\n withXSRFToken && _utils_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && (0,_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && _cookies_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"].read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n});\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNEM7QUFDWjtBQUNtQjtBQUNoQjtBQUNrQjtBQUNKO0FBQ0U7QUFDZDs7QUFFckMsK0RBQWU7QUFDZixvQkFBb0IsZ0VBQVcsR0FBRzs7QUFFbEMsT0FBTyxvRUFBb0U7O0FBRTNFLGdDQUFnQyxrRUFBaUI7O0FBRWpELGtCQUFrQix3REFBUSxDQUFDLGtFQUFhOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsTUFBTSw0REFBZ0I7QUFDdEIsUUFBUSxnRkFBOEIsSUFBSSx5RkFBdUM7QUFDakYseUNBQXlDO0FBQ3pDLE1BQU07QUFDTjtBQUNBLGtFQUFrRTtBQUNsRSxnRkFBZ0Y7QUFDaEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxnRkFBOEI7QUFDcEMscUJBQXFCLDREQUFnQjs7QUFFckMscURBQXFELCtEQUFlO0FBQ3BFO0FBQ0EsNERBQTRELHdEQUFZOztBQUV4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcmVzb2x2ZUNvbmZpZy5qcz80OTZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwbGF0Zm9ybSBmcm9tIFwiLi4vcGxhdGZvcm0vaW5kZXguanNcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBpc1VSTFNhbWVPcmlnaW4gZnJvbSBcIi4vaXNVUkxTYW1lT3JpZ2luLmpzXCI7XG5pbXBvcnQgY29va2llcyBmcm9tIFwiLi9jb29raWVzLmpzXCI7XG5pbXBvcnQgYnVpbGRGdWxsUGF0aCBmcm9tIFwiLi4vY29yZS9idWlsZEZ1bGxQYXRoLmpzXCI7XG5pbXBvcnQgbWVyZ2VDb25maWcgZnJvbSBcIi4uL2NvcmUvbWVyZ2VDb25maWcuanNcIjtcbmltcG9ydCBBeGlvc0hlYWRlcnMgZnJvbSBcIi4uL2NvcmUvQXhpb3NIZWFkZXJzLmpzXCI7XG5pbXBvcnQgYnVpbGRVUkwgZnJvbSBcIi4vYnVpbGRVUkwuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGNvbmZpZykgPT4ge1xuICBjb25zdCBuZXdDb25maWcgPSBtZXJnZUNvbmZpZyh7fSwgY29uZmlnKTtcblxuICBsZXQge2RhdGEsIHdpdGhYU1JGVG9rZW4sIHhzcmZIZWFkZXJOYW1lLCB4c3JmQ29va2llTmFtZSwgaGVhZGVycywgYXV0aH0gPSBuZXdDb25maWc7XG5cbiAgbmV3Q29uZmlnLmhlYWRlcnMgPSBoZWFkZXJzID0gQXhpb3NIZWFkZXJzLmZyb20oaGVhZGVycyk7XG5cbiAgbmV3Q29uZmlnLnVybCA9IGJ1aWxkVVJMKGJ1aWxkRnVsbFBhdGgobmV3Q29uZmlnLmJhc2VVUkwsIG5ld0NvbmZpZy51cmwpLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcik7XG5cbiAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICBpZiAoYXV0aCkge1xuICAgIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0Jhc2ljICcgK1xuICAgICAgYnRvYSgoYXV0aC51c2VybmFtZSB8fCAnJykgKyAnOicgKyAoYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChhdXRoLnBhc3N3b3JkKSkgOiAnJykpXG4gICAgKTtcbiAgfVxuXG4gIGxldCBjb250ZW50VHlwZTtcblxuICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSkge1xuICAgIGlmIChwbGF0Zm9ybS5oYXNTdGFuZGFyZEJyb3dzZXJFbnYgfHwgcGxhdGZvcm0uaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52KSB7XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKHVuZGVmaW5lZCk7IC8vIExldCB0aGUgYnJvd3NlciBzZXQgaXRcbiAgICB9IGVsc2UgaWYgKChjb250ZW50VHlwZSA9IGhlYWRlcnMuZ2V0Q29udGVudFR5cGUoKSkgIT09IGZhbHNlKSB7XG4gICAgICAvLyBmaXggc2VtaWNvbG9uIGR1cGxpY2F0aW9uIGlzc3VlIGZvciBSZWFjdE5hdGl2ZSBGb3JtRGF0YSBpbXBsZW1lbnRhdGlvblxuICAgICAgY29uc3QgW3R5cGUsIC4uLnRva2Vuc10gPSBjb250ZW50VHlwZSA/IGNvbnRlbnRUeXBlLnNwbGl0KCc7JykubWFwKHRva2VuID0+IHRva2VuLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pIDogW107XG4gICAgICBoZWFkZXJzLnNldENvbnRlbnRUeXBlKFt0eXBlIHx8ICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgLi4udG9rZW5zXS5qb2luKCc7ICcpKTtcbiAgICB9XG4gIH1cblxuICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG5cbiAgaWYgKHBsYXRmb3JtLmhhc1N0YW5kYXJkQnJvd3NlckVudikge1xuICAgIHdpdGhYU1JGVG9rZW4gJiYgdXRpbHMuaXNGdW5jdGlvbih3aXRoWFNSRlRva2VuKSAmJiAod2l0aFhTUkZUb2tlbiA9IHdpdGhYU1JGVG9rZW4obmV3Q29uZmlnKSk7XG5cbiAgICBpZiAod2l0aFhTUkZUb2tlbiB8fCAod2l0aFhTUkZUb2tlbiAhPT0gZmFsc2UgJiYgaXNVUkxTYW1lT3JpZ2luKG5ld0NvbmZpZy51cmwpKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICBjb25zdCB4c3JmVmFsdWUgPSB4c3JmSGVhZGVyTmFtZSAmJiB4c3JmQ29va2llTmFtZSAmJiBjb29raWVzLnJlYWQoeHNyZkNvb2tpZU5hbWUpO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIGhlYWRlcnMuc2V0KHhzcmZIZWFkZXJOYW1lLCB4c3JmVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdDb25maWc7XG59XG5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/resolveConfig.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/speedometer.js":
/*!*******************************************************!*\
!*** ./node_modules/axios/lib/helpers/speedometer.js ***!
\*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (speedometer);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3BlZWRvbWV0ZXIuanMiLCJtYXBwaW5ncyI6IjtBQUFhOztBQUViO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSwrREFBZSxXQUFXLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwZWVkb21ldGVyLmpzPzk4ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkYXRhIG1heFJhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbc2FtcGxlc0NvdW50PSAxMF1cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbWluPSAxMDAwXVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBzcGVlZG9tZXRlcihzYW1wbGVzQ291bnQsIG1pbikge1xuICBzYW1wbGVzQ291bnQgPSBzYW1wbGVzQ291bnQgfHwgMTA7XG4gIGNvbnN0IGJ5dGVzID0gbmV3IEFycmF5KHNhbXBsZXNDb3VudCk7XG4gIGNvbnN0IHRpbWVzdGFtcHMgPSBuZXcgQXJyYXkoc2FtcGxlc0NvdW50KTtcbiAgbGV0IGhlYWQgPSAwO1xuICBsZXQgdGFpbCA9IDA7XG4gIGxldCBmaXJzdFNhbXBsZVRTO1xuXG4gIG1pbiA9IG1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogMTAwMDtcblxuICByZXR1cm4gZnVuY3Rpb24gcHVzaChjaHVua0xlbmd0aCkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSB0aW1lc3RhbXBzW3RhaWxdO1xuXG4gICAgaWYgKCFmaXJzdFNhbXBsZVRTKSB7XG4gICAgICBmaXJzdFNhbXBsZVRTID0gbm93O1xuICAgIH1cblxuICAgIGJ5dGVzW2hlYWRdID0gY2h1bmtMZW5ndGg7XG4gICAgdGltZXN0YW1wc1toZWFkXSA9IG5vdztcblxuICAgIGxldCBpID0gdGFpbDtcbiAgICBsZXQgYnl0ZXNDb3VudCA9IDA7XG5cbiAgICB3aGlsZSAoaSAhPT0gaGVhZCkge1xuICAgICAgYnl0ZXNDb3VudCArPSBieXRlc1tpKytdO1xuICAgICAgaSA9IGkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaGVhZCA9IChoZWFkICsgMSkgJSBzYW1wbGVzQ291bnQ7XG5cbiAgICBpZiAoaGVhZCA9PT0gdGFpbCkge1xuICAgICAgdGFpbCA9ICh0YWlsICsgMSkgJSBzYW1wbGVzQ291bnQ7XG4gICAgfVxuXG4gICAgaWYgKG5vdyAtIGZpcnN0U2FtcGxlVFMgPCBtaW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzZWQgPSBzdGFydGVkQXQgJiYgbm93IC0gc3RhcnRlZEF0O1xuXG4gICAgcmV0dXJuIHBhc3NlZCA/IE1hdGgucm91bmQoYnl0ZXNDb3VudCAqIDEwMDAgLyBwYXNzZWQpIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzcGVlZG9tZXRlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/speedometer.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/spread.js":
/*!**************************************************!*\
!*** ./node_modules/axios/lib/helpers/spread.js ***!
\**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ spread; }\n/* harmony export */ });\n\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvc3ByZWFkLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDZTtBQUNmO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanM/MmFkZSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ByZWFkKGNhbGxiYWNrKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/spread.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/throttle.js":
/*!****************************************************!*\
!*** ./node_modules/axios/lib/helpers/throttle.js ***!
\****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (throttle);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdGhyb3R0bGUuanMiLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckIsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSwrREFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3Rocm90dGxlLmpzPzc1NjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaHJvdHRsZSBkZWNvcmF0b3JcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcGFyYW0ge051bWJlcn0gZnJlcVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZuLCBmcmVxKSB7XG4gIGxldCB0aW1lc3RhbXAgPSAwO1xuICBsZXQgdGhyZXNob2xkID0gMTAwMCAvIGZyZXE7XG4gIGxldCBsYXN0QXJncztcbiAgbGV0IHRpbWVyO1xuXG4gIGNvbnN0IGludm9rZSA9IChhcmdzLCBub3cgPSBEYXRlLm5vdygpKSA9PiB7XG4gICAgdGltZXN0YW1wID0gbm93O1xuICAgIGxhc3RBcmdzID0gbnVsbDtcbiAgICBpZiAodGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICB0aW1lciA9IG51bGw7XG4gICAgfVxuICAgIGZuLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9XG5cbiAgY29uc3QgdGhyb3R0bGVkID0gKC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHBhc3NlZCA9IG5vdyAtIHRpbWVzdGFtcDtcbiAgICBpZiAoIHBhc3NlZCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIGludm9rZShhcmdzLCBub3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgICBpZiAoIXRpbWVyKSB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICAgIGludm9rZShsYXN0QXJncylcbiAgICAgICAgfSwgdGhyZXNob2xkIC0gcGFzc2VkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBmbHVzaCA9ICgpID0+IGxhc3RBcmdzICYmIGludm9rZShsYXN0QXJncyk7XG5cbiAgcmV0dXJuIFt0aHJvdHRsZWQsIGZsdXNoXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGhyb3R0bGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/throttle.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/toFormData.js":
/*!******************************************************!*\
!*** ./node_modules/axios/lib/helpers/toFormData.js ***!
\******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n/* harmony import */ var _platform_node_classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/node/classes/FormData.js */ \"./node_modules/axios/lib/helpers/null.js\");\n/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/next/dist/compiled/buffer/index.js\")[\"Buffer\"];\n\n\n\n\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\n\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isPlainObject(thing) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFlatObject(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (_platform_node_classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isSpecCompliantForm(formData);\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isBlob(value)) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]('Blob is not supported. Use a Buffer instead.');\n }\n\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArrayBuffer(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isArray(value) && isFlatArray(value)) ||\n ((_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFileList(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].endsWith(key, '[]')) && (arr = _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].forEach(value, function each(el, key) {\n const result = !(_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isUndefined(el) || el === null) && visitor.call(\n formData, el, _utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (toFormData);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdG9Gb3JtRGF0YS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFhOztBQUVtQjtBQUNlO0FBQy9DO0FBQ29FOztBQUVwRTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVMsK0RBQW1CLFdBQVcseURBQWE7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTLDBEQUFjO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUyx5REFBYTtBQUN0Qjs7QUFFQSxtQkFBbUIsOERBQWtCLENBQUMsaURBQUssSUFBSTtBQUMvQztBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxVQUFVO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0JBQWtCO0FBQzdCLFdBQVcsUUFBUTtBQUNuQixXQUFXLHFCQUFxQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sMERBQWM7QUFDckI7QUFDQTs7QUFFQTtBQUNBLDhCQUE4QiwwRUFBZ0I7O0FBRTlDO0FBQ0EsWUFBWSw4REFBa0I7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsWUFBWSw2REFBaUI7QUFDN0IsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIscUVBQXlCOztBQUVwRCxPQUFPLDREQUFnQjtBQUN2QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSx3REFBWTtBQUNwQjtBQUNBOztBQUVBLG9CQUFvQix3REFBWTtBQUNoQyxnQkFBZ0IsMkRBQVU7QUFDMUI7O0FBRUEsUUFBUSwrREFBbUIsV0FBVyw4REFBa0I7QUFDeEQseUVBQXlFLE1BQU07QUFDL0U7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEdBQUc7QUFDaEIsYUFBYSxlQUFlO0FBQzVCLGFBQWEsc0JBQXNCO0FBQ25DLFlBQVk7QUFDWjtBQUNBLGVBQWUsU0FBUztBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLDBEQUFjLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsU0FBUyx5REFBYTtBQUN0QixVQUFVLDREQUFnQixXQUFXLDBEQUFjLHVCQUF1Qix5REFBYTtBQUN2RjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLDZEQUFpQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsUUFBUSw2REFBaUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxJQUFJLHlEQUFhO0FBQ2pCLHVCQUF1Qiw2REFBaUI7QUFDeEMsc0JBQXNCLDBEQUFjO0FBQ3BDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQSxPQUFPLDBEQUFjO0FBQ3JCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSwrREFBZSxVQUFVLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RvRm9ybURhdGEuanM/NmUxYSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgQXhpb3NFcnJvciBmcm9tICcuLi9jb3JlL0F4aW9zRXJyb3IuanMnO1xuLy8gdGVtcG9yYXJ5IGhvdGZpeCB0byBhdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIHVudGlsIEF4aW9zVVJMU2VhcmNoUGFyYW1zIGlzIHJlZmFjdG9yZWRcbmltcG9ydCBQbGF0Zm9ybUZvcm1EYXRhIGZyb20gJy4uL3BsYXRmb3JtL25vZGUvY2xhc3Nlcy9Gb3JtRGF0YS5qcyc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gdGhpbmcgaXMgYSBhcnJheSBvciBqcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRoaW5nIC0gVGhlIG9iamVjdCBvciBhcnJheSB0byBiZSB2aXNpdGVkLlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1Zpc2l0YWJsZSh0aGluZykge1xuICByZXR1cm4gdXRpbHMuaXNQbGFpbk9iamVjdCh0aGluZykgfHwgdXRpbHMuaXNBcnJheSh0aGluZyk7XG59XG5cbi8qKlxuICogSXQgcmVtb3ZlcyB0aGUgYnJhY2tldHMgZnJvbSB0aGUgZW5kIG9mIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBrZXkgb2YgdGhlIHBhcmFtZXRlci5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUga2V5IHdpdGhvdXQgdGhlIGJyYWNrZXRzLlxuICovXG5mdW5jdGlvbiByZW1vdmVCcmFja2V0cyhrZXkpIHtcbiAgcmV0dXJuIHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgPyBrZXkuc2xpY2UoMCwgLTIpIDoga2V5O1xufVxuXG4vKipcbiAqIEl0IHRha2VzIGEgcGF0aCwgYSBrZXksIGFuZCBhIGJvb2xlYW4sIGFuZCByZXR1cm5zIGEgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCB0byB0aGUgY3VycmVudCBrZXkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSBvZiB0aGUgY3VycmVudCBvYmplY3QgYmVpbmcgaXRlcmF0ZWQgb3Zlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkb3RzIC0gSWYgdHJ1ZSwgdGhlIGtleSB3aWxsIGJlIHJlbmRlcmVkIHdpdGggZG90cyBpbnN0ZWFkIG9mIGJyYWNrZXRzLlxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwYXRoIHRvIHRoZSBjdXJyZW50IGtleS5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cykge1xuICBpZiAoIXBhdGgpIHJldHVybiBrZXk7XG4gIHJldHVybiBwYXRoLmNvbmNhdChrZXkpLm1hcChmdW5jdGlvbiBlYWNoKHRva2VuLCBpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgdG9rZW4gPSByZW1vdmVCcmFja2V0cyh0b2tlbik7XG4gICAgcmV0dXJuICFkb3RzICYmIGkgPyAnWycgKyB0b2tlbiArICddJyA6IHRva2VuO1xuICB9KS5qb2luKGRvdHMgPyAnLicgOiAnJyk7XG59XG5cbi8qKlxuICogSWYgdGhlIGFycmF5IGlzIGFuIGFycmF5IGFuZCBub25lIG9mIGl0cyBlbGVtZW50cyBhcmUgdmlzaXRhYmxlLCB0aGVuIGl0J3MgYSBmbGF0IGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gYXJyIC0gVGhlIGFycmF5IHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmxhdEFycmF5KGFycikge1xuICByZXR1cm4gdXRpbHMuaXNBcnJheShhcnIpICYmICFhcnIuc29tZShpc1Zpc2l0YWJsZSk7XG59XG5cbmNvbnN0IHByZWRpY2F0ZXMgPSB1dGlscy50b0ZsYXRPYmplY3QodXRpbHMsIHt9LCBudWxsLCBmdW5jdGlvbiBmaWx0ZXIocHJvcCkge1xuICByZXR1cm4gL15pc1tBLVpdLy50ZXN0KHByb3ApO1xufSk7XG5cbi8qKlxuICogQ29udmVydCBhIGRhdGEgb2JqZWN0IHRvIEZvcm1EYXRhXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcGFyYW0gez9PYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdGlvbnMudmlzaXRvcl1cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMubWV0YVRva2VucyA9IHRydWVdXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmRvdHMgPSBmYWxzZV1cbiAqIEBwYXJhbSB7P0Jvb2xlYW59IFtvcHRpb25zLmluZGV4ZXMgPSBmYWxzZV1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG4vKipcbiAqIEl0IGNvbnZlcnRzIGFuIG9iamVjdCBpbnRvIGEgRm9ybURhdGEgb2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3Q8YW55LCBhbnk+fSBvYmogLSBUaGUgb2JqZWN0IHRvIGNvbnZlcnQgdG8gZm9ybSBkYXRhLlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1EYXRhIC0gVGhlIEZvcm1EYXRhIG9iamVjdCB0byBhcHBlbmQgdG8uXG4gKiBAcGFyYW0ge09iamVjdDxzdHJpbmcsIGFueT59IG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndGFyZ2V0IG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgZm9ybURhdGEgPSBmb3JtRGF0YSB8fCBuZXcgKFBsYXRmb3JtRm9ybURhdGEgfHwgRm9ybURhdGEpKCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIG9wdGlvbnMgPSB1dGlscy50b0ZsYXRPYmplY3Qob3B0aW9ucywge1xuICAgIG1ldGFUb2tlbnM6IHRydWUsXG4gICAgZG90czogZmFsc2UsXG4gICAgaW5kZXhlczogZmFsc2VcbiAgfSwgZmFsc2UsIGZ1bmN0aW9uIGRlZmluZWQob3B0aW9uLCBzb3VyY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgICByZXR1cm4gIXV0aWxzLmlzVW5kZWZpbmVkKHNvdXJjZVtvcHRpb25dKTtcbiAgfSk7XG5cbiAgY29uc3QgbWV0YVRva2VucyA9IG9wdGlvbnMubWV0YVRva2VucztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIGNvbnN0IHZpc2l0b3IgPSBvcHRpb25zLnZpc2l0b3IgfHwgZGVmYXVsdFZpc2l0b3I7XG4gIGNvbnN0IGRvdHMgPSBvcHRpb25zLmRvdHM7XG4gIGNvbnN0IGluZGV4ZXMgPSBvcHRpb25zLmluZGV4ZXM7XG4gIGNvbnN0IF9CbG9iID0gb3B0aW9ucy5CbG9iIHx8IHR5cGVvZiBCbG9iICE9PSAndW5kZWZpbmVkJyAmJiBCbG9iO1xuICBjb25zdCB1c2VCbG9iID0gX0Jsb2IgJiYgdXRpbHMuaXNTcGVjQ29tcGxpYW50Rm9ybShmb3JtRGF0YSk7XG5cbiAgaWYgKCF1dGlscy5pc0Z1bmN0aW9uKHZpc2l0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmlzaXRvciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICcnO1xuXG4gICAgaWYgKHV0aWxzLmlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICghdXNlQmxvYiAmJiB1dGlscy5pc0Jsb2IodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignQmxvYiBpcyBub3Qgc3VwcG9ydGVkLiBVc2UgYSBCdWZmZXIgaW5zdGVhZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHwgdXRpbHMuaXNUeXBlZEFycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHVzZUJsb2IgJiYgdHlwZW9mIEJsb2IgPT09ICdmdW5jdGlvbicgPyBuZXcgQmxvYihbdmFsdWVdKSA6IEJ1ZmZlci5mcm9tKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGVmYXVsdCB2aXNpdG9yLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0ga2V5XG4gICAqIEBwYXJhbSB7QXJyYXk8U3RyaW5nfE51bWJlcj59IHBhdGhcbiAgICogQHRoaXMge0Zvcm1EYXRhfVxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gcmV0dXJuIHRydWUgdG8gdmlzaXQgdGhlIGVhY2ggcHJvcCBvZiB0aGUgdmFsdWUgcmVjdXJzaXZlbHlcbiAgICovXG4gIGZ1bmN0aW9uIGRlZmF1bHRWaXNpdG9yKHZhbHVlLCBrZXksIHBhdGgpIHtcbiAgICBsZXQgYXJyID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUgJiYgIXBhdGggJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ3t9JykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIGtleSA9IG1ldGFUb2tlbnMgPyBrZXkgOiBrZXkuc2xpY2UoMCwgLTIpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodXRpbHMuaXNBcnJheSh2YWx1ZSkgJiYgaXNGbGF0QXJyYXkodmFsdWUpKSB8fFxuICAgICAgICAoKHV0aWxzLmlzRmlsZUxpc3QodmFsdWUpIHx8IHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykpICYmIChhcnIgPSB1dGlscy50b0FycmF5KHZhbHVlKSlcbiAgICAgICAgKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAga2V5ID0gcmVtb3ZlQnJhY2tldHMoa2V5KTtcblxuICAgICAgICBhcnIuZm9yRWFjaChmdW5jdGlvbiBlYWNoKGVsLCBpbmRleCkge1xuICAgICAgICAgICEodXRpbHMuaXNVbmRlZmluZWQoZWwpIHx8IGVsID09PSBudWxsKSAmJiBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgICAgICAgICAgIGluZGV4ZXMgPT09IHRydWUgPyByZW5kZXJLZXkoW2tleV0sIGluZGV4LCBkb3RzKSA6IChpbmRleGVzID09PSBudWxsID8ga2V5IDoga2V5ICsgJ1tdJyksXG4gICAgICAgICAgICBjb252ZXJ0VmFsdWUoZWwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNWaXNpdGFibGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQocmVuZGVyS2V5KHBhdGgsIGtleSwgZG90cyksIGNvbnZlcnRWYWx1ZSh2YWx1ZSkpO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3RhY2sgPSBbXTtcblxuICBjb25zdCBleHBvc2VkSGVscGVycyA9IE9iamVjdC5hc3NpZ24ocHJlZGljYXRlcywge1xuICAgIGRlZmF1bHRWaXNpdG9yLFxuICAgIGNvbnZlcnRWYWx1ZSxcbiAgICBpc1Zpc2l0YWJsZVxuICB9KTtcblxuICBmdW5jdGlvbiBidWlsZCh2YWx1ZSwgcGF0aCkge1xuICAgIGlmICh1dGlscy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHJldHVybjtcblxuICAgIGlmIChzdGFjay5pbmRleE9mKHZhbHVlKSAhPT0gLTEpIHtcbiAgICAgIHRocm93IEVycm9yKCdDaXJjdWxhciByZWZlcmVuY2UgZGV0ZWN0ZWQgaW4gJyArIHBhdGguam9pbignLicpKTtcbiAgICB9XG5cbiAgICBzdGFjay5wdXNoKHZhbHVlKTtcblxuICAgIHV0aWxzLmZvckVhY2godmFsdWUsIGZ1bmN0aW9uIGVhY2goZWwsIGtleSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gISh1dGlscy5pc1VuZGVmaW5lZChlbCkgfHwgZWwgPT09IG51bGwpICYmIHZpc2l0b3IuY2FsbChcbiAgICAgICAgZm9ybURhdGEsIGVsLCB1dGlscy5pc1N0cmluZyhrZXkpID8ga2V5LnRyaW0oKSA6IGtleSwgcGF0aCwgZXhwb3NlZEhlbHBlcnNcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IHRydWUpIHtcbiAgICAgICAgYnVpbGQoZWwsIHBhdGggPyBwYXRoLmNvbmNhdChrZXkpIDogW2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3RhY2sucG9wKCk7XG4gIH1cblxuICBpZiAoIXV0aWxzLmlzT2JqZWN0KG9iaikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdkYXRhIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gIH1cblxuICBidWlsZChvYmopO1xuXG4gIHJldHVybiBmb3JtRGF0YTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9Gb3JtRGF0YTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/toFormData.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/toURLEncodedForm.js":
/*!************************************************************!*\
!*** ./node_modules/axios/lib/helpers/toURLEncodedForm.js ***!
\************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ toURLEncodedForm; }\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils.js */ \"./node_modules/axios/lib/utils.js\");\n/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ \"./node_modules/axios/lib/helpers/toFormData.js\");\n/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ \"./node_modules/axios/lib/platform/index.js\");\n\n\n\n\n\n\nfunction toURLEncodedForm(data, options) {\n return (0,_toFormData_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(data, new _platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isNode && _utils_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdG9VUkxFbmNvZGVkRm9ybS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWE7O0FBRW1CO0FBQ1M7QUFDRzs7QUFFN0I7QUFDZixTQUFTLDBEQUFVLFdBQVcsa0VBQWdCO0FBQzlDO0FBQ0EsVUFBVSxpRUFBZSxJQUFJLDBEQUFjO0FBQzNDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy90b1VSTEVuY29kZWRGb3JtLmpzPzZlYzMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHRvRm9ybURhdGEgZnJvbSAnLi90b0Zvcm1EYXRhLmpzJztcbmltcG9ydCBwbGF0Zm9ybSBmcm9tICcuLi9wbGF0Zm9ybS9pbmRleC5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvVVJMRW5jb2RlZEZvcm0oZGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gdG9Gb3JtRGF0YShkYXRhLCBuZXcgcGxhdGZvcm0uY2xhc3Nlcy5VUkxTZWFyY2hQYXJhbXMoKSwgT2JqZWN0LmFzc2lnbih7XG4gICAgdmlzaXRvcjogZnVuY3Rpb24odmFsdWUsIGtleSwgcGF0aCwgaGVscGVycykge1xuICAgICAgaWYgKHBsYXRmb3JtLmlzTm9kZSAmJiB1dGlscy5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoa2V5LCB2YWx1ZS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoZWxwZXJzLmRlZmF1bHRWaXNpdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9LCBvcHRpb25zKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/toURLEncodedForm.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/trackStream.js":
/*!*******************************************************!*\
!*** ./node_modules/axios/lib/helpers/trackStream.js ***!
\*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ readBytes: function() { return /* binding */ readBytes; },\n/* harmony export */ streamChunk: function() { return /* binding */ streamChunk; },\n/* harmony export */ trackStream: function() { return /* binding */ trackStream; }\n/* harmony export */ });\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nconst readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdHJhY2tTdHJlYW0uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGFBQWE7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdHJhY2tTdHJlYW0uanM/MDU4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCBjb25zdCBzdHJlYW1DaHVuayA9IGZ1bmN0aW9uKiAoY2h1bmssIGNodW5rU2l6ZSkge1xuICBsZXQgbGVuID0gY2h1bmsuYnl0ZUxlbmd0aDtcblxuICBpZiAoIWNodW5rU2l6ZSB8fCBsZW4gPCBjaHVua1NpemUpIHtcbiAgICB5aWVsZCBjaHVuaztcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcG9zID0gMDtcbiAgbGV0IGVuZDtcblxuICB3aGlsZSAocG9zIDwgbGVuKSB7XG4gICAgZW5kID0gcG9zICsgY2h1bmtTaXplO1xuICAgIHlpZWxkIGNodW5rLnNsaWNlKHBvcywgZW5kKTtcbiAgICBwb3MgPSBlbmQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlYWRCeXRlcyA9IGFzeW5jIGZ1bmN0aW9uKiAoaXRlcmFibGUsIGNodW5rU2l6ZSkge1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHJlYWRTdHJlYW0oaXRlcmFibGUpKSB7XG4gICAgeWllbGQqIHN0cmVhbUNodW5rKGNodW5rLCBjaHVua1NpemUpO1xuICB9XG59XG5cbmNvbnN0IHJlYWRTdHJlYW0gPSBhc3luYyBmdW5jdGlvbiogKHN0cmVhbSkge1xuICBpZiAoc3RyZWFtW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSkge1xuICAgIHlpZWxkKiBzdHJlYW07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpO1xuICB0cnkge1xuICAgIGZvciAoOzspIHtcbiAgICAgIGNvbnN0IHtkb25lLCB2YWx1ZX0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB5aWVsZCB2YWx1ZTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgcmVhZGVyLmNhbmNlbCgpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0cmFja1N0cmVhbSA9IChzdHJlYW0sIGNodW5rU2l6ZSwgb25Qcm9ncmVzcywgb25GaW5pc2gpID0+IHtcbiAgY29uc3QgaXRlcmF0b3IgPSByZWFkQnl0ZXMoc3RyZWFtLCBjaHVua1NpemUpO1xuXG4gIGxldCBieXRlcyA9IDA7XG4gIGxldCBkb25lO1xuICBsZXQgX29uRmluaXNoID0gKGUpID0+IHtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgb25GaW5pc2ggJiYgb25GaW5pc2goZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgYXN5bmMgcHVsbChjb250cm9sbGVyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7ZG9uZSwgdmFsdWV9ID0gYXdhaXQgaXRlcmF0b3IubmV4dCgpO1xuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICBfb25GaW5pc2goKTtcbiAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxlbiA9IHZhbHVlLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChvblByb2dyZXNzKSB7XG4gICAgICAgICAgbGV0IGxvYWRlZEJ5dGVzID0gYnl0ZXMgKz0gbGVuO1xuICAgICAgICAgIG9uUHJvZ3Jlc3MobG9hZGVkQnl0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShuZXcgVWludDhBcnJheSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIF9vbkZpbmlzaChlcnIpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfSxcbiAgICBjYW5jZWwocmVhc29uKSB7XG4gICAgICBfb25GaW5pc2gocmVhc29uKTtcbiAgICAgIHJldHVybiBpdGVyYXRvci5yZXR1cm4oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBoaWdoV2F0ZXJNYXJrOiAyXG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/trackStream.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/helpers/validator.js":
/*!*****************************************************!*\
!*** ./node_modules/axios/lib/helpers/validator.js ***!
\*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env/data.js */ \"./node_modules/axios/lib/env/data.js\");\n/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ \"./node_modules/axios/lib/core/AxiosError.js\");\n\n\n\n\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + _env_data_js__WEBPACK_IMPORTED_MODULE_0__.VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"](\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('options must be an object', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('option ' + opt + ' must be ' + result, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]('Unknown option ' + opt, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ERR_BAD_OPTION);\n }\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n assertOptions,\n validators\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwibWFwcGluZ3MiOiI7OztBQUFhOztBQUUwQjtBQUNROztBQUUvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG1CQUFtQjtBQUM5QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpREFBTztBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQVU7QUFDMUI7QUFDQSxRQUFRLDBFQUF5QjtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsS0FBSyw2QkFBNkIsZ0JBQWdCO0FBQ3RFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsVUFBVTtBQUNyQjtBQUNBLGFBQWE7QUFDYjs7QUFFQTtBQUNBO0FBQ0EsY0FBYywyREFBVSw4QkFBOEIsZ0ZBQStCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJEQUFVLHlDQUF5QyxnRkFBK0I7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQVUsMEJBQTBCLDBFQUF5QjtBQUM3RTtBQUNBO0FBQ0E7O0FBRUEsK0RBQWU7QUFDZjtBQUNBO0FBQ0EsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy92YWxpZGF0b3IuanM/MDA4YyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7VkVSU0lPTn0gZnJvbSAnLi4vZW52L2RhdGEuanMnO1xuaW1wb3J0IEF4aW9zRXJyb3IgZnJvbSAnLi4vY29yZS9BeGlvc0Vycm9yLmpzJztcblxuY29uc3QgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goKHR5cGUsIGkpID0+IHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbmNvbnN0IGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAqIFRyYW5zaXRpb25hbCBvcHRpb24gdmFsaWRhdG9yXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKlxuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuICh2YWx1ZSwgb3B0LCBvcHRzKSA9PiB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSksXG4gICAgICAgIEF4aW9zRXJyb3IuRVJSX0RFUFJFQ0FURURcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxuICAgICAgICAgIG9wdCxcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yID8gdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdHMpIDogdHJ1ZTtcbiAgfTtcbn07XG5cbnZhbGlkYXRvcnMuc3BlbGxpbmcgPSBmdW5jdGlvbiBzcGVsbGluZyhjb3JyZWN0U3BlbGxpbmcpIHtcbiAgcmV0dXJuICh2YWx1ZSwgb3B0KSA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oYCR7b3B0fSBpcyBsaWtlbHkgYSBtaXNzcGVsbGluZyBvZiAke2NvcnJlY3RTcGVsbGluZ31gKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxuICpcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnLCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFKTtcbiAgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgY29uc3Qgb3B0ID0ga2V5c1tpXTtcbiAgICBjb25zdCB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcbiAgICBpZiAodmFsaWRhdG9yKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCwgQXhpb3NFcnJvci5FUlJfQkFEX09QVElPTl9WQUxVRSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFsbG93VW5rbm93biAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT04pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnNcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/helpers/validator.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/browser/classes/Blob.js":
/*!*****************************************************************!*\
!*** ./node_modules/axios/lib/platform/browser/classes/Blob.js ***!
\*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (typeof Blob !== 'undefined' ? Blob : null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2Jyb3dzZXIvY2xhc3Nlcy9CbG9iLmpzIiwibWFwcGluZ3MiOiI7QUFBWTs7QUFFWiwrREFBZSx5Q0FBeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvQmxvYi5qcz9hNjVkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5leHBvcnQgZGVmYXVsdCB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgPyBCbG9iIDogbnVsbFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/browser/classes/Blob.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/browser/classes/FormData.js":
/*!*********************************************************************!*\
!*** ./node_modules/axios/lib/platform/browser/classes/FormData.js ***!
\*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (typeof FormData !== 'undefined' ? FormData : null);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2Jyb3dzZXIvY2xhc3Nlcy9Gb3JtRGF0YS5qcyIsIm1hcHBpbmdzIjoiO0FBQWE7O0FBRWIsK0RBQWUsaURBQWlELEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9wbGF0Zm9ybS9icm93c2VyL2NsYXNzZXMvRm9ybURhdGEuanM/OTZjYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgPyBGb3JtRGF0YSA6IG51bGw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/browser/classes/FormData.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js":
/*!****************************************************************************!*\
!*** ./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ***!
\****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../helpers/AxiosURLSearchParams.js */ \"./node_modules/axios/lib/helpers/AxiosURLSearchParams.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (typeof URLSearchParams !== 'undefined' ? URLSearchParams : _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2Jyb3dzZXIvY2xhc3Nlcy9VUkxTZWFyY2hQYXJhbXMuanMiLCJtYXBwaW5ncyI6Ijs7QUFBYTs7QUFFK0Q7QUFDNUUsK0RBQWUsMkRBQTJELHdFQUFvQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vYnJvd3Nlci9jbGFzc2VzL1VSTFNlYXJjaFBhcmFtcy5qcz9lMWRkIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IEF4aW9zVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvQXhpb3NVUkxTZWFyY2hQYXJhbXMuanMnO1xuZXhwb3J0IGRlZmF1bHQgdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgPyBVUkxTZWFyY2hQYXJhbXMgOiBBeGlvc1VSTFNlYXJjaFBhcmFtcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/browser/index.js":
/*!**********************************************************!*\
!*** ./node_modules/axios/lib/platform/browser/index.js ***!
\**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./classes/URLSearchParams.js */ \"./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js\");\n/* harmony import */ var _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classes/FormData.js */ \"./node_modules/axios/lib/platform/browser/classes/FormData.js\");\n/* harmony import */ var _classes_Blob_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./classes/Blob.js */ \"./node_modules/axios/lib/platform/browser/classes/Blob.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n isBrowser: true,\n classes: {\n URLSearchParams: _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n FormData: _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Blob: _classes_Blob_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2Jyb3dzZXIvaW5kZXguanMiLCJtYXBwaW5ncyI6Ijs7OztBQUEwRDtBQUNkO0FBQ1I7O0FBRXBDLCtEQUFlO0FBQ2Y7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQixZQUFZO0FBQ1osUUFBUTtBQUNSLEdBQUc7QUFDSDtBQUNBLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2Jyb3dzZXIvaW5kZXguanM/ZDcyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVVJMU2VhcmNoUGFyYW1zIGZyb20gJy4vY2xhc3Nlcy9VUkxTZWFyY2hQYXJhbXMuanMnXG5pbXBvcnQgRm9ybURhdGEgZnJvbSAnLi9jbGFzc2VzL0Zvcm1EYXRhLmpzJ1xuaW1wb3J0IEJsb2IgZnJvbSAnLi9jbGFzc2VzL0Jsb2IuanMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaXNCcm93c2VyOiB0cnVlLFxuICBjbGFzc2VzOiB7XG4gICAgVVJMU2VhcmNoUGFyYW1zLFxuICAgIEZvcm1EYXRhLFxuICAgIEJsb2JcbiAgfSxcbiAgcHJvdG9jb2xzOiBbJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZScsICdibG9iJywgJ3VybCcsICdkYXRhJ11cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/browser/index.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/common/utils.js":
/*!*********************************************************!*\
!*** ./node_modules/axios/lib/platform/common/utils.js ***!
\*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ hasBrowserEnv: function() { return /* binding */ hasBrowserEnv; },\n/* harmony export */ hasStandardBrowserEnv: function() { return /* binding */ hasStandardBrowserEnv; },\n/* harmony export */ hasStandardBrowserWebWorkerEnv: function() { return /* binding */ hasStandardBrowserWebWorkerEnv; },\n/* harmony export */ navigator: function() { return /* binding */ _navigator; },\n/* harmony export */ origin: function() { return /* binding */ origin; }\n/* harmony export */ });\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2NvbW1vbi91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQVFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvcGxhdGZvcm0vY29tbW9uL3V0aWxzLmpzPzgxMjIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaGFzQnJvd3NlckVudiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmNvbnN0IF9uYXZpZ2F0b3IgPSB0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0JyAmJiBuYXZpZ2F0b3IgfHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgaGFzU3RhbmRhcmRCcm93c2VyRW52ID0gaGFzQnJvd3NlckVudiAmJlxuICAoIV9uYXZpZ2F0b3IgfHwgWydSZWFjdE5hdGl2ZScsICdOYXRpdmVTY3JpcHQnLCAnTlMnXS5pbmRleE9mKF9uYXZpZ2F0b3IucHJvZHVjdCkgPCAwKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgd2ViV29ya2VyIGVudmlyb25tZW50XG4gKlxuICogQWx0aG91Z2ggdGhlIGBpc1N0YW5kYXJkQnJvd3NlckVudmAgbWV0aG9kIGluZGljYXRlcyB0aGF0XG4gKiBgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXJgLCB0aGUgV2ViV29ya2VyIHdpbGwgc3RpbGwgYmVcbiAqIGZpbHRlcmVkIG91dCBkdWUgdG8gaXRzIGp1ZGdtZW50IHN0YW5kYXJkXG4gKiBgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ2AuXG4gKiBUaGlzIGxlYWRzIHRvIGEgcHJvYmxlbSB3aGVuIGF4aW9zIHBvc3QgYEZvcm1EYXRhYCBpbiB3ZWJXb3JrZXJcbiAqL1xuY29uc3QgaGFzU3RhbmRhcmRCcm93c2VyV2ViV29ya2VyRW52ID0gKCgpID0+IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICAgc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlICYmXG4gICAgdHlwZW9mIHNlbGYuaW1wb3J0U2NyaXB0cyA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufSkoKTtcblxuY29uc3Qgb3JpZ2luID0gaGFzQnJvd3NlckVudiAmJiB3aW5kb3cubG9jYXRpb24uaHJlZiB8fCAnaHR0cDovL2xvY2FsaG9zdCc7XG5cbmV4cG9ydCB7XG4gIGhhc0Jyb3dzZXJFbnYsXG4gIGhhc1N0YW5kYXJkQnJvd3NlcldlYldvcmtlckVudixcbiAgaGFzU3RhbmRhcmRCcm93c2VyRW52LFxuICBfbmF2aWdhdG9yIGFzIG5hdmlnYXRvcixcbiAgb3JpZ2luXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/common/utils.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/platform/index.js":
/*!**************************************************!*\
!*** ./node_modules/axios/lib/platform/index.js ***!
\**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node/index.js */ \"./node_modules/axios/lib/platform/browser/index.js\");\n/* harmony import */ var _common_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common/utils.js */ \"./node_modules/axios/lib/platform/common/utils.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ..._common_utils_js__WEBPACK_IMPORTED_MODULE_0__,\n ..._node_index_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2luZGV4LmpzIiwibWFwcGluZ3MiOiI7OztBQUF1QztBQUNJOztBQUUzQywrREFBZTtBQUNmLEtBQUssNkNBQUs7QUFDVixLQUFLLHNEQUFRO0FBQ2IsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3BsYXRmb3JtL2luZGV4LmpzP2JlMzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBsYXRmb3JtIGZyb20gJy4vbm9kZS9pbmRleC5qcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2NvbW1vbi91dGlscy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLi4udXRpbHMsXG4gIC4uLnBsYXRmb3JtXG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/platform/index.js\n"));
/***/ }),
/***/ "./node_modules/axios/lib/utils.js":
/*!*****************************************!*\
!*** ./node_modules/axios/lib/utils.js ***!
\*****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bind.js */ \"./node_modules/axios/lib/helpers/bind.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n\n\n\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = (0,_helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcz8zNDAxIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGJpbmQgZnJvbSAnLi9oZWxwZXJzL2JpbmQuanMnO1xuXG4vLyB1dGlscyBpcyBhIGxpYnJhcnkgb2YgZ2VuZXJpYyBoZWxwZXIgZnVuY3Rpb25zIG5vbi1zcGVjaWZpYyB0byBheGlvc1xuXG5jb25zdCB7dG9TdHJpbmd9ID0gT2JqZWN0LnByb3RvdHlwZTtcbmNvbnN0IHtnZXRQcm90b3R5cGVPZn0gPSBPYmplY3Q7XG5cbmNvbnN0IGtpbmRPZiA9IChjYWNoZSA9PiB0aGluZyA9PiB7XG4gICAgY29uc3Qgc3RyID0gdG9TdHJpbmcuY2FsbCh0aGluZyk7XG4gICAgcmV0dXJuIGNhY2hlW3N0cl0gfHwgKGNhY2hlW3N0cl0gPSBzdHIuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkpO1xufSkoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cbmNvbnN0IGtpbmRPZlRlc3QgPSAodHlwZSkgPT4ge1xuICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKHRoaW5nKSA9PiBraW5kT2YodGhpbmcpID09PSB0eXBlXG59XG5cbmNvbnN0IHR5cGVPZlRlc3QgPSB0eXBlID0+IHRoaW5nID0+IHR5cGVvZiB0aGluZyA9PT0gdHlwZTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IHtpc0FycmF5fSA9IEFycmF5O1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzVW5kZWZpbmVkID0gdHlwZU9mVGVzdCgndW5kZWZpbmVkJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXG4gICAgJiYgaXNGdW5jdGlvbih2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIpICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQXJyYXlCdWZmZXIgPSBraW5kT2ZUZXN0KCdBcnJheUJ1ZmZlcicpO1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyh2YWwpIHtcbiAgbGV0IHJlc3VsdDtcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIHJlc3VsdCA9IEFycmF5QnVmZmVyLmlzVmlldyh2YWwpO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAoaXNBcnJheUJ1ZmZlcih2YWwuYnVmZmVyKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1N0cmluZyA9IHR5cGVPZlRlc3QoJ3N0cmluZycpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzRnVuY3Rpb24gPSB0eXBlT2ZUZXN0KCdmdW5jdGlvbicpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzTnVtYmVyID0gdHlwZU9mVGVzdCgnbnVtYmVyJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHsqfSB0aGluZyBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzT2JqZWN0ID0gKHRoaW5nKSA9PiB0aGluZyAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpbmcgPT09ICdvYmplY3QnO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQm9vbGVhblxuICpcbiAqIEBwYXJhbSB7Kn0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQm9vbGVhbiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzQm9vbGVhbiA9IHRoaW5nID0+IHRoaW5nID09PSB0cnVlIHx8IHRoaW5nID09PSBmYWxzZTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc1BsYWluT2JqZWN0ID0gKHZhbCkgPT4ge1xuICBpZiAoa2luZE9mKHZhbCkgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIChwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpID09PSBudWxsKSAmJiAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWwpICYmICEoU3ltYm9sLml0ZXJhdG9yIGluIHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0RhdGUgPSBraW5kT2ZUZXN0KCdEYXRlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0ZpbGUgPSBraW5kT2ZUZXN0KCdGaWxlJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXG4gKlxuICogQHBhcmFtIHsqfSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJsb2IsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Jsb2IgPSBraW5kT2ZUZXN0KCdCbG9iJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlTGlzdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNGaWxlTGlzdCA9IGtpbmRPZlRlc3QoJ0ZpbGVMaXN0Jyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNTdHJlYW0gPSAodmFsKSA9PiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0geyp9IHRoaW5nIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxuICovXG5jb25zdCBpc0Zvcm1EYXRhID0gKHRoaW5nKSA9PiB7XG4gIGxldCBraW5kO1xuICByZXR1cm4gdGhpbmcgJiYgKFxuICAgICh0eXBlb2YgRm9ybURhdGEgPT09ICdmdW5jdGlvbicgJiYgdGhpbmcgaW5zdGFuY2VvZiBGb3JtRGF0YSkgfHwgKFxuICAgICAgaXNGdW5jdGlvbih0aGluZy5hcHBlbmQpICYmIChcbiAgICAgICAgKGtpbmQgPSBraW5kT2YodGhpbmcpKSA9PT0gJ2Zvcm1kYXRhJyB8fFxuICAgICAgICAvLyBkZXRlY3QgZm9ybS1kYXRhIGluc3RhbmNlXG4gICAgICAgIChraW5kID09PSAnb2JqZWN0JyAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRvU3RyaW5nKSAmJiB0aGluZy50b1N0cmluZygpID09PSAnW29iamVjdCBGb3JtRGF0YV0nKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuY29uc3QgaXNVUkxTZWFyY2hQYXJhbXMgPSBraW5kT2ZUZXN0KCdVUkxTZWFyY2hQYXJhbXMnKTtcblxuY29uc3QgW2lzUmVhZGFibGVTdHJlYW0sIGlzUmVxdWVzdCwgaXNSZXNwb25zZSwgaXNIZWFkZXJzXSA9IFsnUmVhZGFibGVTdHJlYW0nLCAnUmVxdWVzdCcsICdSZXNwb25zZScsICdIZWFkZXJzJ10ubWFwKGtpbmRPZlRlc3QpO1xuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFN0cmluZyBmcmVlZCBvZiBleGNlc3Mgd2hpdGVzcGFjZVxuICovXG5jb25zdCB0cmltID0gKHN0cikgPT4gc3RyLnRyaW0gP1xuICBzdHIudHJpbSgpIDogc3RyLnJlcGxhY2UoL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nLCAnJyk7XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgYG9iamAgaXMgYW4gQXJyYXkgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXG4gKlxuICogSWYgJ29iaicgaXMgYW4gT2JqZWN0IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBvYmogVGhlIG9iamVjdCB0byBpdGVyYXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cbiAqXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFthbGxPd25LZXlzID0gZmFsc2VdXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4sIHthbGxPd25LZXlzID0gZmFsc2V9ID0ge30pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgaTtcbiAgbGV0IGw7XG5cbiAgLy8gRm9yY2UgYW4gYXJyYXkgaWYgbm90IGFscmVhZHkgc29tZXRoaW5nIGl0ZXJhYmxlXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAgIG9iaiA9IFtvYmpdO1xuICB9XG5cbiAgaWYgKGlzQXJyYXkob2JqKSkge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcbiAgICBmb3IgKGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGNvbnN0IGtleXMgPSBhbGxPd25LZXlzID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSA6IE9iamVjdC5rZXlzKG9iaik7XG4gICAgY29uc3QgbGVuID0ga2V5cy5sZW5ndGg7XG4gICAgbGV0IGtleTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZEtleShvYmosIGtleSkge1xuICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGxldCBpID0ga2V5cy5sZW5ndGg7XG4gIGxldCBfa2V5O1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIF9rZXkgPSBrZXlzW2ldO1xuICAgIGlmIChrZXkgPT09IF9rZXkudG9Mb3dlckNhc2UoKSkge1xuICAgICAgcmV0dXJuIF9rZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5jb25zdCBfZ2xvYmFsID0gKCgpID0+IHtcbiAgLyplc2xpbnQgbm8tdW5kZWY6MCovXG4gIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIGdsb2JhbFRoaXM7XG4gIHJldHVybiB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYgOiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiBnbG9iYWwpXG59KSgpO1xuXG5jb25zdCBpc0NvbnRleHREZWZpbmVkID0gKGNvbnRleHQpID0+ICFpc1VuZGVmaW5lZChjb250ZXh0KSAmJiBjb250ZXh0ICE9PSBfZ2xvYmFsO1xuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIGNvbnN0IHtjYXNlbGVzc30gPSBpc0NvbnRleHREZWZpbmVkKHRoaXMpICYmIHRoaXMgfHwge307XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBjb25zdCBhc3NpZ25WYWx1ZSA9ICh2YWwsIGtleSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldEtleSA9IGNhc2VsZXNzICYmIGZpbmRLZXkocmVzdWx0LCBrZXkpIHx8IGtleTtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRbdGFyZ2V0S2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IG1lcmdlKHJlc3VsdFt0YXJnZXRLZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKGxldCBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBhcmd1bWVudHNbaV0gJiYgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogQHBhcmFtIHtPYmplY3R9IHRoaXNBcmcgVGhlIG9iamVjdCB0byBiaW5kIGZ1bmN0aW9uIHRvXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBbYWxsT3duS2V5c11cbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcbiAqL1xuY29uc3QgZXh0ZW5kID0gKGEsIGIsIHRoaXNBcmcsIHthbGxPd25LZXlzfT0ge30pID0+IHtcbiAgZm9yRWFjaChiLCAodmFsLCBrZXkpID0+IHtcbiAgICBpZiAodGhpc0FyZyAmJiBpc0Z1bmN0aW9uKHZhbCkpIHtcbiAgICAgIGFba2V5XSA9IGJpbmQodmFsLCB0aGlzQXJnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYVtrZXldID0gdmFsO1xuICAgIH1cbiAgfSwge2FsbE93bktleXN9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmNvbnN0IHN0cmlwQk9NID0gKGNvbnRlbnQpID0+IHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtmdW5jdGlvbn0gc3VwZXJDb25zdHJ1Y3RvclxuICogQHBhcmFtIHtvYmplY3R9IFtwcm9wc11cbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVzY3JpcHRvcnNdXG4gKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmNvbnN0IGluaGVyaXRzID0gKGNvbnN0cnVjdG9yLCBzdXBlckNvbnN0cnVjdG9yLCBwcm9wcywgZGVzY3JpcHRvcnMpID0+IHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZSwgZGVzY3JpcHRvcnMpO1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLCAnc3VwZXInLCB7XG4gICAgdmFsdWU6IHN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlXG4gIH0pO1xuICBwcm9wcyAmJiBPYmplY3QuYXNzaWduKGNvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvcHMpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgb2JqZWN0IHdpdGggZGVlcCBwcm90b3R5cGUgY2hhaW4gdG8gYSBmbGF0IG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZU9iaiBzb3VyY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gW2Rlc3RPYmpdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufEJvb2xlYW59IFtmaWx0ZXJdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJvcEZpbHRlcl1cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5jb25zdCB0b0ZsYXRPYmplY3QgPSAoc291cmNlT2JqLCBkZXN0T2JqLCBmaWx0ZXIsIHByb3BGaWx0ZXIpID0+IHtcbiAgbGV0IHByb3BzO1xuICBsZXQgaTtcbiAgbGV0IHByb3A7XG4gIGNvbnN0IG1lcmdlZCA9IHt9O1xuXG4gIGRlc3RPYmogPSBkZXN0T2JqIHx8IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgaWYgKHNvdXJjZU9iaiA9PSBudWxsKSByZXR1cm4gZGVzdE9iajtcblxuICBkbyB7XG4gICAgcHJvcHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VPYmopO1xuICAgIGkgPSBwcm9wcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgIHByb3AgPSBwcm9wc1tpXTtcbiAgICAgIGlmICgoIXByb3BGaWx0ZXIgfHwgcHJvcEZpbHRlcihwcm9wLCBzb3VyY2VPYmosIGRlc3RPYmopKSAmJiAhbWVyZ2VkW3Byb3BdKSB7XG4gICAgICAgIGRlc3RPYmpbcHJvcF0gPSBzb3VyY2VPYmpbcHJvcF07XG4gICAgICAgIG1lcmdlZFtwcm9wXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZU9iaiA9IGZpbHRlciAhPT0gZmFsc2UgJiYgZ2V0UHJvdG90eXBlT2Yoc291cmNlT2JqKTtcbiAgfSB3aGlsZSAoc291cmNlT2JqICYmICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJiBzb3VyY2VPYmogIT09IE9iamVjdC5wcm90b3R5cGUpO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIHN0cmluZyBlbmRzIHdpdGggdGhlIGNoYXJhY3RlcnMgb2YgYSBzcGVjaWZpZWQgc3RyaW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHBhcmFtIHtTdHJpbmd9IHNlYXJjaFN0cmluZ1xuICogQHBhcmFtIHtOdW1iZXJ9IFtwb3NpdGlvbj0gMF1cbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3QgZW5kc1dpdGggPSAoc3RyLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKSA9PiB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiA+IHN0ci5sZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHN0ci5sZW5ndGg7XG4gIH1cbiAgcG9zaXRpb24gLT0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgbGFzdEluZGV4ID0gc3RyLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBwb3NpdGlvbik7XG4gIHJldHVybiBsYXN0SW5kZXggIT09IC0xICYmIGxhc3RJbmRleCA9PT0gcG9zaXRpb247XG59XG5cblxuLyoqXG4gKiBSZXR1cm5zIG5ldyBhcnJheSBmcm9tIGFycmF5IGxpa2Ugb2JqZWN0IG9yIG51bGwgaWYgZmFpbGVkXG4gKlxuICogQHBhcmFtIHsqfSBbdGhpbmddXG4gKlxuICogQHJldHVybnMgez9BcnJheX1cbiAqL1xuY29uc3QgdG9BcnJheSA9ICh0aGluZykgPT4ge1xuICBpZiAoIXRoaW5nKSByZXR1cm4gbnVsbDtcbiAgaWYgKGlzQXJyYXkodGhpbmcpKSByZXR1cm4gdGhpbmc7XG4gIGxldCBpID0gdGhpbmcubGVuZ3RoO1xuICBpZiAoIWlzTnVtYmVyKGkpKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgYXJyID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGFycltpXSA9IHRoaW5nW2ldO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8qKlxuICogQ2hlY2tpbmcgaWYgdGhlIFVpbnQ4QXJyYXkgZXhpc3RzIGFuZCBpZiBpdCBkb2VzLCBpdCByZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgdGhlXG4gKiB0aGluZyBwYXNzZWQgaW4gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheVxuICpcbiAqIEBwYXJhbSB7VHlwZWRBcnJheX1cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5jb25zdCBpc1R5cGVkQXJyYXkgPSAoVHlwZWRBcnJheSA9PiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiB0aGluZyA9PiB7XG4gICAgcmV0dXJuIFR5cGVkQXJyYXkgJiYgdGhpbmcgaW5zdGFuY2VvZiBUeXBlZEFycmF5O1xuICB9O1xufSkodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGdldFByb3RvdHlwZU9mKFVpbnQ4QXJyYXkpKTtcblxuLyoqXG4gKiBGb3IgZWFjaCBlbnRyeSBpbiB0aGUgb2JqZWN0LCBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBrZXkgYW5kIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0PGFueSwgYW55Pn0gb2JqIC0gVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGVudHJ5LlxuICpcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5jb25zdCBmb3JFYWNoRW50cnkgPSAob2JqLCBmbikgPT4ge1xuICBjb25zdCBnZW5lcmF0b3IgPSBvYmogJiYgb2JqW1N5bWJvbC5pdGVyYXRvcl07XG5cbiAgY29uc3QgaXRlcmF0b3IgPSBnZW5lcmF0b3IuY2FsbChvYmopO1xuXG4gIGxldCByZXN1bHQ7XG5cbiAgd2hpbGUgKChyZXN1bHQgPSBpdGVyYXRvci5uZXh0KCkpICYmICFyZXN1bHQuZG9uZSkge1xuICAgIGNvbnN0IHBhaXIgPSByZXN1bHQudmFsdWU7XG4gICAgZm4uY2FsbChvYmosIHBhaXJbMF0sIHBhaXJbMV0pO1xuICB9XG59XG5cbi8qKlxuICogSXQgdGFrZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGEgc3RyaW5nLCBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdGhlIG1hdGNoZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVnRXhwIC0gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCBhZ2FpbnN0LlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIFRoZSBzdHJpbmcgdG8gc2VhcmNoLlxuICpcbiAqIEByZXR1cm5zIHtBcnJheTxib29sZWFuPn1cbiAqL1xuY29uc3QgbWF0Y2hBbGwgPSAocmVnRXhwLCBzdHIpID0+IHtcbiAgbGV0IG1hdGNoZXM7XG4gIGNvbnN0IGFyciA9IFtdO1xuXG4gIHdoaWxlICgobWF0Y2hlcyA9IHJlZ0V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XG4gICAgYXJyLnB1c2gobWF0Y2hlcyk7XG4gIH1cblxuICByZXR1cm4gYXJyO1xufVxuXG4vKiBDaGVja2luZyBpZiB0aGUga2luZE9mVGVzdCBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBwYXNzZWQgYW4gSFRNTEZvcm1FbGVtZW50LiAqL1xuY29uc3QgaXNIVE1MRm9ybSA9IGtpbmRPZlRlc3QoJ0hUTUxGb3JtRWxlbWVudCcpO1xuXG5jb25zdCB0b0NhbWVsQ2FzZSA9IHN0ciA9PiB7XG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9cXHNdKFthLXpcXGRdKShcXHcqKS9nLFxuICAgIGZ1bmN0aW9uIHJlcGxhY2VyKG0sIHAxLCBwMikge1xuICAgICAgcmV0dXJuIHAxLnRvVXBwZXJDYXNlKCkgKyBwMjtcbiAgICB9XG4gICk7XG59O1xuXG4vKiBDcmVhdGluZyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBjaGVjayBpZiBhbiBvYmplY3QgaGFzIGEgcHJvcGVydHkuICovXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9ICgoe2hhc093blByb3BlcnR5fSkgPT4gKG9iaiwgcHJvcCkgPT4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKShPYmplY3QucHJvdG90eXBlKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyp9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgUmVnRXhwIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmNvbnN0IGlzUmVnRXhwID0ga2luZE9mVGVzdCgnUmVnRXhwJyk7XG5cbmNvbnN0IHJlZHVjZURlc2NyaXB0b3JzID0gKG9iaiwgcmVkdWNlcikgPT4ge1xuICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaik7XG4gIGNvbnN0IHJlZHVjZWREZXNjcmlwdG9ycyA9IHt9O1xuXG4gIGZvckVhY2goZGVzY3JpcHRvcnMsIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgbGV0IHJldDtcbiAgICBpZiAoKHJldCA9IHJlZHVjZXIoZGVzY3JpcHRvciwgbmFtZSwgb2JqKSkgIT09IGZhbHNlKSB7XG4gICAgICByZWR1Y2VkRGVzY3JpcHRvcnNbbmFtZV0gPSByZXQgfHwgZGVzY3JpcHRvcjtcbiAgICB9XG4gIH0pO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG9iaiwgcmVkdWNlZERlc2NyaXB0b3JzKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhbGwgbWV0aG9kcyByZWFkLW9ubHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqL1xuXG5jb25zdCBmcmVlemVNZXRob2RzID0gKG9iaikgPT4ge1xuICByZWR1Y2VEZXNjcmlwdG9ycyhvYmosIChkZXNjcmlwdG9yLCBuYW1lKSA9PiB7XG4gICAgLy8gc2tpcCByZXN0cmljdGVkIHByb3BzIGluIHN0cmljdCBtb2RlXG4gICAgaWYgKGlzRnVuY3Rpb24ob2JqKSAmJiBbJ2FyZ3VtZW50cycsICdjYWxsZXInLCAnY2FsbGVlJ10uaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IG9ialtuYW1lXTtcblxuICAgIGlmICghaXNGdW5jdGlvbih2YWx1ZSkpIHJldHVybjtcblxuICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCd3cml0YWJsZScgaW4gZGVzY3JpcHRvcikge1xuICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZGVzY3JpcHRvci5zZXQpIHtcbiAgICAgIGRlc2NyaXB0b3Iuc2V0ID0gKCkgPT4ge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2FuIG5vdCByZXdyaXRlIHJlYWQtb25seSBtZXRob2QgXFwnJyArIG5hbWUgKyAnXFwnJyk7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59XG5cbmNvbnN0IHRvT2JqZWN0U2V0ID0gKGFycmF5T3JTdHJpbmcsIGRlbGltaXRlcikgPT4ge1xuICBjb25zdCBvYmogPSB7fTtcblxuICBjb25zdCBkZWZpbmUgPSAoYXJyKSA9PiB7XG4gICAgYXJyLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgb2JqW3ZhbHVlXSA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBpc0FycmF5KGFycmF5T3JTdHJpbmcpID8gZGVmaW5lKGFycmF5T3JTdHJpbmcpIDogZGVmaW5lKFN0cmluZyhhcnJheU9yU3RyaW5nKS5zcGxpdChkZWxpbWl0ZXIpKTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5jb25zdCBub29wID0gKCkgPT4ge31cblxuY29uc3QgdG9GaW5pdGVOdW1iZXIgPSAodmFsdWUsIGRlZmF1bHRWYWx1ZSkgPT4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUgPSArdmFsdWUpID8gdmFsdWUgOiBkZWZhdWx0VmFsdWU7XG59XG5cbmNvbnN0IEFMUEhBID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J1xuXG5jb25zdCBESUdJVCA9ICcwMTIzNDU2Nzg5JztcblxuY29uc3QgQUxQSEFCRVQgPSB7XG4gIERJR0lULFxuICBBTFBIQSxcbiAgQUxQSEFfRElHSVQ6IEFMUEhBICsgQUxQSEEudG9VcHBlckNhc2UoKSArIERJR0lUXG59XG5cbmNvbnN0IGdlbmVyYXRlU3RyaW5nID0gKHNpemUgPSAxNiwgYWxwaGFiZXQgPSBBTFBIQUJFVC5BTFBIQV9ESUdJVCkgPT4ge1xuICBsZXQgc3RyID0gJyc7XG4gIGNvbnN0IHtsZW5ndGh9ID0gYWxwaGFiZXQ7XG4gIHdoaWxlIChzaXplLS0pIHtcbiAgICBzdHIgKz0gYWxwaGFiZXRbTWF0aC5yYW5kb20oKSAqIGxlbmd0aHwwXVxuICB9XG5cbiAgcmV0dXJuIHN0cjtcbn1cblxuLyoqXG4gKiBJZiB0aGUgdGhpbmcgaXMgYSBGb3JtRGF0YSBvYmplY3QsIHJldHVybiB0cnVlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdGhpbmcgLSBUaGUgdGhpbmcgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzU3BlY0NvbXBsaWFudEZvcm0odGhpbmcpIHtcbiAgcmV0dXJuICEhKHRoaW5nICYmIGlzRnVuY3Rpb24odGhpbmcuYXBwZW5kKSAmJiB0aGluZ1tTeW1ib2wudG9TdHJpbmdUYWddID09PSAnRm9ybURhdGEnICYmIHRoaW5nW1N5bWJvbC5pdGVyYXRvcl0pO1xufVxuXG5jb25zdCB0b0pTT05PYmplY3QgPSAob2JqKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IEFycmF5KDEwKTtcblxuICBjb25zdCB2aXNpdCA9IChzb3VyY2UsIGkpID0+IHtcblxuICAgIGlmIChpc09iamVjdChzb3VyY2UpKSB7XG4gICAgICBpZiAoc3RhY2suaW5kZXhPZihzb3VyY2UpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZighKCd0b0pTT04nIGluIHNvdXJjZSkpIHtcbiAgICAgICAgc3RhY2tbaV0gPSBzb3VyY2U7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGlzQXJyYXkoc291cmNlKSA/IFtdIDoge307XG5cbiAgICAgICAgZm9yRWFjaChzb3VyY2UsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVkdWNlZFZhbHVlID0gdmlzaXQodmFsdWUsIGkgKyAxKTtcbiAgICAgICAgICAhaXNVbmRlZmluZWQocmVkdWNlZFZhbHVlKSAmJiAodGFyZ2V0W2tleV0gPSByZWR1Y2VkVmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzdGFja1tpXSA9IHVuZGVmaW5lZDtcblxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICByZXR1cm4gdmlzaXQob2JqLCAwKTtcbn1cblxuY29uc3QgaXNBc3luY0ZuID0ga2luZE9mVGVzdCgnQXN5bmNGdW5jdGlvbicpO1xuXG5jb25zdCBpc1RoZW5hYmxlID0gKHRoaW5nKSA9PlxuICB0aGluZyAmJiAoaXNPYmplY3QodGhpbmcpIHx8IGlzRnVuY3Rpb24odGhpbmcpKSAmJiBpc0Z1bmN0aW9uKHRoaW5nLnRoZW4pICYmIGlzRnVuY3Rpb24odGhpbmcuY2F0Y2gpO1xuXG4vLyBvcmlnaW5hbCBjb2RlXG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGlnaXRhbEJyYWluSlMvQXhpb3NQcm9taXNlL2Jsb2IvMTZkZWFiMTM3MTBlYzA5Nzc5OTIyMTMxZjNmYTU5NTQzMjBmODNhYi9saWIvdXRpbHMuanMjTDExLUwzNFxuXG5jb25zdCBfc2V0SW1tZWRpYXRlID0gKChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQsIHBvc3RNZXNzYWdlU3VwcG9ydGVkKSA9PiB7XG4gIGlmIChzZXRJbW1lZGlhdGVTdXBwb3J0ZWQpIHtcbiAgICByZXR1cm4gc2V0SW1tZWRpYXRlO1xuICB9XG5cbiAgcmV0dXJuIHBvc3RNZXNzYWdlU3VwcG9ydGVkID8gKCh0b2tlbiwgY2FsbGJhY2tzKSA9PiB7XG4gICAgX2dsb2JhbC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCAoe3NvdXJjZSwgZGF0YX0pID0+IHtcbiAgICAgIGlmIChzb3VyY2UgPT09IF9nbG9iYWwgJiYgZGF0YSA9PT0gdG9rZW4pIHtcbiAgICAgICAgY2FsbGJhY2tzLmxlbmd0aCAmJiBjYWxsYmFja3Muc2hpZnQoKSgpO1xuICAgICAgfVxuICAgIH0sIGZhbHNlKTtcblxuICAgIHJldHVybiAoY2IpID0+IHtcbiAgICAgIGNhbGxiYWNrcy5wdXNoKGNiKTtcbiAgICAgIF9nbG9iYWwucG9zdE1lc3NhZ2UodG9rZW4sIFwiKlwiKTtcbiAgICB9XG4gIH0pKGBheGlvc0Ake01hdGgucmFuZG9tKCl9YCwgW10pIDogKGNiKSA9PiBzZXRUaW1lb3V0KGNiKTtcbn0pKFxuICB0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nLFxuICBpc0Z1bmN0aW9uKF9nbG9iYWwucG9zdE1lc3NhZ2UpXG4pO1xuXG5jb25zdCBhc2FwID0gdHlwZW9mIHF1ZXVlTWljcm90YXNrICE9PSAndW5kZWZpbmVkJyA/XG4gIHF1ZXVlTWljcm90YXNrLmJpbmQoX2dsb2JhbCkgOiAoIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLm5leHRUaWNrIHx8IF9zZXRJbW1lZGlhdGUpO1xuXG4vLyAqKioqKioqKioqKioqKioqKioqKipcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcixcbiAgaXNGb3JtRGF0YSxcbiAgaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nLFxuICBpc051bWJlcixcbiAgaXNCb29sZWFuLFxuICBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdCxcbiAgaXNSZWFkYWJsZVN0cmVhbSxcbiAgaXNSZXF1ZXN0LFxuICBpc1Jlc3BvbnNlLFxuICBpc0hlYWRlcnMsXG4gIGlzVW5kZWZpbmVkLFxuICBpc0RhdGUsXG4gIGlzRmlsZSxcbiAgaXNCbG9iLFxuICBpc1JlZ0V4cCxcbiAgaXNGdW5jdGlvbixcbiAgaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zLFxuICBpc1R5cGVkQXJyYXksXG4gIGlzRmlsZUxpc3QsXG4gIGZvckVhY2gsXG4gIG1lcmdlLFxuICBleHRlbmQsXG4gIHRyaW0sXG4gIHN0cmlwQk9NLFxuICBpbmhlcml0cyxcbiAgdG9GbGF0T2JqZWN0LFxuICBraW5kT2YsXG4gIGtpbmRPZlRlc3QsXG4gIGVuZHNXaXRoLFxuICB0b0FycmF5LFxuICBmb3JFYWNoRW50cnksXG4gIG1hdGNoQWxsLFxuICBpc0hUTUxGb3JtLFxuICBoYXNPd25Qcm9wZXJ0eSxcbiAgaGFzT3duUHJvcDogaGFzT3duUHJvcGVydHksIC8vIGFuIGFsaWFzIHRvIGF2b2lkIEVTTGludCBuby1wcm90b3R5cGUtYnVpbHRpbnMgZGV0ZWN0aW9uXG4gIHJlZHVjZURlc2NyaXB0b3JzLFxuICBmcmVlemVNZXRob2RzLFxuICB0b09iamVjdFNldCxcbiAgdG9DYW1lbENhc2UsXG4gIG5vb3AsXG4gIHRvRmluaXRlTnVtYmVyLFxuICBmaW5kS2V5LFxuICBnbG9iYWw6IF9nbG9iYWwsXG4gIGlzQ29udGV4dERlZmluZWQsXG4gIEFMUEhBQkVULFxuICBnZW5lcmF0ZVN0cmluZyxcbiAgaXNTcGVjQ29tcGxpYW50Rm9ybSxcbiAgdG9KU09OT2JqZWN0LFxuICBpc0FzeW5jRm4sXG4gIGlzVGhlbmFibGUsXG4gIHNldEltbWVkaWF0ZTogX3NldEltbWVkaWF0ZSxcbiAgYXNhcFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/axios/lib/utils.js\n"));
/***/ }),
/***/ "./node_modules/immer/dist/immer.mjs":
/*!*******************************************!*\
!*** ./node_modules/immer/dist/immer.mjs ***!
\*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Immer: function() { return /* binding */ Immer2; },\n/* harmony export */ applyPatches: function() { return /* binding */ applyPatches; },\n/* harmony export */ castDraft: function() { return /* binding */ castDraft; },\n/* harmony export */ castImmutable: function() { return /* binding */ castImmutable; },\n/* harmony export */ createDraft: function() { return /* binding */ createDraft; },\n/* harmony export */ current: function() { return /* binding */ current; },\n/* harmony export */ enableMapSet: function() { return /* binding */ enableMapSet; },\n/* harmony export */ enablePatches: function() { return /* binding */ enablePatches; },\n/* harmony export */ finishDraft: function() { return /* binding */ finishDraft; },\n/* harmony export */ freeze: function() { return /* binding */ freeze; },\n/* harmony export */ immerable: function() { return /* binding */ DRAFTABLE; },\n/* harmony export */ isDraft: function() { return /* binding */ isDraft; },\n/* harmony export */ isDraftable: function() { return /* binding */ isDraftable; },\n/* harmony export */ nothing: function() { return /* binding */ NOTHING; },\n/* harmony export */ original: function() { return /* binding */ original; },\n/* harmony export */ produce: function() { return /* binding */ produce; },\n/* harmony export */ produceWithPatches: function() { return /* binding */ produceWithPatches; },\n/* harmony export */ setAutoFreeze: function() { return /* binding */ setAutoFreeze; },\n/* harmony export */ setUseStrictShallowCopy: function() { return /* binding */ setUseStrictShallowCopy; }\n/* harmony export */ });\n// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = true ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : 0;\nfunction die(error, ...args) {\n if (true) {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if ( true && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if ( true && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if ( true && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (true) {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\n\n//# sourceMappingURL=immer.mjs.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW1tZXIvZGlzdC9pbW1lci5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxLQUFxQztBQUNsRDtBQUNBO0FBQ0EsOEJBQThCLE9BQU8sa0ZBQWtGLE9BQU87QUFDOUgsR0FBRztBQUNIO0FBQ0EsaUtBQWlLLE1BQU07QUFDdkssR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxNQUFNO0FBQ3BELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLE1BQU07QUFDckQ7QUFDQTtBQUNBO0FBQ0EsSUFBSSxDQUFFO0FBQ047QUFDQSxNQUFNLElBQXFDO0FBQzNDO0FBQ0E7QUFDQSwrQkFBK0IsSUFBSTtBQUNuQztBQUNBO0FBQ0Esa0NBQWtDLE1BQU07QUFDeEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxnQkFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLEtBQUs7QUFDcEIsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsVUFBVTtBQUN6QixpQkFBaUIsS0FBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnQkFB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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsc0JBQXNCO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFxQkU7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvaW1tZXIvZGlzdC9pbW1lci5tanM/OThkMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvdXRpbHMvZW52LnRzXG52YXIgTk9USElORyA9IFN5bWJvbC5mb3IoXCJpbW1lci1ub3RoaW5nXCIpO1xudmFyIERSQUZUQUJMRSA9IFN5bWJvbC5mb3IoXCJpbW1lci1kcmFmdGFibGVcIik7XG52YXIgRFJBRlRfU1RBVEUgPSBTeW1ib2wuZm9yKFwiaW1tZXItc3RhdGVcIik7XG5cbi8vIHNyYy91dGlscy9lcnJvcnMudHNcbnZhciBlcnJvcnMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBbXG4gIC8vIEFsbCBlcnJvciBjb2Rlcywgc3RhcnRpbmcgYnkgMDpcbiAgZnVuY3Rpb24ocGx1Z2luKSB7XG4gICAgcmV0dXJuIGBUaGUgcGx1Z2luIGZvciAnJHtwbHVnaW59JyBoYXMgbm90IGJlZW4gbG9hZGVkIGludG8gSW1tZXIuIFRvIGVuYWJsZSB0aGUgcGx1Z2luLCBpbXBvcnQgYW5kIGNhbGwgXFxgZW5hYmxlJHtwbHVnaW59KClcXGAgd2hlbiBpbml0aWFsaXppbmcgeW91ciBhcHBsaWNhdGlvbi5gO1xuICB9LFxuICBmdW5jdGlvbih0aGluZykge1xuICAgIHJldHVybiBgcHJvZHVjZSBjYW4gb25seSBiZSBjYWxsZWQgb24gdGhpbmdzIHRoYXQgYXJlIGRyYWZ0YWJsZTogcGxhaW4gb2JqZWN0cywgYXJyYXlzLCBNYXAsIFNldCBvciBjbGFzc2VzIHRoYXQgYXJlIG1hcmtlZCB3aXRoICdbaW1tZXJhYmxlXTogdHJ1ZScuIEdvdCAnJHt0aGluZ30nYDtcbiAgfSxcbiAgXCJUaGlzIG9iamVjdCBoYXMgYmVlbiBmcm96ZW4gYW5kIHNob3VsZCBub3QgYmUgbXV0YXRlZFwiLFxuICBmdW5jdGlvbihkYXRhKSB7XG4gICAgcmV0dXJuIFwiQ2Fubm90IHVzZSBhIHByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tlZC4gRGlkIHlvdSBwYXNzIGFuIG9iamVjdCBmcm9tIGluc2lkZSBhbiBpbW1lciBmdW5jdGlvbiB0byBhbiBhc3luYyBwcm9jZXNzPyBcIiArIGRhdGE7XG4gIH0sXG4gIFwiQW4gaW1tZXIgcHJvZHVjZXIgcmV0dXJuZWQgYSBuZXcgdmFsdWUgKmFuZCogbW9kaWZpZWQgaXRzIGRyYWZ0LiBFaXRoZXIgcmV0dXJuIGEgbmV3IHZhbHVlICpvciogbW9kaWZ5IHRoZSBkcmFmdC5cIixcbiAgXCJJbW1lciBmb3JiaWRzIGNpcmN1bGFyIHJlZmVyZW5jZXNcIixcbiAgXCJUaGUgZmlyc3Qgb3Igc2Vjb25kIGFyZ3VtZW50IHRvIGBwcm9kdWNlYCBtdXN0IGJlIGEgZnVuY3Rpb25cIixcbiAgXCJUaGUgdGhpcmQgYXJndW1lbnQgdG8gYHByb2R1Y2VgIG11c3QgYmUgYSBmdW5jdGlvbiBvciB1bmRlZmluZWRcIixcbiAgXCJGaXJzdCBhcmd1bWVudCB0byBgY3JlYXRlRHJhZnRgIG11c3QgYmUgYSBwbGFpbiBvYmplY3QsIGFuIGFycmF5LCBvciBhbiBpbW1lcmFibGUgb2JqZWN0XCIsXG4gIFwiRmlyc3QgYXJndW1lbnQgdG8gYGZpbmlzaERyYWZ0YCBtdXN0IGJlIGEgZHJhZnQgcmV0dXJuZWQgYnkgYGNyZWF0ZURyYWZ0YFwiLFxuICBmdW5jdGlvbih0aGluZykge1xuICAgIHJldHVybiBgJ2N1cnJlbnQnIGV4cGVjdHMgYSBkcmFmdCwgZ290OiAke3RoaW5nfWA7XG4gIH0sXG4gIFwiT2JqZWN0LmRlZmluZVByb3BlcnR5KCkgY2Fubm90IGJlIHVzZWQgb24gYW4gSW1tZXIgZHJhZnRcIixcbiAgXCJPYmplY3Quc2V0UHJvdG90eXBlT2YoKSBjYW5ub3QgYmUgdXNlZCBvbiBhbiBJbW1lciBkcmFmdFwiLFxuICBcIkltbWVyIG9ubHkgc3VwcG9ydHMgZGVsZXRpbmcgYXJyYXkgaW5kaWNlc1wiLFxuICBcIkltbWVyIG9ubHkgc3VwcG9ydHMgc2V0dGluZyBhcnJheSBpbmRpY2VzIGFuZCB0aGUgJ2xlbmd0aCcgcHJvcGVydHlcIixcbiAgZnVuY3Rpb24odGhpbmcpIHtcbiAgICByZXR1cm4gYCdvcmlnaW5hbCcgZXhwZWN0cyBhIGRyYWZ0LCBnb3Q6ICR7dGhpbmd9YDtcbiAgfVxuICAvLyBOb3RlOiBpZiBtb3JlIGVycm9ycyBhcmUgYWRkZWQsIHRoZSBlcnJvck9mZnNldCBpbiBQYXRjaGVzLnRzIHNob3VsZCBiZSBpbmNyZWFzZWRcbiAgLy8gU2VlIFBhdGNoZXMudHMgZm9yIGFkZGl0aW9uYWwgZXJyb3JzXG5dIDogW107XG5mdW5jdGlvbiBkaWUoZXJyb3IsIC4uLmFyZ3MpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnN0IGUgPSBlcnJvcnNbZXJyb3JdO1xuICAgIGNvbnN0IG1zZyA9IHR5cGVvZiBlID09PSBcImZ1bmN0aW9uXCIgPyBlLmFwcGx5KG51bGwsIGFyZ3MpIDogZTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFtJbW1lcl0gJHttc2d9YCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBbSW1tZXJdIG1pbmlmaWVkIGVycm9yIG5yOiAke2Vycm9yfS4gRnVsbCBlcnJvciBhdDogaHR0cHM6Ly9iaXQubHkvM2NYRUtXZmBcbiAgKTtcbn1cblxuLy8gc3JjL3V0aWxzL2NvbW1vbi50c1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuZnVuY3Rpb24gaXNEcmFmdCh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiAhIXZhbHVlW0RSQUZUX1NUQVRFXTtcbn1cbmZ1bmN0aW9uIGlzRHJhZnRhYmxlKHZhbHVlKSB7XG4gIGlmICghdmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgISF2YWx1ZVtEUkFGVEFCTEVdIHx8ICEhdmFsdWUuY29uc3RydWN0b3I/LltEUkFGVEFCTEVdIHx8IGlzTWFwKHZhbHVlKSB8fCBpc1NldCh2YWx1ZSk7XG59XG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IudG9TdHJpbmcoKTtcbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgQ3RvciA9IE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCBcImNvbnN0cnVjdG9yXCIpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICBpZiAoQ3RvciA9PT0gT2JqZWN0KVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gXCJmdW5jdGlvblwiICYmIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoQ3RvcikgPT09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5mdW5jdGlvbiBvcmlnaW5hbCh2YWx1ZSkge1xuICBpZiAoIWlzRHJhZnQodmFsdWUpKVxuICAgIGRpZSgxNSwgdmFsdWUpO1xuICByZXR1cm4gdmFsdWVbRFJBRlRfU1RBVEVdLmJhc2VfO1xufVxuZnVuY3Rpb24gZWFjaChvYmosIGl0ZXIpIHtcbiAgaWYgKGdldEFyY2h0eXBlKG9iaikgPT09IDAgLyogT2JqZWN0ICovKSB7XG4gICAgUmVmbGVjdC5vd25LZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpdGVyKGtleSwgb2JqW2tleV0sIG9iaik7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqLmZvckVhY2goKGVudHJ5LCBpbmRleCkgPT4gaXRlcihpbmRleCwgZW50cnksIG9iaikpO1xuICB9XG59XG5mdW5jdGlvbiBnZXRBcmNodHlwZSh0aGluZykge1xuICBjb25zdCBzdGF0ZSA9IHRoaW5nW0RSQUZUX1NUQVRFXTtcbiAgcmV0dXJuIHN0YXRlID8gc3RhdGUudHlwZV8gOiBBcnJheS5pc0FycmF5KHRoaW5nKSA/IDEgLyogQXJyYXkgKi8gOiBpc01hcCh0aGluZykgPyAyIC8qIE1hcCAqLyA6IGlzU2V0KHRoaW5nKSA/IDMgLyogU2V0ICovIDogMCAvKiBPYmplY3QgKi87XG59XG5mdW5jdGlvbiBoYXModGhpbmcsIHByb3ApIHtcbiAgcmV0dXJuIGdldEFyY2h0eXBlKHRoaW5nKSA9PT0gMiAvKiBNYXAgKi8gPyB0aGluZy5oYXMocHJvcCkgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpbmcsIHByb3ApO1xufVxuZnVuY3Rpb24gZ2V0KHRoaW5nLCBwcm9wKSB7XG4gIHJldHVybiBnZXRBcmNodHlwZSh0aGluZykgPT09IDIgLyogTWFwICovID8gdGhpbmcuZ2V0KHByb3ApIDogdGhpbmdbcHJvcF07XG59XG5mdW5jdGlvbiBzZXQodGhpbmcsIHByb3BPck9sZFZhbHVlLCB2YWx1ZSkge1xuICBjb25zdCB0ID0gZ2V0QXJjaHR5cGUodGhpbmcpO1xuICBpZiAodCA9PT0gMiAvKiBNYXAgKi8pXG4gICAgdGhpbmcuc2V0KHByb3BPck9sZFZhbHVlLCB2YWx1ZSk7XG4gIGVsc2UgaWYgKHQgPT09IDMgLyogU2V0ICovKSB7XG4gICAgdGhpbmcuYWRkKHZhbHVlKTtcbiAgfSBlbHNlXG4gICAgdGhpbmdbcHJvcE9yT2xkVmFsdWVdID0gdmFsdWU7XG59XG5mdW5jdGlvbiBpcyh4LCB5KSB7XG4gIGlmICh4ID09PSB5KSB7XG4gICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzTWFwKHRhcmdldCkge1xuICByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgTWFwO1xufVxuZnVuY3Rpb24gaXNTZXQodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBTZXQ7XG59XG5mdW5jdGlvbiBsYXRlc3Qoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmNvcHlfIHx8IHN0YXRlLmJhc2VfO1xufVxuZnVuY3Rpb24gc2hhbGxvd0NvcHkoYmFzZSwgc3RyaWN0KSB7XG4gIGlmIChpc01hcChiYXNlKSkge1xuICAgIHJldHVybiBuZXcgTWFwKGJhc2UpO1xuICB9XG4gIGlmIChpc1NldChiYXNlKSkge1xuICAgIHJldHVybiBuZXcgU2V0KGJhc2UpO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KGJhc2UpKVxuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiYXNlKTtcbiAgY29uc3QgaXNQbGFpbiA9IGlzUGxhaW5PYmplY3QoYmFzZSk7XG4gIGlmIChzdHJpY3QgPT09IHRydWUgfHwgc3RyaWN0ID09PSBcImNsYXNzX29ubHlcIiAmJiAhaXNQbGFpbikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYmFzZSk7XG4gICAgZGVsZXRlIGRlc2NyaXB0b3JzW0RSQUZUX1NUQVRFXTtcbiAgICBsZXQga2V5cyA9IFJlZmxlY3Qub3duS2V5cyhkZXNjcmlwdG9ycyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgY29uc3QgZGVzYyA9IGRlc2NyaXB0b3JzW2tleV07XG4gICAgICBpZiAoZGVzYy53cml0YWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVzYy53cml0YWJsZSA9IHRydWU7XG4gICAgICAgIGRlc2MuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChkZXNjLmdldCB8fCBkZXNjLnNldClcbiAgICAgICAgZGVzY3JpcHRvcnNba2V5XSA9IHtcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgLy8gY291bGQgbGl2ZSB3aXRoICEhZGVzYy5zZXQgYXMgd2VsbCBoZXJlLi4uXG4gICAgICAgICAgZW51bWVyYWJsZTogZGVzYy5lbnVtZXJhYmxlLFxuICAgICAgICAgIHZhbHVlOiBiYXNlW2tleV1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2YoYmFzZSksIGRlc2NyaXB0b3JzKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcm90byA9IGdldFByb3RvdHlwZU9mKGJhc2UpO1xuICAgIGlmIChwcm90byAhPT0gbnVsbCAmJiBpc1BsYWluKSB7XG4gICAgICByZXR1cm4geyAuLi5iYXNlIH07XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUocHJvdG8pO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9iaiwgYmFzZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGZyZWV6ZShvYmosIGRlZXAgPSBmYWxzZSkge1xuICBpZiAoaXNGcm96ZW4ob2JqKSB8fCBpc0RyYWZ0KG9iaikgfHwgIWlzRHJhZnRhYmxlKG9iaikpXG4gICAgcmV0dXJuIG9iajtcbiAgaWYgKGdldEFyY2h0eXBlKG9iaikgPiAxKSB7XG4gICAgb2JqLnNldCA9IG9iai5hZGQgPSBvYmouY2xlYXIgPSBvYmouZGVsZXRlID0gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zO1xuICB9XG4gIE9iamVjdC5mcmVlemUob2JqKTtcbiAgaWYgKGRlZXApXG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IGZyZWV6ZSh2YWx1ZSwgdHJ1ZSkpO1xuICByZXR1cm4gb2JqO1xufVxuZnVuY3Rpb24gZG9udE11dGF0ZUZyb3plbkNvbGxlY3Rpb25zKCkge1xuICBkaWUoMik7XG59XG5mdW5jdGlvbiBpc0Zyb3plbihvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5pc0Zyb3plbihvYmopO1xufVxuXG4vLyBzcmMvdXRpbHMvcGx1Z2lucy50c1xudmFyIHBsdWdpbnMgPSB7fTtcbmZ1bmN0aW9uIGdldFBsdWdpbihwbHVnaW5LZXkpIHtcbiAgY29uc3QgcGx1Z2luID0gcGx1Z2luc1twbHVnaW5LZXldO1xuICBpZiAoIXBsdWdpbikge1xuICAgIGRpZSgwLCBwbHVnaW5LZXkpO1xuICB9XG4gIHJldHVybiBwbHVnaW47XG59XG5mdW5jdGlvbiBsb2FkUGx1Z2luKHBsdWdpbktleSwgaW1wbGVtZW50YXRpb24pIHtcbiAgaWYgKCFwbHVnaW5zW3BsdWdpbktleV0pXG4gICAgcGx1Z2luc1twbHVnaW5LZXldID0gaW1wbGVtZW50YXRpb247XG59XG5cbi8vIHNyYy9jb3JlL3Njb3BlLnRzXG52YXIgY3VycmVudFNjb3BlO1xuZnVuY3Rpb24gZ2V0Q3VycmVudFNjb3BlKCkge1xuICByZXR1cm4gY3VycmVudFNjb3BlO1xufVxuZnVuY3Rpb24gY3JlYXRlU2NvcGUocGFyZW50XywgaW1tZXJfKSB7XG4gIHJldHVybiB7XG4gICAgZHJhZnRzXzogW10sXG4gICAgcGFyZW50XyxcbiAgICBpbW1lcl8sXG4gICAgLy8gV2hlbmV2ZXIgdGhlIG1vZGlmaWVkIGRyYWZ0IGNvbnRhaW5zIGEgZHJhZnQgZnJvbSBhbm90aGVyIHNjb3BlLCB3ZVxuICAgIC8vIG5lZWQgdG8gcHJldmVudCBhdXRvLWZyZWV6aW5nIHNvIHRoZSB1bm93bmVkIGRyYWZ0IGNhbiBiZSBmaW5hbGl6ZWQuXG4gICAgY2FuQXV0b0ZyZWV6ZV86IHRydWUsXG4gICAgdW5maW5hbGl6ZWREcmFmdHNfOiAwXG4gIH07XG59XG5mdW5jdGlvbiB1c2VQYXRjaGVzSW5TY29wZShzY29wZSwgcGF0Y2hMaXN0ZW5lcikge1xuICBpZiAocGF0Y2hMaXN0ZW5lcikge1xuICAgIGdldFBsdWdpbihcIlBhdGNoZXNcIik7XG4gICAgc2NvcGUucGF0Y2hlc18gPSBbXTtcbiAgICBzY29wZS5pbnZlcnNlUGF0Y2hlc18gPSBbXTtcbiAgICBzY29wZS5wYXRjaExpc3RlbmVyXyA9IHBhdGNoTGlzdGVuZXI7XG4gIH1cbn1cbmZ1bmN0aW9uIHJldm9rZVNjb3BlKHNjb3BlKSB7XG4gIGxlYXZlU2NvcGUoc2NvcGUpO1xuICBzY29wZS5kcmFmdHNfLmZvckVhY2gocmV2b2tlRHJhZnQpO1xuICBzY29wZS5kcmFmdHNfID0gbnVsbDtcbn1cbmZ1bmN0aW9uIGxlYXZlU2NvcGUoc2NvcGUpIHtcbiAgaWYgKHNjb3BlID09PSBjdXJyZW50U2NvcGUpIHtcbiAgICBjdXJyZW50U2NvcGUgPSBzY29wZS5wYXJlbnRfO1xuICB9XG59XG5mdW5jdGlvbiBlbnRlclNjb3BlKGltbWVyMikge1xuICByZXR1cm4gY3VycmVudFNjb3BlID0gY3JlYXRlU2NvcGUoY3VycmVudFNjb3BlLCBpbW1lcjIpO1xufVxuZnVuY3Rpb24gcmV2b2tlRHJhZnQoZHJhZnQpIHtcbiAgY29uc3Qgc3RhdGUgPSBkcmFmdFtEUkFGVF9TVEFURV07XG4gIGlmIChzdGF0ZS50eXBlXyA9PT0gMCAvKiBPYmplY3QgKi8gfHwgc3RhdGUudHlwZV8gPT09IDEgLyogQXJyYXkgKi8pXG4gICAgc3RhdGUucmV2b2tlXygpO1xuICBlbHNlXG4gICAgc3RhdGUucmV2b2tlZF8gPSB0cnVlO1xufVxuXG4vLyBzcmMvY29yZS9maW5hbGl6ZS50c1xuZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNjb3BlKSB7XG4gIHNjb3BlLnVuZmluYWxpemVkRHJhZnRzXyA9IHNjb3BlLmRyYWZ0c18ubGVuZ3RoO1xuICBjb25zdCBiYXNlRHJhZnQgPSBzY29wZS5kcmFmdHNfWzBdO1xuICBjb25zdCBpc1JlcGxhY2VkID0gcmVzdWx0ICE9PSB2b2lkIDAgJiYgcmVzdWx0ICE9PSBiYXNlRHJhZnQ7XG4gIGlmIChpc1JlcGxhY2VkKSB7XG4gICAgaWYgKGJhc2VEcmFmdFtEUkFGVF9TVEFURV0ubW9kaWZpZWRfKSB7XG4gICAgICByZXZva2VTY29wZShzY29wZSk7XG4gICAgICBkaWUoNCk7XG4gICAgfVxuICAgIGlmIChpc0RyYWZ0YWJsZShyZXN1bHQpKSB7XG4gICAgICByZXN1bHQgPSBmaW5hbGl6ZShzY29wZSwgcmVzdWx0KTtcbiAgICAgIGlmICghc2NvcGUucGFyZW50XylcbiAgICAgICAgbWF5YmVGcmVlemUoc2NvcGUsIHJlc3VsdCk7XG4gICAgfVxuICAgIGlmIChzY29wZS5wYXRjaGVzXykge1xuICAgICAgZ2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oXG4gICAgICAgIGJhc2VEcmFmdFtEUkFGVF9TVEFURV0uYmFzZV8sXG4gICAgICAgIHJlc3VsdCxcbiAgICAgICAgc2NvcGUucGF0Y2hlc18sXG4gICAgICAgIHNjb3BlLmludmVyc2VQYXRjaGVzX1xuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gZmluYWxpemUoc2NvcGUsIGJhc2VEcmFmdCwgW10pO1xuICB9XG4gIHJldm9rZVNjb3BlKHNjb3BlKTtcbiAgaWYgKHNjb3BlLnBhdGNoZXNfKSB7XG4gICAgc2NvcGUucGF0Y2hMaXN0ZW5lcl8oc2NvcGUucGF0Y2hlc18sIHNjb3BlLmludmVyc2VQYXRjaGVzXyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdCAhPT0gTk9USElORyA/IHJlc3VsdCA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIGZpbmFsaXplKHJvb3RTY29wZSwgdmFsdWUsIHBhdGgpIHtcbiAgaWYgKGlzRnJvemVuKHZhbHVlKSlcbiAgICByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IHN0YXRlID0gdmFsdWVbRFJBRlRfU1RBVEVdO1xuICBpZiAoIXN0YXRlKSB7XG4gICAgZWFjaChcbiAgICAgIHZhbHVlLFxuICAgICAgKGtleSwgY2hpbGRWYWx1ZSkgPT4gZmluYWxpemVQcm9wZXJ0eShyb290U2NvcGUsIHN0YXRlLCB2YWx1ZSwga2V5LCBjaGlsZFZhbHVlLCBwYXRoKVxuICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChzdGF0ZS5zY29wZV8gIT09IHJvb3RTY29wZSlcbiAgICByZXR1cm4gdmFsdWU7XG4gIGlmICghc3RhdGUubW9kaWZpZWRfKSB7XG4gICAgbWF5YmVGcmVlemUocm9vdFNjb3BlLCBzdGF0ZS5iYXNlXywgdHJ1ZSk7XG4gICAgcmV0dXJuIHN0YXRlLmJhc2VfO1xuICB9XG4gIGlmICghc3RhdGUuZmluYWxpemVkXykge1xuICAgIHN0YXRlLmZpbmFsaXplZF8gPSB0cnVlO1xuICAgIHN0YXRlLnNjb3BlXy51bmZpbmFsaXplZERyYWZ0c18tLTtcbiAgICBjb25zdCByZXN1bHQgPSBzdGF0ZS5jb3B5XztcbiAgICBsZXQgcmVzdWx0RWFjaCA9IHJlc3VsdDtcbiAgICBsZXQgaXNTZXQyID0gZmFsc2U7XG4gICAgaWYgKHN0YXRlLnR5cGVfID09PSAzIC8qIFNldCAqLykge1xuICAgICAgcmVzdWx0RWFjaCA9IG5ldyBTZXQocmVzdWx0KTtcbiAgICAgIHJlc3VsdC5jbGVhcigpO1xuICAgICAgaXNTZXQyID0gdHJ1ZTtcbiAgICB9XG4gICAgZWFjaChcbiAgICAgIHJlc3VsdEVhY2gsXG4gICAgICAoa2V5LCBjaGlsZFZhbHVlKSA9PiBmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgc3RhdGUsIHJlc3VsdCwga2V5LCBjaGlsZFZhbHVlLCBwYXRoLCBpc1NldDIpXG4gICAgKTtcbiAgICBtYXliZUZyZWV6ZShyb290U2NvcGUsIHJlc3VsdCwgZmFsc2UpO1xuICAgIGlmIChwYXRoICYmIHJvb3RTY29wZS5wYXRjaGVzXykge1xuICAgICAgZ2V0UGx1Z2luKFwiUGF0Y2hlc1wiKS5nZW5lcmF0ZVBhdGNoZXNfKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcm9vdFNjb3BlLnBhdGNoZXNfLFxuICAgICAgICByb290U2NvcGUuaW52ZXJzZVBhdGNoZXNfXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhdGUuY29weV87XG59XG5mdW5jdGlvbiBmaW5hbGl6ZVByb3BlcnR5KHJvb3RTY29wZSwgcGFyZW50U3RhdGUsIHRhcmdldE9iamVjdCwgcHJvcCwgY2hpbGRWYWx1ZSwgcm9vdFBhdGgsIHRhcmdldElzU2V0KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgJiYgY2hpbGRWYWx1ZSA9PT0gdGFyZ2V0T2JqZWN0KVxuICAgIGRpZSg1KTtcbiAgaWYgKGlzRHJhZnQoY2hpbGRWYWx1ZSkpIHtcbiAgICBjb25zdCBwYXRoID0gcm9vdFBhdGggJiYgcGFyZW50U3RhdGUgJiYgcGFyZW50U3RhdGUudHlwZV8gIT09IDMgLyogU2V0ICovICYmIC8vIFNldCBvYmplY3RzIGFyZSBhdG9taWMgc2luY2UgdGhleSBoYXZlIG5vIGtleXMuXG4gICAgIWhhcyhwYXJlbnRTdGF0ZS5hc3NpZ25lZF8sIHByb3ApID8gcm9vdFBhdGguY29uY2F0KHByb3ApIDogdm9pZCAwO1xuICAgIGNvbnN0IHJlcyA9IGZpbmFsaXplKHJvb3RTY29wZSwgY2hpbGRWYWx1ZSwgcGF0aCk7XG4gICAgc2V0KHRhcmdldE9iamVjdCwgcHJvcCwgcmVzKTtcbiAgICBpZiAoaXNEcmFmdChyZXMpKSB7XG4gICAgICByb290U2NvcGUuY2FuQXV0b0ZyZWV6ZV8gPSBmYWxzZTtcbiAgICB9IGVsc2VcbiAgICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICh0YXJnZXRJc1NldCkge1xuICAgIHRhcmdldE9iamVjdC5hZGQoY2hpbGRWYWx1ZSk7XG4gIH1cbiAgaWYgKGlzRHJhZnRhYmxlKGNoaWxkVmFsdWUpICYmICFpc0Zyb3plbihjaGlsZFZhbHVlKSkge1xuICAgIGlmICghcm9vdFNjb3BlLmltbWVyXy5hdXRvRnJlZXplXyAmJiByb290U2NvcGUudW5maW5hbGl6ZWREcmFmdHNfIDwgMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmaW5hbGl6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUpO1xuICAgIGlmICgoIXBhcmVudFN0YXRlIHx8ICFwYXJlbnRTdGF0ZS5zY29wZV8ucGFyZW50XykgJiYgdHlwZW9mIHByb3AgIT09IFwic3ltYm9sXCIgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRhcmdldE9iamVjdCwgcHJvcCkpXG4gICAgICBtYXliZUZyZWV6ZShyb290U2NvcGUsIGNoaWxkVmFsdWUpO1xuICB9XG59XG5mdW5jdGlvbiBtYXliZUZyZWV6ZShzY29wZSwgdmFsdWUsIGRlZXAgPSBmYWxzZSkge1xuICBpZiAoIXNjb3BlLnBhcmVudF8gJiYgc2NvcGUuaW1tZXJfLmF1dG9GcmVlemVfICYmIHNjb3BlLmNhbkF1dG9GcmVlemVfKSB7XG4gICAgZnJlZXplKHZhbHVlLCBkZWVwKTtcbiAgfVxufVxuXG4vLyBzcmMvY29yZS9wcm94eS50c1xuZnVuY3Rpb24gY3JlYXRlUHJveHlQcm94eShiYXNlLCBwYXJlbnQpIHtcbiAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoYmFzZSk7XG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHR5cGVfOiBpc0FycmF5ID8gMSAvKiBBcnJheSAqLyA6IDAgLyogT2JqZWN0ICovLFxuICAgIC8vIFRyYWNrIHdoaWNoIHByb2R1Y2UgY2FsbCB0aGlzIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAgICBzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSxcbiAgICAvLyBUcnVlIGZvciBib3RoIHNoYWxsb3cgYW5kIGRlZXAgY2hhbmdlcy5cbiAgICBtb2RpZmllZF86IGZhbHNlLFxuICAgIC8vIFVzZWQgZHVyaW5nIGZpbmFsaXphdGlvbi5cbiAgICBmaW5hbGl6ZWRfOiBmYWxzZSxcbiAgICAvLyBUcmFjayB3aGljaCBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBhc3NpZ25lZCAodHJ1ZSkgb3IgZGVsZXRlZCAoZmFsc2UpLlxuICAgIGFzc2lnbmVkXzoge30sXG4gICAgLy8gVGhlIHBhcmVudCBkcmFmdCBzdGF0ZS5cbiAgICBwYXJlbnRfOiBwYXJlbnQsXG4gICAgLy8gVGhlIGJhc2Ugc3RhdGUuXG4gICAgYmFzZV86IGJhc2UsXG4gICAgLy8gVGhlIGJhc2UgcHJveHkuXG4gICAgZHJhZnRfOiBudWxsLFxuICAgIC8vIHNldCBiZWxvd1xuICAgIC8vIFRoZSBiYXNlIGNvcHkgd2l0aCBhbnkgdXBkYXRlZCB2YWx1ZXMuXG4gICAgY29weV86IG51bGwsXG4gICAgLy8gQ2FsbGVkIGJ5IHRoZSBgcHJvZHVjZWAgZnVuY3Rpb24uXG4gICAgcmV2b2tlXzogbnVsbCxcbiAgICBpc01hbnVhbF86IGZhbHNlXG4gIH07XG4gIGxldCB0YXJnZXQgPSBzdGF0ZTtcbiAgbGV0IHRyYXBzID0gb2JqZWN0VHJhcHM7XG4gIGlmIChpc0FycmF5KSB7XG4gICAgdGFyZ2V0ID0gW3N0YXRlXTtcbiAgICB0cmFwcyA9IGFycmF5VHJhcHM7XG4gIH1cbiAgY29uc3QgeyByZXZva2UsIHByb3h5IH0gPSBQcm94eS5yZXZvY2FibGUodGFyZ2V0LCB0cmFwcyk7XG4gIHN0YXRlLmRyYWZ0XyA9IHByb3h5O1xuICBzdGF0ZS5yZXZva2VfID0gcmV2b2tlO1xuICByZXR1cm4gcHJveHk7XG59XG52YXIgb2JqZWN0VHJhcHMgPSB7XG4gIGdldChzdGF0ZSwgcHJvcCkge1xuICAgIGlmIChwcm9wID09PSBEUkFGVF9TVEFURSlcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICBjb25zdCBzb3VyY2UgPSBsYXRlc3Qoc3RhdGUpO1xuICAgIGlmICghaGFzKHNvdXJjZSwgcHJvcCkpIHtcbiAgICAgIHJldHVybiByZWFkUHJvcEZyb21Qcm90byhzdGF0ZSwgc291cmNlLCBwcm9wKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBzb3VyY2VbcHJvcF07XG4gICAgaWYgKHN0YXRlLmZpbmFsaXplZF8gfHwgIWlzRHJhZnRhYmxlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09IHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApKSB7XG4gICAgICBwcmVwYXJlQ29weShzdGF0ZSk7XG4gICAgICByZXR1cm4gc3RhdGUuY29weV9bcHJvcF0gPSBjcmVhdGVQcm94eSh2YWx1ZSwgc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIGhhcyhzdGF0ZSwgcHJvcCkge1xuICAgIHJldHVybiBwcm9wIGluIGxhdGVzdChzdGF0ZSk7XG4gIH0sXG4gIG93bktleXMoc3RhdGUpIHtcbiAgICByZXR1cm4gUmVmbGVjdC5vd25LZXlzKGxhdGVzdChzdGF0ZSkpO1xuICB9LFxuICBzZXQoc3RhdGUsIHByb3AsIHZhbHVlKSB7XG4gICAgY29uc3QgZGVzYyA9IGdldERlc2NyaXB0b3JGcm9tUHJvdG8obGF0ZXN0KHN0YXRlKSwgcHJvcCk7XG4gICAgaWYgKGRlc2M/LnNldCkge1xuICAgICAgZGVzYy5zZXQuY2FsbChzdGF0ZS5kcmFmdF8sIHZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuICAgICAgY29uc3QgY3VycmVudDIgPSBwZWVrKGxhdGVzdChzdGF0ZSksIHByb3ApO1xuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gY3VycmVudDI/LltEUkFGVF9TVEFURV07XG4gICAgICBpZiAoY3VycmVudFN0YXRlICYmIGN1cnJlbnRTdGF0ZS5iYXNlXyA9PT0gdmFsdWUpIHtcbiAgICAgICAgc3RhdGUuY29weV9bcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgc3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzKHZhbHVlLCBjdXJyZW50MikgJiYgKHZhbHVlICE9PSB2b2lkIDAgfHwgaGFzKHN0YXRlLmJhc2VfLCBwcm9wKSkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgcHJlcGFyZUNvcHkoc3RhdGUpO1xuICAgICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUuY29weV9bcHJvcF0gPT09IHZhbHVlICYmIC8vIHNwZWNpYWwgY2FzZTogaGFuZGxlIG5ldyBwcm9wcyB3aXRoIHZhbHVlICd1bmRlZmluZWQnXG4gICAgKHZhbHVlICE9PSB2b2lkIDAgfHwgcHJvcCBpbiBzdGF0ZS5jb3B5XykgfHwgLy8gc3BlY2lhbCBjYXNlOiBOYU5cbiAgICBOdW1iZXIuaXNOYU4odmFsdWUpICYmIE51bWJlci5pc05hTihzdGF0ZS5jb3B5X1twcm9wXSkpXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBzdGF0ZS5jb3B5X1twcm9wXSA9IHZhbHVlO1xuICAgIHN0YXRlLmFzc2lnbmVkX1twcm9wXSA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGRlbGV0ZVByb3BlcnR5KHN0YXRlLCBwcm9wKSB7XG4gICAgaWYgKHBlZWsoc3RhdGUuYmFzZV8sIHByb3ApICE9PSB2b2lkIDAgfHwgcHJvcCBpbiBzdGF0ZS5iYXNlXykge1xuICAgICAgc3RhdGUuYXNzaWduZWRfW3Byb3BdID0gZmFsc2U7XG4gICAgICBwcmVwYXJlQ29weShzdGF0ZSk7XG4gICAgICBtYXJrQ2hhbmdlZChzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBzdGF0ZS5hc3NpZ25lZF9bcHJvcF07XG4gICAgfVxuICAgIGlmIChzdGF0ZS5jb3B5Xykge1xuICAgICAgZGVsZXRlIHN0YXRlLmNvcHlfW3Byb3BdO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgLy8gTm90ZTogV2UgbmV2ZXIgY29lcmNlIGBkZXNjLnZhbHVlYCBpbnRvIGFuIEltbWVyIGRyYWZ0LCBiZWNhdXNlIHdlIGNhbid0IG1ha2VcbiAgLy8gdGhlIHNhbWUgZ3VhcmFudGVlIGluIEVTNSBtb2RlLlxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3RhdGUsIHByb3ApIHtcbiAgICBjb25zdCBvd25lciA9IGxhdGVzdChzdGF0ZSk7XG4gICAgY29uc3QgZGVzYyA9IFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTtcbiAgICBpZiAoIWRlc2MpXG4gICAgICByZXR1cm4gZGVzYztcbiAgICByZXR1cm4ge1xuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHN0YXRlLnR5cGVfICE9PSAxIC8qIEFycmF5ICovIHx8IHByb3AgIT09IFwibGVuZ3RoXCIsXG4gICAgICBlbnVtZXJhYmxlOiBkZXNjLmVudW1lcmFibGUsXG4gICAgICB2YWx1ZTogb3duZXJbcHJvcF1cbiAgICB9O1xuICB9LFxuICBkZWZpbmVQcm9wZXJ0eSgpIHtcbiAgICBkaWUoMTEpO1xuICB9LFxuICBnZXRQcm90b3R5cGVPZihzdGF0ZSkge1xuICAgIHJldHVybiBnZXRQcm90b3R5cGVPZihzdGF0ZS5iYXNlXyk7XG4gIH0sXG4gIHNldFByb3RvdHlwZU9mKCkge1xuICAgIGRpZSgxMik7XG4gIH1cbn07XG52YXIgYXJyYXlUcmFwcyA9IHt9O1xuZWFjaChvYmplY3RUcmFwcywgKGtleSwgZm4pID0+IHtcbiAgYXJyYXlUcmFwc1trZXldID0gZnVuY3Rpb24oKSB7XG4gICAgYXJndW1lbnRzWzBdID0gYXJndW1lbnRzWzBdWzBdO1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSk7XG5hcnJheVRyYXBzLmRlbGV0ZVByb3BlcnR5ID0gZnVuY3Rpb24oc3RhdGUsIHByb3ApIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiBpc05hTihwYXJzZUludChwcm9wKSkpXG4gICAgZGllKDEzKTtcbiAgcmV0dXJuIGFycmF5VHJhcHMuc2V0LmNhbGwodGhpcywgc3RhdGUsIHByb3AsIHZvaWQgMCk7XG59O1xuYXJyYXlUcmFwcy5zZXQgPSBmdW5jdGlvbihzdGF0ZSwgcHJvcCwgdmFsdWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiBwcm9wICE9PSBcImxlbmd0aFwiICYmIGlzTmFOKHBhcnNlSW50KHByb3ApKSlcbiAgICBkaWUoMTQpO1xuICByZXR1cm4gb2JqZWN0VHJhcHMuc2V0LmNhbGwodGhpcywgc3RhdGVbMF0sIHByb3AsIHZhbHVlLCBzdGF0ZVswXSk7XG59O1xuZnVuY3Rpb24gcGVlayhkcmFmdCwgcHJvcCkge1xuICBjb25zdCBzdGF0ZSA9IGRyYWZ0W0RSQUZUX1NUQVRFXTtcbiAgY29uc3Qgc291cmNlID0gc3RhdGUgPyBsYXRlc3Qoc3RhdGUpIDogZHJhZnQ7XG4gIHJldHVybiBzb3VyY2VbcHJvcF07XG59XG5mdW5jdGlvbiByZWFkUHJvcEZyb21Qcm90byhzdGF0ZSwgc291cmNlLCBwcm9wKSB7XG4gIGNvbnN0IGRlc2MgPSBnZXREZXNjcmlwdG9yRnJvbVByb3RvKHNvdXJjZSwgcHJvcCk7XG4gIHJldHVybiBkZXNjID8gYHZhbHVlYCBpbiBkZXNjID8gZGVzYy52YWx1ZSA6IChcbiAgICAvLyBUaGlzIGlzIGEgdmVyeSBzcGVjaWFsIGNhc2UsIGlmIHRoZSBwcm9wIGlzIGEgZ2V0dGVyIGRlZmluZWQgYnkgdGhlXG4gICAgLy8gcHJvdG90eXBlLCB3ZSBzaG91bGQgaW52b2tlIGl0IHdpdGggdGhlIGRyYWZ0IGFzIGNvbnRleHQhXG4gICAgZGVzYy5nZXQ/LmNhbGwoc3RhdGUuZHJhZnRfKVxuICApIDogdm9pZCAwO1xufVxuZnVuY3Rpb24gZ2V0RGVzY3JpcHRvckZyb21Qcm90byhzb3VyY2UsIHByb3ApIHtcbiAgaWYgKCEocHJvcCBpbiBzb3VyY2UpKVxuICAgIHJldHVybiB2b2lkIDA7XG4gIGxldCBwcm90byA9IGdldFByb3RvdHlwZU9mKHNvdXJjZSk7XG4gIHdoaWxlIChwcm90bykge1xuICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wKTtcbiAgICBpZiAoZGVzYylcbiAgICAgIHJldHVybiBkZXNjO1xuICAgIHByb3RvID0gZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiB2b2lkIDA7XG59XG5mdW5jdGlvbiBtYXJrQ2hhbmdlZChzdGF0ZSkge1xuICBpZiAoIXN0YXRlLm1vZGlmaWVkXykge1xuICAgIHN0YXRlLm1vZGlmaWVkXyA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnBhcmVudF8pIHtcbiAgICAgIG1hcmtDaGFuZ2VkKHN0YXRlLnBhcmVudF8pO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlcGFyZUNvcHkoc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5jb3B5Xykge1xuICAgIHN0YXRlLmNvcHlfID0gc2hhbGxvd0NvcHkoXG4gICAgICBzdGF0ZS5iYXNlXyxcbiAgICAgIHN0YXRlLnNjb3BlXy5pbW1lcl8udXNlU3RyaWN0U2hhbGxvd0NvcHlfXG4gICAgKTtcbiAgfVxufVxuXG4vLyBzcmMvY29yZS9pbW1lckNsYXNzLnRzXG52YXIgSW1tZXIyID0gY2xhc3Mge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICB0aGlzLmF1dG9GcmVlemVfID0gdHJ1ZTtcbiAgICB0aGlzLnVzZVN0cmljdFNoYWxsb3dDb3B5XyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRoZSBgcHJvZHVjZWAgZnVuY3Rpb24gdGFrZXMgYSB2YWx1ZSBhbmQgYSBcInJlY2lwZSBmdW5jdGlvblwiICh3aG9zZVxuICAgICAqIHJldHVybiB2YWx1ZSBvZnRlbiBkZXBlbmRzIG9uIHRoZSBiYXNlIHN0YXRlKS4gVGhlIHJlY2lwZSBmdW5jdGlvbiBpc1xuICAgICAqIGZyZWUgdG8gbXV0YXRlIGl0cyBmaXJzdCBhcmd1bWVudCBob3dldmVyIGl0IHdhbnRzLiBBbGwgbXV0YXRpb25zIGFyZVxuICAgICAqIG9ubHkgZXZlciBhcHBsaWVkIHRvIGEgX19jb3B5X18gb2YgdGhlIGJhc2Ugc3RhdGUuXG4gICAgICpcbiAgICAgKiBQYXNzIG9ubHkgYSBmdW5jdGlvbiB0byBjcmVhdGUgYSBcImN1cnJpZWQgcHJvZHVjZXJcIiB3aGljaCByZWxpZXZlcyB5b3VcbiAgICAgKiBmcm9tIHBhc3NpbmcgdGhlIHJlY2lwZSBmdW5jdGlvbiBldmVyeSB0aW1lLlxuICAgICAqXG4gICAgICogT25seSBwbGFpbiBvYmplY3RzIGFuZCBhcnJheXMgYXJlIG1hZGUgbXV0YWJsZS4gQWxsIG90aGVyIG9iamVjdHMgYXJlXG4gICAgICogY29uc2lkZXJlZCB1bmNvcHlhYmxlLlxuICAgICAqXG4gICAgICogTm90ZTogVGhpcyBmdW5jdGlvbiBpcyBfX2JvdW5kX18gdG8gaXRzIGBJbW1lcmAgaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2FueX0gYmFzZSAtIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVjaXBlIC0gZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhIHByb3h5IG9mIHRoZSBiYXNlIHN0YXRlIGFzIGZpcnN0IGFyZ3VtZW50IGFuZCB3aGljaCBjYW4gYmUgZnJlZWx5IG1vZGlmaWVkXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGF0Y2hMaXN0ZW5lciAtIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBhbGwgdGhlIHBhdGNoZXMgcHJvZHVjZWQgaGVyZVxuICAgICAqIEByZXR1cm5zIHthbnl9IGEgbmV3IHN0YXRlLCBvciB0aGUgaW5pdGlhbCBzdGF0ZSBpZiBub3RoaW5nIHdhcyBtb2RpZmllZFxuICAgICAqL1xuICAgIHRoaXMucHJvZHVjZSA9IChiYXNlLCByZWNpcGUsIHBhdGNoTGlzdGVuZXIpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYmFzZSA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zdCBkZWZhdWx0QmFzZSA9IHJlY2lwZTtcbiAgICAgICAgcmVjaXBlID0gYmFzZTtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBjdXJyaWVkUHJvZHVjZShiYXNlMiA9IGRlZmF1bHRCYXNlLCAuLi5hcmdzKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGYucHJvZHVjZShiYXNlMiwgKGRyYWZ0KSA9PiByZWNpcGUuY2FsbCh0aGlzLCBkcmFmdCwgLi4uYXJncykpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiByZWNpcGUgIT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZGllKDYpO1xuICAgICAgaWYgKHBhdGNoTGlzdGVuZXIgIT09IHZvaWQgMCAmJiB0eXBlb2YgcGF0Y2hMaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBkaWUoNyk7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgaWYgKGlzRHJhZnRhYmxlKGJhc2UpKSB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gZW50ZXJTY29wZSh0aGlzKTtcbiAgICAgICAgY29uc3QgcHJveHkgPSBjcmVhdGVQcm94eShiYXNlLCB2b2lkIDApO1xuICAgICAgICBsZXQgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlY2lwZShwcm94eSk7XG4gICAgICAgICAgaGFzRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoaGFzRXJyb3IpXG4gICAgICAgICAgICByZXZva2VTY29wZShzY29wZSk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGVhdmVTY29wZShzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgdXNlUGF0Y2hlc0luU2NvcGUoc2NvcGUsIHBhdGNoTGlzdGVuZXIpO1xuICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdChyZXN1bHQsIHNjb3BlKTtcbiAgICAgIH0gZWxzZSBpZiAoIWJhc2UgfHwgdHlwZW9mIGJhc2UgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVjaXBlKGJhc2UpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApXG4gICAgICAgICAgcmVzdWx0ID0gYmFzZTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gTk9USElORylcbiAgICAgICAgICByZXN1bHQgPSB2b2lkIDA7XG4gICAgICAgIGlmICh0aGlzLmF1dG9GcmVlemVfKVxuICAgICAgICAgIGZyZWV6ZShyZXN1bHQsIHRydWUpO1xuICAgICAgICBpZiAocGF0Y2hMaXN0ZW5lcikge1xuICAgICAgICAgIGNvbnN0IHAgPSBbXTtcbiAgICAgICAgICBjb25zdCBpcCA9IFtdO1xuICAgICAgICAgIGdldFBsdWdpbihcIlBhdGNoZXNcIikuZ2VuZXJhdGVSZXBsYWNlbWVudFBhdGNoZXNfKGJhc2UsIHJlc3VsdCwgcCwgaXApO1xuICAgICAgICAgIHBhdGNoTGlzdGVuZXIocCwgaXApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2VcbiAgICAgICAgZGllKDEsIGJhc2UpO1xuICAgIH07XG4gICAgdGhpcy5wcm9kdWNlV2l0aFBhdGNoZXMgPSAoYmFzZSwgcmVjaXBlKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGJhc2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gKHN0YXRlLCAuLi5hcmdzKSA9PiB0aGlzLnByb2R1Y2VXaXRoUGF0Y2hlcyhzdGF0ZSwgKGRyYWZ0KSA9PiBiYXNlKGRyYWZ0LCAuLi5hcmdzKSk7XG4gICAgICB9XG4gICAgICBsZXQgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXM7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnByb2R1Y2UoYmFzZSwgcmVjaXBlLCAocCwgaXApID0+IHtcbiAgICAgICAgcGF0Y2hlcyA9IHA7XG4gICAgICAgIGludmVyc2VQYXRjaGVzID0gaXA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbcmVzdWx0LCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlc107XG4gICAgfTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZz8uYXV0b0ZyZWV6ZSA9PT0gXCJib29sZWFuXCIpXG4gICAgICB0aGlzLnNldEF1dG9GcmVlemUoY29uZmlnLmF1dG9GcmVlemUpO1xuICAgIGlmICh0eXBlb2YgY29uZmlnPy51c2VTdHJpY3RTaGFsbG93Q29weSA9PT0gXCJib29sZWFuXCIpXG4gICAgICB0aGlzLnNldFVzZVN0cmljdFNoYWxsb3dDb3B5KGNvbmZpZy51c2VTdHJpY3RTaGFsbG93Q29weSk7XG4gIH1cbiAgY3JlYXRlRHJhZnQoYmFzZSkge1xuICAgIGlmICghaXNEcmFmdGFibGUoYmFzZSkpXG4gICAgICBkaWUoOCk7XG4gICAgaWYgKGlzRHJhZnQoYmFzZSkpXG4gICAgICBiYXNlID0gY3VycmVudChiYXNlKTtcbiAgICBjb25zdCBzY29wZSA9IGVudGVyU2NvcGUodGhpcyk7XG4gICAgY29uc3QgcHJveHkgPSBjcmVhdGVQcm94eShiYXNlLCB2b2lkIDApO1xuICAgIHByb3h5W0RSQUZUX1NUQVRFXS5pc01hbnVhbF8gPSB0cnVlO1xuICAgIGxlYXZlU2NvcGUoc2NvcGUpO1xuICAgIHJldHVybiBwcm94eTtcbiAgfVxuICBmaW5pc2hEcmFmdChkcmFmdCwgcGF0Y2hMaXN0ZW5lcikge1xuICAgIGNvbnN0IHN0YXRlID0gZHJhZnQgJiYgZHJhZnRbRFJBRlRfU1RBVEVdO1xuICAgIGlmICghc3RhdGUgfHwgIXN0YXRlLmlzTWFudWFsXylcbiAgICAgIGRpZSg5KTtcbiAgICBjb25zdCB7IHNjb3BlXzogc2NvcGUgfSA9IHN0YXRlO1xuICAgIHVzZVBhdGNoZXNJblNjb3BlKHNjb3BlLCBwYXRjaExpc3RlbmVyKTtcbiAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdCh2b2lkIDAsIHNjb3BlKTtcbiAgfVxuICAvKipcbiAgICogUGFzcyB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgZnJlZXplIGFsbCBjb3BpZXMgY3JlYXRlZCBieSBJbW1lci5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYXV0by1mcmVlemluZyBpcyBlbmFibGVkLlxuICAgKi9cbiAgc2V0QXV0b0ZyZWV6ZSh2YWx1ZSkge1xuICAgIHRoaXMuYXV0b0ZyZWV6ZV8gPSB2YWx1ZTtcbiAgfVxuICAvKipcbiAgICogUGFzcyB0cnVlIHRvIGVuYWJsZSBzdHJpY3Qgc2hhbGxvdyBjb3B5LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpbW1lciBkb2VzIG5vdCBjb3B5IHRoZSBvYmplY3QgZGVzY3JpcHRvcnMgc3VjaCBhcyBnZXR0ZXIsIHNldHRlciBhbmQgbm9uLWVudW1yYWJsZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgc2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkodmFsdWUpIHtcbiAgICB0aGlzLnVzZVN0cmljdFNoYWxsb3dDb3B5XyA9IHZhbHVlO1xuICB9XG4gIGFwcGx5UGF0Y2hlcyhiYXNlLCBwYXRjaGVzKSB7XG4gICAgbGV0IGk7XG4gICAgZm9yIChpID0gcGF0Y2hlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgcGF0Y2ggPSBwYXRjaGVzW2ldO1xuICAgICAgaWYgKHBhdGNoLnBhdGgubGVuZ3RoID09PSAwICYmIHBhdGNoLm9wID09PSBcInJlcGxhY2VcIikge1xuICAgICAgICBiYXNlID0gcGF0Y2gudmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaSA+IC0xKSB7XG4gICAgICBwYXRjaGVzID0gcGF0Y2hlcy5zbGljZShpICsgMSk7XG4gICAgfVxuICAgIGNvbnN0IGFwcGx5UGF0Y2hlc0ltcGwgPSBnZXRQbHVnaW4oXCJQYXRjaGVzXCIpLmFwcGx5UGF0Y2hlc187XG4gICAgaWYgKGlzRHJhZnQoYmFzZSkpIHtcbiAgICAgIHJldHVybiBhcHBseVBhdGNoZXNJbXBsKGJhc2UsIHBhdGNoZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9kdWNlKFxuICAgICAgYmFzZSxcbiAgICAgIChkcmFmdCkgPT4gYXBwbHlQYXRjaGVzSW1wbChkcmFmdCwgcGF0Y2hlcylcbiAgICApO1xuICB9XG59O1xuZnVuY3Rpb24gY3JlYXRlUHJveHkodmFsdWUsIHBhcmVudCkge1xuICBjb25zdCBkcmFmdCA9IGlzTWFwKHZhbHVlKSA/IGdldFBsdWdpbihcIk1hcFNldFwiKS5wcm94eU1hcF8odmFsdWUsIHBhcmVudCkgOiBpc1NldCh2YWx1ZSkgPyBnZXRQbHVnaW4oXCJNYXBTZXRcIikucHJveHlTZXRfKHZhbHVlLCBwYXJlbnQpIDogY3JlYXRlUHJveHlQcm94eSh2YWx1ZSwgcGFyZW50KTtcbiAgY29uc3Qgc2NvcGUgPSBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCk7XG4gIHNjb3BlLmRyYWZ0c18ucHVzaChkcmFmdCk7XG4gIHJldHVybiBkcmFmdDtcbn1cblxuLy8gc3JjL2NvcmUvY3VycmVudC50c1xuZnVuY3Rpb24gY3VycmVudCh2YWx1ZSkge1xuICBpZiAoIWlzRHJhZnQodmFsdWUpKVxuICAgIGRpZSgxMCwgdmFsdWUpO1xuICByZXR1cm4gY3VycmVudEltcGwodmFsdWUpO1xufVxuZnVuY3Rpb24gY3VycmVudEltcGwodmFsdWUpIHtcbiAgaWYgKCFpc0RyYWZ0YWJsZSh2YWx1ZSkgfHwgaXNGcm96ZW4odmFsdWUpKVxuICAgIHJldHVybiB2YWx1ZTtcbiAgY29uc3Qgc3RhdGUgPSB2YWx1ZVtEUkFGVF9TVEFURV07XG4gIGxldCBjb3B5O1xuICBpZiAoc3RhdGUpIHtcbiAgICBpZiAoIXN0YXRlLm1vZGlmaWVkXylcbiAgICAgIHJldHVybiBzdGF0ZS5iYXNlXztcbiAgICBzdGF0ZS5maW5hbGl6ZWRfID0gdHJ1ZTtcbiAgICBjb3B5ID0gc2hhbGxvd0NvcHkodmFsdWUsIHN0YXRlLnNjb3BlXy5pbW1lcl8udXNlU3RyaWN0U2hhbGxvd0NvcHlfKTtcbiAgfSBlbHNlIHtcbiAgICBjb3B5ID0gc2hhbGxvd0NvcHkodmFsdWUsIHRydWUpO1xuICB9XG4gIGVhY2goY29weSwgKGtleSwgY2hpbGRWYWx1ZSkgPT4ge1xuICAgIHNldChjb3B5LCBrZXksIGN1cnJlbnRJbXBsKGNoaWxkVmFsdWUpKTtcbiAgfSk7XG4gIGlmIChzdGF0ZSkge1xuICAgIHN0YXRlLmZpbmFsaXplZF8gPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gY29weTtcbn1cblxuLy8gc3JjL3BsdWdpbnMvcGF0Y2hlcy50c1xuZnVuY3Rpb24gZW5hYmxlUGF0Y2hlcygpIHtcbiAgY29uc3QgZXJyb3JPZmZzZXQgPSAxNjtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGVycm9ycy5wdXNoKFxuICAgICAgJ1NldHMgY2Fubm90IGhhdmUgXCJyZXBsYWNlXCIgcGF0Y2hlcy4nLFxuICAgICAgZnVuY3Rpb24ob3ApIHtcbiAgICAgICAgcmV0dXJuIFwiVW5zdXBwb3J0ZWQgcGF0Y2ggb3BlcmF0aW9uOiBcIiArIG9wO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIFwiQ2Fubm90IGFwcGx5IHBhdGNoLCBwYXRoIGRvZXNuJ3QgcmVzb2x2ZTogXCIgKyBwYXRoO1xuICAgICAgfSxcbiAgICAgIFwiUGF0Y2hpbmcgcmVzZXJ2ZWQgYXR0cmlidXRlcyBsaWtlIF9fcHJvdG9fXywgcHJvdG90eXBlIGFuZCBjb25zdHJ1Y3RvciBpcyBub3QgYWxsb3dlZFwiXG4gICAgKTtcbiAgfVxuICBjb25zdCBSRVBMQUNFID0gXCJyZXBsYWNlXCI7XG4gIGNvbnN0IEFERCA9IFwiYWRkXCI7XG4gIGNvbnN0IFJFTU9WRSA9IFwicmVtb3ZlXCI7XG4gIGZ1bmN0aW9uIGdlbmVyYXRlUGF0Y2hlc18oc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcykge1xuICAgIHN3aXRjaCAoc3RhdGUudHlwZV8pIHtcbiAgICAgIGNhc2UgMCAvKiBPYmplY3QgKi86XG4gICAgICBjYXNlIDIgLyogTWFwICovOlxuICAgICAgICByZXR1cm4gZ2VuZXJhdGVQYXRjaGVzRnJvbUFzc2lnbmVkKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGJhc2VQYXRoLFxuICAgICAgICAgIHBhdGNoZXMsXG4gICAgICAgICAgaW52ZXJzZVBhdGNoZXNcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgMSAvKiBBcnJheSAqLzpcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRlQXJyYXlQYXRjaGVzKHN0YXRlLCBiYXNlUGF0aCwgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXMpO1xuICAgICAgY2FzZSAzIC8qIFNldCAqLzpcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRlU2V0UGF0Y2hlcyhcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgICBwYXRjaGVzLFxuICAgICAgICAgIGludmVyc2VQYXRjaGVzXG4gICAgICAgICk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXlQYXRjaGVzKHN0YXRlLCBiYXNlUGF0aCwgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXMpIHtcbiAgICBsZXQgeyBiYXNlXywgYXNzaWduZWRfIH0gPSBzdGF0ZTtcbiAgICBsZXQgY29weV8gPSBzdGF0ZS5jb3B5XztcbiAgICBpZiAoY29weV8ubGVuZ3RoIDwgYmFzZV8ubGVuZ3RoKSB7XG4gICAgICA7XG4gICAgICBbYmFzZV8sIGNvcHlfXSA9IFtjb3B5XywgYmFzZV9dO1xuICAgICAgW3BhdGNoZXMsIGludmVyc2VQYXRjaGVzXSA9IFtpbnZlcnNlUGF0Y2hlcywgcGF0Y2hlc107XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmFzZV8ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhc3NpZ25lZF9baV0gJiYgY29weV9baV0gIT09IGJhc2VfW2ldKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKTtcbiAgICAgICAgcGF0Y2hlcy5wdXNoKHtcbiAgICAgICAgICBvcDogUkVQTEFDRSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIC8vIE5lZWQgdG8gbWF5YmUgY2xvbmUgaXQsIGFzIGl0IGNhbiBpbiBmYWN0IGJlIHRoZSBvcmlnaW5hbCB2YWx1ZVxuICAgICAgICAgIC8vIGR1ZSB0byB0aGUgYmFzZS9jb3B5IGludmVyc2lvbiBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmdW5jdGlvblxuICAgICAgICAgIHZhbHVlOiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChjb3B5X1tpXSlcbiAgICAgICAgfSk7XG4gICAgICAgIGludmVyc2VQYXRjaGVzLnB1c2goe1xuICAgICAgICAgIG9wOiBSRVBMQUNFLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKGJhc2VfW2ldKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IGJhc2VfLmxlbmd0aDsgaSA8IGNvcHlfLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwYXRoID0gYmFzZVBhdGguY29uY2F0KFtpXSk7XG4gICAgICBwYXRjaGVzLnB1c2goe1xuICAgICAgICBvcDogQURELFxuICAgICAgICBwYXRoLFxuICAgICAgICAvLyBOZWVkIHRvIG1heWJlIGNsb25lIGl0LCBhcyBpdCBjYW4gaW4gZmFjdCBiZSB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgLy8gZHVlIHRvIHRoZSBiYXNlL2NvcHkgaW52ZXJzaW9uIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZ1bmN0aW9uXG4gICAgICAgIHZhbHVlOiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChjb3B5X1tpXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gY29weV8ubGVuZ3RoIC0gMTsgYmFzZV8ubGVuZ3RoIDw9IGk7IC0taSkge1xuICAgICAgY29uc3QgcGF0aCA9IGJhc2VQYXRoLmNvbmNhdChbaV0pO1xuICAgICAgaW52ZXJzZVBhdGNoZXMucHVzaCh7XG4gICAgICAgIG9wOiBSRU1PVkUsXG4gICAgICAgIHBhdGhcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZW5lcmF0ZVBhdGNoZXNGcm9tQXNzaWduZWQoc3RhdGUsIGJhc2VQYXRoLCBwYXRjaGVzLCBpbnZlcnNlUGF0Y2hlcykge1xuICAgIGNvbnN0IHsgYmFzZV8sIGNvcHlfIH0gPSBzdGF0ZTtcbiAgICBlYWNoKHN0YXRlLmFzc2lnbmVkXywgKGtleSwgYXNzaWduZWRWYWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgb3JpZ1ZhbHVlID0gZ2V0KGJhc2VfLCBrZXkpO1xuICAgICAgY29uc3QgdmFsdWUgPSBnZXQoY29weV8sIGtleSk7XG4gICAgICBjb25zdCBvcCA9ICFhc3NpZ25lZFZhbHVlID8gUkVNT1ZFIDogaGFzKGJhc2VfLCBrZXkpID8gUkVQTEFDRSA6IEFERDtcbiAgICAgIGlmIChvcmlnVmFsdWUgPT09IHZhbHVlICYmIG9wID09PSBSRVBMQUNFKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBwYXRoID0gYmFzZVBhdGguY29uY2F0KGtleSk7XG4gICAgICBwYXRjaGVzLnB1c2gob3AgPT09IFJFTU9WRSA/IHsgb3AsIHBhdGggfSA6IHsgb3AsIHBhdGgsIHZhbHVlIH0pO1xuICAgICAgaW52ZXJzZVBhdGNoZXMucHVzaChcbiAgICAgICAgb3AgPT09IEFERCA/IHsgb3A6IFJFTU9WRSwgcGF0aCB9IDogb3AgPT09IFJFTU9WRSA/IHsgb3A6IEFERCwgcGF0aCwgdmFsdWU6IGNsb25lUGF0Y2hWYWx1ZUlmTmVlZGVkKG9yaWdWYWx1ZSkgfSA6IHsgb3A6IFJFUExBQ0UsIHBhdGgsIHZhbHVlOiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChvcmlnVmFsdWUpIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2VuZXJhdGVTZXRQYXRjaGVzKHN0YXRlLCBiYXNlUGF0aCwgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXMpIHtcbiAgICBsZXQgeyBiYXNlXywgY29weV8gfSA9IHN0YXRlO1xuICAgIGxldCBpID0gMDtcbiAgICBiYXNlXy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFjb3B5Xy5oYXModmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKTtcbiAgICAgICAgcGF0Y2hlcy5wdXNoKHtcbiAgICAgICAgICBvcDogUkVNT1ZFLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGludmVyc2VQYXRjaGVzLnVuc2hpZnQoe1xuICAgICAgICAgIG9wOiBBREQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9KTtcbiAgICBpID0gMDtcbiAgICBjb3B5Xy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFiYXNlXy5oYXModmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBiYXNlUGF0aC5jb25jYXQoW2ldKTtcbiAgICAgICAgcGF0Y2hlcy5wdXNoKHtcbiAgICAgICAgICBvcDogQURELFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICAgIGludmVyc2VQYXRjaGVzLnVuc2hpZnQoe1xuICAgICAgICAgIG9wOiBSRU1PVkUsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBnZW5lcmF0ZVJlcGxhY2VtZW50UGF0Y2hlc18oYmFzZVZhbHVlLCByZXBsYWNlbWVudCwgcGF0Y2hlcywgaW52ZXJzZVBhdGNoZXMpIHtcbiAgICBwYXRjaGVzLnB1c2goe1xuICAgICAgb3A6IFJFUExBQ0UsXG4gICAgICBwYXRoOiBbXSxcbiAgICAgIHZhbHVlOiByZXBsYWNlbWVudCA9PT0gTk9USElORyA/IHZvaWQgMCA6IHJlcGxhY2VtZW50XG4gICAgfSk7XG4gICAgaW52ZXJzZVBhdGNoZXMucHVzaCh7XG4gICAgICBvcDogUkVQTEFDRSxcbiAgICAgIHBhdGg6IFtdLFxuICAgICAgdmFsdWU6IGJhc2VWYWx1ZVxuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGFwcGx5UGF0Y2hlc18oZHJhZnQsIHBhdGNoZXMpIHtcbiAgICBwYXRjaGVzLmZvckVhY2goKHBhdGNoKSA9PiB7XG4gICAgICBjb25zdCB7IHBhdGgsIG9wIH0gPSBwYXRjaDtcbiAgICAgIGxldCBiYXNlID0gZHJhZnQ7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBnZXRBcmNodHlwZShiYXNlKTtcbiAgICAgICAgbGV0IHAgPSBwYXRoW2ldO1xuICAgICAgICBpZiAodHlwZW9mIHAgIT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHAgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICBwID0gXCJcIiArIHA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChwYXJlbnRUeXBlID09PSAwIC8qIE9iamVjdCAqLyB8fCBwYXJlbnRUeXBlID09PSAxIC8qIEFycmF5ICovKSAmJiAocCA9PT0gXCJfX3Byb3RvX19cIiB8fCBwID09PSBcImNvbnN0cnVjdG9yXCIpKVxuICAgICAgICAgIGRpZShlcnJvck9mZnNldCArIDMpO1xuICAgICAgICBpZiAodHlwZW9mIGJhc2UgPT09IFwiZnVuY3Rpb25cIiAmJiBwID09PSBcInByb3RvdHlwZVwiKVxuICAgICAgICAgIGRpZShlcnJvck9mZnNldCArIDMpO1xuICAgICAgICBiYXNlID0gZ2V0KGJhc2UsIHApO1xuICAgICAgICBpZiAodHlwZW9mIGJhc2UgIT09IFwib2JqZWN0XCIpXG4gICAgICAgICAgZGllKGVycm9yT2Zmc2V0ICsgMiwgcGF0aC5qb2luKFwiL1wiKSk7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlID0gZ2V0QXJjaHR5cGUoYmFzZSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGRlZXBDbG9uZVBhdGNoVmFsdWUocGF0Y2gudmFsdWUpO1xuICAgICAgY29uc3Qga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICBjYXNlIFJFUExBQ0U6XG4gICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIDIgLyogTWFwICovOlxuICAgICAgICAgICAgICByZXR1cm4gYmFzZS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICBjYXNlIDMgLyogU2V0ICovOlxuICAgICAgICAgICAgICBkaWUoZXJyb3JPZmZzZXQpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIGJhc2Vba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBBREQ6XG4gICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIDEgLyogQXJyYXkgKi86XG4gICAgICAgICAgICAgIHJldHVybiBrZXkgPT09IFwiLVwiID8gYmFzZS5wdXNoKHZhbHVlKSA6IGJhc2Uuc3BsaWNlKGtleSwgMCwgdmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAyIC8qIE1hcCAqLzpcbiAgICAgICAgICAgICAgcmV0dXJuIGJhc2Uuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgY2FzZSAzIC8qIFNldCAqLzpcbiAgICAgICAgICAgICAgcmV0dXJuIGJhc2UuYWRkKHZhbHVlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgUkVNT1ZFOlxuICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAxIC8qIEFycmF5ICovOlxuICAgICAgICAgICAgICByZXR1cm4gYmFzZS5zcGxpY2Uoa2V5LCAxKTtcbiAgICAgICAgICAgIGNhc2UgMiAvKiBNYXAgKi86XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgY2FzZSAzIC8qIFNldCAqLzpcbiAgICAgICAgICAgICAgcmV0dXJuIGJhc2UuZGVsZXRlKHBhdGNoLnZhbHVlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBkZWxldGUgYmFzZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBkaWUoZXJyb3JPZmZzZXQgKyAxLCBvcCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRyYWZ0O1xuICB9XG4gIGZ1bmN0aW9uIGRlZXBDbG9uZVBhdGNoVmFsdWUob2JqKSB7XG4gICAgaWYgKCFpc0RyYWZ0YWJsZShvYmopKVxuICAgICAgcmV0dXJuIG9iajtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKVxuICAgICAgcmV0dXJuIG9iai5tYXAoZGVlcENsb25lUGF0Y2hWYWx1ZSk7XG4gICAgaWYgKGlzTWFwKG9iaikpXG4gICAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgICAgQXJyYXkuZnJvbShvYmouZW50cmllcygpKS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlZXBDbG9uZVBhdGNoVmFsdWUodildKVxuICAgICAgKTtcbiAgICBpZiAoaXNTZXQob2JqKSlcbiAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20ob2JqKS5tYXAoZGVlcENsb25lUGF0Y2hWYWx1ZSkpO1xuICAgIGNvbnN0IGNsb25lZCA9IE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKVxuICAgICAgY2xvbmVkW2tleV0gPSBkZWVwQ2xvbmVQYXRjaFZhbHVlKG9ialtrZXldKTtcbiAgICBpZiAoaGFzKG9iaiwgRFJBRlRBQkxFKSlcbiAgICAgIGNsb25lZFtEUkFGVEFCTEVdID0gb2JqW0RSQUZUQUJMRV07XG4gICAgcmV0dXJuIGNsb25lZDtcbiAgfVxuICBmdW5jdGlvbiBjbG9uZVBhdGNoVmFsdWVJZk5lZWRlZChvYmopIHtcbiAgICBpZiAoaXNEcmFmdChvYmopKSB7XG4gICAgICByZXR1cm4gZGVlcENsb25lUGF0Y2hWYWx1ZShvYmopO1xuICAgIH0gZWxzZVxuICAgICAgcmV0dXJuIG9iajtcbiAgfVxuICBsb2FkUGx1Z2luKFwiUGF0Y2hlc1wiLCB7XG4gICAgYXBwbHlQYXRjaGVzXyxcbiAgICBnZW5lcmF0ZVBhdGNoZXNfLFxuICAgIGdlbmVyYXRlUmVwbGFjZW1lbnRQYXRjaGVzX1xuICB9KTtcbn1cblxuLy8gc3JjL3BsdWdpbnMvbWFwc2V0LnRzXG5mdW5jdGlvbiBlbmFibGVNYXBTZXQoKSB7XG4gIGNsYXNzIERyYWZ0TWFwIGV4dGVuZHMgTWFwIHtcbiAgICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHBhcmVudCkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIHRoaXNbRFJBRlRfU1RBVEVdID0ge1xuICAgICAgICB0eXBlXzogMiAvKiBNYXAgKi8sXG4gICAgICAgIHBhcmVudF86IHBhcmVudCxcbiAgICAgICAgc2NvcGVfOiBwYXJlbnQgPyBwYXJlbnQuc2NvcGVfIDogZ2V0Q3VycmVudFNjb3BlKCksXG4gICAgICAgIG1vZGlmaWVkXzogZmFsc2UsXG4gICAgICAgIGZpbmFsaXplZF86IGZhbHNlLFxuICAgICAgICBjb3B5Xzogdm9pZCAwLFxuICAgICAgICBhc3NpZ25lZF86IHZvaWQgMCxcbiAgICAgICAgYmFzZV86IHRhcmdldCxcbiAgICAgICAgZHJhZnRfOiB0aGlzLFxuICAgICAgICBpc01hbnVhbF86IGZhbHNlLFxuICAgICAgICByZXZva2VkXzogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICAgIGdldCBzaXplKCkge1xuICAgICAgcmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuc2l6ZTtcbiAgICB9XG4gICAgaGFzKGtleSkge1xuICAgICAgcmV0dXJuIGxhdGVzdCh0aGlzW0RSQUZUX1NUQVRFXSkuaGFzKGtleSk7XG4gICAgfVxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdO1xuICAgICAgYXNzZXJ0VW5yZXZva2VkKHN0YXRlKTtcbiAgICAgIGlmICghbGF0ZXN0KHN0YXRlKS5oYXMoa2V5KSB8fCBsYXRlc3Qoc3RhdGUpLmdldChrZXkpICE9PSB2YWx1ZSkge1xuICAgICAgICBwcmVwYXJlTWFwQ29weShzdGF0ZSk7XG4gICAgICAgIG1hcmtDaGFuZ2VkKHN0YXRlKTtcbiAgICAgICAgc3RhdGUuYXNzaWduZWRfLnNldChrZXksIHRydWUpO1xuICAgICAgICBzdGF0ZS5jb3B5Xy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHN0YXRlLmFzc2lnbmVkXy5zZXQoa2V5LCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkZWxldGUoa2V5KSB7XG4gICAgICBpZiAoIXRoaXMuaGFzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXTtcbiAgICAgIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gICAgICBwcmVwYXJlTWFwQ29weShzdGF0ZSk7XG4gICAgICBtYXJrQ2hhbmdlZChzdGF0ZSk7XG4gICAgICBpZiAoc3RhdGUuYmFzZV8uaGFzKGtleSkpIHtcbiAgICAgICAgc3RhdGUuYXNzaWduZWRfLnNldChrZXksIGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLmFzc2lnbmVkXy5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIHN0YXRlLmNvcHlfLmRlbGV0ZShrZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXTtcbiAgICAgIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gICAgICBpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG4gICAgICAgIHByZXBhcmVNYXBDb3B5KHN0YXRlKTtcbiAgICAgICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgICAgICBzdGF0ZS5hc3NpZ25lZF8gPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgICBlYWNoKHN0YXRlLmJhc2VfLCAoa2V5KSA9PiB7XG4gICAgICAgICAgc3RhdGUuYXNzaWduZWRfLnNldChrZXksIGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXRlLmNvcHlfLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvckVhY2goY2IsIHRoaXNBcmcpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV07XG4gICAgICBsYXRlc3Qoc3RhdGUpLmZvckVhY2goKF92YWx1ZSwga2V5LCBfbWFwKSA9PiB7XG4gICAgICAgIGNiLmNhbGwodGhpc0FyZywgdGhpcy5nZXQoa2V5KSwga2V5LCB0aGlzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQoa2V5KSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdO1xuICAgICAgYXNzZXJ0VW5yZXZva2VkKHN0YXRlKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gbGF0ZXN0KHN0YXRlKS5nZXQoa2V5KTtcbiAgICAgIGlmIChzdGF0ZS5maW5hbGl6ZWRfIHx8ICFpc0RyYWZ0YWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlICE9PSBzdGF0ZS5iYXNlXy5nZXQoa2V5KSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBkcmFmdCA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSk7XG4gICAgICBwcmVwYXJlTWFwQ29weShzdGF0ZSk7XG4gICAgICBzdGF0ZS5jb3B5Xy5zZXQoa2V5LCBkcmFmdCk7XG4gICAgICByZXR1cm4gZHJhZnQ7XG4gICAgfVxuICAgIGtleXMoKSB7XG4gICAgICByZXR1cm4gbGF0ZXN0KHRoaXNbRFJBRlRfU1RBVEVdKS5rZXlzKCk7XG4gICAgfVxuICAgIHZhbHVlcygpIHtcbiAgICAgIGNvbnN0IGl0ZXJhdG9yID0gdGhpcy5rZXlzKCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4gdGhpcy52YWx1ZXMoKSxcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHIgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgaWYgKHIuZG9uZSlcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBlbnRyaWVzKCkge1xuICAgICAgY29uc3QgaXRlcmF0b3IgPSB0aGlzLmtleXMoKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiAoKSA9PiB0aGlzLmVudHJpZXMoKSxcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHIgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgaWYgKHIuZG9uZSlcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoci52YWx1ZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICAgICAgdmFsdWU6IFtyLnZhbHVlLCB2YWx1ZV1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICBbKERSQUZUX1NUQVRFLCBTeW1ib2wuaXRlcmF0b3IpXSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmVudHJpZXMoKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gcHJveHlNYXBfKHRhcmdldCwgcGFyZW50KSB7XG4gICAgcmV0dXJuIG5ldyBEcmFmdE1hcCh0YXJnZXQsIHBhcmVudCk7XG4gIH1cbiAgZnVuY3Rpb24gcHJlcGFyZU1hcENvcHkoc3RhdGUpIHtcbiAgICBpZiAoIXN0YXRlLmNvcHlfKSB7XG4gICAgICBzdGF0ZS5hc3NpZ25lZF8gPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xuICAgICAgc3RhdGUuY29weV8gPSBuZXcgTWFwKHN0YXRlLmJhc2VfKTtcbiAgICB9XG4gIH1cbiAgY2xhc3MgRHJhZnRTZXQgZXh0ZW5kcyBTZXQge1xuICAgIGNvbnN0cnVjdG9yKHRhcmdldCwgcGFyZW50KSB7XG4gICAgICBzdXBlcigpO1xuICAgICAgdGhpc1tEUkFGVF9TVEFURV0gPSB7XG4gICAgICAgIHR5cGVfOiAzIC8qIFNldCAqLyxcbiAgICAgICAgcGFyZW50XzogcGFyZW50LFxuICAgICAgICBzY29wZV86IHBhcmVudCA/IHBhcmVudC5zY29wZV8gOiBnZXRDdXJyZW50U2NvcGUoKSxcbiAgICAgICAgbW9kaWZpZWRfOiBmYWxzZSxcbiAgICAgICAgZmluYWxpemVkXzogZmFsc2UsXG4gICAgICAgIGNvcHlfOiB2b2lkIDAsXG4gICAgICAgIGJhc2VfOiB0YXJnZXQsXG4gICAgICAgIGRyYWZ0XzogdGhpcyxcbiAgICAgICAgZHJhZnRzXzogLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSxcbiAgICAgICAgcmV2b2tlZF86IGZhbHNlLFxuICAgICAgICBpc01hbnVhbF86IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgIHJldHVybiBsYXRlc3QodGhpc1tEUkFGVF9TVEFURV0pLnNpemU7XG4gICAgfVxuICAgIGhhcyh2YWx1ZSkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXTtcbiAgICAgIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gICAgICBpZiAoIXN0YXRlLmNvcHlfKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5iYXNlXy5oYXModmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLmNvcHlfLmhhcyh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgaWYgKHN0YXRlLmRyYWZ0c18uaGFzKHZhbHVlKSAmJiBzdGF0ZS5jb3B5Xy5oYXMoc3RhdGUuZHJhZnRzXy5nZXQodmFsdWUpKSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGFkZCh2YWx1ZSkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXTtcbiAgICAgIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gICAgICBpZiAoIXRoaXMuaGFzKHZhbHVlKSkge1xuICAgICAgICBwcmVwYXJlU2V0Q29weShzdGF0ZSk7XG4gICAgICAgIG1hcmtDaGFuZ2VkKHN0YXRlKTtcbiAgICAgICAgc3RhdGUuY29weV8uYWRkKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkZWxldGUodmFsdWUpIHtcbiAgICAgIGlmICghdGhpcy5oYXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV07XG4gICAgICBhc3NlcnRVbnJldm9rZWQoc3RhdGUpO1xuICAgICAgcHJlcGFyZVNldENvcHkoc3RhdGUpO1xuICAgICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgICAgcmV0dXJuIHN0YXRlLmNvcHlfLmRlbGV0ZSh2YWx1ZSkgfHwgKHN0YXRlLmRyYWZ0c18uaGFzKHZhbHVlKSA/IHN0YXRlLmNvcHlfLmRlbGV0ZShzdGF0ZS5kcmFmdHNfLmdldCh2YWx1ZSkpIDogKFxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmYWxzZVxuICAgICAgKSk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzW0RSQUZUX1NUQVRFXTtcbiAgICAgIGFzc2VydFVucmV2b2tlZChzdGF0ZSk7XG4gICAgICBpZiAobGF0ZXN0KHN0YXRlKS5zaXplKSB7XG4gICAgICAgIHByZXBhcmVTZXRDb3B5KHN0YXRlKTtcbiAgICAgICAgbWFya0NoYW5nZWQoc3RhdGUpO1xuICAgICAgICBzdGF0ZS5jb3B5Xy5jbGVhcigpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZXMoKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHRoaXNbRFJBRlRfU1RBVEVdO1xuICAgICAgYXNzZXJ0VW5yZXZva2VkKHN0YXRlKTtcbiAgICAgIHByZXBhcmVTZXRDb3B5KHN0YXRlKTtcbiAgICAgIHJldHVybiBzdGF0ZS5jb3B5Xy52YWx1ZXMoKTtcbiAgICB9XG4gICAgZW50cmllcygpIHtcbiAgICAgIGNvbnN0IHN0YXRlID0gdGhpc1tEUkFGVF9TVEFURV07XG4gICAgICBhc3NlcnRVbnJldm9rZWQoc3RhdGUpO1xuICAgICAgcHJlcGFyZVNldENvcHkoc3RhdGUpO1xuICAgICAgcmV0dXJuIHN0YXRlLmNvcHlfLmVudHJpZXMoKTtcbiAgICB9XG4gICAga2V5cygpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlcygpO1xuICAgIH1cbiAgICBbKERSQUZUX1NUQVRFLCBTeW1ib2wuaXRlcmF0b3IpXSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlcygpO1xuICAgIH1cbiAgICBmb3JFYWNoKGNiLCB0aGlzQXJnKSB7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IHRoaXMudmFsdWVzKCk7XG4gICAgICBsZXQgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgd2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuICAgICAgICBjYi5jYWxsKHRoaXNBcmcsIHJlc3VsdC52YWx1ZSwgcmVzdWx0LnZhbHVlLCB0aGlzKTtcbiAgICAgICAgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBwcm94eVNldF8odGFyZ2V0LCBwYXJlbnQpIHtcbiAgICByZXR1cm4gbmV3IERyYWZ0U2V0KHRhcmdldCwgcGFyZW50KTtcbiAgfVxuICBmdW5jdGlvbiBwcmVwYXJlU2V0Q29weShzdGF0ZSkge1xuICAgIGlmICghc3RhdGUuY29weV8pIHtcbiAgICAgIHN0YXRlLmNvcHlfID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgICAgIHN0YXRlLmJhc2VfLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChpc0RyYWZ0YWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBkcmFmdCA9IGNyZWF0ZVByb3h5KHZhbHVlLCBzdGF0ZSk7XG4gICAgICAgICAgc3RhdGUuZHJhZnRzXy5zZXQodmFsdWUsIGRyYWZ0KTtcbiAgICAgICAgICBzdGF0ZS5jb3B5Xy5hZGQoZHJhZnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLmNvcHlfLmFkZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhc3NlcnRVbnJldm9rZWQoc3RhdGUpIHtcbiAgICBpZiAoc3RhdGUucmV2b2tlZF8pXG4gICAgICBkaWUoMywgSlNPTi5zdHJpbmdpZnkobGF0ZXN0KHN0YXRlKSkpO1xuICB9XG4gIGxvYWRQbHVnaW4oXCJNYXBTZXRcIiwgeyBwcm94eU1hcF8sIHByb3h5U2V0XyB9KTtcbn1cblxuLy8gc3JjL2ltbWVyLnRzXG52YXIgaW1tZXIgPSBuZXcgSW1tZXIyKCk7XG52YXIgcHJvZHVjZSA9IGltbWVyLnByb2R1Y2U7XG52YXIgcHJvZHVjZVdpdGhQYXRjaGVzID0gaW1tZXIucHJvZHVjZVdpdGhQYXRjaGVzLmJpbmQoXG4gIGltbWVyXG4pO1xudmFyIHNldEF1dG9GcmVlemUgPSBpbW1lci5zZXRBdXRvRnJlZXplLmJpbmQoaW1tZXIpO1xudmFyIHNldFVzZVN0cmljdFNoYWxsb3dDb3B5ID0gaW1tZXIuc2V0VXNlU3RyaWN0U2hhbGxvd0NvcHkuYmluZChpbW1lcik7XG52YXIgYXBwbHlQYXRjaGVzID0gaW1tZXIuYXBwbHlQYXRjaGVzLmJpbmQoaW1tZXIpO1xudmFyIGNyZWF0ZURyYWZ0ID0gaW1tZXIuY3JlYXRlRHJhZnQuYmluZChpbW1lcik7XG52YXIgZmluaXNoRHJhZnQgPSBpbW1lci5maW5pc2hEcmFmdC5iaW5kKGltbWVyKTtcbmZ1bmN0aW9uIGNhc3REcmFmdCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5mdW5jdGlvbiBjYXN0SW1tdXRhYmxlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cbmV4cG9ydCB7XG4gIEltbWVyMiBhcyBJbW1lcixcbiAgYXBwbHlQYXRjaGVzLFxuICBjYXN0RHJhZnQsXG4gIGNhc3RJbW11dGFibGUsXG4gIGNyZWF0ZURyYWZ0LFxuICBjdXJyZW50LFxuICBlbmFibGVNYXBTZXQsXG4gIGVuYWJsZVBhdGNoZXMsXG4gIGZpbmlzaERyYWZ0LFxuICBmcmVlemUsXG4gIERSQUZUQUJMRSBhcyBpbW1lcmFibGUsXG4gIGlzRHJhZnQsXG4gIGlzRHJhZnRhYmxlLFxuICBOT1RISU5HIGFzIG5vdGhpbmcsXG4gIG9yaWdpbmFsLFxuICBwcm9kdWNlLFxuICBwcm9kdWNlV2l0aFBhdGNoZXMsXG4gIHNldEF1dG9GcmVlemUsXG4gIHNldFVzZVN0cmljdFNoYWxsb3dDb3B5XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW1tZXIubWpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/immer/dist/immer.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/components/Hints/index.mjs":
/*!*************************************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/components/Hints/index.mjs ***!
\*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Hints; }\n/* harmony export */ });\n/* harmony import */ var intro_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! intro.js */ \"./node_modules/intro.js/intro.module.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../helpers/proptypes.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/proptypes.mjs\");\n/* harmony import */ var _helpers_defaultProps_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/defaultProps.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/defaultProps.mjs\");\n/* harmony import */ var _helpers_server_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/server.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/server.mjs\");\n\n\n\n\n\n\n/**\n * Intro.js Hints Component.\n */\nclass Hints extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n /**\n * React Props\n * @type {Object}\n */\n static propTypes = {\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_5__.bool,\n hints: prop_types__WEBPACK_IMPORTED_MODULE_5__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_5__.shape({\n element: prop_types__WEBPACK_IMPORTED_MODULE_5__.string.isRequired,\n hint: prop_types__WEBPACK_IMPORTED_MODULE_5__.string.isRequired,\n hintPosition: _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_2__.hintPosition\n })).isRequired,\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_5__.func,\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_5__.func,\n options: _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_2__.options\n };\n\n /**\n * React Default Props\n * @type {Object}\n */\n static defaultProps = {\n enabled: false,\n onClick: null,\n onClose: null,\n options: _helpers_defaultProps_mjs__WEBPACK_IMPORTED_MODULE_3__.options\n };\n\n /**\n * Creates a new instance of the component.\n * @class\n * @param {Object} props - The props of the component.\n */\n constructor(props) {\n super(props);\n this.introJs = null;\n this.isConfigured = false;\n this.installIntroJs();\n }\n\n /**\n * Lifecycle: componentDidMount.\n * We use this event to enable Intro.js hints at mount time if enabled right from the start.\n */\n componentDidMount() {\n if (this.props.enabled) {\n this.configureIntroJs();\n this.renderHints();\n }\n }\n\n /**\n * Lifecycle: componentDidUpdate.\n * @param {Object} prevProps - The previous props.\n */\n componentDidUpdate(prevProps) {\n const {\n enabled,\n hints,\n options\n } = this.props;\n if (!this.isConfigured || prevProps.hints !== hints || prevProps.options !== options) {\n this.configureIntroJs();\n this.renderHints();\n }\n if (prevProps.enabled !== enabled) {\n this.renderHints();\n }\n }\n\n /**\n * Lifecycle: componentWillUnmount.\n * We use this even to hide the hints when the component is unmounted.\n */\n componentWillUnmount() {\n this.introJs.hideHints();\n }\n\n /**\n * Installs Intro.js.\n */\n installIntroJs() {\n if ((0,_helpers_server_mjs__WEBPACK_IMPORTED_MODULE_4__.isServer)()) {\n return;\n }\n this.introJs = (0,intro_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n const {\n onClick,\n onClose\n } = this.props;\n if (onClick) {\n this.introJs.onhintclick(onClick);\n }\n if (onClose) {\n this.introJs.onhintclose(onClose);\n }\n }\n\n /**\n * Configures Intro.js if not already configured.\n */\n configureIntroJs() {\n const {\n options,\n hints\n } = this.props;\n\n // We need to remove all hints otherwise new hints won't be added.\n this.introJs.removeHints();\n this.introJs.setOptions({\n ...options,\n hints\n });\n this.isConfigured = true;\n }\n\n /**\n * Renders the Intro.js hints.\n */\n renderHints() {\n const {\n enabled,\n hints\n } = this.props;\n if (enabled && hints.length > 0) {\n this.introJs.showHints();\n } else if (!enabled) {\n this.introJs.hideHints();\n }\n }\n\n /**\n * Renders the component.\n * @return {null} We do not want to render anything.\n */\n render() {\n return null;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9IaW50cy9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUErQjtBQUNJO0FBQ0Q7QUFDOEI7QUFDTTtBQUNsQjtBQUNwRDtBQUNBO0FBQ0E7QUFDZSxvQkFBb0IsNENBQVM7QUFDNUM7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsYUFBYSw0Q0FBYztBQUMzQixXQUFXLCtDQUFpQixDQUFDLDZDQUFlO0FBQzVDLGVBQWUsOENBQWdCO0FBQy9CLFlBQVksOENBQWdCO0FBQzVCLG9CQUFvQixnRUFBNkI7QUFDakQsS0FBSztBQUNMLGFBQWEsNENBQWM7QUFDM0IsYUFBYSw0Q0FBYztBQUMzQixhQUFhLDJEQUF3QjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDhEQUEyQjtBQUN4Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsUUFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkRBQVE7QUFDaEI7QUFDQTtBQUNBLG1CQUFtQixvREFBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzLXJlYWN0L2Rpc3QvZXNtL2NvbXBvbmVudHMvSGludHMvaW5kZXgubWpzP2ZmNTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGludHJvSnMgZnJvbSAnaW50cm8uanMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIGludHJvSnNQcm9wVHlwZXMgZnJvbSBcIi4uLy4uL2hlbHBlcnMvcHJvcHR5cGVzLm1qc1wiO1xuaW1wb3J0ICogYXMgaW50cm9Kc0RlZmF1bHRQcm9wcyBmcm9tIFwiLi4vLi4vaGVscGVycy9kZWZhdWx0UHJvcHMubWpzXCI7XG5pbXBvcnQgeyBpc1NlcnZlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL3NlcnZlci5tanNcIjtcbi8qKlxuICogSW50cm8uanMgSGludHMgQ29tcG9uZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIaW50cyBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBSZWFjdCBQcm9wc1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBlbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBoaW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVsZW1lbnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGhpbnQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGhpbnRQb3NpdGlvbjogaW50cm9Kc1Byb3BUeXBlcy5oaW50UG9zaXRpb25cbiAgICB9KSkuaXNSZXF1aXJlZCxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvcHRpb25zOiBpbnRyb0pzUHJvcFR5cGVzLm9wdGlvbnNcbiAgfTtcblxuICAvKipcbiAgICogUmVhY3QgRGVmYXVsdCBQcm9wc1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICBvbkNsaWNrOiBudWxsLFxuICAgIG9uQ2xvc2U6IG51bGwsXG4gICAgb3B0aW9uczogaW50cm9Kc0RlZmF1bHRQcm9wcy5vcHRpb25zXG4gIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQGNsYXNzXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIFRoZSBwcm9wcyBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5pbnRyb0pzID0gbnVsbDtcbiAgICB0aGlzLmlzQ29uZmlndXJlZCA9IGZhbHNlO1xuICAgIHRoaXMuaW5zdGFsbEludHJvSnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGU6IGNvbXBvbmVudERpZE1vdW50LlxuICAgKiBXZSB1c2UgdGhpcyBldmVudCB0byBlbmFibGUgSW50cm8uanMgaGludHMgYXQgbW91bnQgdGltZSBpZiBlbmFibGVkIHJpZ2h0IGZyb20gdGhlIHN0YXJ0LlxuICAgKi9cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWd1cmVJbnRyb0pzKCk7XG4gICAgICB0aGlzLnJlbmRlckhpbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZTogY29tcG9uZW50RGlkVXBkYXRlLlxuICAgKiBAcGFyYW0gIHtPYmplY3R9IHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBwcm9wcy5cbiAgICovXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgaGludHMsXG4gICAgICBvcHRpb25zXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCF0aGlzLmlzQ29uZmlndXJlZCB8fCBwcmV2UHJvcHMuaGludHMgIT09IGhpbnRzIHx8IHByZXZQcm9wcy5vcHRpb25zICE9PSBvcHRpb25zKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZUludHJvSnMoKTtcbiAgICAgIHRoaXMucmVuZGVySGludHMoKTtcbiAgICB9XG4gICAgaWYgKHByZXZQcm9wcy5lbmFibGVkICE9PSBlbmFibGVkKSB7XG4gICAgICB0aGlzLnJlbmRlckhpbnRzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZTogY29tcG9uZW50V2lsbFVubW91bnQuXG4gICAqIFdlIHVzZSB0aGlzIGV2ZW4gdG8gaGlkZSB0aGUgaGludHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICovXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuaW50cm9Kcy5oaWRlSGludHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBJbnRyby5qcy5cbiAgICovXG4gIGluc3RhbGxJbnRyb0pzKCkge1xuICAgIGlmIChpc1NlcnZlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50cm9KcyA9IGludHJvSnMoKTtcbiAgICBjb25zdCB7XG4gICAgICBvbkNsaWNrLFxuICAgICAgb25DbG9zZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICB0aGlzLmludHJvSnMub25oaW50Y2xpY2sob25DbGljayk7XG4gICAgfVxuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICB0aGlzLmludHJvSnMub25oaW50Y2xvc2Uob25DbG9zZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZXMgSW50cm8uanMgaWYgbm90IGFscmVhZHkgY29uZmlndXJlZC5cbiAgICovXG4gIGNvbmZpZ3VyZUludHJvSnMoKSB7XG4gICAgY29uc3Qge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIGhpbnRzXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSBhbGwgaGludHMgb3RoZXJ3aXNlIG5ldyBoaW50cyB3b24ndCBiZSBhZGRlZC5cbiAgICB0aGlzLmludHJvSnMucmVtb3ZlSGludHMoKTtcbiAgICB0aGlzLmludHJvSnMuc2V0T3B0aW9ucyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaGludHNcbiAgICB9KTtcbiAgICB0aGlzLmlzQ29uZmlndXJlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgSW50cm8uanMgaGludHMuXG4gICAqL1xuICByZW5kZXJIaW50cygpIHtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgaGludHNcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoZW5hYmxlZCAmJiBoaW50cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmludHJvSnMuc2hvd0hpbnRzKCk7XG4gICAgfSBlbHNlIGlmICghZW5hYmxlZCkge1xuICAgICAgdGhpcy5pbnRyb0pzLmhpZGVIaW50cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge251bGx9IFdlIGRvIG5vdCB3YW50IHRvIHJlbmRlciBhbnl0aGluZy5cbiAgICovXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/components/Hints/index.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/components/Steps/index.mjs":
/*!*************************************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/components/Steps/index.mjs ***!
\*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Steps; }\n/* harmony export */ });\n/* harmony import */ var intro_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! intro.js */ \"./node_modules/intro.js/intro.module.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\");\n/* harmony import */ var _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/proptypes.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/proptypes.mjs\");\n/* harmony import */ var _helpers_defaultProps_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/defaultProps.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/defaultProps.mjs\");\n/* harmony import */ var _helpers_server_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../helpers/server.mjs */ \"./node_modules/intro.js-react/dist/esm/helpers/server.mjs\");\n\n\n\n\n\n\n\n/**\n * Intro.js Steps Component.\n */\nclass Steps extends react__WEBPACK_IMPORTED_MODULE_1__.Component {\n /**\n * React Props\n * @type {Object}\n */\n static propTypes = {\n enabled: prop_types__WEBPACK_IMPORTED_MODULE_6__.bool,\n initialStep: prop_types__WEBPACK_IMPORTED_MODULE_6__.number.isRequired,\n steps: prop_types__WEBPACK_IMPORTED_MODULE_6__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_6__.shape({\n element: prop_types__WEBPACK_IMPORTED_MODULE_6__.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_6__.string, /* istanbul ignore next */\n typeof Element === 'undefined' ? prop_types__WEBPACK_IMPORTED_MODULE_6__.any : prop_types__WEBPACK_IMPORTED_MODULE_6__.instanceOf(Element)]),\n intro: prop_types__WEBPACK_IMPORTED_MODULE_6__.node.isRequired,\n position: _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_3__.tooltipPosition,\n tooltipClass: prop_types__WEBPACK_IMPORTED_MODULE_6__.string,\n highlightClass: prop_types__WEBPACK_IMPORTED_MODULE_6__.string\n })).isRequired,\n onStart: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onExit: prop_types__WEBPACK_IMPORTED_MODULE_6__.func.isRequired,\n onBeforeExit: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onBeforeChange: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onAfterChange: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onPreventChange: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n onComplete: prop_types__WEBPACK_IMPORTED_MODULE_6__.func,\n options: _helpers_proptypes_mjs__WEBPACK_IMPORTED_MODULE_3__.options\n };\n\n /**\n * React Default Props\n * @type {Object}\n */\n static defaultProps = {\n enabled: false,\n onStart: null,\n onBeforeExit: null,\n onBeforeChange: null,\n onAfterChange: null,\n onChange: null,\n onPreventChange: null,\n onComplete: null,\n options: _helpers_defaultProps_mjs__WEBPACK_IMPORTED_MODULE_4__.options\n };\n\n /**\n * Creates a new instance of the component.\n * @class\n * @param {Object} props - The props of the component.\n */\n constructor(props) {\n super(props);\n this.introJs = null;\n this.isConfigured = false;\n // We need to manually keep track of the visibility state to avoid a callback hell.\n this.isVisible = false;\n this.installIntroJs();\n }\n\n /**\n * Lifecycle: componentDidMount.\n * We use this event to enable Intro.js steps at mount time if enabled right from the start.\n */\n componentDidMount() {\n if (this.props.enabled) {\n this.configureIntroJs();\n this.renderSteps();\n }\n }\n\n /**\n * Lifecycle: componentDidUpdate.\n * @param {Object} prevProps - The previous props.\n */\n componentDidUpdate(prevProps) {\n const {\n enabled,\n steps,\n options\n } = this.props;\n if (!this.isConfigured || prevProps.steps !== steps || prevProps.options !== options) {\n this.configureIntroJs();\n this.renderSteps();\n }\n if (prevProps.enabled !== enabled) {\n this.renderSteps();\n }\n }\n\n /**\n * Lifecycle: componentWillUnmount.\n * We use this even to hide the steps when the component is unmounted.\n */\n componentWillUnmount() {\n this.introJs.exit();\n }\n\n /**\n * Triggered when Intro.js steps are exited.\n */\n onExit = () => {\n const {\n onExit\n } = this.props;\n this.isVisible = false;\n onExit(this.introJs._currentStep);\n };\n\n /**\n * Triggered before exiting the intro.\n * @return {Boolean} Returning `false` will prevent exiting the intro.\n */\n onBeforeExit = () => {\n const {\n onBeforeExit\n } = this.props;\n if (onBeforeExit) {\n return onBeforeExit(this.introJs._currentStep);\n }\n return true;\n };\n\n /**\n * Triggered before changing step.\n * @return {Boolean} Returning `false` will prevent the step transition.\n */\n onBeforeChange = nextElement => {\n if (!this.isVisible) {\n return true;\n }\n const {\n onBeforeChange,\n onPreventChange\n } = this.props;\n if (onBeforeChange) {\n const continueStep = onBeforeChange(this.introJs._currentStep, nextElement);\n if (continueStep === false && onPreventChange) {\n setTimeout(() => {\n onPreventChange(this.introJs._currentStep);\n }, 0);\n }\n return continueStep;\n }\n return true;\n };\n\n /**\n * Triggered after changing step.\n * @param {HTMLElement} element - The element associated to the new step.\n */\n onAfterChange = element => {\n if (!this.isVisible) {\n return;\n }\n const {\n onAfterChange\n } = this.props;\n if (onAfterChange) {\n onAfterChange(this.introJs._currentStep, element);\n }\n };\n\n /**\n * Triggered when changing step.\n * @param {HTMLElement} element - The element associated to the next step.\n */\n onChange = element => {\n if (!this.isVisible) {\n return;\n }\n const {\n onChange\n } = this.props;\n if (onChange) {\n onChange(this.introJs._currentStep, element);\n }\n };\n\n /**\n * Triggered when completing all the steps.\n */\n onComplete = () => {\n const {\n onComplete\n } = this.props;\n if (onComplete) {\n onComplete();\n }\n };\n\n /**\n * Updates the element associated to a step based on its index.\n * This is useful when the associated element is not present in the DOM on page load.\n * @param {number} stepIndex - The index of the step to update.\n */\n updateStepElement = stepIndex => {\n const element = document.querySelector(this.introJs._options.steps[stepIndex].element);\n if (element) {\n this.introJs._introItems[stepIndex].element = element;\n this.introJs._introItems[stepIndex].position = this.introJs._options.steps[stepIndex].position || 'auto';\n }\n };\n\n /**\n * Installs Intro.js.\n */\n installIntroJs() {\n if ((0,_helpers_server_mjs__WEBPACK_IMPORTED_MODULE_5__.isServer)()) {\n return;\n }\n this.introJs = (0,intro_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n this.introJs.onexit(this.onExit);\n this.introJs.onbeforeexit(this.onBeforeExit);\n this.introJs.onbeforechange(this.onBeforeChange);\n this.introJs.onafterchange(this.onAfterChange);\n this.introJs.onchange(this.onChange);\n this.introJs.oncomplete(this.onComplete);\n }\n\n /**\n * Configures Intro.js if not already configured.\n */\n configureIntroJs() {\n const {\n options,\n steps\n } = this.props;\n const sanitizedSteps = steps.map(step => {\n if ( /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(step.intro)) {\n return {\n ...step,\n intro: (0,react_dom_server__WEBPACK_IMPORTED_MODULE_2__.renderToStaticMarkup)(step.intro)\n };\n }\n return step;\n });\n this.introJs.setOptions({\n ...options,\n steps: sanitizedSteps\n });\n this.isConfigured = true;\n }\n\n /**\n * Renders the Intro.js steps.\n */\n renderSteps() {\n const {\n enabled,\n initialStep,\n steps,\n onStart\n } = this.props;\n if (enabled && steps.length > 0 && !this.isVisible) {\n this.introJs.start();\n this.isVisible = true;\n this.introJs.goToStepNumber(initialStep + 1);\n if (onStart) {\n onStart(this.introJs._currentStep);\n }\n } else if (!enabled && this.isVisible) {\n this.isVisible = false;\n this.introJs.exit();\n }\n }\n\n /**\n * Renders the component.\n * @return {null} We do not want to render anything.\n */\n render() {\n return null;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TdGVwcy9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0I7QUFDSTtBQUNlO0FBQ007QUFDUTtBQUNNO0FBQ2xCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNlLG9CQUFvQiw0Q0FBUztBQUM1QztBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxhQUFhLDRDQUFjO0FBQzNCLGlCQUFpQiw4Q0FBZ0I7QUFDakMsV0FBVywrQ0FBaUIsQ0FBQyw2Q0FBZTtBQUM1QyxlQUFlLGlEQUFtQixFQUFFLDhDQUFnQjtBQUNwRCx1Q0FBdUMsMkNBQWEsR0FBRyxrREFBb0I7QUFDM0UsYUFBYSw0Q0FBYztBQUMzQixnQkFBZ0IsbUVBQWdDO0FBQ2hELG9CQUFvQiw4Q0FBZ0I7QUFDcEMsc0JBQXNCLDhDQUFnQjtBQUN0QyxLQUFLO0FBQ0wsYUFBYSw0Q0FBYztBQUMzQixZQUFZLDRDQUFjO0FBQzFCLGtCQUFrQiw0Q0FBYztBQUNoQyxvQkFBb0IsNENBQWM7QUFDbEMsbUJBQW1CLDRDQUFjO0FBQ2pDLGNBQWMsNENBQWM7QUFDNUIscUJBQXFCLDRDQUFjO0FBQ25DLGdCQUFnQiw0Q0FBYztBQUM5QixhQUFhLDJEQUF3QjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSw4REFBMkI7QUFDeEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsU0FBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsYUFBYTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxhQUFhO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFFBQVE7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkRBQVE7QUFDaEI7QUFDQTtBQUNBLG1CQUFtQixvREFBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLHdCQUF3QixxREFBYztBQUN0QztBQUNBO0FBQ0EsaUJBQWlCLHNFQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vY29tcG9uZW50cy9TdGVwcy9pbmRleC5tanM/ZmE3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW50cm9KcyBmcm9tICdpbnRyby5qcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlclRvU3RhdGljTWFya3VwIH0gZnJvbSAncmVhY3QtZG9tL3NlcnZlcic7XG5pbXBvcnQgKiBhcyBpbnRyb0pzUHJvcFR5cGVzIGZyb20gXCIuLi8uLi9oZWxwZXJzL3Byb3B0eXBlcy5tanNcIjtcbmltcG9ydCAqIGFzIGludHJvSnNEZWZhdWx0UHJvcHMgZnJvbSBcIi4uLy4uL2hlbHBlcnMvZGVmYXVsdFByb3BzLm1qc1wiO1xuaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9zZXJ2ZXIubWpzXCI7XG4vKipcbiAqIEludHJvLmpzIFN0ZXBzIENvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RlcHMgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmVhY3QgUHJvcHNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgZW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgaW5pdGlhbFN0ZXA6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBzdGVwczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVsZW1lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB0eXBlb2YgRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBQcm9wVHlwZXMuYW55IDogUHJvcFR5cGVzLmluc3RhbmNlT2YoRWxlbWVudCldKSxcbiAgICAgIGludHJvOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICAgICAgcG9zaXRpb246IGludHJvSnNQcm9wVHlwZXMudG9vbHRpcFBvc2l0aW9uLFxuICAgICAgdG9vbHRpcENsYXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgaGlnaGxpZ2h0Q2xhc3M6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSkuaXNSZXF1aXJlZCxcbiAgICBvblN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25CZWZvcmVFeGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkJlZm9yZUNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25BZnRlckNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uUHJldmVudENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Db21wbGV0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb3B0aW9uczogaW50cm9Kc1Byb3BUeXBlcy5vcHRpb25zXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlYWN0IERlZmF1bHQgUHJvcHNcbiAgICogQHR5cGUge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gICAgb25TdGFydDogbnVsbCxcbiAgICBvbkJlZm9yZUV4aXQ6IG51bGwsXG4gICAgb25CZWZvcmVDaGFuZ2U6IG51bGwsXG4gICAgb25BZnRlckNoYW5nZTogbnVsbCxcbiAgICBvbkNoYW5nZTogbnVsbCxcbiAgICBvblByZXZlbnRDaGFuZ2U6IG51bGwsXG4gICAgb25Db21wbGV0ZTogbnVsbCxcbiAgICBvcHRpb25zOiBpbnRyb0pzRGVmYXVsdFByb3BzLm9wdGlvbnNcbiAgfTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAY2xhc3NcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIC0gVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLmludHJvSnMgPSBudWxsO1xuICAgIHRoaXMuaXNDb25maWd1cmVkID0gZmFsc2U7XG4gICAgLy8gV2UgbmVlZCB0byBtYW51YWxseSBrZWVwIHRyYWNrIG9mIHRoZSB2aXNpYmlsaXR5IHN0YXRlIHRvIGF2b2lkIGEgY2FsbGJhY2sgaGVsbC5cbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuaW5zdGFsbEludHJvSnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWZlY3ljbGU6IGNvbXBvbmVudERpZE1vdW50LlxuICAgKiBXZSB1c2UgdGhpcyBldmVudCB0byBlbmFibGUgSW50cm8uanMgc3RlcHMgYXQgbW91bnQgdGltZSBpZiBlbmFibGVkIHJpZ2h0IGZyb20gdGhlIHN0YXJ0LlxuICAgKi9cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWd1cmVJbnRyb0pzKCk7XG4gICAgICB0aGlzLnJlbmRlclN0ZXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZTogY29tcG9uZW50RGlkVXBkYXRlLlxuICAgKiBAcGFyYW0gIHtPYmplY3R9IHByZXZQcm9wcyAtIFRoZSBwcmV2aW91cyBwcm9wcy5cbiAgICovXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgc3RlcHMsXG4gICAgICBvcHRpb25zXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKCF0aGlzLmlzQ29uZmlndXJlZCB8fCBwcmV2UHJvcHMuc3RlcHMgIT09IHN0ZXBzIHx8IHByZXZQcm9wcy5vcHRpb25zICE9PSBvcHRpb25zKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZUludHJvSnMoKTtcbiAgICAgIHRoaXMucmVuZGVyU3RlcHMoKTtcbiAgICB9XG4gICAgaWYgKHByZXZQcm9wcy5lbmFibGVkICE9PSBlbmFibGVkKSB7XG4gICAgICB0aGlzLnJlbmRlclN0ZXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpZmVjeWNsZTogY29tcG9uZW50V2lsbFVubW91bnQuXG4gICAqIFdlIHVzZSB0aGlzIGV2ZW4gdG8gaGlkZSB0aGUgc3RlcHMgd2hlbiB0aGUgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICovXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuaW50cm9Kcy5leGl0KCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gSW50cm8uanMgc3RlcHMgYXJlIGV4aXRlZC5cbiAgICovXG4gIG9uRXhpdCA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvbkV4aXRcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgIG9uRXhpdCh0aGlzLmludHJvSnMuX2N1cnJlbnRTdGVwKTtcbiAgfTtcblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGJlZm9yZSBleGl0aW5nIHRoZSBpbnRyby5cbiAgICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJuaW5nIGBmYWxzZWAgd2lsbCBwcmV2ZW50IGV4aXRpbmcgdGhlIGludHJvLlxuICAgKi9cbiAgb25CZWZvcmVFeGl0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG9uQmVmb3JlRXhpdFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChvbkJlZm9yZUV4aXQpIHtcbiAgICAgIHJldHVybiBvbkJlZm9yZUV4aXQodGhpcy5pbnRyb0pzLl9jdXJyZW50U3RlcCk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgYmVmb3JlIGNoYW5naW5nIHN0ZXAuXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59IFJldHVybmluZyBgZmFsc2VgIHdpbGwgcHJldmVudCB0aGUgc3RlcCB0cmFuc2l0aW9uLlxuICAgKi9cbiAgb25CZWZvcmVDaGFuZ2UgPSBuZXh0RWxlbWVudCA9PiB7XG4gICAgaWYgKCF0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIG9uQmVmb3JlQ2hhbmdlLFxuICAgICAgb25QcmV2ZW50Q2hhbmdlXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKG9uQmVmb3JlQ2hhbmdlKSB7XG4gICAgICBjb25zdCBjb250aW51ZVN0ZXAgPSBvbkJlZm9yZUNoYW5nZSh0aGlzLmludHJvSnMuX2N1cnJlbnRTdGVwLCBuZXh0RWxlbWVudCk7XG4gICAgICBpZiAoY29udGludWVTdGVwID09PSBmYWxzZSAmJiBvblByZXZlbnRDaGFuZ2UpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgb25QcmV2ZW50Q2hhbmdlKHRoaXMuaW50cm9Kcy5fY3VycmVudFN0ZXApO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250aW51ZVN0ZXA7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgY2hhbmdpbmcgc3RlcC5cbiAgICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBhc3NvY2lhdGVkIHRvIHRoZSBuZXcgc3RlcC5cbiAgICovXG4gIG9uQWZ0ZXJDaGFuZ2UgPSBlbGVtZW50ID0+IHtcbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIG9uQWZ0ZXJDaGFuZ2VcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAob25BZnRlckNoYW5nZSkge1xuICAgICAgb25BZnRlckNoYW5nZSh0aGlzLmludHJvSnMuX2N1cnJlbnRTdGVwLCBlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGNoYW5naW5nIHN0ZXAuXG4gICAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgYXNzb2NpYXRlZCB0byB0aGUgbmV4dCBzdGVwLlxuICAgKi9cbiAgb25DaGFuZ2UgPSBlbGVtZW50ID0+IHtcbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIG9uQ2hhbmdlXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZSh0aGlzLmludHJvSnMuX2N1cnJlbnRTdGVwLCBlbGVtZW50KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGNvbXBsZXRpbmcgYWxsIHRoZSBzdGVwcy5cbiAgICovXG4gIG9uQ29tcGxldGUgPSAoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb25Db21wbGV0ZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChvbkNvbXBsZXRlKSB7XG4gICAgICBvbkNvbXBsZXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBlbGVtZW50IGFzc29jaWF0ZWQgdG8gYSBzdGVwIGJhc2VkIG9uIGl0cyBpbmRleC5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB0aGUgYXNzb2NpYXRlZCBlbGVtZW50IGlzIG5vdCBwcmVzZW50IGluIHRoZSBET00gb24gcGFnZSBsb2FkLlxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IHN0ZXBJbmRleCAtIFRoZSBpbmRleCBvZiB0aGUgc3RlcCB0byB1cGRhdGUuXG4gICAqL1xuICB1cGRhdGVTdGVwRWxlbWVudCA9IHN0ZXBJbmRleCA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5pbnRyb0pzLl9vcHRpb25zLnN0ZXBzW3N0ZXBJbmRleF0uZWxlbWVudCk7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW50cm9Kcy5faW50cm9JdGVtc1tzdGVwSW5kZXhdLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgdGhpcy5pbnRyb0pzLl9pbnRyb0l0ZW1zW3N0ZXBJbmRleF0ucG9zaXRpb24gPSB0aGlzLmludHJvSnMuX29wdGlvbnMuc3RlcHNbc3RlcEluZGV4XS5wb3NpdGlvbiB8fCAnYXV0byc7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBJbnRyby5qcy5cbiAgICovXG4gIGluc3RhbGxJbnRyb0pzKCkge1xuICAgIGlmIChpc1NlcnZlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaW50cm9KcyA9IGludHJvSnMoKTtcbiAgICB0aGlzLmludHJvSnMub25leGl0KHRoaXMub25FeGl0KTtcbiAgICB0aGlzLmludHJvSnMub25iZWZvcmVleGl0KHRoaXMub25CZWZvcmVFeGl0KTtcbiAgICB0aGlzLmludHJvSnMub25iZWZvcmVjaGFuZ2UodGhpcy5vbkJlZm9yZUNoYW5nZSk7XG4gICAgdGhpcy5pbnRyb0pzLm9uYWZ0ZXJjaGFuZ2UodGhpcy5vbkFmdGVyQ2hhbmdlKTtcbiAgICB0aGlzLmludHJvSnMub25jaGFuZ2UodGhpcy5vbkNoYW5nZSk7XG4gICAgdGhpcy5pbnRyb0pzLm9uY29tcGxldGUodGhpcy5vbkNvbXBsZXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIEludHJvLmpzIGlmIG5vdCBhbHJlYWR5IGNvbmZpZ3VyZWQuXG4gICAqL1xuICBjb25maWd1cmVJbnRyb0pzKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzdGVwc1xuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNhbml0aXplZFN0ZXBzID0gc3RlcHMubWFwKHN0ZXAgPT4ge1xuICAgICAgaWYgKCAvKiNfX1BVUkVfXyovaXNWYWxpZEVsZW1lbnQoc3RlcC5pbnRybykpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgIGludHJvOiByZW5kZXJUb1N0YXRpY01hcmt1cChzdGVwLmludHJvKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgfSk7XG4gICAgdGhpcy5pbnRyb0pzLnNldE9wdGlvbnMoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHN0ZXBzOiBzYW5pdGl6ZWRTdGVwc1xuICAgIH0pO1xuICAgIHRoaXMuaXNDb25maWd1cmVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBJbnRyby5qcyBzdGVwcy5cbiAgICovXG4gIHJlbmRlclN0ZXBzKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGVuYWJsZWQsXG4gICAgICBpbml0aWFsU3RlcCxcbiAgICAgIHN0ZXBzLFxuICAgICAgb25TdGFydFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGlmIChlbmFibGVkICYmIHN0ZXBzLmxlbmd0aCA+IDAgJiYgIXRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmludHJvSnMuc3RhcnQoKTtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW50cm9Kcy5nb1RvU3RlcE51bWJlcihpbml0aWFsU3RlcCArIDEpO1xuICAgICAgaWYgKG9uU3RhcnQpIHtcbiAgICAgICAgb25TdGFydCh0aGlzLmludHJvSnMuX2N1cnJlbnRTdGVwKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFlbmFibGVkICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnRyb0pzLmV4aXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJuIHtudWxsfSBXZSBkbyBub3Qgd2FudCB0byByZW5kZXIgYW55dGhpbmcuXG4gICAqL1xuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/components/Steps/index.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/helpers/defaultProps.mjs":
/*!***********************************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/helpers/defaultProps.mjs ***!
\***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ options: function() { return /* binding */ options; }\n/* harmony export */ });\n/**\n * Intro.js options default proptypes.\n * @type {Object}\n */\nconst options = {\n hidePrev: true,\n hideNext: true\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vaGVscGVycy9kZWZhdWx0UHJvcHMubWpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ087QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvZGVmYXVsdFByb3BzLm1qcz8xM2E5Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50cm8uanMgb3B0aW9ucyBkZWZhdWx0IHByb3B0eXBlcy5cbiAqIEB0eXBlIHtPYmplY3R9XG4gKi9cbmV4cG9ydCBjb25zdCBvcHRpb25zID0ge1xuICBoaWRlUHJldjogdHJ1ZSxcbiAgaGlkZU5leHQ6IHRydWVcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/helpers/defaultProps.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/helpers/proptypes.mjs":
/*!********************************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/helpers/proptypes.mjs ***!
\********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ hintPosition: function() { return /* binding */ hintPosition; },\n/* harmony export */ options: function() { return /* binding */ options; },\n/* harmony export */ tooltipPosition: function() { return /* binding */ tooltipPosition; }\n/* harmony export */ });\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\n\n/**\n * Intro.js tooltip position proptype.\n * @type {Function}\n */\nconst tooltipPosition = prop_types__WEBPACK_IMPORTED_MODULE_0__.oneOf(['top', 'right', 'bottom', 'left', 'bottom-left-aligned', 'bottom-middle-aligned', 'bottom-right-aligned', 'top-left-aligned', 'top-middle-aligned', 'top-right-aligned', 'auto']);\n\n/**\n * Intro.js hint position proptype.\n * @type {Function}\n */\nconst hintPosition = prop_types__WEBPACK_IMPORTED_MODULE_0__.oneOf(['top-middle', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'bottom-middle', 'middle-left', 'middle-right', 'middle-middle']);\nconst options = prop_types__WEBPACK_IMPORTED_MODULE_0__.shape({\n nextLabel: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n prevLabel: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n skipLabel: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n doneLabel: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n hidePrev: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n hideNext: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n tooltipPosition,\n tooltipClass: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n highlightClass: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n exitOnEsc: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n exitOnOverlayClick: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n showStepNumbers: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n keyboardNavigation: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n showButtons: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n showBullets: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n showProgress: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n scrollToElement: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n overlayOpacity: prop_types__WEBPACK_IMPORTED_MODULE_0__.number,\n scrollPadding: prop_types__WEBPACK_IMPORTED_MODULE_0__.number,\n positionPrecedence: prop_types__WEBPACK_IMPORTED_MODULE_0__.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_0__.string),\n disableInteraction: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool,\n hintPosition,\n hintButtonLabel: prop_types__WEBPACK_IMPORTED_MODULE_0__.string,\n hintAnimation: prop_types__WEBPACK_IMPORTED_MODULE_0__.bool\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vaGVscGVycy9wcm9wdHlwZXMubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUM7O0FBRW5DO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDTyx3QkFBd0IsNkNBQWU7O0FBRTlDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDTyxxQkFBcUIsNkNBQWU7QUFDcEMsZ0JBQWdCLDZDQUFlO0FBQ3RDLGFBQWEsOENBQWdCO0FBQzdCLGFBQWEsOENBQWdCO0FBQzdCLGFBQWEsOENBQWdCO0FBQzdCLGFBQWEsOENBQWdCO0FBQzdCLFlBQVksNENBQWM7QUFDMUIsWUFBWSw0Q0FBYztBQUMxQjtBQUNBLGdCQUFnQiw4Q0FBZ0I7QUFDaEMsa0JBQWtCLDhDQUFnQjtBQUNsQyxhQUFhLDRDQUFjO0FBQzNCLHNCQUFzQiw0Q0FBYztBQUNwQyxtQkFBbUIsNENBQWM7QUFDakMsc0JBQXNCLDRDQUFjO0FBQ3BDLGVBQWUsNENBQWM7QUFDN0IsZUFBZSw0Q0FBYztBQUM3QixnQkFBZ0IsNENBQWM7QUFDOUIsbUJBQW1CLDRDQUFjO0FBQ2pDLGtCQUFrQiw4Q0FBZ0I7QUFDbEMsaUJBQWlCLDhDQUFnQjtBQUNqQyxzQkFBc0IsK0NBQWlCLENBQUMsOENBQWdCO0FBQ3hELHNCQUFzQiw0Q0FBYztBQUNwQztBQUNBLG1CQUFtQiw4Q0FBZ0I7QUFDbkMsaUJBQWlCLDRDQUFjO0FBQy9CLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvcHJvcHR5cGVzLm1qcz9jMWU2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5cbi8qKlxuICogSW50cm8uanMgdG9vbHRpcCBwb3NpdGlvbiBwcm9wdHlwZS5cbiAqIEB0eXBlIHtGdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9IFByb3BUeXBlcy5vbmVPZihbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCcsICdib3R0b20tbGVmdC1hbGlnbmVkJywgJ2JvdHRvbS1taWRkbGUtYWxpZ25lZCcsICdib3R0b20tcmlnaHQtYWxpZ25lZCcsICd0b3AtbGVmdC1hbGlnbmVkJywgJ3RvcC1taWRkbGUtYWxpZ25lZCcsICd0b3AtcmlnaHQtYWxpZ25lZCcsICdhdXRvJ10pO1xuXG4vKipcbiAqIEludHJvLmpzIGhpbnQgcG9zaXRpb24gcHJvcHR5cGUuXG4gKiBAdHlwZSB7RnVuY3Rpb259XG4gKi9cbmV4cG9ydCBjb25zdCBoaW50UG9zaXRpb24gPSBQcm9wVHlwZXMub25lT2YoWyd0b3AtbWlkZGxlJywgJ3RvcC1sZWZ0JywgJ3RvcC1yaWdodCcsICdib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLCAnYm90dG9tLW1pZGRsZScsICdtaWRkbGUtbGVmdCcsICdtaWRkbGUtcmlnaHQnLCAnbWlkZGxlLW1pZGRsZSddKTtcbmV4cG9ydCBjb25zdCBvcHRpb25zID0gUHJvcFR5cGVzLnNoYXBlKHtcbiAgbmV4dExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBwcmV2TGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNraXBMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgZG9uZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlUHJldjogUHJvcFR5cGVzLmJvb2wsXG4gIGhpZGVOZXh0OiBQcm9wVHlwZXMuYm9vbCxcbiAgdG9vbHRpcFBvc2l0aW9uLFxuICB0b29sdGlwQ2xhc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZ2hsaWdodENsYXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBleGl0T25Fc2M6IFByb3BUeXBlcy5ib29sLFxuICBleGl0T25PdmVybGF5Q2xpY2s6IFByb3BUeXBlcy5ib29sLFxuICBzaG93U3RlcE51bWJlcnM6IFByb3BUeXBlcy5ib29sLFxuICBrZXlib2FyZE5hdmlnYXRpb246IFByb3BUeXBlcy5ib29sLFxuICBzaG93QnV0dG9uczogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dCdWxsZXRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2hvd1Byb2dyZXNzOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2Nyb2xsVG9FbGVtZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgb3ZlcmxheU9wYWNpdHk6IFByb3BUeXBlcy5udW1iZXIsXG4gIHNjcm9sbFBhZGRpbmc6IFByb3BUeXBlcy5udW1iZXIsXG4gIHBvc2l0aW9uUHJlY2VkZW5jZTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyksXG4gIGRpc2FibGVJbnRlcmFjdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIGhpbnRQb3NpdGlvbixcbiAgaGludEJ1dHRvbkxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaW50QW5pbWF0aW9uOiBQcm9wVHlwZXMuYm9vbFxufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/helpers/proptypes.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/helpers/server.mjs":
/*!*****************************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/helpers/server.mjs ***!
\*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isServer: function() { return /* binding */ isServer; }\n/* harmony export */ });\nfunction isServer() {\n return typeof window === 'undefined';\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vaGVscGVycy9zZXJ2ZXIubWpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzLXJlYWN0L2Rpc3QvZXNtL2hlbHBlcnMvc2VydmVyLm1qcz8xNGQwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc1NlcnZlcigpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/helpers/server.mjs\n"));
/***/ }),
/***/ "./node_modules/intro.js-react/dist/esm/index.mjs":
/*!********************************************************!*\
!*** ./node_modules/intro.js-react/dist/esm/index.mjs ***!
\********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Hints: function() { return /* reexport safe */ _components_Hints_index_mjs__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */ Steps: function() { return /* reexport safe */ _components_Steps_index_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; }\n/* harmony export */ });\n/* harmony import */ var _components_Steps_index_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Steps/index.mjs */ \"./node_modules/intro.js-react/dist/esm/components/Steps/index.mjs\");\n/* harmony import */ var _components_Hints_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Hints/index.mjs */ \"./node_modules/intro.js-react/dist/esm/components/Hints/index.mjs\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaW50cm8uanMtcmVhY3QvZGlzdC9lc20vaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZ0UiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2ludHJvLmpzLXJlYWN0L2Rpc3QvZXNtL2luZGV4Lm1qcz9lYjI3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgU3RlcHMgfSBmcm9tIFwiLi9jb21wb25lbnRzL1N0ZXBzL2luZGV4Lm1qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBIaW50cyB9IGZyb20gXCIuL2NvbXBvbmVudHMvSGludHMvaW5kZXgubWpzXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/intro.js-react/dist/esm/index.mjs\n"));
/***/ }),
/***/ "./node_modules/redux-thunk/dist/redux-thunk.mjs":
/*!*******************************************************!*\
!*** ./node_modules/redux-thunk/dist/redux-thunk.mjs ***!
\*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ thunk: function() { return /* binding */ thunk; },\n/* harmony export */ withExtraArgument: function() { return /* binding */ withExtraArgument; }\n/* harmony export */ });\n// src/index.ts\nfunction createThunkMiddleware(extraArgument) {\n const middleware = ({ dispatch, getState }) => (next) => (action) => {\n if (typeof action === \"function\") {\n return action(dispatch, getState, extraArgument);\n }\n return next(action);\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware();\nvar withExtraArgument = createThunkMiddleware;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVkdXgtdGh1bmsvZGlzdC9yZWR1eC10aHVuay5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBO0FBQ0Esd0JBQXdCLG9CQUFvQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVkdXgtdGh1bmsvZGlzdC9yZWR1eC10aHVuay5tanM/MmU0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvaW5kZXgudHNcbmZ1bmN0aW9uIGNyZWF0ZVRodW5rTWlkZGxld2FyZShleHRyYUFyZ3VtZW50KSB7XG4gIGNvbnN0IG1pZGRsZXdhcmUgPSAoeyBkaXNwYXRjaCwgZ2V0U3RhdGUgfSkgPT4gKG5leHQpID0+IChhY3Rpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gYWN0aW9uKGRpc3BhdGNoLCBnZXRTdGF0ZSwgZXh0cmFBcmd1bWVudCk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gIH07XG4gIHJldHVybiBtaWRkbGV3YXJlO1xufVxudmFyIHRodW5rID0gY3JlYXRlVGh1bmtNaWRkbGV3YXJlKCk7XG52YXIgd2l0aEV4dHJhQXJndW1lbnQgPSBjcmVhdGVUaHVua01pZGRsZXdhcmU7XG5leHBvcnQge1xuICB0aHVuayxcbiAgd2l0aEV4dHJhQXJndW1lbnRcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/redux-thunk/dist/redux-thunk.mjs\n"));
/***/ }),
/***/ "./node_modules/redux/dist/redux.mjs":
/*!*******************************************!*\
!*** ./node_modules/redux/dist/redux.mjs ***!
\*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __DO_NOT_USE__ActionTypes: function() { return /* binding */ actionTypes_default; },\n/* harmony export */ applyMiddleware: function() { return /* binding */ applyMiddleware; },\n/* harmony export */ bindActionCreators: function() { return /* binding */ bindActionCreators; },\n/* harmony export */ combineReducers: function() { return /* binding */ combineReducers; },\n/* harmony export */ compose: function() { return /* binding */ compose; },\n/* harmony export */ createStore: function() { return /* binding */ createStore; },\n/* harmony export */ isAction: function() { return /* binding */ isAction; },\n/* harmony export */ isPlainObject: function() { return /* binding */ isPlainObject; },\n/* harmony export */ legacy_createStore: function() { return /* binding */ legacy_createStore; }\n/* harmony export */ });\n// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (true) {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error( false ? 0 : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error( false ? 0 : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error( false ? 0 : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error( false ? 0 : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( false ? 0 : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error( false ? 0 : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error( false ? 0 : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error( false ? 0 : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error( false ? 0 : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error( false ? 0 : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error( false ? 0 : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (true) {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (true) {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (true) {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error( false ? 0 : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error( false ? 0 : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error( false ? 0 : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\n\n//# sourceMappingURL=redux.mjs.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixNQUFxQyxHQUFHLENBQTBCO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBV0U7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVkdXgvZGlzdC9yZWR1eC5tanM/OTA4NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvdXRpbHMvZm9ybWF0UHJvZEVycm9yTWVzc2FnZS50c1xuZnVuY3Rpb24gZm9ybWF0UHJvZEVycm9yTWVzc2FnZShjb2RlKSB7XG4gIHJldHVybiBgTWluaWZpZWQgUmVkdXggZXJyb3IgIyR7Y29kZX07IHZpc2l0IGh0dHBzOi8vcmVkdXguanMub3JnL0Vycm9ycz9jb2RlPSR7Y29kZX0gZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycy4gYDtcbn1cblxuLy8gc3JjL3V0aWxzL3N5bWJvbC1vYnNlcnZhYmxlLnRzXG52YXIgJCRvYnNlcnZhYmxlID0gLyogQF9fUFVSRV9fICovICgoKSA9PiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLm9ic2VydmFibGUgfHwgXCJAQG9ic2VydmFibGVcIikoKTtcbnZhciBzeW1ib2xfb2JzZXJ2YWJsZV9kZWZhdWx0ID0gJCRvYnNlcnZhYmxlO1xuXG4vLyBzcmMvdXRpbHMvYWN0aW9uVHlwZXMudHNcbnZhciByYW5kb21TdHJpbmcgPSAoKSA9PiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoXCJcIikuam9pbihcIi5cIik7XG52YXIgQWN0aW9uVHlwZXMgPSB7XG4gIElOSVQ6IGBAQHJlZHV4L0lOSVQkey8qIEBfX1BVUkVfXyAqLyByYW5kb21TdHJpbmcoKX1gLFxuICBSRVBMQUNFOiBgQEByZWR1eC9SRVBMQUNFJHsvKiBAX19QVVJFX18gKi8gcmFuZG9tU3RyaW5nKCl9YCxcbiAgUFJPQkVfVU5LTk9XTl9BQ1RJT046ICgpID0+IGBAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OJHtyYW5kb21TdHJpbmcoKX1gXG59O1xudmFyIGFjdGlvblR5cGVzX2RlZmF1bHQgPSBBY3Rpb25UeXBlcztcblxuLy8gc3JjL3V0aWxzL2lzUGxhaW5PYmplY3QudHNcbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IG9iaiA9PT0gbnVsbClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGxldCBwcm90byA9IG9iajtcbiAgd2hpbGUgKE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykgIT09IG51bGwpIHtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBwcm90byB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gbnVsbDtcbn1cblxuLy8gc3JjL3V0aWxzL2tpbmRPZi50c1xuZnVuY3Rpb24gbWluaUtpbmRPZih2YWwpIHtcbiAgaWYgKHZhbCA9PT0gdm9pZCAwKVxuICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICBpZiAodmFsID09PSBudWxsKVxuICAgIHJldHVybiBcIm51bGxcIjtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgY2FzZSBcImZ1bmN0aW9uXCI6IHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKVxuICAgIHJldHVybiBcImFycmF5XCI7XG4gIGlmIChpc0RhdGUodmFsKSlcbiAgICByZXR1cm4gXCJkYXRlXCI7XG4gIGlmIChpc0Vycm9yKHZhbCkpXG4gICAgcmV0dXJuIFwiZXJyb3JcIjtcbiAgY29uc3QgY29uc3RydWN0b3JOYW1lID0gY3Rvck5hbWUodmFsKTtcbiAgc3dpdGNoIChjb25zdHJ1Y3Rvck5hbWUpIHtcbiAgICBjYXNlIFwiU3ltYm9sXCI6XG4gICAgY2FzZSBcIlByb21pc2VcIjpcbiAgICBjYXNlIFwiV2Vha01hcFwiOlxuICAgIGNhc2UgXCJXZWFrU2V0XCI6XG4gICAgY2FzZSBcIk1hcFwiOlxuICAgIGNhc2UgXCJTZXRcIjpcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvck5hbWU7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGN0b3JOYW1lKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbC5jb25zdHJ1Y3RvciA9PT0gXCJmdW5jdGlvblwiID8gdmFsLmNvbnN0cnVjdG9yLm5hbWUgOiBudWxsO1xufVxuZnVuY3Rpb24gaXNFcnJvcih2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiB2YWwubWVzc2FnZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWwuY29uc3RydWN0b3IgJiYgdHlwZW9mIHZhbC5jb25zdHJ1Y3Rvci5zdGFja1RyYWNlTGltaXQgPT09IFwibnVtYmVyXCI7XG59XG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKVxuICAgIHJldHVybiB0cnVlO1xuICByZXR1cm4gdHlwZW9mIHZhbC50b0RhdGVTdHJpbmcgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdmFsLmdldERhdGUgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdmFsLnNldERhdGUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGtpbmRPZih2YWwpIHtcbiAgbGV0IHR5cGVPZlZhbCA9IHR5cGVvZiB2YWw7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICB0eXBlT2ZWYWwgPSBtaW5pS2luZE9mKHZhbCk7XG4gIH1cbiAgcmV0dXJuIHR5cGVPZlZhbDtcbn1cblxuLy8gc3JjL2NyZWF0ZVN0b3JlLnRzXG5mdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcbiAgaWYgKHR5cGVvZiByZWR1Y2VyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyKSA6IGBFeHBlY3RlZCB0aGUgcm9vdCByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQsIHJlY2VpdmVkOiAnJHtraW5kT2YocmVkdWNlcil9J2ApO1xuICB9XG4gIGlmICh0eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgZW5oYW5jZXIgPT09IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgZW5oYW5jZXIgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYXJndW1lbnRzWzNdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgwKSA6IFwiSXQgbG9va3MgbGlrZSB5b3UgYXJlIHBhc3Npbmcgc2V2ZXJhbCBzdG9yZSBlbmhhbmNlcnMgdG8gY3JlYXRlU3RvcmUoKS4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkLiBJbnN0ZWFkLCBjb21wb3NlIHRoZW0gdG9nZXRoZXIgdG8gYSBzaW5nbGUgZnVuY3Rpb24uIFNlZSBodHRwczovL3JlZHV4LmpzLm9yZy90dXRvcmlhbHMvZnVuZGFtZW50YWxzL3BhcnQtNC1zdG9yZSNjcmVhdGluZy1hLXN0b3JlLXdpdGgtZW5oYW5jZXJzIGZvciBhbiBleGFtcGxlLlwiKTtcbiAgfVxuICBpZiAodHlwZW9mIHByZWxvYWRlZFN0YXRlID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGVuaGFuY2VyID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHZvaWQgMDtcbiAgfVxuICBpZiAodHlwZW9mIGVuaGFuY2VyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxKSA6IGBFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCwgcmVjZWl2ZWQ6ICcke2tpbmRPZihlbmhhbmNlcil9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuICBsZXQgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyO1xuICBsZXQgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3RhdGU7XG4gIGxldCBjdXJyZW50TGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgbGV0IG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzO1xuICBsZXQgbGlzdGVuZXJJZENvdW50ZXIgPSAwO1xuICBsZXQgaXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuICBmdW5jdGlvbiBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCkge1xuICAgIGlmIChuZXh0TGlzdGVuZXJzID09PSBjdXJyZW50TGlzdGVuZXJzKSB7XG4gICAgICBuZXh0TGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIGN1cnJlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIsIGtleSkgPT4ge1xuICAgICAgICBuZXh0TGlzdGVuZXJzLnNldChrZXksIGxpc3RlbmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMykgOiBcIllvdSBtYXkgbm90IGNhbGwgc3RvcmUuZ2V0U3RhdGUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuIFRoZSByZWR1Y2VyIGhhcyBhbHJlYWR5IHJlY2VpdmVkIHRoZSBzdGF0ZSBhcyBhbiBhcmd1bWVudC4gUGFzcyBpdCBkb3duIGZyb20gdGhlIHRvcCByZWR1Y2VyIGluc3RlYWQgb2YgcmVhZGluZyBpdCBmcm9tIHRoZSBzdG9yZS5cIik7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH1cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0KSA6IGBFeHBlY3RlZCB0aGUgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCwgcmVjZWl2ZWQ6ICcke2tpbmRPZihsaXN0ZW5lcil9J2ApO1xuICAgIH1cbiAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNSkgOiBcIllvdSBtYXkgbm90IGNhbGwgc3RvcmUuc3Vic2NyaWJlKCkgd2hpbGUgdGhlIHJlZHVjZXIgaXMgZXhlY3V0aW5nLiBJZiB5b3Ugd291bGQgbGlrZSB0byBiZSBub3RpZmllZCBhZnRlciB0aGUgc3RvcmUgaGFzIGJlZW4gdXBkYXRlZCwgc3Vic2NyaWJlIGZyb20gYSBjb21wb25lbnQgYW5kIGludm9rZSBzdG9yZS5nZXRTdGF0ZSgpIGluIHRoZSBjYWxsYmFjayB0byBhY2Nlc3MgdGhlIGxhdGVzdCBzdGF0ZS4gU2VlIGh0dHBzOi8vcmVkdXguanMub3JnL2FwaS9zdG9yZSNzdWJzY3JpYmVsaXN0ZW5lciBmb3IgbW9yZSBkZXRhaWxzLlwiKTtcbiAgICB9XG4gICAgbGV0IGlzU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIGNvbnN0IGxpc3RlbmVySWQgPSBsaXN0ZW5lcklkQ291bnRlcisrO1xuICAgIG5leHRMaXN0ZW5lcnMuc2V0KGxpc3RlbmVySWQsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICBpZiAoIWlzU3Vic2NyaWJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg2KSA6IFwiWW91IG1heSBub3QgdW5zdWJzY3JpYmUgZnJvbSBhIHN0b3JlIGxpc3RlbmVyIHdoaWxlIHRoZSByZWR1Y2VyIGlzIGV4ZWN1dGluZy4gU2VlIGh0dHBzOi8vcmVkdXguanMub3JnL2FwaS9zdG9yZSNzdWJzY3JpYmVsaXN0ZW5lciBmb3IgbW9yZSBkZXRhaWxzLlwiKTtcbiAgICAgIH1cbiAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuICAgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgICAgbmV4dExpc3RlbmVycy5kZWxldGUobGlzdGVuZXJJZCk7XG4gICAgICBjdXJyZW50TGlzdGVuZXJzID0gbnVsbDtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg3KSA6IGBBY3Rpb25zIG11c3QgYmUgcGxhaW4gb2JqZWN0cy4gSW5zdGVhZCwgdGhlIGFjdHVhbCB0eXBlIHdhczogJyR7a2luZE9mKGFjdGlvbil9Jy4gWW91IG1heSBuZWVkIHRvIGFkZCBtaWRkbGV3YXJlIHRvIHlvdXIgc3RvcmUgc2V0dXAgdG8gaGFuZGxlIGRpc3BhdGNoaW5nIG90aGVyIHZhbHVlcywgc3VjaCBhcyAncmVkdXgtdGh1bmsnIHRvIGhhbmRsZSBkaXNwYXRjaGluZyBmdW5jdGlvbnMuIFNlZSBodHRwczovL3JlZHV4LmpzLm9yZy90dXRvcmlhbHMvZnVuZGFtZW50YWxzL3BhcnQtNC1zdG9yZSNtaWRkbGV3YXJlIGFuZCBodHRwczovL3JlZHV4LmpzLm9yZy90dXRvcmlhbHMvZnVuZGFtZW50YWxzL3BhcnQtNi1hc3luYy1sb2dpYyN1c2luZy10aGUtcmVkdXgtdGh1bmstbWlkZGxld2FyZSBmb3IgZXhhbXBsZXMuYCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYWN0aW9uLnR5cGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDgpIDogJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gWW91IG1heSBoYXZlIG1pc3NwZWxsZWQgYW4gYWN0aW9uIHR5cGUgc3RyaW5nIGNvbnN0YW50LicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFjdGlvbi50eXBlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNykgOiBgQWN0aW9uIFwidHlwZVwiIHByb3BlcnR5IG11c3QgYmUgYSBzdHJpbmcuIEluc3RlYWQsIHRoZSBhY3R1YWwgdHlwZSB3YXM6ICcke2tpbmRPZihhY3Rpb24udHlwZSl9Jy4gVmFsdWUgd2FzOiAnJHthY3Rpb24udHlwZX0nIChzdHJpbmdpZmllZClgKTtcbiAgICB9XG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDkpIDogXCJSZWR1Y2VycyBtYXkgbm90IGRpc3BhdGNoIGFjdGlvbnMuXCIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IHRydWU7XG4gICAgICBjdXJyZW50U3RhdGUgPSBjdXJyZW50UmVkdWNlcihjdXJyZW50U3RhdGUsIGFjdGlvbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgbGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiB7XG4gICAgICBsaXN0ZW5lcigpO1xuICAgIH0pO1xuICAgIHJldHVybiBhY3Rpb247XG4gIH1cbiAgZnVuY3Rpb24gcmVwbGFjZVJlZHVjZXIobmV4dFJlZHVjZXIpIHtcbiAgICBpZiAodHlwZW9mIG5leHRSZWR1Y2VyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEwKSA6IGBFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCwgcmVjZWl2ZWQ6ICcke2tpbmRPZihuZXh0UmVkdWNlcil9YCk7XG4gICAgfVxuICAgIGN1cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7XG4gICAgZGlzcGF0Y2goe1xuICAgICAgdHlwZTogYWN0aW9uVHlwZXNfZGVmYXVsdC5SRVBMQUNFXG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gb2JzZXJ2YWJsZSgpIHtcbiAgICBjb25zdCBvdXRlclN1YnNjcmliZSA9IHN1YnNjcmliZTtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbWluaW1hbCBvYnNlcnZhYmxlIHN1YnNjcmlwdGlvbiBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0gb2JzZXJ2ZXIgQW55IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIG9ic2VydmVyLlxuICAgICAgICogVGhlIG9ic2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuZXh0YCBtZXRob2QuXG4gICAgICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBhbiBgdW5zdWJzY3JpYmVgIG1ldGhvZCB0aGF0IGNhblxuICAgICAgICogYmUgdXNlZCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSBmcm9tIHRoZSBzdG9yZSwgYW5kIHByZXZlbnQgZnVydGhlclxuICAgICAgICogZW1pc3Npb24gb2YgdmFsdWVzIGZyb20gdGhlIG9ic2VydmFibGUuXG4gICAgICAgKi9cbiAgICAgIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgICAgICBpZiAodHlwZW9mIG9ic2VydmVyICE9PSBcIm9iamVjdFwiIHx8IG9ic2VydmVyID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTEpIDogYEV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3QuIEluc3RlYWQsIHJlY2VpdmVkOiAnJHtraW5kT2Yob2JzZXJ2ZXIpfSdgKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBvYnNlcnZlU3RhdGUoKSB7XG4gICAgICAgICAgY29uc3Qgb2JzZXJ2ZXJBc09ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgICAgaWYgKG9ic2VydmVyQXNPYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlckFzT2JzZXJ2ZXIubmV4dChnZXRTdGF0ZSgpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gb3V0ZXJTdWJzY3JpYmUob2JzZXJ2ZVN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB1bnN1YnNjcmliZVxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIFtzeW1ib2xfb2JzZXJ2YWJsZV9kZWZhdWx0XSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBkaXNwYXRjaCh7XG4gICAgdHlwZTogYWN0aW9uVHlwZXNfZGVmYXVsdC5JTklUXG4gIH0pO1xuICBjb25zdCBzdG9yZSA9IHtcbiAgICBkaXNwYXRjaCxcbiAgICBzdWJzY3JpYmUsXG4gICAgZ2V0U3RhdGUsXG4gICAgcmVwbGFjZVJlZHVjZXIsXG4gICAgW3N5bWJvbF9vYnNlcnZhYmxlX2RlZmF1bHRdOiBvYnNlcnZhYmxlXG4gIH07XG4gIHJldHVybiBzdG9yZTtcbn1cbmZ1bmN0aW9uIGxlZ2FjeV9jcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcbiAgcmV0dXJuIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcik7XG59XG5cbi8vIHNyYy91dGlscy93YXJuaW5nLnRzXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICB9XG4gIHRyeSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbn1cblxuLy8gc3JjL2NvbWJpbmVSZWR1Y2Vycy50c1xuZnVuY3Rpb24gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShpbnB1dFN0YXRlLCByZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpIHtcbiAgY29uc3QgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIGNvbnN0IGFyZ3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0gYWN0aW9uVHlwZXNfZGVmYXVsdC5JTklUID8gXCJwcmVsb2FkZWRTdGF0ZSBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlU3RvcmVcIiA6IFwicHJldmlvdXMgc3RhdGUgcmVjZWl2ZWQgYnkgdGhlIHJlZHVjZXJcIjtcbiAgaWYgKHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBcIlN0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBNYWtlIHN1cmUgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byBjb21iaW5lUmVkdWNlcnMgaXMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgcmVkdWNlcnMuXCI7XG4gIH1cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGlucHV0U3RhdGUpKSB7XG4gICAgcmV0dXJuIGBUaGUgJHthcmd1bWVudE5hbWV9IGhhcyB1bmV4cGVjdGVkIHR5cGUgb2YgXCIke2tpbmRPZihpbnB1dFN0YXRlKX1cIi4gRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBrZXlzOiBcIiR7cmVkdWNlcktleXMuam9pbignXCIsIFwiJyl9XCJgO1xuICB9XG4gIGNvbnN0IHVuZXhwZWN0ZWRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVyKChrZXkpID0+ICFyZWR1Y2Vycy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XSk7XG4gIHVuZXhwZWN0ZWRLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldID0gdHJ1ZTtcbiAgfSk7XG4gIGlmIChhY3Rpb24gJiYgYWN0aW9uLnR5cGUgPT09IGFjdGlvblR5cGVzX2RlZmF1bHQuUkVQTEFDRSlcbiAgICByZXR1cm47XG4gIGlmICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGBVbmV4cGVjdGVkICR7dW5leHBlY3RlZEtleXMubGVuZ3RoID4gMSA/IFwia2V5c1wiIDogXCJrZXlcIn0gXCIke3VuZXhwZWN0ZWRLZXlzLmpvaW4oJ1wiLCBcIicpfVwiIGZvdW5kIGluICR7YXJndW1lbnROYW1lfS4gRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5cyBpbnN0ZWFkOiBcIiR7cmVkdWNlcktleXMuam9pbignXCIsIFwiJyl9XCIuIFVuZXhwZWN0ZWQga2V5cyB3aWxsIGJlIGlnbm9yZWQuYDtcbiAgfVxufVxuZnVuY3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJzKSB7XG4gIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCByZWR1Y2VyID0gcmVkdWNlcnNba2V5XTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSByZWR1Y2VyKHZvaWQgMCwge1xuICAgICAgdHlwZTogYWN0aW9uVHlwZXNfZGVmYXVsdC5JTklUXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEyKSA6IGBUaGUgc2xpY2UgcmVkdWNlciBmb3Iga2V5IFwiJHtrZXl9XCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gSWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0aGUgcmVkdWNlciBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgeW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC5gKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZWR1Y2VyKHZvaWQgMCwge1xuICAgICAgdHlwZTogYWN0aW9uVHlwZXNfZGVmYXVsdC5QUk9CRV9VTktOT1dOX0FDVElPTigpXG4gICAgfSkgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzKSA6IGBUaGUgc2xpY2UgcmVkdWNlciBmb3Iga2V5IFwiJHtrZXl9XCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gRG9uJ3QgdHJ5IHRvIGhhbmRsZSAnJHthY3Rpb25UeXBlc19kZWZhdWx0LklOSVR9JyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgvKlwiIG5hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueSB1bmtub3duIGFjdGlvbnMsIHVubGVzcyBpdCBpcyB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLCByZWdhcmRsZXNzIG9mIHRoZSBhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC5gKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gY29tYmluZVJlZHVjZXJzKHJlZHVjZXJzKSB7XG4gIGNvbnN0IHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xuICBjb25zdCBmaW5hbFJlZHVjZXJzID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBrZXkgPSByZWR1Y2VyS2V5c1tpXTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgd2FybmluZyhgTm8gcmVkdWNlciBwcm92aWRlZCBmb3Iga2V5IFwiJHtrZXl9XCJgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGZpbmFsUmVkdWNlcnNba2V5XSA9IHJlZHVjZXJzW2tleV07XG4gICAgfVxuICB9XG4gIGNvbnN0IGZpbmFsUmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTtcbiAgbGV0IHVuZXhwZWN0ZWRLZXlDYWNoZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZSA9IHt9O1xuICB9XG4gIGxldCBzaGFwZUFzc2VydGlvbkVycm9yO1xuICB0cnkge1xuICAgIGFzc2VydFJlZHVjZXJTaGFwZShmaW5hbFJlZHVjZXJzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbihzdGF0ZSA9IHt9LCBhY3Rpb24pIHtcbiAgICBpZiAoc2hhcGVBc3NlcnRpb25FcnJvcikge1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc3Qgd2FybmluZ01lc3NhZ2UgPSBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKHN0YXRlLCBmaW5hbFJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSk7XG4gICAgICBpZiAod2FybmluZ01lc3NhZ2UpIHtcbiAgICAgICAgd2FybmluZyh3YXJuaW5nTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgY29uc3QgbmV4dFN0YXRlID0ge307XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaW5hbFJlZHVjZXJLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBmaW5hbFJlZHVjZXJLZXlzW2ldO1xuICAgICAgY29uc3QgcmVkdWNlciA9IGZpbmFsUmVkdWNlcnNba2V5XTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGVGb3JLZXkgPSBzdGF0ZVtrZXldO1xuICAgICAgY29uc3QgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5LCBhY3Rpb24pO1xuICAgICAgaWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY29uc3QgYWN0aW9uVHlwZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTQpIDogYFdoZW4gY2FsbGVkIHdpdGggYW4gYWN0aW9uIG9mIHR5cGUgJHthY3Rpb25UeXBlID8gYFwiJHtTdHJpbmcoYWN0aW9uVHlwZSl9XCJgIDogXCIodW5rbm93biB0eXBlKVwifSwgdGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcIiR7a2V5fVwiIHJldHVybmVkIHVuZGVmaW5lZC4gVG8gaWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiBJZiB5b3Ugd2FudCB0aGlzIHJlZHVjZXIgdG8gaG9sZCBubyB2YWx1ZSwgeW91IGNhbiByZXR1cm4gbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC5gKTtcbiAgICAgIH1cbiAgICAgIG5leHRTdGF0ZVtrZXldID0gbmV4dFN0YXRlRm9yS2V5O1xuICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuICAgIH1cbiAgICBoYXNDaGFuZ2VkID0gaGFzQ2hhbmdlZCB8fCBmaW5hbFJlZHVjZXJLZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aDtcbiAgICByZXR1cm4gaGFzQ2hhbmdlZCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICB9O1xufVxuXG4vLyBzcmMvYmluZEFjdGlvbkNyZWF0b3JzLnRzXG5mdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCkge1xuICByZXR1cm4gZnVuY3Rpb24oLi4uYXJncykge1xuICAgIHJldHVybiBkaXNwYXRjaChhY3Rpb25DcmVhdG9yLmFwcGx5KHRoaXMsIGFyZ3MpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gXCJvYmplY3RcIiB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2KSA6IGBiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sIGJ1dCBpbnN0ZWFkIHJlY2VpdmVkOiAnJHtraW5kT2YoYWN0aW9uQ3JlYXRvcnMpfScuIERpZCB5b3Ugd3JpdGUgXCJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJvbVwiIGluc3RlYWQgb2YgXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tXCI/YCk7XG4gIH1cbiAgY29uc3QgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBpbiBhY3Rpb25DcmVhdG9ycykge1xuICAgIGNvbnN0IGFjdGlvbkNyZWF0b3IgPSBhY3Rpb25DcmVhdG9yc1trZXldO1xuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xufVxuXG4vLyBzcmMvY29tcG9zZS50c1xuZnVuY3Rpb24gY29tcG9zZSguLi5mdW5jcykge1xuICBpZiAoZnVuY3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChhcmcpID0+IGFyZztcbiAgfVxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGZ1bmNzWzBdO1xuICB9XG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoKGEsIGIpID0+ICguLi5hcmdzKSA9PiBhKGIoLi4uYXJncykpKTtcbn1cblxuLy8gc3JjL2FwcGx5TWlkZGxld2FyZS50c1xuZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKC4uLm1pZGRsZXdhcmVzKSB7XG4gIHJldHVybiAoY3JlYXRlU3RvcmUyKSA9PiAocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUpID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlMihyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSk7XG4gICAgbGV0IGRpc3BhdGNoID0gKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTUpIDogXCJEaXNwYXRjaGluZyB3aGlsZSBjb25zdHJ1Y3RpbmcgeW91ciBtaWRkbGV3YXJlIGlzIG5vdCBhbGxvd2VkLiBPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guXCIpO1xuICAgIH07XG4gICAgY29uc3QgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgIGdldFN0YXRlOiBzdG9yZS5nZXRTdGF0ZSxcbiAgICAgIGRpc3BhdGNoOiAoYWN0aW9uLCAuLi5hcmdzKSA9PiBkaXNwYXRjaChhY3Rpb24sIC4uLmFyZ3MpXG4gICAgfTtcbiAgICBjb25zdCBjaGFpbiA9IG1pZGRsZXdhcmVzLm1hcCgobWlkZGxld2FyZSkgPT4gbWlkZGxld2FyZShtaWRkbGV3YXJlQVBJKSk7XG4gICAgZGlzcGF0Y2ggPSBjb21wb3NlKC4uLmNoYWluKShzdG9yZS5kaXNwYXRjaCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgZGlzcGF0Y2hcbiAgICB9O1xuICB9O1xufVxuXG4vLyBzcmMvdXRpbHMvaXNBY3Rpb24udHNcbmZ1bmN0aW9uIGlzQWN0aW9uKGFjdGlvbikge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChhY3Rpb24pICYmIFwidHlwZVwiIGluIGFjdGlvbiAmJiB0eXBlb2YgYWN0aW9uLnR5cGUgPT09IFwic3RyaW5nXCI7XG59XG5leHBvcnQge1xuICBhY3Rpb25UeXBlc19kZWZhdWx0IGFzIF9fRE9fTk9UX1VTRV9fQWN0aW9uVHlwZXMsXG4gIGFwcGx5TWlkZGxld2FyZSxcbiAgYmluZEFjdGlvbkNyZWF0b3JzLFxuICBjb21iaW5lUmVkdWNlcnMsXG4gIGNvbXBvc2UsXG4gIGNyZWF0ZVN0b3JlLFxuICBpc0FjdGlvbixcbiAgaXNQbGFpbk9iamVjdCxcbiAgbGVnYWN5X2NyZWF0ZVN0b3JlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVkdXgubWpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/redux/dist/redux.mjs\n"));
/***/ })
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ __webpack_require__.O(0, ["main"], function() { return __webpack_exec__("./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F_app&page=%2F_app!"), __webpack_exec__("./node_modules/next/dist/client/router.js"); });
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
/******/ }
]);